Вероятность
Практика: правдоподобие
Логистическая регрессия как MLE и наивный Байес — два классических метода, выведенных, а не заученных
Логистическая регрессия — это не «регрессия с сигмоидой»
Её выводят, а не постулируют. Модель говорит: метка распределена по Бернулли с параметром, зависящим от входа.
Дальше — MLE из урока 120, буква в букву. Правдоподобие одного наблюдения равно , логарифм суммируется по выборке, и минус log-правдоподобие получается таким:
Это в точности бинарная
Приведённая форма получается из подстановкой и не требует ни одного логарифма от возможного нуля. Это не косметика: наивная запись через падает с ошибкой, как только округлится до или — а это происходит уже при .
Градиент, который стоит запомнить
То есть (предсказание − правда) × вход. Никакой производной сигмоиды в ответе нет, хотя в выводе она есть — она сокращается. Тот же вид имеет градиент softmax с кросс-энтропией (блок 2, урок 080) и градиент MSE с линейной моделью. Это не совпадение: у всех обобщённых линейных моделей из урока про экспоненциальное семейство градиент выглядит одинаково, и именно это делает их одним семейством, а не тремя похожими методами.
Поверхность правдоподобия
Ландшафт по выпуклый — одна впадина, никаких локальных минимумов. Это редкое и приятное свойство; глубокие сети его не имеют, и об этом будет блок 5.
Первый набор — линейно разделимые данные. Потащите точку и следите за градиентом: он нигде не обращается в нуль. Минимума нет: чем больше , тем меньше потеря ( при , при , при ), и MLE уходит в бесконечность.
- −log L
- 0.24
- градиент
- -0.27, 0.08
- норма градиента
- 0.28
Градиент не обращается в нуль нигде. Данные разделимы, поэтому увеличивать w выгодно всегда: потеря падает к нулю, а веса растут без предела. Это переобучение в чистейшем виде — модель становится бесконечно уверенной по четырём точкам.
Сравнение первых двух наборов — самый содержательный вывод этого урока. Разделимость данных ломает MLE, и лечится это добавлением prior. То есть регуляризация здесь не улучшает оценку, а делает задачу разрешимой вообще. На разделимых данных без регуляризации веса логистической регрессии расходятся — это реальный эффект, который видно в логах любого обучения на маленьком чистом датасете.
Третий набор уточняет картину: стоило данным перестать быть разделимыми, и минимум нашёлся сам. Необходимость регуляризации — свойство данных, а не метода.
Наивный Байес
Другой подход к той же задаче классификации. Логистическая регрессия моделирует напрямую — она дискриминативна. Наивный Байес моделирует и , а затем разворачивает их правилом Байеса — он генеративен.
«Наивное» — это допущение, что признаки условно независимы при данном классе. Оно почти всегда ложно (в тексте слова коррелируют очевидно), и метод всё равно работает. Причина в том, что для классификации нужен лишь верный порядок вероятностей, а не их верные значения: наивный Байес выдаёт плохо калиброванные вероятности и при этом часто правильный argmax.
Обучение — это MLE с сопряжёнными priors из урока 080, и оно сводится к подсчёту частот:
здесь — тот самый Дирихле-prior, и без него одно ненаблюдённое слово обнуляет всё произведение. Это сглаживание Лапласа, встреченное в блоке 3 трижды с разных сторон.
Практически всё считают в log-пространстве:
Произведение сотни маленьких вероятностей underflow’ится — та же причина, что и в уроке 120, и то же решение.
Что делать руками
- Логистическая регрессия с нуля. Реализуйте устойчивую NLL и градиент ; проверьте градиент центральными разностями (относительная ошибка должна быть порядка , как в проверке ниже). Обучите на любом двумерном облаке и нарисуйте разделяющую прямую.
- Убедитесь, что веса расходятся. Возьмите линейно разделимую выборку и обучайте без регуляризации, логируя . Он будет расти неограниченно. Добавьте L2 и посмотрите, где он остановится.
- Наивный Байес на текстах. Двадцать документов, два класса, мешок слов. Сначала без сглаживания — получите нулевые вероятности; затем с .
- Сравните калибровку. На одном датасете постройте гистограммы предсказанных вероятностей у обоих методов. Наивный Байес будет прижимать их к и — это и есть плата за ложное допущение независимости.
- Проверьте общий вид градиента. Реализуйте линейную регрессию, логистическую и
softmax-регрессию через одну и ту же функцию
grad = X.T @ (predict(X, w) - Y) / n, меняя толькоpredict. Работать должны все три — это и есть обобщённая линейная модель.
Источники
- Bishop — Pattern Recognition and Machine Learning, гл. 4.2–4.3 — Логистическая регрессия, наивный Байес
- Ng, Jordan — On Discriminative vs. Generative Classifiers — Наивный Байес против логистической регрессии
Проверки
0 из 2Два классификатора
Отметьте все верные утверждения о логистической регрессии и наивном Байесе.
Логистическая регрессия: потеря и градиент
Реализуйте
logistic_nll_grad(xs, ys, w, b)для одномерного входа — верните[nll, dw, db], всё усреднённое по выборке ( = длинаxs):Считайте устойчиво. Запись через на последнем случае даёт ошибку домена: округляется до единицы, и — это . Используйте
Сигмоиду тоже стоит считать по знаку : при и при — иначе
expпереполнится.Загрузка редактора…
Ctrl/⌘ + Enter