Неделя 02 · От оценок к вероятностям и решениям
Рисунки, изображения, анимации и их элементы управления сохранены с исходными английскими надписями. Переведены текст главы, таблицы и внешние подписи; формулы и код сохранены.
Главный вопрос. Как обучаемый скор становится вероятностью, а затем решением — и что меняется, если классификатор обучается по критерию зазора?
Содержание. Бинарная и многоклассовая перекрёстная энтропия вводятся как рабочие цели. Их вывод через правдоподобие и теорию информации относится к неделе 07. SVM и ядра — самостоятельная тема недели 02, используемая в лабораторной недели 03; полный вывод двойственной задачи и условий KKT необязателен.
Результаты обучения и необходимые знания
- проводить разведочный анализ обучающих данных (EDA), различая масштабирование и расширение выразительности модели;
- вычислять логиты, сигмоидные вероятности, логарифмы шансов и пороговые решения;
- понимать BCE/CE, устойчивые реализации по логитам и формы входов;
- сравнивать метрики матрицы ошибок, компромиссы ROC/PR и пороги, выбранные по валидации;
- различать one-vs-rest и связанный softmax-классификатор;
- объяснять зазоры, опорные векторы, hinge loss, ядра и роли \(C\) и \(\gamma\);
- различать скор решения, оценку вероятности класса и калибровку.
Нужны роли данных, векторы, цели обучения и градиентные обновления из недели 01. Базовые вероятностные понятия вводятся здесь; правдоподобие и теория информации не предполагаются.
Сопутствующие материалы: лекция, практикум, лабораторная 2 и программа.
Соглашения об обозначениях
| Символ | Значение и соглашение |
|---|---|
| \(x_i\in\mathbb R^{d\times1}\) | Исходный входной столбец; наблюдения занимают строки \(X\) |
| \(g(x_i)\in\mathbb R^{d_g\times1}\) | Фиксированное отображение в \(d_g\) координат; строки признаков образуют \(G\) |
| \(w\in\mathbb R^{d_g\times1}\), \(b\), \(\theta=(w,b)\) | Соответствующие веса, скалярный свободный член и их совокупность |
| \(y_i\in\{0,1\}\), \(z_i\) | Наблюдаемая бинарная метка и скалярный аффинный скор (логит) |
| \(q_i=\sigma(z_i)\), \(\widehat c_i\) | Вероятность класса один и отдельное решение о классе |
| \(\tau\in(0,1)\) | Порог вероятности; рабочее значение выбирают по валидации |
| \(\delta(x)\) | Расстояние со знаком до нулевой линии уровня в заданных входных координатах |
| \(K\), \(q_{ic}\) | Число классов и вероятность класса \(c\); \(C\) оставляем для SVM |
| \(L_i\), \(\bar L=n^{-1}\sum_i L_i\) | Потеря на примере и явно усреднённая цель |
| \(t_i=2y_i-1\), \(f(x)\) | Метка со знаком и скор решения SVM; \(f\) не является вероятностью |
| \(k(x,x')\), \(C\), \(\gamma\) | Ядро, штраф мягкого зазора и масштаб RBF |
Входы и веса остаются столбцами, как в неделе 01. Батчевые скоры, вероятности и бинарные цели имеют согласованные формы \((n,1)\). Соглашение ноутбука со сжатыми массивами \((n,)\) будет пояснено ниже. Многоклассовые логиты имеют форму \((B,K)\), метки-индексы — \((B,)\), где \(B\) — размер батча; там \(y_i\) означает индекс класса, а не бинарную метку. Формы и смыслы повторяются при введении каждой потери.
Параметр \(\phi\) лекции обозначаем \(\theta\), вероятность \(h\) — \(q\). Отображение признаков \(\phi(x)\) ноутбука обозначаем \(g(x)\), оставляя \(\phi\) для активаций нейросети. Метка SVM \(t_i\) принимает \(-1,+1\) и отличается от порога \(\tau\). Логарифмы натуральные. Скоры и вероятности безразмерны, как и входы маленького примера. В настоящих данных вес должен согласовываться с единицами признака.
Изучите данные до построения границы
Что предсказывать и по каким наблюдениям?
В неделе 01 напряжение давало непрерывное предсказание. Теперь вход относят к одному из двух классов. Метка \(y=1\) обозначает положительный класс, \(y=0\) — другой. «Положительный» означает выбранное событие, а не желательное, здоровое или частое. Метка — наблюдаемый исход; модель может выдавать вероятность вместо немедленного «да/нет».
Ноутбук использует две зашумлённые луны — изогнутые полосы точек на плоскости без физических единиц. Диаграмма рассеяния выявляет структуру, скрытую отдельными гистограммами координат. Прямая полезна как базовая модель: систематические ошибки обнаруживают ограничение представления. Позже Iris даёт отдельный трёхклассовый пример с измерениями лепестков в сантиметрах.
В ноутбуке 900 наблюдений, стратифицированное разбиение 540/180/180 на обучение/валидацию/тест, seed 2026 и шум 0.23. Стратификация использует метки для распределения строк по классам, но не разрешает выбирать модель по отложенным исходам. Обучение определяет параметры и статистики предобработки; валидация — представление, настройки и пороги; тест оценивает зафиксированный pipeline. Это воспроизводимые учебные настройки, не универсальный размер выборки. Зависимость от пациента, устройства, сеанса или времени может требовать другого разбиения.
EDA и предобработка — части pipeline
Разведочный анализ данных (exploratory data analysis, EDA) выясняет содержание обучающей выборки до сложного моделирования. Проверьте смысл и единицы признаков, пропуски, невозможные значения, количества меток, дубликаты и групповые идентификаторы. Рассмотрите распределения и связи с метками. Корреляция или рисунок предлагают гипотезу, но не доказывают причинность или качество на новых данных. Наблюдаемый прямоугольник минимумов–максимумов описывает выборку, а не доказывает границы распределения.
Численные признаки стандартизируют по формуле:
\[ \widetilde x_j=\frac{x_j-\mu_j}{s_j}, \]
Здесь \(\mu_j\) и \(s_j>0\) — обучающие среднее и масштаб признака \(j\). На валидации и тесте используют те же значения. Нулевой масштаб постоянного обучающего признака нужно обработать явно: внутривыборочной вариации он не даёт. Масштабирование меняет координаты и оптимизацию, но не добавляет наблюдений и не изгибает аффинную границу. Ниже эти эффекты будут разделены.
Пропуск численного значения не равен нулю. Простой вариант — обучающая медиана, возможно с индикатором пропуска; оба решения входят в pipeline и проверяются по валидации. Для номинального признака, например региона, one-hot задаёт принадлежность без вымышленных численных расстояний. Все категории вместе со свободным членом создают избыточные столбцы; опорная категория устраняет эту избыточность. Для неизвестной категории нужно отдельное правило. Порядковый признак имеет осмысленный порядок, но кодирование 0, 1, 2 дополнительно предполагает равные приращения скора линейного члена. Сам порядок этого не обосновывает.
Утечка: просмотреть все метки, выбрать перспективный признак, заполнить пропуски по всем строкам и только потом разделить данные. Выбор признака и заполнение уже использовали отложенные сведения. Сначала разделите по будущему применению, обучайте преобразования на тренировочных строках, выбирайте варианты по валидации и сохраняйте итоговый тест. Лабораторная 2 применяет эти роли к медицинским измерениям. Её квадратичные PCA-признаки отличаются от кубических признаков лун практикума и от примера ниже.
Зафиксируем пример для ручной проверки
Для расчётов и анимации возьмём отдельную безразмерную синтетическую обучающую выборку. Таблица группирует 16 размеченных наблюдений в четырёх координатах. Каждое количество означает разные строки; A–D именуют положения, не отдельные наблюдения. Все строки обучающие; валидации, теста и оценки отложенного качества нет.
| Точка | \((x_1,x_2)\) | Количество \(y=0\) | Количество \(y=1\) |
|---|---|---|---|
| A | \((1,0)\) | 1 | 3 |
| B | \((0,1)\) | 1 | 3 |
| C | \((-1,0)\) | 3 | 1 |
| D | \((0,-1)\) | 3 | 1 |
В каждой координате присутствуют оба класса. Это намеренная неоднозначность: признаки не определяют каждую метку. Одинаковый вход должен получать одинаковую вероятность. Точка O в \((0,0)\) — неразмеченная проба, не семнадцатое обучающее наблюдение.
Начнём с заданных вручную весов \(w=(2,-1)^\top\) и \(b=0\), не полученных обучением. В двухпараметрической анимации фиксируем \(b=0\) и обновляем только \(w_1,w_2\), чтобы состояния лежали на одной точной двумерной поверхности потерь. Общая логистическая модель сохраняет обучаемый свободный член. Противоречивые метки и два независимых направления исключают опору на идеально разделимый пример с расходящимися весами. Цель и обновления определяются дальше.
Геометрия скора
Сохраним взвешенную сумму, изменим толкование
Для фиксированного отображения \(g(x)\) начнём с аффинного скора:
\[ z(x)=w^\top g(x)+b. \]
Веса и свободный член — обучаемые параметры. Для двух исходных координат \(g(x)=x\) и
\[ z(x)=w_1x_1+w_2x_2+b. \]
Скор может быть любым действительным числом; это не метка и не вероятность. При заданных параметрах \(z(x)=2x_1-x_2\). В A скор 2, в B −1, в O 0. Метка не входит в расчёт; она войдёт в потерю при обучении.
Для \(n\) входов соберём исходные строки в \(X\), строки признаков — в \(G\). Батчевый расчёт:
\[ z=Gw+b\mathbf1. \]
Форма \(X\) — \((n,d)\), \(G\) — \((n,d_g)\), \(w\) — \((d_g,1)\); \(\mathbf1\) — столбец единиц \((n,1)\). Поэтому скоры \(z\), вероятности \(q\) и цели \(y\) могут иметь форму \((n,1)\). При тождественном отображении \(G=X\). Ноутбук сжимает бинарные логиты до \((n,)\), согласуя их с одномерными целями. Оба соглашения допустимы при совпадении форм; смешивание способно незаметно развернуть вектор в матрицу через broadcasting.
Нулевая линия уровня и нормаль
При двух исходных признаках все точки, удовлетворяющие
\[ w_1x_1+w_2x_2+b=0 \]
образуют прямую при \(w\ne0\). Разность \(v\) двух точек прямой удовлетворяет \(w^\top v=0\), значит \(w\) перпендикулярен прямой. Движение по \(w\) увеличивает скор. При фиксированных весах свободный член параллельно сдвигает нулевую линию. В примере она задаётся \(x_2=2x_1\), как на Рисунок 1.
Рисуя границы, сохраняйте неявное уравнение. Выражение \(x_2\) через деление на \(w_2\) невозможно при \(w_2=0\), хотя вертикальная прямая допустима. В большей размерности получается гиперплоскость. Прообраз при фиксированных нелинейных признаках может искривляться в исходной плоскости; к этому вернёмся после обучения скора (Bishop 2006 г., Chapter 4).
Скор обычно не равен расстоянию
При \(g(x)=x\) и \(w\ne0\) спроецируем вход на нулевую линию:
\[ x_{\rm boundary}=x-\frac{z(x)}{\lVert w\rVert_2^2}w. \]
Подстановка этой точки в аффинный скор даёт ноль. Поэтому перпендикулярное расстояние со знаком, положительное на стороне \(z>0\), равно:
\[ \delta(x)=\frac{z(x)}{\lVert w\rVert_2}. \]
Норма \(\lVert w\rVert_2\) — корень из суммы квадратов координат весов; здесь это \(\sqrt5\). Скор A равен 2, а расстояние со знаком в заданных координатах — \(2/\sqrt5\approx0.8944\). При смене единиц расстояние меняется; оно само по себе не является вероятностью или мерой знакомости входа.
Если \(w=0\), делить на норму нельзя. При \(b\ne0\) скор всюду одинаков и ненулевой, нулевое множество пусто. При \(b=0\) скор нулевой на всей плоскости: это не единственная разделяющая прямая.
Вероятность не равна решению
От действительного скора к бинарной вероятностной модели
Сигмоида (sigmoid) отображает скор в \((0,1)\):
\[ \begin{aligned} q(x)&=\sigma(z(x)),\\ \sigma(z)&=\frac{1}{1+e^{-z}}. \end{aligned} \]
Экспонента \(e^{-z}\) положительна, поэтому конечный скор даёт значение строго между нулём и единицей. Интерпретируем \(q(x)\) как \(P_\theta(Y=1\mid x)\): условную вероятность метки один при входе \(x\) и параметрах \(\theta=(w,b)\). Вероятность нуля — \(1-q(x)\). Это описание модели, не знание истинного порождающего распределения; точность оценок нужно проверять.
При \(z=0\) получаем \(q=0.5\). Больший скор повышает вероятность единицы, сильно отрицательный — понижает. Несмотря на название логистическая регрессия, отклик здесь — вероятность класса из линейного скора, а не неограниченная численная цель недели 01. Сигмоида не изгибает прямую нулевого скора.
Шансы (odds) единицы равны \(q/(1-q)\). Преобразуя сигмоиду, получаем:
\[ \frac{q}{1-q}=e^z, \]
Натуральный логарифм даёт логарифм шансов (log-odds), или логит:
\[ z=\log\frac{q}{1-q}. \]
Логистическая регрессия моделирует логарифм шансов аффинной функцией признаков. Увеличение скора на единицу умножает шансы на \(e\), а не добавляет постоянную к вероятности. В A \(z=2\) даёт \(q=1/(1+e^{-2})\approx0.8808\). Одна оценка применяется ко всем четырём строкам A, включая противоречивые метки. Вероятность не воспроизводит каждый наблюдаемый исход.
До выбора класса задайте правило решения
Выберем порог \(\tau\in(0,1)\) и определим:
\[ \widehat c(x)= \begin{cases} 1,&q(x)\ge\tau,\\ 0,&q(x)<\tau. \end{cases} \]
Во всей главе равенство относится к классу один. Порог — настройка решения, отдельная от обученных весов. Рабочий выбор зависит от последствий ошибок и валидации; 0.5 — ориентир, не универсальное требование.
Строгая монотонность сигмоиды позволяет обратить порог:
\[ \begin{aligned} q(x)\ge\tau &\iff \frac{q(x)}{1-q(x)}\ge\frac{\tau}{1-\tau}\\ &\iff z(x)\ge\log\frac{\tau}{1-\tau}. \end{aligned} \]
Только \(\tau=0.5\) соответствует границе нулевого скора. При \(\tau=0.8\) порог скора равен \(\log4\approx1.3863\), граница — \(2x_1-x_2=\log4\). Она перемещается при фиксированной функции вероятности. Повышение порога сужает область класса один, не обновляя параметров.
| Точка | \(z\) | \(q\) | \(\widehat c\) при .5 | \(\widehat c\) при .8 |
|---|---|---|---|---|
| A | 2 | 0.8808 | 1 | 1 |
| B | −1 | 0.2689 | 0 | 0 |
| C | −2 | 0.1192 | 0 | 0 |
| D | 1 | 0.7311 | 1 | 0 |
| O | 0 | 0.5000 | 1 | 0 |
В D одинаковые скор и вероятность поддерживают разные решения по двум правилам. Решение для O при 0.5 следует соглашению о равенстве, а не сильным свидетельствам единицы; истинной метки O нет. Вероятность нельзя путать с количеством верных решений или оценкой отложенного качества.
Перейдите в таблице от порога 0.5 к 0.8. Что изменилось: вход, скор, вероятность, параметры или решение? Сохранит ли выбор порога с лучшим тестовым результатом независимую итоговую оценку?
Одинаковая граница допускает разные вероятности
Умножим \(w\) и \(b\) на положительное \(a\); новый скор — \(az\). Нулевая граница и решения при 0.5 сохраняются. Вероятности обычно меняются: удвоение скора A даёт \(\sigma(4)\approx0.9820\) вместо \(\sigma(2)\approx0.8808\). Больший множитель сдвигает вероятности ненулевых скоров к 0 или 1, сохраняя ранжирование, но не обязательно улучшая точность вероятностей. При другом пороге решения могут измениться.
Бинарную уверенность (confidence) часто записывают \(\max(q,1-q)\). Это концентрация внутри двух известных вариантов, не доказательство правильности или знакомости. Одна геометрия допускает разную уверенность без новых данных. Ниже вернёмся к уверенным предсказаниям вдали от обучающих входов.
Параметры двух классификаторов — \((w,b)\) и \((10w,10b)\). Их решения при 0.5 совпадают. Обязаны ли совпадать вероятности? Обязан ли более уверенный быть точнее? Какие данные нужны для сравнения вероятностей?
Вырожденная модель \(w=0\) даёт постоянную вероятность \(\sigma(b)\). Если \(b=0\), вероятность всюду 0.5, и включающее равенство правило выбирает единицу всюду. Отсутствие единственной границы совместимо с корректно определёнными вероятностью и решением.
BCE обучает скор; численная устойчивость сохраняет цель
Включим наблюдаемую метку в обучение
Заданный вручную скор объясняет предсказание, но не обучение весов. Нужна потеря, сравнивающая вероятность \(q_i\) с бинарной меткой \(y_i\). Введём бинарную перекрёстную энтропию (binary cross-entropy, BCE) непосредственно как цель:
\[ L_i=-y_i\log q_i-(1-y_i)\log(1-q_i). \]
При \(y_i=1\) потеря равна \(-\log q_i\), при \(y_i=0\) — \(-\log(1-q_i)\). Метка выбирает вероятность наблюдаемого события; повышение этой вероятности уменьшает потерю. Уверенная ошибка дорога: для положительного примера \(q=0.9\) даёт около 0.1054, а \(q=0.1\) — около 2.3026. Для отрицательного значения меняются местами. Порог решения в цель не входит.
Натуральные логарифмы фиксируют численный масштаб. Усредним по объявленным обучающим наблюдениям:
\[ \bar L=\frac1n\sum_{i=1}^{n}L_i. \]
Здесь нет половинного множителя и штрафа параметров. Повторяющиеся координаты учитываются по каждому размеченному наблюдению: четыре точки содержат 16 строк, не четыре одинаково размеченных примера. Вероятностное обоснование логарифмической потери дано в неделе 07; здесь изучаем расчёт, производные и применение.
Выведем градиент через сигмоиду
Сначала продифференцируем потерю по вероятности:
\[ \frac{\partial L_i}{\partial q_i} =-\frac{y_i}{q_i}+\frac{1-y_i}{1-q_i}. \]
Дифференцирование \(q_i=(1+e^{-z_i})^{-1}\) даёт:
\[ \frac{\partial q_i}{\partial z_i} =\frac{e^{-z_i}}{(1+e^{-z_i})^2} =q_i(1-q_i). \]
Цепное правило перемножает локальные производные. После сокращения вероятностных множителей:
\[ \begin{aligned} \frac{\partial L_i}{\partial z_i} &=-y_i(1-q_i)+(1-y_i)q_i\\ &=q_i-y_i. \end{aligned} \]
Для положительной метки \(q_i-y_i<0\), поэтому локальное снижение потери требует повышения логита, для отрицательной — понижения. У уверенно неверного предсказания производная по логиту близка соответственно к −1 или +1. Это остаткоподобное выражение относится именно к BCE после сигмоиды. Квадратичная ошибка вероятностей добавила бы производную сигмоиды и иной множитель: это другая цель.
Поскольку \(\partial z_i/\partial w_j=g_j(x_i)\) и \(\partial z_i/\partial b=1\), градиенты средней потери равны:
\[ \begin{aligned} \nabla_w\bar L&=\frac1nG^\top(q-y),\\ \frac{\partial\bar L}{\partial b} &=\frac1n\mathbf1^\top(q-y). \end{aligned} \]
Форма \(G\) — \((n,d_g)\), столбца остатков \(q-y\) — \((n,1)\), градиента весов — \((d_g,1)\). Производная свободного члена скалярная. Вычислите все производные при одних старых параметрах и выполните одновременный шаг:
\[ \begin{aligned} w&\leftarrow w-\eta\nabla_w\bar L,\\ b&\leftarrow b-\eta\frac{\partial\bar L}{\partial b}. \end{aligned} \]
Здесь \(\eta>0\) — скорость обучения. Замена среднего суммой умножает градиенты на \(n\) и меняет шаг при той же скорости.
Проверенный шаг на фиксированной таблице
Для тождественных признаков примера \(G=X\). Индекс \((k)\) считает завершённые обновления, не степени. Фиксируем \(b=0\) и начинаем с \(w^{(0)}=(2,-1)^\top\). Противоречивые количества классов дают начальные градиенты:
\[ \begin{aligned} \left.\frac{\partial\bar L}{\partial w_1}\right|_{w^{(0)}} &=\tfrac12\bigl(\sigma(2)-\tfrac34\bigr)\\ &\approx0.065399,\\ \left.\frac{\partial\bar L}{\partial w_2}\right|_{w^{(0)}} &=\tfrac12\bigl(\sigma(-1)-\tfrac34\bigr)\\ &\approx-0.240529. \end{aligned} \]
Например, A вносит \(4\sigma(w_1)-3\) в сумму производных первого веса, C — \(-\{4\sigma(-w_1)-1\}\); подстановка \(\sigma(-w_1)=1-\sigma(w_1)\) и деление общей суммы на 16 даёт первое выражение. B и D аналогично дают второе.
При скорости \(\eta=0.5\) используем обе начальные производные:
\[ \begin{aligned} w_1^{(1)}&=2-0.5(0.065398539)\\ &\approx1.967301,\\ w_2^{(1)}&=-1-0.5(-0.240529289)\\ &\approx-0.879735. \end{aligned} \]
Средняя обучающая BCE снижается с 0.845095 до 0.814781. В B с входом \((0,1)\) вероятность растёт с 0.268941 до 0.293233. Изменились оба веса, граница повернулась. Свободный член нулевой из-за объявленного ограничения, а не принципиальной необучаемости; здесь его производная также случайно сокращается по симметрии.
Одно обновление в двух пространствах
Рисунок 2 показывает 120 одновременных полнопакетных обновлений с той же скоростью. Начальное состояние удерживается три секунды, первое обновление — четыре. Далее идут записанные состояния и длинная финальная пауза. Используйте стандартные кнопки воспроизведения; звука и автозапуска нет.
The initial boundary is 2x₁−x₂=0. The first update decreases w₁ and increases w₂, lowering mean BCE. Later w₂ changes sign; a zero value would give a vertical boundary. The final boundary slopes downward. By update 120 the weights are approximately (1.102331, 1.094002), with mean BCE 0.562337 and probability 0.749135 at B. The loss-contour point and the data-space boundary describe the same parameters at every recorded state. This is fitting on training observations, not a held-out performance result.
Статическая последовательность Рисунок 3 содержит те же начальное, первое и последнее состояния для чтения без движения и печати.
| \(k\) | \(w_1\) | \(w_2\) | Средняя BCE |
|---|---|---|---|
| 0 | 2.000000 | −1.000000 | 0.845095 |
| 1 | 1.967301 | −0.879735 | 0.814781 |
| 120 | 1.102331 | 1.094002 | 0.562337 |
Последняя точка близка к конечному оптимуму, но не сошлась точно. В каждой координате есть обе метки, поэтому вероятность, сколь угодно близкая к 0 или 1, сильно штрафует противоречащее наблюдение. Это отличается от идеально разделимой выборки без регуляризации, где веса могут расти, пока BCE приближается к инфимуму. Конец анимации не доказал бы конечный оптимум той задачи.
Здесь всегда \(b=0\). Может ли обучение сдвинуть границу от начала координат? Что происходит при переходе \(w_2\) через ноль? Доказывает ли снижение потерь качество новых предсказаний или только лучшее соответствие обучающим строкам?
Устойчивая арифметика сохраняет цель
Формула вероятности удобна для толкования, но компьютер может округлить сигмоиду до точного 0 или 1. Последующее логарифмирование даёт бесконечности, а произведение нуля на бесконечный логарифм — NaN. Для бинарных меток эквивалентная формула по логиту:
\[ \begin{aligned} L_i&=\max(z_i,0)-z_iy_i\\ &\quad+\log\bigl(1+e^{-|z_i|}\bigr). \end{aligned} \]
Она следует из записи BCE как \(\log(1+e^{z_i})-y_iz_i\) и вынесения большой экспоненты при \(z_i>0\). У оставшейся экспоненты неположительный аргумент. log1p точно вычисляет \(\log(1+u)\) при малом \(u\). Хотя формула содержит максимум, объединённая потеря гладкая в \(z_i=0\); для дифференцирования используйте слитую реализацию framework.
BCEWithLogitsLoss PyTorch объединяет сигмоиду и BCE устойчиво. Передавайте логиты и бинарные floating-point цели совпадающей формы; здесь явно выбрано reduction="mean". Вход в виде готовой сигмоидной вероятности задаёт неверную композицию. Следующая самостоятельная проверка воспроизводит первый шаг на CPU с 64-битной арифметикой:
import torch
X = torch.tensor([[1., 0.], [0., 1.], [-1., 0.], [0., -1.]],
dtype=torch.float64).repeat_interleave(4, dim=0)
y = torch.tensor([0., 1., 1., 1., 0., 1., 1., 1.,
0., 0., 0., 1., 0., 0., 0., 1.],
dtype=torch.float64).reshape(-1, 1)
w = torch.tensor([[2.], [-1.]], dtype=torch.float64, requires_grad=True)
criterion = torch.nn.BCEWithLogitsLoss(reduction="mean")
z = X @ w # b is fixed at zero
assert z.shape == y.shape == (16, 1)
initial_loss = criterion(z, y)
initial_loss.backward()
expected_gradient = torch.tensor([[0.065398539], [-0.240529289]],
dtype=torch.float64)
assert torch.allclose(w.grad, expected_gradient, atol=1e-9, rtol=0.)
with torch.no_grad():
w -= 0.5 * w.grad
updated_loss = criterion(X @ w, y)
assert abs(initial_loss.item() - 0.845094849) < 1e-9
assert abs(updated_loss.item() - 0.814781427) < 1e-9Здесь только одно обновление, поэтому сброс градиентов между итерациями не нужен. В повторяющемся цикле накопленные градиенты очищают перед каждым backward, как в ноутбуке. Вероятности для толкования вычисляют отдельно. Генератор также проверяет 121 состояние центральными разностями, сравнивая соседние потери с аналитическими производными весов и свободного члена; численные производные анимацией не управляют.
Масштабирование и новые признаки меняют разное
Новые координаты не равны новому семейству
Если оптимизация затруднена, масштабировать входы, добавлять признаки или дольше обучать? Это разные решения. Масштабирование меняет численный путь, отображение признаков — выразимые зависимости. Ни одно не гарантирует лучшего качества новых предсказаний.
Запишем обученное по тренировочным данным преобразование \(x_j=\mu_j+s_j\widetilde x_j\), где \(s_j>0\). Подстановка в аффинный скор даёт:
\[ \begin{aligned} z(x)&=\sum_jw_js_j\widetilde x_j+\widetilde b,\\ \widetilde b&=b+\sum_jw_j\mu_j. \end{aligned} \]
Новые веса \(\widetilde w_j=s_jw_j\) и свободный член точно воспроизводят старые скоры. При свободном intercept и обратимом аффинном масштабировании семейство без штрафа не приобретает новых границ. Для анимации с фиксированным intercept центрирование требует осторожности: ограничение не инвариантно к произвольному переносу входов.
Градиентный путь всё же меняется. Умножение признака на 20 умножает его вклад в производную веса на 20 при совпадающих предсказаниях. Поэтому одинаковая скорость и конечное число шагов могут дать другое поведение. Эксперимент растянутых координат в ноутбуке это иллюстрирует; плохой конечный fit не доказывает недостаточность семейства прямых. Штраф коэффициентов тоже зависит от координат: тот же численный штраф после масштабирования обычно меняет цель.
Фиксированное нелинейное отображение изгибает границу
Лунам нужно больше геометрической свободы, чем одна прямая. Ноутбук использует девять непостоянных мономов до третьей степени:
\[ \begin{aligned} g(x)=(&x_1,x_2,x_1^2,x_1x_2,x_2^2,\\ &x_1^3,x_1^2x_2,x_1x_2^2,x_2^3)^\top. \end{aligned} \]
Константный признак не добавляем, сохраняя отдельный свободный член. Скор \(w^\top g(x)+b\) линеен по девяти коэффициентам, но его нулевой контур может изгибаться в исходной плоскости. Например, \(x_1x_2\) отражает совместную зависимость, недоступную отдельным входам. Новых измерений нет, но взвешенная сумма теперь выражает больше функций.
Рисунок 4 повторяет настройки ноутбука: 540 обучающих и 180 валидационных строк, стандартизация по обучению, нулевые начальные логиты, полный SGD со скоростью 0.1 и 1500 обновлениями. Кубическое отображение фиксируют до сравнения; девять столбцов стандартизируют только по обучению. У обеих моделей обучаемый intercept. Тестовые предсказания и оценки для рисунка не вычисляются.
Число параметров включает свободный член; оба столбца качества содержат среднюю BCE.
| Отображение | Параметры | Обучение | Валидация |
|---|---|---|---|
| Линейное | 3 | 0.2537 | 0.2894 |
| Кубическое | 10 | 0.1983 | 0.2254 |
Здесь изогнутая модель имеет меньшую валидационную BCE и 16 ошибок при 0.5 против 22 у прямой из 180 наблюдений. Это поддерживает представление именно в данном сравнении, не доказывая точную оптимизацию, универсальное превосходство полиномов или качество за пределами распределения. Новые члены могут подстраиваться к шуму. Представление и настройки выбирают по валидации, pipeline фиксируют до теста. Анимация четырёх координат — другой пример: новые признаки не устранят противоречивые метки одинаковых входов.
Оценивайте решения, сохраняя скоры
Подсчитать последствия каждого решения
BCE оценивает вероятности, матрица ошибок — решения при заданном пороге. Для прозрачной арифметики используем специально составленную валидационную таблицу. Восемь меток и вероятностей — иллюстрация, отдельная от лун и анимации, не экспорт их моделей. Она не доказывает калибровку или итоговое тестовое качество.
| Строка | Метка \(y\) | Вероятность \(q\) |
|---|---|---|
| V1 | 1 | 0.9 |
| V2 | 0 | 0.8 |
| V3 | 1 | 0.7 |
| V4 | 0 | 0.6 |
| V5 | 1 | 0.4 |
| V6 | 0 | 0.3 |
| V7 | 1 | 0.2 |
| V8 | 0 | 0.1 |
Положительный класс — единица; правило \(\widehat c=1\) при \(q\ge\tau\). Истинноположительный (TP) — положительный пример, предсказанный положительным; ложноположительный (FP) — отрицательный, предсказанный положительным. Ложноотрицательный (FN) — положительный, предсказанный отрицательным; истинноотрицательный (TN) — отрицательный, предсказанный отрицательным.
При \(\tau=0.5\) положительны V1–V4: TP=2, FP=2. Отрицательны V5–V8: FN=2, TN=2. Всего восемь. Ориентация задана явно: строки — наблюдаемые метки, столбцы — предсказанные.
| Наблюдаемый / предсказанный | Класс 0 | Класс 1 |
|---|---|---|
| Класс 0 | TN = 2 | FP = 2 |
| Класс 1 | FN = 2 | TP = 2 |
Accuracy, precision, recall и F1 отвечают на разные вопросы
Четыре распространённых показателя:
\[ \begin{aligned} \mathrm{accuracy}&=\frac{\mathrm{TP}+\mathrm{TN}}{n_{\rm eval}},\\ \mathrm{precision}&=\frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FP}},\\ \mathrm{recall}&=\frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FN}}. \end{aligned} \]
Здесь \(n_{\rm eval}\) — число оценочных строк, не размер обучения. Accuracy — доля правильных решений; precision (точность положительных предсказаний) — доля истинно положительных среди предсказанных; recall (полнота) — доля найденных среди наблюдаемых положительных. Предсказание только частого класса может давать высокую accuracy и пропускать все редкие положительные случаи.
При положительных precision и recall их гармоническое среднее равно:
\[ \begin{aligned} \mathrm{F1}&=\frac{2}{1/\mathrm{precision}+1/\mathrm{recall}}\\ &=\frac{2\mathrm{TP}}{2\mathrm{TP}+\mathrm{FP}+\mathrm{FN}}. \end{aligned} \]
Второе выражение получается подстановкой счётчиков и явно отражает нулевые случаи. F1 сочетает два вида успеха положительного класса, но игнорирует TN и не является универсальной полезностью. При 0.5 все четыре показателя здесь равны 0.5.
Не делите на ноль молча. Без положительных предсказаний precision не определена; без наблюдаемых положительных не определена recall. Формула F1 по счётчикам даёт ноль при TP=0 и FP+FN>0, но при нуле всех трёх величин не определена. Неопределённые отношения обозначаем тире. Программы могут подставлять оговорённое значение; сравнивайте соглашения вместе с числами.
Изменить порог, сохранив все вероятности
Пересчитаем решения для нескольких порогов. Равенство включено: V3 положительна при 0.7, V5 — при 0.4.
| \(\tau\) | TP | FP | FN | TN |
|---|---|---|---|---|
| 0.95 | 0 | 0 | 4 | 4 |
| 0.9 | 1 | 0 | 3 | 4 |
| 0.7 | 2 | 1 | 2 | 3 |
| 0.5 | 2 | 2 | 2 | 2 |
| 0.4 | 3 | 2 | 1 | 2 |
| 0.2 | 4 | 3 | 0 | 1 |
Acc. и Prec. сокращают accuracy и precision.
| \(\tau\) | Acc. | Prec. | Recall | F1 |
|---|---|---|---|---|
| 0.95 | 0.500 | — | 0.000 | 0.000 |
| 0.9 | 0.625 | 1.000 | 0.250 | 0.400 |
| 0.7 | 0.625 | 0.667 | 0.500 | 0.571 |
| 0.5 | 0.500 | 0.500 | 0.500 | 0.500 |
| 0.4 | 0.625 | 0.600 | 0.750 | 0.667 |
| 0.2 | 0.625 | 0.571 | 1.000 | 0.727 |
Зададим правило до выбора: среди вариантов взять наибольший порог с валидационной recall не ниже 0.75. Это учебный сценарий, не требование курса или приложения. Перебор всех порогов изменения решений выбирает \(\tau=0.4\): найдены три из четырёх положительных, всего положительных предсказаний пять. Дальнейшее снижение найдёт четвёртый положительный, но добавит отрицательные. Вероятностная функция и BCE неизменны.
Выбор порога использует валидационные метки даже без градиентов. Изменение правил, признаков и вариантов после просмотра результатов может переобучить метод на эти данные. До итогового теста фиксируйте представление, обученную предобработку, модель и решение. Валидационная recall 0.75 не гарантирует ту же полноту в будущем.
ROC и precision–recall сохраняют перебор порогов
ROC (receiver operating characteristic) откладывает долю ложноположительных по горизонтали, истинноположительных — по вертикали:
\[ \begin{aligned} \mathrm{FPR}&=\frac{\mathrm{FP}}{\mathrm{FP}+\mathrm{TN}},\\ \mathrm{TPR}&=\mathrm{recall}. \end{aligned} \]
Снижение порога только добавляет положительные решения, поэтому обе доли не убывают. Precision не обязана меняться монотонно: растут числитель и знаменатель. PR (precision–recall) для того же перебора показывает recall горизонтально, precision вертикально. Нового обучения эти графики не показывают.
Площадь под ROC (ROC-AUC) характеризует ранжирование по всем порогам, не правильность одного решения. Положительные здесь превосходят соответственно 4, 3, 2 и 1 отрицательных: 10 успехов из 16 пар, AUC=0.625. Равенство скоров даёт половину балла; единый порог не разделяет группу равных. AUC не устанавливает калибровку, не выбирает правило и не оценивает цену ошибок.
Precision зависит от распространённости (prevalence) положительного класса. При фиксированных условных распределениях скоров изменение его доли сохраняет TPR/FPR, но меняет долю истинных положительных среди предсказанных. Например, TPR=0.75 и FPR=0.5 при 40 положительных и 60 отрицательных дают TP=30, FP=30 и precision=0.5 вместо 0.6 при доле положительных 50%. Это гипотетические счётчики при фиксированных долях ошибок, не новый эксперимент. Ориентир PR должен учитывать нужную распространённость; при сдвиге условных распределений меняется и ROC. Соглашения реализации см. в руководстве scikit-learn.
Несколько классов требуют явной модели
Несколько бинарных вопросов или одно категориальное распределение?
В задаче Iris три взаимоисключающих вида. Ноутбук использует длину и ширину лепестков, отдельное разбиение 90/30/30 и scaler по обучению. Это мотивация многоклассовых моделей; логиты ниже выбраны вручную и не являются обученными результатами Iris.
Пусть \(c=0,\ldots,K-1\) нумерует классы, а \(C\) оставим для штрафа SVM. Скор класса — \(z_c=w_c^\top g(x)+b_c\). Один против остальных (one-vs-rest, OvR) задаёт \(K\) бинарных вопросов «класс \(c\) или другой?». К каждому скору применяют сигмоиду и обучают BCE по one-hot индикаторам: единица наблюдаемому классу, нули остальным. Вопросы обучаются независимо, сумма сигмоид не обязана быть единицей. Для одного решения ноутбук выбирает наибольший скор, эквивалентно наибольшую сигмоиду. Последующая нормировка — дополнительное соглашение, а не цель обучения softmax.
Модель softmax связывает скоры в единое категориальное распределение:
\[ q_c=\frac{e^{z_c}}{\sum_{j=0}^{K-1}e^{z_j}}. \]
Все значения положительны и суммируются в единицу. Изменение одного скора при остальных фиксированных меняет всё распределение. Добавление общей константы \(a\) ничего не меняет: \(e^a\) сокращается в числителе и знаменателе. Умножение обычно меняет различия и вероятности.
Применим два выходных отображения к одним и тем же скорам:
| Класс | Логит | Сигмоида OvR | Softmax |
|---|---|---|---|
| 0 | \(\log2\) | \(2/3\) | \(4/7\) |
| 1 | \(0\) | \(1/2\) | \(2/7\) |
| 2 | \(-\log2\) | \(1/3\) | \(1/7\) |
| Сумма | — | \(3/2\) | \(1\) |
Softmax нормирует \(2,1,1/2\) суммой \(7/2\). Оба отображения выбирают класс ноль, но потери и смысл вероятностей различны. Таблица сравнивает преобразования скоров, не точность двух обученных моделей. Решение softmax выбирает наибольшую \(q_c\), эквивалентно \(z_c\); при равенстве — меньший индекс. Поверхность равенства \(z_c=z_j\) является настоящей границей решения лишь там, где эти скоры превосходят остальные.
Категориальная перекрёстная энтропия и устойчивые входы потери
Для наблюдаемого индекса \(y_i\) введём категориальную перекрёстную энтропию (CE) на примере:
\[ L_i=-\log q_{i,y_i}. \]
Эквивалентно, для индикатора \(u_{ic}=1\) при \(y_i=c\) и нуля иначе, \(L_i=-\sum_cu_{ic}\log q_{ic}\). Для \(\bar L\) усредняют потери строк. Если наблюдаемый класс — один, потеря \(-\log(2/7)=\log(7/2)\approx1.252763\). Штрафуется вероятность наблюдаемого класса, не победившего. Вывод через правдоподобие и информацию остаётся неделе 07.
Для устойчивости перед экспонентой вычтем максимальный скор \(m=\max_cz_c\):
\[ \begin{aligned} q_c&=\frac{e^{z_c-m}}{\sum_je^{z_j-m}},\\ L_i&=-(z_{i,y_i}-m_i)\\ &\quad+\log\sum_je^{z_{ij}-m_i}. \end{aligned} \]
Общий сдвиг сохраняет распределение и исключает большие положительные аргументы экспоненты. CrossEntropyLoss PyTorch принимает логиты напрямую: здесь \((B,K)\) floating-point логитов и \((B,)\) целочисленных индексов целей. Не применяйте softmax перед слитой потерей. Для OvR BCEWithLogitsLoss получает \((B,K)\) логитов и one-hot цели floating-point той же формы; среднее берётся по \(BK\) бинарным элементам. Категориальная CE усредняет \(B\) потерь категорий, поэтому численные масштабы несопоставимы напрямую.
Если веса хранятся как \(W\in\mathbb R^{K\times d_g}\) со строками \(w_c^\top\), а вектор смещений \(b\) — столбец \((K,1)\), батчевые логиты равны \(Z=GW^\top+\mathbf1b^\top\). Здесь \(G\) имеет форму \((B,d_g)\), \(\mathbf1\) — \((B,1)\), \(Z\) — \((B,K)\). Вектор заменяет скалярное бинарное смещение; softmax нормирует строку каждого наблюдения по классам.
from math import log
import torch
scores = torch.tensor([[log(2), 0., -log(2)]], dtype=torch.float64)
target = torch.tensor([1], dtype=torch.long)
criterion = torch.nn.CrossEntropyLoss(reduction="mean")
q = torch.softmax(scores, dim=1)
expected = torch.tensor([[4/7, 2/7, 1/7]], dtype=torch.float64)
assert torch.allclose(q, expected)
assert abs(criterion(scores, target).item() - log(3.5)) < 1e-12
assert torch.allclose(criterion(scores + 1000, target),
criterion(scores, target), atol=1e-12, rtol=0.)
assert abs(torch.sigmoid(scores).sum().item() - 1.5) < 1e-12Код проверяет преобразование и потерю, не обучение. Полные эксперименты OvR/softmax есть в ноутбуке. Выбор модели и правила требует валидации: нормированное распределение само по себе не гарантирует калибровку или правильность.
Самостоятельное изучение: SVM и ядра
Логистическая регрессия обучает скор вероятностной модели. Метод опорных векторов (support vector machine, SVM) ставит иной вопрос: разделить классы большим зазором, допуская нарушения при перекрытии. Представление остаётся важным: другая потеря не превратит линейную границу двух лун в кривую.
Раздел даёт геометрию и терминологию для сравнения недели 03. Сначала изучите зазор и потерю, затем расчёт и fit. Теорию подробнее развивают главы Bishop о ядрах и разреженных ядровых методах (Bishop 2006 г.). Полная двойственная оптимизация и условия Каруша–Куна–Таккера (KKT) здесь дополнительные.
Обучить зазор, а не вероятность
Сначала переведите метки. Для бинарных наблюдений \(y_i\in\{0,1\}\) зададим метки со знаком \(t_i=2y_i-1\in\{-1,+1\}\). Начнём с линейного скора в исходных координатах:
\[ f(x)=w^\top x+b,\qquad m_i=t_i f(x_i). \]
Величина \(m_i\) — функциональный зазор: положительное значение направляет скор к наблюдаемому классу, отрицательное — от него. Класс один выбираем при \(f(x)\geq0\); нулевое равенство разрешается этим правилом. В отличие от \(q\), \(f\) — произвольное действительное число, не вероятность.
При \(w\ne0\) расстояние со знаком от \(x\) до гиперплоскости — \(f(x)/\lVert w\rVert_2\). Умножение на \(t_i\) ориентирует его к верной стороне. Деление на норму нужно потому, что движение на \(a\) вдоль единичной нормали \(w/\lVert w\rVert_2\) меняет скор на \(a\lVert w\rVert_2\). Поэтому модуль смещения до нулевого скора равен \(|f(x)|/\lVert w\rVert_2\).
Пусть \(w=(3,4)^\top\), \(b=-2\), \(x=(2,0)^\top\), \(y=1\). Тогда \(f(x)=4\), \(\lVert w\rVert_2=5\), правильно ориентированное расстояние — \(4/5=0.8\). Умножение \(w\) и \(b\) на семь меняет функциональный зазор на \(28\), но расстояние остаётся \(28/35=0.8\). Максимизация ненормированного скора спутала бы масштаб с улучшением разделения.
До максимизации зазора фиксируют масштаб. Для линейно разделимых обучающих данных SVM с жёстким зазором решает:
\[ \begin{aligned} \underset{w,b}{\operatorname{minimize}}\quad &\frac12\lVert w\rVert_2^2,\\ \text{subject to}\quad &t_i f(x_i)\geq1\quad\text{for all }i. \end{aligned} \]
Ограничения задают масштаб скора. Опорные плоскости \(f(x)=+1\) и \(f(x)=-1\) удалены от решающей на \(1/\lVert w\rVert_2\), полная ширина зазора — \(2/\lVert w\rVert_2\). Минимум квадрата нормы максимизирует ширину при разделении всех тренировочных наблюдений. Это требует разделимости и относится к заданным координатам, не обещая хорошего обобщения.
Допустим перекрытие через hinge loss. Противоречивые метки одного входа не позволяют выполнить ограничения. SVM с мягким зазором вводит неотрицательный slack \(\xi_i\) и условие \(t_i f(x_i)\geq1-\xi_i\). При фиксированных скорах минимальный допустимый slack равен:
\[ \xi_i=\max(0,1-m_i)=L_i^{\mathrm{hinge}}. \]
| Зазор со знаком \(m_i\) | Hinge loss | Смысл |
|---|---|---|
| \(-0.5\) | \(1.5\) | Неверная сторона |
| \(0\) | \(1\) | Решающая плоскость |
| \(0.4\) | \(0.6\) | Верная сторона внутри зазора |
| \(1\) | \(0\) | Опорная плоскость |
| \(1.6\) | \(0\) | За опорной плоскостью |
Hinge loss штрафует и верную классификацию при слишком малом зазоре, поэтому отличается от числа ошибок. Нулевой скор даёт потерю один независимо от разрешения равенства классов.
Для \(C\) используем соглашение о сумме потерь:
\[ \begin{aligned} J(w,b)&=\frac12\lVert w\rVert_2^2 +C\sum_{i=1}^{n}L_i^{\mathrm{hinge}},\\ &C>0. \end{aligned} \]
Свободный член не штрафуется. Больший \(C\) усиливает нарушения зазора относительно нормы; меньший \(C\) допускает нарушения ради меньшей нормы. Ни один выбор не гарантирует валидационную accuracy. Для сравнения со средними потерями разделим всю цель на положительную константу \(nC\):
\[ \begin{aligned} \frac{J}{nC} &=\frac1n\sum_i L_i^{\mathrm{hinge}} +\frac{\lambda}{2}\lVert w\rVert_2^2,\\ \lambda&=\frac{1}{nC}. \end{aligned} \]
Число \(C\) нельзя переносить как универсальную силу регуляризации между разными редукциями, размерами выборки и оценивателями. Перед копированием изучите цель. Математическая формулировка SVC использует эту сумму; ниже применяется SVC(kernel="linear"), а не другой estimator с иной потерей или штрафом intercept.
Какие наблюдения поддерживают границу? В оптимуме скор выражается через обучающие наблюдения с ненулевыми коэффициентами — опорные векторы (support vectors). При разделимом жёстком зазоре они на опорных плоскостях, при мягком могут быть внутри зазора или ошибочно классифицированы. Далеко за правильной плоскостью hinge loss нулевая, вклада в разложение нет. В вырожденном случае точка с нулевым коэффициентом может лежать на опорной плоскости: одного положения недостаточно. Шум и перекрытие могут оставлять много опорных векторов; «опорный» не означает «правильный» или «типичный».
Сходство неявно задаёт пространство признаков
Ранее строилось явное кубическое отображение \(g(x)\). SVM может использовать \(f(x)=w^\top g(x)+b\); геометрия зазора тогда относится к пространству признаков, а расстояния не обязаны быть евклидовыми в исходном графике \(x_1,x_2\). Даже стандартизация меняет метрику зазора, хотя линейная граница остаётся прямой в исходных координатах.
Ядро (kernel) вычисляет скалярные произведения признаков без явного построения всех координат:
\[ k(x,x')=\langle g(x),g(x')\rangle. \]
Например, однородное полиномиальное ядро второй степени имеет явное отображение:
\[ \begin{aligned} g(x)&=(x_1^2,\sqrt{2}x_1x_2,x_2^2)^\top,\\ g(x)^\top g(x')&=(x^\top x')^2. \end{aligned} \]
Множитель \(\sqrt{2}\) согласует перекрёстный член с квадратом скалярного произведения. Для \(x=(1,2)^\top\) и \(x'=(3,-1)^\top\) исходное произведение — \(1\), ядро и произведение явных признаков равны \(1\). Здесь только мономы второй степени, в отличие от накопительного кубического отображения выше.
Три полезных варианта:
\[ \begin{aligned} k_{\mathrm{linear}}(x,x')&=x^\top x',\\ k_{\mathrm{poly}}(x,x')&=(\gamma x^\top x'+r)^p,\\ k_{\mathrm{RBF}}(x,x')&=\exp(-\gamma\lVert x-x'\rVert_2^2). \end{aligned} \]
Для полиномиального выражения берём целую степень \(p\geq1\), \(\gamma>0\) и \(r\geq0\); так задаётся корректное ядро скалярного произведения. Радиально-базисное ядро (RBF) использует \(\gamma>0\) и соответствует бесконечномерному пространству. Матрица Грама ядра на любом конечном наборе должна быть положительно полуопределённой; произвольное сходство может не удовлетворять условию. Существенно скалярное произведение, не одно визуальное сходство.
Обученный бинарный скор имеет вид:
\[ \begin{aligned} f(x)&=\sum_{i\in\mathrm{SV}}\alpha_i t_i k(x_i,x)+b,\\ &\alpha_i>0. \end{aligned} \]
Здесь \(\mathrm{SV}\) — множество индексов опорных векторов, \(\alpha_i\) — обученные коэффициенты. Формулы достаточно для применения без вывода двойственной задачи. Каждый запрос сравнивается с опорными векторами в одинаково обработанных координатах. В бинарном SVC scikit-learn dual_coef_ хранит \(\alpha_i t_i\), decision_function возвращает скор; атрибуты описаны в руководстве. Одна сигмоида от этого скора не обосновывает вероятностную модель и калибровку.
Масштабирование и \(\gamma\) действуют совместно. Для двух входов выше \(\lVert x-x'\rVert_2^2=13\). При \(\gamma=0.5\) их RBF-сходство — \(e^{-6.5}\approx0.00150\), со своим же входом — \(1\). Большая \(\gamma\) ускоряет спад сходства и допускает локальные изменения границы. Очень большие значения подстраиваются к малым шумным окрестностям; очень малые делают разные входы почти одинаковыми. Единицы признаков меняют расстояния. Масштабы обучают на тренировочных строках, \(C\) и \(\gamma\) выбирают по валидации; \(\gamma\) не толкуют отдельно от представления.
Корректная базовая модель для недели 03
Вернёмся к эксперименту выразительности: те же 540 обучающих и 180 валидационных строк, тест не используется. Сохраним прежнюю линейную логистическую модель как ориентир. Одну стандартизацию двух исходных признаков обучим только на тренировочных строках и используем для всех SVM; статистики совпадают с прежним линейным преобразованием. Предсказания рисуются в исходных координатах.
Поиск задаётся заранее: для линейной SVM \(C\in\{0.1,1,10\}\), для RBF те же значения и \(\gamma\in\{0.1,1,10\}\). В каждом семействе выбираем минимум валидационных ошибок, при равенстве — меньший \(C\), затем \(\gamma\). После выбора не переобучаем. Решения используют нулевой скор SVM и логистический порог \(\tau=0.5\); точных нулевых равенств в валидационных скорах нет. Классы невзвешенные, допуск решателя \(10^{-7}\), вероятностная оценка выключена.
| Модель | Настройки | Ошибки валидации | Опорные векторы |
|---|---|---|---|
| Линейный логистический ориентир | Прежний фиксированный fit | 22 | — |
| Линейная SVM | \(C=0.1\) | 21 | 172 |
| RBF SVM | \(C=1\), \(\gamma=1\) | 9 | 94 |
Ошибки считаются на 180 валидационных строках, последний столбец — число опорных векторов. Логистический ориентир — прежний fit без штрафа за 1500 полных обновлений, не заново настроенный конкурент. SVM использует другую потерю, нормовый штраф и решатель; RBF имеет девять вариантов против трёх у линейной. Это разведочное сравнение границ, не доказательство изолированного эффекта ядра или равных бюджетов. RBF меняет доступную геометрию; смена цели внутри линейного семейства оставляет границу прямой.
Полная таблица вариантов содержит все ошибки, индексы опорных векторов и коэффициенты. Генератор восстанавливает скоры разложением по ядру и сравнивает с библиотекой. Тестовые входы не преобразуются и не оцениваются. Минимумы — результаты выбора по одной многократно используемой валидации, не независимые оценки будущего качества. Малые различия могут быть неустойчивы; расширение поиска после просмотра результатов тоже адаптируется к выборке.
Для новой задачи заранее задайте предобработку, семейства, бюджет, метрику выбора и правило решения. В CV предобработка обучается отдельно внутри тренировочной части каждого фолда; тест остаётся вне цикла. Сравнивайте метрики на общих строках; не подавайте скор SVM в BCE как вероятность. API SVC описывает скоры и параметры; калибровка — отдельная последующая тема. С ростом данных учитывайте хранение опорных векторов и вычисление сходства с ними.
Проверьте понимание. Почему совместное масштабирование \(w\) и \(b\) не улучшает геометрический зазор, верное решение может иметь положительную hinge loss, а RBF изгибает границу без явного списка бесконечных признаков? Какие решения сравнения нужно зафиксировать до теста? Это подготовка к неделе 03 без решения оцениваемой задачи.
Уверенность, итоги и упражнения
Уверенная экстраполяция остаётся экстраполяцией
В бинарном предсказании назовём \(\max(q,1-q)\) уверенностью в более вероятном классе. Это свойство выходного распределения, не показатель количества подходящих обучающих данных рядом со входом.
Вернёмся к четырём координатам примера. Расчёт обучения даёт точную стационарную модель \(w=(\log3,\log3)^\top\), \(b=0\). Используем её, не округлённый финальный кадр. В A и B вероятность единицы \(3/4\), что совпадает с отношением меток три к одному; в C и D — \(1/4\). Построим неразмеченную пробу \(x=(r,r)^\top\) при \(r>1\):
\[ \begin{aligned} z(r,r)&=2r\log3,\\ q(r,r)&=\frac{3^{2r}}{1+3^{2r}}. \end{aligned} \]
Все обучающие координаты лежат в \([-1,1]\). Однако при \((3,3)^\top\) модель даёт \(q=729/730\approx0.99863\). Движение дальше по лучу приближает вероятность к единице без новых меток. Аффинный скор экстраполирует, сигмоида насыщается; ни одна операция не проверяет сходство с обучающими наблюдениями.
from math import exp, isclose, log
w = (log(3), log(3)) # exact stationary weights of the four-site toy
probe = (3., 3.) # constructed input; its label is unknown
z = sum(a * x for a, x in zip(w, probe))
q = 1 / (1 + exp(-z))
assert isclose(q, 729/730, abs_tol=1e-12)
assert q > .99Эксперимент уверенности практикума показывает то же на кольце специально построенных внераспределённых проб (OOD) вокруг лун. Кольцо намеренно отличается от обучающего облака, не является отложенной выборкой процесса лун. Точная проба здесь тоже контрпример, не бенчмарк или проверенный OOD-детектор. Выход за наблюдаемый диапазон сам по себе не устанавливает возможные входы реальной популяции.
Ни один пример не определяет правильность класса пробы: метки нет. Не доказано и то, что все далёкие точки уверенные: направления с почти нулевым скором этого не дают. Вывод уже: высокая классовая уверенность не удостоверяет знакомость или правильность. Калибровка (calibration) проверяет согласие предсказанных вероятностей с частотами классов в подходящих группах размеченных примеров. Калибровка одной популяции не переносится автоматически на изменённое распределение. Неделя 12 развивает калибровку и сдвиг; распознать этот сбой можно без обзора методов неопределённости.
Один цикл обучения, несколько разных объектов
Главный вопрос имеет три ответа: скор описывает модель, вероятностное отображение толкует скор внутри модели классов, правило решения превращает выход в действие. Для подбора и оценки нужны разные сведения.
- Выберите входы и представление. Изучайте обучение, там обучайте предобработку, задавайте \(g(x)\). Масштабирование меняет координаты, полиномы и ядра — доступную геометрию.
- Обучайте с явной целью. Логистические модели используют BCE/CE, SVM — нормовый штраф и hinge loss. В анимации средняя BCE уменьшается через обновления параметров; смена порога не является обновлением.
- Выберите модель и решение по валидации. Вероятностная потеря, ранжирование и пороговые ошибки оценивают разное. Где нужно, включите представление, \(C\), \(\gamma\) и порог в решения разработки.
- До итоговой оценки зафиксируйте процедуру. Примените обученную предобработку и модель/правило к отложенным данным. Результат относится к заявленным условиям выборки, не гарантирует произвольное будущее.
Прямые и изогнутые границы лун связывают обучение с представлением. Перебор порога показывает несколько правил для одного скора. Неразмеченная проба показывает, что даже предельная вероятность — выход модели, требующий подтверждения.
Различия, которые нельзя смешивать
| Различие | Что проверить |
|---|---|
| Скор и расстояние | Для непостоянного линейного скора разделите на норму весов, получая расстояние со знаком в заданных координатах. |
| Вероятность и решение | Задайте положительный класс и порог; смена порога сохраняет вероятности. |
| Масштаб и выразительность | При свободном intercept масштабирование сохраняет аффинное семейство; нелинейные признаки меняют геометрию. |
| Потеря и accuracy | Потеря использует скоры/вероятности; accuracy считает решения после применения правила. |
| OvR и softmax | Независимые сигмоиды могут не давать единицу; softmax связывает взаимоисключающие варианты. |
| Скор SVM и вероятность | Скор зазора сам по себе не калиброванная вероятность. |
| Уверенность и знакомость | Предельная вероятность не удостоверяет представительность входа обучающими данными. |
Дополнительные упражнения
Используйте натуральные логарифмы, векторы-столбцы и включающие равенство бинарные пороги главы. Это самостоятельные вопросы, не дополнительные оцениваемые требования. Покажите расчёт или основания вывода.
Упражнение 1 — Изменить решение без обучения
Для \(w=(2,-1)^\top\), \(b=0\) и \(x=(1,1)^\top\) вычислите скор, расстояние со знаком, сигмоидную вероятность и решения при \(\tau=0.5\), \(0.8\). Удвойте веса и свободный член. Что изменится? Почему сохранения нулевой границы недостаточно для решения при ненулевом пороге скора?
Упражнение 2 — Один явный шаг BCE
Даны две тренировочные строки \(x_1=(1,0)^\top\), \(y_1=1\) и \(x_2=(0,1)^\top\), \(y_2=0\). Начните с \(w=(0,0)^\top\), \(b=0\). По средней BCE найдите вероятности, градиенты весов и свободного члена. Выполните шаг со скоростью \(0.2\), обновляя \(b\) и \(w\). Укажите формы \(X\), \(z\), \(y\) и градиента при соглашении выхода \((n,1)\). Как сумма потерь изменит шаг при той же скорости?
Упражнение 3 — Изменить единицы и проверить утверждение
Координата заменена на \(x'_1=100x_1\), где \(x'_2=x_2\). Найдите новые веса и свободный член, сохраняющие все скоры \(z=2x_1-x_2+3\). Почему новые координаты не расширяют аффинную геометрию, но меняют градиентный спуск при фиксированной скорости? Сохранит ли тот же численный L2-штраф исходную цель? Обоснуйте.
Упражнение 4 — Сначала счётчики
Для восьми строк валидационной таблицы при \(0.5\) и \(0.4\) найдите TP, FP, FN, TN, precision, recall, F1. Какое правило удовлетворяет recall не ниже \(0.75\)? Почему выбор по таблице не превращает показатели в независимый тест? Что сообщать при отсутствии положительных предсказаний?
Упражнение 5 — Три взаимоисключающих класса
Для логитов \((0,\log2,\log3)\) найдите независимые сигмоиды, их сумму и softmax. При наблюдаемом индексе \(2\) с нумерацией от нуля вычислите CE и формы логитов/целей для одной строки CrossEntropyLoss. Как влияет добавление \(100\) ко всем логитам и почему слитая потеря получает исходные логиты?
Упражнение 6 — Зазор, штраф и сходство
Для \(w=(3,4)^\top\), \(b=-2\), \(x=(0,0.75)^\top\), \(y=0\) найдите скор SVM, метку со знаком, функциональный зазор, правильно ориентированное геометрическое расстояние и hinge loss. При \(n=100\) перепишите \(\lVert w\rVert^2/2+C\sum_i L_i^{\mathrm{hinge}}\) как среднюю hinge loss с нормовым штрафом с точностью до положительной константы. Отдельно сравните RBF-сходство \((0,0)^\top\) и \((1,1)^\top\) при \(\gamma=0.5\), \(2\). Что локализует сходство сильнее?
Упражнение 7 — Далеко, но с какой уверенностью?
Сохраните точную стационарную модель примера. Двигайтесь по \(x=(r,-r)^\top\) вместо \((r,r)^\top\). Найдите вероятность и уверенность при росте \(r\). Согласуйте результат с уверенной пробой: что каждый пример устанавливает и чего не устанавливает о ненаблюдаемых метках? Какие размеченные данные нужны для калибровки?
Упражнение 8 — Исправить оценочную процедуру
Исследователь обучает scaler на всех строках, перебирает степени и настройки SVM по валидации, после каждого раунда смотрит тестовую accuracy и сохраняет лучший тестовый вариант. Найдите два пути попадания отложенной информации в разработку. Опишите обучение предобработки, валидационный выбор и фиксированную итоговую оценку. Где обучать scaler при CV? Почему переименование лучшей тестовой оценки «итоговой» не восстанавливает независимость после выбора по тесту?
Маршруты чтения и связи
Для геометрии и вероятностных решений повторите скор и порог, затем линейную классификацию Bishop (Bishop 2006 г., Chapter 4). Для обучения — проверенный шаг BCE и главы Prince об обучении с учителем и потерях (Prince 2023 г.). Ноутбук даёт исполняемые эксперименты; его разделы о правдоподобии и информации — последующее чтение, не предпосылки.
Для SVM изучите примеры зазора и ядер, затем главы Bishop о ядрах (Bishop 2006 г., Chapters 6–7) и руководство ниже. Полные выводы двойственной задачи и KKT необязательны.
Неделя 03 заменяет одну скоринговую границу рекурсивными разбиениями. Неделя 04 обучает представления вместо фиксированного полиномиального отображения. Неделя 07 выводит потери из моделей наблюдений и развивает вероятностный взгляд. Её обозначение числа классов \(C\) соответствует здешнему \(K\); здесь \(C\) оставлено для штрафа SVM.
Источники и дальнейшее чтение
- Bishop, Pattern Recognition and Machine Learning: линейная классификация, ядровые и разреженные ядровые методы (Bishop 2006 г.).
- Prince, Understanding Deep Learning: обучение с учителем и функции потерь (Prince 2023 г.); потери применяйте сейчас, их вероятностный вывод — позже.
- Руководство scikit-learn по SVM: практический выбор ядер и соглашения скоров.