Strategy/projects/files/mipt/mipt_d1_sample_submission.md
+

mipt_d1_sample_submission

МФТИ D1 — Пример хорошей постановки задачи

Создано: Феанор worker, 2026-03-15 22:10 MSK (для сессии 16 мар)


Как использовать на сессии

Показать этот файл студентам как эталон D1. Это вымышленный, но реалистичный проект.


Пример 1: Sparse Text Classification (LASSO)

README.md (эталонный)

# Sparse Text Classification with Proximal SGD

> Оптимизируем разреженный линейный классификатор для новостей:
> минимизируем cross-entropy с L1-регуляризацией.

**Команда**: Иванов А., Петрова К. (2 чел.)
**Дедлайн D1**: 21 марта 2026, 23:59 MSK

---

## Задача оптимизации

min_{W ∈ ℝ^{d×c}}  (1/n) Σᵢ CrossEntropy(W·xᵢ, yᵢ)  +  λ‖W‖₁

где:
- f(W) = (1/n) Σᵢ CrossEntropy(W·xᵢ, yᵢ)  — L-гладкая (L≈1 в batch режиме)
- g(W) = λ‖W‖₁                              — negладкая, prox-friendly
- W ∈ ℝ^{d×c} — веса классификатора (d=10000 признаков, c=4 класса)

**Метод**: Stochastic Proximal Gradient (SGD + мягкий порог)

**Baseline**: Adam без регуляризации (Kingma & Ba, 2015, arXiv:1412.6980)

## Данные / среда

- **Датасет**: AG News (120k train / 7.6k test, 4 класса)
- **Признаки**: TF-IDF, d=10000
- **Среда**: PyTorch, CPU
- **Воспроизводимость**: `pip install -r requirements.txt && python train.py`

report.md / Секция D1 (эталонный)

## D1. Формализация задачи

### 1.1 Задача оптимизации

Рассматривается задача разреженной многоклассовой классификации:

min_{W ∈ ℝ^{d×c}}  F(W) = f(W) + g(W)

где:

| Символ | Определение |
|--------|-------------|
| W ∈ ℝ^{d×c} | матрица весов классификатора |
| xᵢ ∈ ℝ^d   | TF-IDF вектор i-го документа |
| yᵢ ∈ {0..3} | метка класса |
| n           | размер датасета (120 000) |
| λ = 1e-4    | коэффициент регуляризации |

**Гладкая часть**:
f(W) = (1/n) Σᵢ CrossEntropy(softmax(W·xᵢ), yᵢ)

Предположения: f является L-гладкой (L ≤ ‖X‖²/n) и выпуклой по W.

**Негладкая часть**:
g(W) = λ‖W‖₁ = λ Σⱼₖ |Wⱼₖ|

Оператор близости: prox_{αg}(W)ⱼₖ = sign(Wⱼₖ) · max(|Wⱼₖ| - αλ, 0)

### 1.2 Метод оптимизации

Stochastic Proximal Gradient (SGD шаг + prox):

W_{k+1} = prox_{αg}( W_k - α · ∇̂f(W_k) )

где ∇̂f(W_k) = мини-батч стохастический градиент (batch size = 256).

Шаг α = 0.01 (постоянный). При L-гладкости и выпуклости f:

E[F(W_K) - F*] ≤ O(1/√K)  — стохастический проксимальный GD

Базовый SGD Adam (baseline): W_{k+1} = W_k - α_t · m̂_t / (√v̂_t + ε)
(адаптивный шаг, но без регуляризации → плотные веса)

### 1.3 Данные

- **Датасет**: AG News (Zhang et al., 2015)
- **Задача**: 4-классовая классификация новостных статей
- **Метрика**: Accuracy (тест)
- **Ожидаемый результат**: Proximal SGD ≈ Adam по accuracy,
  но W имеет ~70% нулей (разреженность) → лучше интерпретируемость

Почему это хорошая D1 (9-10 баллов)

Критерий Что есть в примере
✅ Формула min min_{W} f(W) + g(W) с явными f и g
✅ Таблица обозначений W, xᵢ, yᵢ, n, λ
✅ Предположения L-гладкость с оценкой L
✅ Метод с итерацией W_{k+1} = prox(W_k - α·∇̂f)
✅ Оценка сходимости O(1/√K) с обоснованием
✅ Baseline с ссылкой Adam (arXiv:1412.6980)
✅ Данные + метрика AG News, Accuracy
✅ Воспроизводимость requirements.txt + команда запуска

Пример 2: Matrix Factorization (без регуляризатора)

min_{U∈ℝ^{m×k}, V∈ℝ^{n×k}}  Σ_{(i,j)∈Ω} (Aᵢⱼ - Uᵢ·Vⱼᵀ)²

f(U,V) = Σ_{(i,j)∈Ω} (Aᵢⱼ - Uᵢ·Vⱼᵀ)²  — негладкая (не выпуклая совместно!)
g(U,V) = 0  → обычный GD или ALS

Метод: ALS (Alternating Least Squares) или SGD по парам (Koren et al., 2009)
Baseline: SVD (numpy.linalg.svd на плотной матрице)
Датасет: MovieLens-100K (943 пользователя, 1682 фильма)

Предупреждение: задача не является совместно выпуклой по (U,V) → гарантии сходимости к глобальному минимуму отсутствуют. Указать это в предположениях!


Пример 3: Нейросеть (SGD + weight decay)

min_{θ ∈ ℝ^p}  (1/n) Σᵢ L(fθ(xᵢ), yᵢ)  +  (λ/2)‖θ‖²

f(θ) = (1/n) Σᵢ L(fθ(xᵢ), yᵢ)  — L-гладкая (при Lipschitz-гр.)
g(θ) = (λ/2)‖θ‖²              — гладкая, prox = (1/(1+αλ))·θ

Метод: SGD с momentum (Polyak heavy ball):
  v_{k+1} = β·vₖ - α·∇̂f(θₖ)
  θ_{k+1} = θₖ + vₖ₊₁

Показать студентам: “Любой из этих трёх примеров — хорошая D1. Ваша задача такая же по структуре.”

Choose icon