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

CS229: обучение с учителем — линейная и логистическая регрессия, GLM, генеративные модели (конспект)

Пересказ первых конспектов курса Эндрю Ына CS229: линейная регрессия и алгоритм LMS, нормальные уравнения, вероятностный смысл наименьших квадратов, локально взвешенная регрессия, логистическая регрессия, перцептрон и метод Ньютона, экспоненциальное семейство и обобщённые линейные модели, softmax-регрессия, гауссов дискриминантный анализ и наивный Байес.

Есть обучающая выборка пар (x(i),y(i))(x^{(i)}, y^{(i)}), i=1,…,mi = 1, \ldots, m: например, площадь дома и его цена (сквозной пример конспекта — 47 домов в Портленде). Нужно найти гипотезу h:X→Yh: \mathcal{X} \to \mathcal{Y}, хорошо предсказывающую yy по xx. Если yy непрерывен — это регрессия, если принимает немного дискретных значений — классификация.

Гипотеза — линейная функция признаков, hθ(x)=θTxh_\theta(x) = \theta^T x (с договорённостью x0=1x_0 = 1, чтобы свободный член вошёл в θ\theta). Функция стоимости — наименьшие квадраты:

J(θ)=12∑i=1m(hθ(x(i))−y(i))2.J(\theta) = \frac{1}{2} \sum_{i=1}^{m} \big(h_\theta(x^{(i)}) - y^{(i)}\big)^2 .

Шаг градиентного спуска для одного примера даёт правило LMS (least mean squares, или правило Уидроу — Хоффа):

θj:=θj+α(y(i)−hθ(x(i))) xj(i).\theta_j := \theta_j + \alpha \big(y^{(i)} - h_\theta(x^{(i)})\big)\, x_j^{(i)} .

Величина обновления пропорциональна ошибке: если предсказание почти верно, параметры почти не меняются. Есть два варианта: пакетный спуск (на каждом шаге — сумма по всей выборке) и стохастический (обновление после каждого примера; быстрее начинает приближаться к минимуму и предпочтителен на больших выборках, хотя «колеблется» вокруг минимума, если не уменьшать шаг). Поскольку JJ — выпуклая квадратичная функция, у неё один глобальный минимум.

Минимум можно найти и сразу. Конспект вводит матричное дифференцирование (градиент по матрице, след и его свойства), записывает J(θ)=12(Xθ−y⃗)T(Xθ−y⃗)J(\theta) = \frac{1}{2} (X\theta - \vec y)^T (X\theta - \vec y) через матрицу плана XX (по строке на пример) и, приравняв градиент к нулю, получает нормальные уравнения:

XTXθ=XTy⃗⟹θ=(XTX)−1XTy⃗.X^T X \theta = X^T \vec y \quad \Longrightarrow \quad \theta = (X^T X)^{-1} X^T \vec y .

Наш небольшой пример на пяти домах из таблицы конспекта (на всех 47 домах конспект получает θ0=71,27\theta_0 = 71{,}27, θ1=0,1345\theta_1 = 0{,}1345):

import numpy as np
area = np.array([2104, 1600, 2400, 1416, 3000.]) # площадь, кв. футы
price = np.array([400, 330, 369, 232, 540.]) # цена, тыс. $
X = np.c_[np.ones(5), area]
theta = np.linalg.solve(X.T @ X, X.T @ price) # нормальные уравнения
print(theta.round(4)) # [26.7899 0.1651]
# тот же ответ градиентным спуском (признак стандартизован, чтобы шаг был устойчив)
mu, sd = area.mean(), area.std()
Xs = np.c_[np.ones(5), (area - mu) / sd]
th = np.zeros(2)
for _ in range(2000):
th -= 0.1 * Xs.T @ (Xs @ th - price) / 5
print(np.round([th[0] - th[1] * mu / sd, th[1] / sd], 4)) # [26.7899 0.1651]

Почему именно квадраты: вероятностный смысл

Заголовок раздела «Почему именно квадраты: вероятностный смысл»

Предположим, что y(i)=θTx(i)+ϵ(i)y^{(i)} = \theta^T x^{(i)} + \epsilon^{(i)}, где шум ϵ(i)\epsilon^{(i)} независим и распределён нормально, N(0,σ2)\mathcal{N}(0, \sigma^2). Тогда правдоподобие параметров — произведение гауссовых плотностей, а его логарифм равен константе минус 1σ2⋅12∑(y(i)−θTx(i))2\frac{1}{\sigma^2} \cdot \frac{1}{2} \sum (y^{(i)} - \theta^T x^{(i)})^2. Значит, метод наименьших квадратов — это оценка максимального правдоподобия при гауссовом шуме; ответ к тому же не зависит от σ2\sigma^2. Это не единственное оправдание квадратов, но очень естественное.

Выбор признаков — отдельная проблема: прямая может недообучиться (данные явно не на прямой), а полином высокой степени — переобучиться (пройти через все точки, но предсказывать нелепо). Локально взвешенная линейная регрессия (LWR) обходит выбор признаков: для каждого запроса xx решается своя задача наименьших квадратов с весами

w(i)=exp⁡(−(x(i)−x)22τ2),w^{(i)} = \exp\Big(-\frac{(x^{(i)} - x)^2}{2\tau^2}\Big),

то есть близкие к запросу точки важнее далёких; τ\tau — ширина окна. LWR — непараметрический алгоритм: для предсказания нужна вся обучающая выборка (в отличие от параметрической линейной регрессии, которой достаточно θ\theta).

Часть II. Классификация и логистическая регрессия

Заголовок раздела «Часть II. Классификация и логистическая регрессия»

Для бинарной классификации (y∈{0,1}y \in \lbrace 0, 1 \rbrace) линейная регрессия плоха: предсказания выходят за [0,1][0, 1]. Берём логистическую (сигмоидную) функцию:

hθ(x)=g(θTx)=11+e−θTx,g′(z)=g(z)(1−g(z)).h_\theta(x) = g(\theta^T x) = \frac{1}{1 + e^{-\theta^T x}}, \qquad g'(z) = g(z)\big(1 - g(z)\big).

Считаем P(y=1∣x;θ)=hθ(x)P(y = 1 \mid x; \theta) = h_\theta(x), записываем логарифм правдоподобия ℓ(θ)=∑iy(i)log⁡h(x(i))+(1−y(i))log⁡(1−h(x(i)))\ell(\theta) = \sum_i y^{(i)} \log h(x^{(i)}) + (1 - y^{(i)}) \log (1 - h(x^{(i)})) и максимизируем его градиентным подъёмом. Удивительно, но правило обновления выглядит точно так же, как LMS: θj:=θj+α(y(i)−hθ(x(i)))xj(i)\theta_j := \theta_j + \alpha (y^{(i)} - h_\theta(x^{(i)})) x_j^{(i)} — только hθh_\theta теперь нелинейна. Почему так совпало, объяснит часть III.

Отступление: перцептрон. Если вместо сигмоиды взять жёсткий порог (g(z)=1g(z) = 1 при z≥0z \geq 0, иначе 0), то же правило даёт алгоритм перцептрона (1960-е). Он похож на логистическую регрессию внешне, но у него нет вероятностной интерпретации и он не выводится как оценка максимального правдоподобия.

Метод Ньютона. Другой способ максимизировать ℓ(θ)\ell(\theta) — искать ноль его производной методом Ньютона: θ:=θ−H−1∇θℓ(θ)\theta := \theta - H^{-1} \nabla_\theta \ell(\theta), где HH — матрица Гессе. Он сходится квадратично (число верных знаков примерно удваивается на каждой итерации) и обычно требует гораздо меньше итераций, чем градиентный спуск, но каждая итерация дороже: нужно обратить матрицу n×nn \times n. Для логистической регрессии это называют методом скоринга Фишера.

Линейная и логистическая регрессии — частные случаи одной конструкции.

Экспоненциальное семейство — распределения вида

p(y;η)=b(y)exp⁡(ηTT(y)−a(η)),p(y; \eta) = b(y) \exp\big(\eta^T T(y) - a(\eta)\big),

где η\eta — естественный параметр, T(y)T(y) — достаточная статистика (обычно T(y)=yT(y) = y), a(η)a(\eta) — логарифм нормирующей константы. Бернулли и гауссово распределения сюда входят: у Бернулли с параметром ϕ\phi естественный параметр η=log⁡ϕ1−ϕ\eta = \log \frac{\phi}{1 - \phi}, откуда ϕ=11+e−η\phi = \frac{1}{1 + e^{-\eta}} — та самая сигмоида. Также входят мультиномиальное, пуассоновское, гамма, бета, Дирихле и другие.

Обобщённая линейная модель (GLM) строится из трёх допущений: (1) y∣x;θy \mid x; \theta лежит в экспоненциальном семействе; (2) мы хотим предсказывать E[T(y)∣x]\mathbb{E}[T(y) \mid x]; (3) естественный параметр линеен по входу, η=θTx\eta = \theta^T x. Выбор распределения сам задаёт модель:

Распределение yyЧто получаетсяhθ(x)h_\theta(x)
Гауссовообычные наименьшие квадратыθTx\theta^T x
Бернуллилогистическая регрессия1/(1+e−θTx)1 / (1 + e^{-\theta^T x})
Мультиномиальное (kk классов)softmax-регрессияsoftmax⁡(θ1Tx,…,θkTx)\operatorname{softmax}(\theta_1^T x, \ldots, \theta_k^T x)
Пуассоновское (счётчики)пуассоновская регрессияeθTxe^{\theta^T x}

Функция, выражающая среднее через естественный параметр, называется канонической функцией отклика (обратная к ней — канонической связью). Для всех GLM правило градиентного обновления имеет один и тот же вид «ошибка × признак» — вот почему LMS и логистическая регрессия совпали. Softmax-регрессия обобщает логистическую на kk классов: вероятность класса jj равна eθjTx∑leθlTx\frac{e^{\theta_j^T x}}{\sum_l e^{\theta_l^T x}}, а обучение — максимизация логарифма правдоподобия, то есть минимизация кросс-энтропии (подробнее — урок 1.3.2).

Логистическая регрессия — дискриминативный алгоритм: моделирует p(y∣x)p(y \mid x) напрямую. Генеративный алгоритм моделирует, как устроены данные каждого класса, p(x∣y)p(x \mid y), и априорные вероятности классов p(y)p(y), а затем классифицирует по формуле Байеса: arg⁡max⁡yp(x∣y)p(y)\arg\max_y p(x \mid y) p(y).

Допущение: признаки каждого класса распределены по многомерному нормальному закону с общей ковариационной матрицей: y∼Bernoulli(ϕ)y \sim \text{Bernoulli}(\phi), x∣y=0∼N(μ0,Σ)x \mid y = 0 \sim \mathcal{N}(\mu_0, \Sigma), x∣y=1∼N(μ1,Σ)x \mid y = 1 \sim \mathcal{N}(\mu_1, \Sigma). Оценки максимального правдоподобия получаются в явном виде: ϕ\phi — доля класса 1, μ0,μ1\mu_0, \mu_1 — средние по классам, Σ\Sigma — общая ковариация отклонений от средних своего класса. Граница решений — линейная.

GDA или логистическая регрессия? Если расписать p(y=1∣x)p(y = 1 \mid x) для модели GDA, получится в точности сигмоида от линейной функции xx. Обратное неверно: из логистической формы не следует гауссовость. Значит, GDA делает более сильные допущения: если они верны (хотя бы приблизительно), GDA эффективнее по данным — ей нужно меньше примеров, и она асимптотически лучшая. Логистическая регрессия устойчивее: она верна при многих распределениях (например, когда x∣yx \mid y пуассоновские), поэтому на практике её используют чаще, особенно при большом количестве данных.

Для текстов признаки дискретны и их много: x∈{0,1}nx \in \lbrace 0, 1 \rbrace^n — есть ли в письме каждое слово словаря (пример конспекта — фильтр спама). Моделировать полное p(x∣y)p(x \mid y) невозможно (2n2^n значений), поэтому делаем наивное байесовское допущение: слова условно независимы при данном классе, p(x1,…,xn∣y)=∏jp(xj∣y)p(x_1, \ldots, x_n \mid y) = \prod_j p(x_j \mid y). Допущение заведомо неверно, но классификатор работает удивительно хорошо. Параметры — просто доли: доля спам-писем, в которых встречается слово jj, и т. д.

Сглаживание Лапласа. Если слово ни разу не встречалось в обучающих письмах, его оценка вероятности равна нулю в обоих классах, и формула Байеса даёт 0/00/0. Лечение — добавить единицу к каждому счётчику (и число исходов к знаменателю): ϕj=countj+1m+k\phi_j = \frac{\text{count}_j + 1}{m + k} для признака с kk значениями.

Модели событий для текста. Описанная модель называется многомерной моделью Бернулли (учитывается только наличие слова). Обычно лучше работает мультиномиальная модель событий: письмо — последовательность слов, каждое из которых независимо выбирается из распределения слов своего класса, так что учитывается и сколько раз слово встретилось.

ENRU
hypothesis, cost functionгипотеза, функция стоимости
LMS / Widrow-Hoff ruleправило LMS (Уидроу — Хоффа)
normal equations, design matrixнормальные уравнения, матрица плана
locally weighted regressionлокально взвешенная регрессия
underfitting, overfittingнедообучение, переобучение
exponential family, natural parameterэкспоненциальное семейство, естественный параметр
generalized linear model, canonical linkобобщённая линейная модель, каноническая связь
discriminative vs generativeдискриминативный и генеративный
Laplace smoothingсглаживание Лапласа