Перейти к содержимому
ПереводыStanford

CS229: нейросети и обучение без учителя — backprop, k-средних, EM, PCA (конспект)

Пересказ конспектов CS229: нейронная сеть с нуля на примере цен домов, векторизация, обратное распространение, инициализация, SGD с моментом, L2-регуляризация и разделение параметров; кластеризация k-средних, смесь гауссиан и EM-алгоритм через неравенство Йенсена, анализ главных компонент. Плюс короткий обзор части о обучении с подкреплением.

Конспект строит нейросеть из знакомой задачи о ценах домов. Прямая может предсказать отрицательную цену; запретим это: f(x)=max⁡(ax+b,0)f(x) = \max(ax + b, 0). Это один нейрон с функцией активации ReLU. Дальше добавляем признаки (площадь, число спален, почтовый индекс, благосостояние района) и промежуточные нейроны, каждый из которых вычисляет что-то осмысленное — «размер семьи, которая поместится», «пешая доступность», «качество школ», — а выходной нейрон объединяет их в цену. Главная мысль: такие промежуточные признаки не задают вручную — сеть получает только вход xx и ответ yy, а скрытые признаки выучивает сама. Поэтому сети часто называют чёрными ящиками и говорят об сквозном обучении (end-to-end).

Дальше — второй пример (есть ли на картинке футбольный мяч) и обозначения слоёв: z[l]=W[l]a[l−1]+b[l]z^{[l]} = W^{[l]} a^{[l-1]} + b^{[l]}, a[l]=g(z[l])a^{[l]} = g(z^{[l]}). Конспект подчёркивает: без нелинейных функций активации композиция слоёв осталась бы линейной функцией, и глубина ничего бы не дала. Используются сигмоида, tanh⁡\tanh и ReLU.

Вычислять нейроны циклом медленно; вместо этого слой — это одно умножение матрицы на вектор, а пакет из mm примеров — умножение матрицы на матрицу, где примеры сложены столбцами (X∈Rn×mX \in \mathbb{R}^{n \times m}). Сдвиг b[l]b^{[l]} прибавляется ко всем столбцам — это транслирование (broadcasting), как в NumPy.

Для обучения нужны градиенты потерь по всем W[l],b[l]W^{[l]}, b^{[l]}. Конспект выводит их по цепному правилу для трёхслойной сети с бинарной кросс-энтропией, начиная с последнего слоя (он ближе к выходу, его влияние на потери проще), и показывает, что для каждого слоя достаточно знать «ошибку» следующего:

∂L∂W[l]=δ[l](a[l−1])T,δ[l]=(W[l+1])Tδ[l+1]⊙g′(z[l]),\frac{\partial \mathcal{L}}{\partial W^{[l]}} = \delta^{[l]} \big(a^{[l-1]}\big)^T, \qquad \delta^{[l]} = \big(W^{[l+1]}\big)^T \delta^{[l+1]} \odot g'\big(z^{[l]}\big),

где для выходного слоя с сигмоидой и кросс-энтропией δ[L]=a[L]−y\delta^{[L]} = a^{[L]} - y. Значения z[l],a[l]z^{[l]}, a^{[l]} сохраняются при прямом проходе (кэшируются) и переиспользуются при обратном. Интуицию «потока градиентов» подробно разбирает наш перевод конспекта CS231n о backprop.

  • Инициализация. Нулями нельзя: все нейроны слоя получат одинаковые градиенты и выучат одно и то же (нарушится симметрия); то же при одинаковых ненулевых значениях. Берут малые случайные значения или схему, сохраняющую дисперсию сигналов от слоя к слою. Конспект называет её «Xavier/He» и даёт формулу с дисперсией 2n[l]+n[l−1]\frac{2}{n^{[l]} + n^{[l-1]}}.
  • Оптимизация. Полный градиентный спуск точен, но дорог; стохастический — шумный; на практике используют мини-батчи. Ускорение — момент: скорость vv — экспоненциальное среднее градиентов, v:=βv+(1−β)∇Jv := \beta v + (1 - \beta) \nabla J, а шаг делается по vv, как машина, которая продолжает ехать по инерции.
  • Анализ и регуляризация. Пример конспекта: 96% точности на обучении и 64% на тесте — переобучение. Лекарства: больше данных, регуляризация, менее глубокая модель. L2-регуляризация добавляет λ2∥W∥2\frac{\lambda}{2} \lVert W \rVert^2, и шаг превращается в W:=(1−αλ)W−α∇JW := (1 - \alpha\lambda) W - \alpha \nabla J — веса на каждом шаге «усыхают» (weight decay).
  • Разделение параметров. Логистическая регрессия на пикселях учит отдельный вес для каждой позиции: если мяч ни разу не встречался в левом верхнем углу, его там не найдут. Свёрточный фильтр, скользящий по картинке с одними и теми же весами, решает проблему — это идея CNN (наш перевод конспекта CS231n о свёрточных сетях).

Даны точки без меток; нужно разбить их на kk групп. Алгоритм: случайно выбрать kk центроидов μj\mu_j (например, kk случайных точек выборки), затем повторять до сходимости два шага:

  1. назначение: каждую точку отнести к ближайшему центроиду, c(i):=arg⁡min⁡j∥x(i)−μj∥2c^{(i)} := \arg\min_j \lVert x^{(i)} - \mu_j \rVert^2;
  2. обновление: каждый центроид сдвинуть в среднее своих точек.

Алгоритм — это покоординатный спуск по функции искажения J(c,μ)=∑i∥x(i)−μc(i)∥2J(c, \mu) = \sum_i \lVert x^{(i)} - \mu_{c^{(i)}} \rVert^2: шаг 1 минимизирует её по cc при фиксированных μ\mu, шаг 2 — по μ\mu при фиксированных cc. Значит, JJ монотонно убывает и алгоритм сходится, но только к локальному минимуму: функция невыпукла. Поэтому k-средних запускают несколько раз с разной инициализацией и берут результат с наименьшим JJ.

Мягкая версия кластеризации — смесь гауссиан: у каждой точки есть скрытая метка z(i)∼Multinomial(ϕ)z^{(i)} \sim \text{Multinomial}(\phi), а при данной метке x(i)∣z(i)=j∼N(μj,Σj)x^{(i)} \mid z^{(i)} = j \sim \mathcal{N}(\mu_j, \Sigma_j). Если бы метки zz были известны, оценка параметров свелась бы к GDA из первого конспекта. Но они скрыты, поэтому EM-алгоритм чередует:

  • E-шаг: для каждой точки вычислить «ответственность» каждой компоненты — апостериорную вероятность wj(i)=p(z(i)=j∣x(i);ϕ,μ,Σ)w_j^{(i)} = p(z^{(i)} = j \mid x^{(i)}; \phi, \mu, \Sigma) по формуле Байеса;
  • M-шаг: пересчитать параметры как в GDA, но со взвешенными точками: ϕj\phi_j — средняя ответственность, μj\mu_j — взвешенное среднее, Σj\Sigma_j — взвешенная ковариация.

Это похоже на k-средних, только вместо «жёсткого» назначения точки одному кластеру — «мягкое». И, как k-средних, EM может застрять в локальном оптимуме.

Общая задача: максимизировать правдоподобие ℓ(θ)=∑ilog⁡∑zp(x(i),z;θ)\ell(\theta) = \sum_i \log \sum_{z} p(x^{(i)}, z; \theta) при скрытых zz. Логарифм суммы неудобен. Ключ — неравенство Йенсена: для выпуклой ff выполняется E[f(X)]≥f(EX)\mathbb{E}[f(X)] \geq f(\mathbb{E}X) (для вогнутого логарифма — наоборот), с равенством, когда величина постоянна. Вводим для каждой точки любое распределение Qi(z)Q_i(z) и получаем нижнюю оценку правдоподобия (сейчас её называют ELBO):

ℓ(θ)≥∑i∑zQi(z)log⁡p(x(i),z;θ)Qi(z).\ell(\theta) \geq \sum_i \sum_{z} Q_i(z) \log \frac{p(x^{(i)}, z; \theta)}{Q_i(z)} .

Оценка точна, если Qi(z)=p(z∣x(i);θ)Q_i(z) = p(z \mid x^{(i)}; \theta). Отсюда EM: E-шаг — сделать оценку точной в текущей точке, выбрав QiQ_i равным апостериорному распределению скрытых переменных; M-шаг — максимизировать оценку по θ\theta. Поскольку оценка касается правдоподобия в текущей точке и лежит ниже него везде, правдоподобие на каждой итерации не убывает. С другой стороны, EM — это покоординатный подъём по нижней оценке J(Q,θ)J(Q, \theta). Для смеси гауссиан эта общая схема в точности даёт формулы выше. Та же нижняя оценка — основа вариационных автокодировщиков (урок 9.1.3).

PCA ищет подпространство малой размерности kk, в котором «живут» данные. Подготовка: центрировать данные (вычесть среднее) и, если признаки в разных единицах, нормировать каждый на его стандартное отклонение. Первая главная компонента — направление uu (единичный вектор), проекции на которое имеют наибольшую дисперсию:

max⁡∥u∥=1  1m∑i(x(i)Tu)2=uTΣu,\max_{\lVert u \rVert = 1} \; \frac{1}{m} \sum_i \big(x^{(i)T} u\big)^2 = u^T \Sigma u ,

где Σ\Sigma — выборочная ковариационная матрица. Максимум достигается на главном собственном векторе Σ\Sigma; kk компонент — это kk собственных векторов с наибольшими собственными числами, а новое представление точки — её координаты (u1Tx,…,ukTx)(u_1^T x, \ldots, u_k^T x). Эквивалентная формулировка — минимизировать ошибку реконструкции (сумму квадратов расстояний от точек до подпространства). Применения из конспекта: сжатие и визуализация данных, предобработка перед обучением (меньше признаков — меньше переобучения), подавление шума, «собственные лица» (eigenfaces) для распознавания лиц. На практике собственные векторы считают через сингулярное разложение матрицы данных (см. наш перевод MIT 18.06 о SVD).

Коротко: обучение с подкреплением (часть XIII)

Заголовок раздела «Коротко: обучение с подкреплением (часть XIII)»

Последний большой конспект вводит марковские процессы принятия решений (состояния, действия, вероятности переходов, награды, коэффициент дисконтирования), уравнения Беллмана, алгоритмы итерации по ценности и итерации по стратегии, обучение модели переходов по опыту и непрерывные состояния — дискретизацию и приближение функции ценности (fitted value iteration). Эти темы подробно разобраны в уроке 6.0.1 «MDP и уравнения Беллмана».

ENRU
end-to-end learningсквозное обучение
vectorization, broadcastingвекторизация, транслирование
symmetry breaking (initialization)нарушение симметрии (при инициализации)
momentum, weight decayмомент, затухание весов
parameter sharingразделение параметров
k-means, distortion functionk-средних, функция искажения
mixture of Gaussians, responsibilityсмесь гауссиан, ответственность компоненты
Jensen’s inequality, lower bound (ELBO)неравенство Йенсена, нижняя оценка (ELBO)
principal components, reconstruction errorглавные компоненты, ошибка реконструкции
value iteration, policy iterationитерация по ценности, итерация по стратегии