DLS · Недели 1–3 · Учимся по шагам

От данных к обучению модели

Один вопрос, один пример, одна проверка. Начни в режиме «Очень просто» и открывай математику тогда, когда готов.
Тема 1 из 12
Где мы сейчас в обучении модели?

Для классификации внутри модели: X → веса → z → sigmoid → p. Вероятности вычисляет модель; likelihood и loss оценивают её ответы.

ОсновыГде мы сейчас?

У нас есть записи о трёх квартирах. Какие числа получает модель, а какое число должна предсказать?

Данные: что знаем и что хотим предсказать

Что дано про квартиры?

В учебной задаче нам уже сообщили площадь и настоящую цену. Эти числа записаны в данных; модель их не придумала.

Площадь x, м²Настоящая цена y, млн ₽

— площадь одной квартиры. — таблица признаков всех квартир. — известные ответы. При прогнозе новой квартиры её настоящей цены у модели ещё нет.

Проверь себя: Что подаём модели, чтобы предсказать цену?

Чем y отличается от ŷ?

Для квартиры площадью м² в данных указано млн. Допустим, пока модель настроена неточно: наклон 0.15 и сдвиг 0.3. Как мы выбираем их, разберём в следующей теме.

Модель: 0.3 + 0.15 × 50 = млн →
В данных: 8 млн →

«Игрек с шапочкой» — вычисленный прогноз. «Игрек без шапочки» — настоящий ответ. Сравнение этих чисел покажет, насколько модель ошиблась.

Проверь себя: Что является настоящим ответом?

Как прочитать точку на графике?

Вот три строки данных. По каждой квартире мы знаем площадь и цену.

ПлощадьЦена
30 м²5 млн
50 м²8 млн
70 м²11 млн

В таблице всего три строки, но в настоящих данных их могут быть тысячи. На графике направление и сходство проще заметить глазами.

Горизонтальная ось

Здесь откладываем площадь квартиры.

Вертикальная ось Y

Здесь откладываем цену квартиры.

Чтобы нарисовать точку (30, 5), по горизонтали находим 30 м², затем поднимаемся до цены 5 млн и ставим точку. Это одна строка таблицы, только показанная на рисунке.

30 м² → 5 млнточка (30, 5)
50 м² → 8 млнточка (50, 8)
70 м² → 11 млнточка (70, 11)
График не создаёт новых данных. Он просто показывает те же данные глазами.

Как график помогает предсказать цену?

Замечаем: чем больше площадь, тем выше цена. Точки идут в одном направлении. Модель может провести линию, которая описывает эту закономерность. Для новой квартиры площадью 60 м² мы найдём 60 по оси X, поднимемся до линии и прочитаем примерную цену по оси Y.

данные→точки→ищем закономерность→линия→предсказание
Площадь → прогноз ценыСиние точки — известные квартиры; оранжевая — прогноз для новой
Площадь X, м²Цена Y, млн рублей (30, 5)(50, 8)(70, 11)
Для выбранной площади линия показывает цену. Как получилась линия — разберём дальше.

Что означает точка? X — известная площадь, которую подали модели. Y — цена, которую хотим предсказать. Оранжевая точка показывает ответ модели для выбранной площади.

Название горизонтальной оси и матрица признаков X — разные контексты. Здесь горизонтальная ось показывает площадь; в коде X обычно означает целую таблицу.

Теперь мы умеем

  • Отличать признаки X, настоящий ответ y и прогноз ŷ.
  • Читать одну квартиру как точку «площадь, цена».

Зачем идём дальше? Найдём правило, которое проводит прямую через эти квартиры.

ОсновыГде мы сейчас?

Мы знаем площади и цены. Откуда берутся наклон и сдвиг?

Линейная регрессия: от данных к прямой

Что изменилось между двумя квартирами?

Первая30 м² → 5 млн
Вторая50 м² → 8 млн

Площадь была 30 м², стала 50 м². Хотим узнать, на сколько она выросла, поэтому находим разницу:

50 − 30 = 20 м²

Мы вычитаем 30 из 50 не потому, что так требует формула. Мы просто сравниваем: было 30, стало 50, значит добавилось 20 м².

Насколько изменилась цена?

Первая квартира стоит 5 млн, вторая — 8 млн. Цена была 5, стала 8. Чтобы узнать, на сколько она выросла, вычитаем старую цену из новой:

8 − 5 = 3 млн рублей
Было30 м² → 5 млн
Стало50 м² → 8 млн
Изменение+20 м² → +3 млн
Проверь себя: Зачем вычисляем 50 − 30?

Сколько цены приходится на один дополнительный метр?

Мы знаем: дополнительные 20 м² связаны с прибавкой цены на 3 млн. А теперь хотим узнать: сколько этой прибавки приходится на один дополнительный квадратный метр?

Почему делим? Аналогия с яблоками
Представь яблоки20 яблок стоят 300 рублей.Одно яблоко стоит 300 ÷ 20 = 15 рублей.

Делим общую цену на количество яблок, чтобы узнать цену одного. Здесь тот же вопрос: делим прибавку цены на количество дополнительных метров.

20 м² → +3 млн
10 м² → +1.5 млн
1 м² → 3 ÷ 20 = 0.15 млн

Мы делим 3 млн на 20 м², потому что хотим узнать, какая часть этих 3 млн приходится на один дополнительный квадратный метр.

0.15 млн = 150 000 рублей за 1 м². Вот это число назовём . Оно не взялось из воздуха: мы получили его, сравнив изменения в наших данных.
w₁ = изменение цены ÷ изменение площади
w₁ = 3 ÷ 20 = 0.15

w₁ показывает, насколько в нашей модели меняется цена при увеличении площади на 1 м².

Проверим другие пары на графике ниже: выберем две квартиры и посмотрим, как из их данных получаются изменения площади и цены.
Проверь себя: Откуда взялось 0.15?

Почему нужно добавить 0.5?

Теперь знаем = 0.15. Возьмём квартиру 30 м² и посчитаем только вклад площади:

0.15 × 30 = 4.5 млн

Настоящая цена по таблице — 5 млн. Сколько не хватает?

5 − 4.5 = 0.5 млн

Нам не хватило 0.5 млн, чтобы попасть в настоящий ответ. Поэтому прямую нужно сдвинуть вверх на 0.5 млн. Это число называется .

Важно: w₀ = 0.5 — не реальная минимальная цена квартиры и не первоначальный взнос. Это математический параметр, который сдвигает прямую относительно точек.
Только площадь: 0.15 × 30 = 4.5 млн
Добавили сдвиг: 4.5 + 0.5 = 5 млн
Почему прямую нужно сдвинуть?

Линия = 0.15x при площади 30 м² даёт 4.5 млн, а настоящая точка находится на 5 млн. Не хватает 0.5 млн. Прибавка w₀ = 0.5 поднимает всю прямую на одинаковую высоту.

Проверь себя: Что означает w₀ = 0.5?

Как получить прогноз?

= + ×
Для наших данных: ŷ = 0.5 + 0.15 × x
СимволЧто значит здесь
xПлощадь квартиры из входных данных
w₁ = 0.15Изменение цены на каждый дополнительный м²
w₀ = 0.5Сдвиг прямой вверх на 0.5 млн
ŷЦена, предсказанная моделью
yНастоящая цена из данных

Прогноз для квартиры 50 м²

Площадь из данныхx = 50
Подставили в правилоŷ = 0.5 + 0.15 × 50
Умножили0.15 × 50 = 7.5
Добавили сдвиг7.5 + 0.5 = 8
Прогноз моделиŷ = 8 млн
Откуда здесь числа?
50 → площадь из данных
0.15 → нашли по изменениям цены и площади
0.5 → нашли как необходимый сдвиг
8 → прогноз модели
Проверь себя: Модель должна обучать число 50 в x = 50?

Что меняют три ползунка?

Δ означает просто «изменение» или «разница». На графике горизонтальная стрелка показывает изменение площади, а вертикальная — изменение цены.

Три квартиры из условия задачиСиние числа — даны в примере · оранжевые — вычислили
Вспомнить данные: три квартиры
ПлощадьНастоящая цена
30 м²5 млн
50 м²8 млн
70 м²11 млн
20304050607080 0369121518 Площадь, м²Цена, млн рублей w₀ x = 50 30 м² — площадь из таблицы; 5 млн — настоящая цена из таблицы.50 м² — площадь из таблицы; 8 млн — настоящая цена из таблицы.70 м² — площадь из таблицы; 11 млн — настоящая цена из таблицы. (30, 5)(50, 8)(70, 11) Δx = +20 м²Δy = +3 млн+20 м² → +3 млн3 / 20 = 0.15 млн/м²
Разбор выбранной пары
Что откуда в выбранной паре?
Что откуда?
Изменяй наклон, сдвиг и площадьИсходные точки всегда остаются на графике

Меняет, насколько быстро цена растёт вместе с площадью.

Двигает всю прямую вверх или вниз.

Меняет входное значение и прогноз цены.

ŷ = 0.5 + 0.15 × x
При x = 50: ŷ = 0.5 + 0.15 × 50 = 8 млн

меняет наклон. двигает прямую вверх или вниз. Если значения не подходят, линия отходит от исходных точек.

Не перепутай: x задаём мы как входные данные; w₀ и w₁ — параметры, которые модель подбирает при обучении (здесь их можно менять вручную для опыта); ŷ — прогноз, который вычисляет модель.

Теперь мы умеем

  • Находить w₁ по разнице цен и площадей.
  • Находить w₀ как недостающий сдвиг.
  • Отличать найденные параметры от ручного эксперимента.

Зачем идём дальше? В реальных данных прямая редко попадает во все точки. Нужен способ измерить промах.

ОсновыГде мы сейчас?

Модель умеет выдавать цену ŷ. Настоящая цена y записана в данных. Как одним числом оценить промахи?

Loss для цены: насколько мы промахнулись?

Насколько прогноз отличается от ответа?

Берём квартиру 50 м²: настоящая цена млн. Пусть модель предсказала млн. Хотим узнать величину и направление промаха, поэтому вычитаем настоящий ответ из прогноза.

− 8 = млн

Минус говорит: модель занизила цену. Но два промаха разных знаков могут погасить друг друга при сложении. Поэтому для нашего штрафа возводим каждый промах в квадрат.

(−0.2)² = (−0.2) × (−0.2) = (млн ₽)²
Проверь себя: Что сравниваем для ошибки?

Как собрать промахи трёх квартир?

Для опыта выбрали = и = 0.15. Для площадей 30, 50, 70 модель даёт 4.8, , 10.8 млн: каждый раз на 0.2 ниже настоящей цены.

Площадьŷ, прогнозy, цена в данных(ŷ − y)²
304.850.04
507.880.04
7010.8110.04
Сложили: + 0.04 + 0.04 = 0.12.
Разделили на , чтобы получить среднее: / 3 = 0.04.

Это MSE — средний квадрат промаха. Loss — общее название штрафа; MSE — один конкретный способ его посчитать.

MSE = (1/n) Σᵢ (ŷᵢ − yᵢ)²

n — количество квартир; i — номер квартиры; — сложить по всем квартирам. ŷᵢ и yᵢ — прогноз и настоящий ответ именно для квартиры i.

В лекции сумма, а здесь среднее — это разные задачи?

На слайдах встречается сумма квадратов. MSE делит эту сумму на n. Для одного фиксированного набора минимум тот же, но величина градиента отличается в n раз. В ДЗ по логистической регрессии используется именно сумма: не дели её градиент на размер батча.

Проверь себя: Если loss уменьшился на тех же примерах, что это значит?

Теперь мы умеем

  • Вычислять промах ŷ − y.
  • Понимать, зачем квадрат и среднее.

Зачем идём дальше? Теперь умеем оценивать веса. Разберём, как их менять.

ОбучениеГде мы сейчас?

Loss показывает, насколько плохи прогнозы. Куда сдвинуть веса, чтобы уменьшить loss?

Градиентный спуск: один понятный шаг

Уровень 1. Куда растёт высота?

Представь чашу. Высота точки — значение функции. Наклон подсказывает, куда высота растёт; для спуска выбираем противоположную сторону. У функции одной переменной такая подсказка называется производной. Для нескольких переменных все подсказки вместе — градиент.

Для учебной чаши f() = x² наклон равен 2x. Например, при x = 3 высота равна 9, наклон — 6. При выбранном шаге = 0.1 новая x равна 3 − 0.1 × 6 = 2.4.

Горизонталь — выбранное x, вертикаль — высота f(x). Здесь x обозначает положение в учебной чаше, а не площадь квартиры.

xошибка f(x)0

Синяя точка — сейчасОранжевая — после одного шага

Сейчас x3.00
Ошибка f(x) = x²9.00
После одного шага2.40

При x = 3 наклон равен 2 × 3 = 6. При α = 0.1 делаем шаг: 3 − 0.1 × 6 = 2.4. Ошибка уменьшается с 9 до 5.76.

Почему наклон x² равен 2x?

Сдвинемся на маленькое h. Высота изменится на (x+h)² − x² = 2xh + h². На единицу сдвига приходится (2xh+h²)/h = 2x+h. Чем меньше h, тем ближе это число к 2x. Здесь h — маленький пробный сдвиг; производная — предел такой скорости изменения.

Проверь себя: Куда указывает градиент?

Уровень 2. Меняем один вес w

Теперь горизонталь — вес , а не входные данные x. Для тренировки выбрали чашу (w) = (w − 3)²: число задаёт положение её дна.

Начнём с w = 0 и = 0.1. Кнопка будет раскрывать расчёт по одному действию: вес → loss → наклон → размер изменения → новый вес.

Учебная кривая и текущий шаг
Текущий вес w0.00
Текущий loss9.00
После шага0.60
Быстрый режим

Старт w=0.00. Наклон loss здесь −6.00, поэтому шаг направлен вправо: 0 − 0.10×(−6) = 0.60.

    Откуда формула наклона и зачем минус?

    Наклон квадрата равен удвоенному отклонению от дна: dL/dw = 2(w−3). При w=0 получаем 2×(0−3)=−6. Минус означает: справа функция убывает. Вычитая α×(−6), увеличиваем w, то есть идём вправо и вниз.

    Как влияет learning rate?
    Маленький α

    Шаг аккуратный; для наглядности можно поставить 0.05.

    Умеренный α

    Например, 0.10: заметно приближаемся к минимуму.

    Большой α

    Например, 1.20: шаги перескакивают дальше через минимум и становятся неустойчивыми.

    На этих мини-графиках горизонталь — номер обновления, вертикаль — вес w. Зелёный пунктир — цель w=3. Край графика ограничивает рисунок; точные числа смотри в разборе шага.

    Уровень 3. Обучаем w₀ и w₁ на квартирах

    Вернулись к нашим квартирам. Здесь входные площади и настоящие цены остаются прежними; меняются только два параметра прямой. Оси графика: площадь и цена.

    Теперь тот же процесс на примере квартир

    Данные нам уже знакомы: 30 м² → 5 млн, 50 м² → 8 млн, 70 м² → 11 млн. Задача обучения — подобрать и , чтобы предсказания были близки к этим ценам.

    предсказание: = w₀ + w₁ ×
    средняя ошибка: MSE = среднее значение (ŷ − )²

    ŷ — цена от модели, y — настоящая цена, а квадрат делает ошибку положительной и сильнее учитывает большие промахи. Мы берём среднее по трём квартирам, чтобы получить одно число для всей модели.

    Площадь, м²Цена, млн (30, 5)(50, 8)(70, 11)
    Настройки сейчас

    w₀ = 0.500
    w₁ = 0.100

    Средняя ошибка MSE6.917
    Наклон ошибки по w₀−5.000
    Наклон ошибки по w₁−276.667
    Модель пока занижает цены. Оба наклона ошибки отрицательны, поэтому вычитание градиента немного увеличит w₀ и w₁.

    Синяя линия — данные; оранжевая — текущие предсказания модели.

    Проверь себя: Что изменяет обучение в этом примере?

    Уровень 4. Как читать запись из лекции?

    Для каждого веса нужна своя подсказка. ∂/∂ — как меняется loss, если чуть изменить только сдвиг. ∂L/∂ — если чуть изменить только наклон.

    ← w − × ∇L(w)

    w — все веса; стрелка ← означает «обновить»; α — выбранный размер шага; ∇L — список наклонов по весам. Векторная строка просит сделать знакомое вычитание для каждого веса.

    Формулы для квартир и связь с матрицами

    Откуда берётся каждый шаг для квартир?

    Сначала модель предсказывает цены = w₀ + w₁ ×
    Сравниваем прогноз с настоящей ценойошибка = ŷ −
    Считаем средний квадрат ошибокMSE — общий размер промахов
    Оцениваем, куда менять каждую ручкуградиент по w₀ и градиент по w₁
    Делаем небольшой шаг против роста ошибкиновый параметр = старый − α × градиент

    В обозначениях со слайдов ∂L/∂w₀ и ∂L/∂w₁ читаются так: «как изменится loss, если немного изменить только этот вес, а остальные оставить прежними». Это частная производная — наклон loss по одной выбранной ручке.

    Почему в формулах градиента появляются x и ошибка?

    Для средней квадратичной ошибки и прямой ŷᵢ = w₀ + w₁xᵢ получаются такие подсказки:

    градиент по w₀ = среднее [2 × (ŷᵢ − yᵢ)]
    градиент по w₁ = среднее [2 × (ŷᵢ − yᵢ) × xᵢ]

    ŷᵢ − yᵢ показывает величину и направление промаха. Для наклона w₁ ещё умножаем на площадь xᵢ: изменение наклона сильнее влияет на большие квартиры. «Среднее» означает: сложили вклад всех квартир и разделили на 3. Модель двигает параметры в другую сторону от этого градиента.

    На лекции loss записан как сумма квадратов ошибок. В интерактиве я показываю среднее: это та же оценка, только дополнительно разделённая на число квартир. Лучшее положение прямой от этого не меняется.

    все веса сразу: w ← w − α × ∇L(w)
    по отдельности: wⱼ ← wⱼ − α × (∂L / ∂wⱼ)

    w — список всех настраиваемых весов; ∇L(w) (набла L) — список наклонов loss по каждому весу. Векторная запись — короткий способ сказать: «для каждого веса сделай такой же отдельный шаг».

    Как это записано для логистической регрессии?

    Здесь модель предсказывает вероятность клика pᵢ, а правильный ответ — yᵢ (0 или 1). Для одного признака xᵢⱼ градиент Binary Cross Entropy по соответствующему весу имеет простой итог:

    градиент по wⱼ = среднее [(pᵢ − yᵢ) × xᵢⱼ]

    pᵢ − yᵢ — насколько вероятность промахнулась относительно ответа 0 или 1. xᵢⱼ — значение признака у этого объекта. Если признак равен нулю, он не сдвигает этот вес для данного объекта. Если ошибка велика, поправка обычно сильнее.

    Дальше шаг тот же: wⱼ ← wⱼ − α × градиент. Меняется формула ошибки, но идея остаётся прежней: смотрим на ошибку, получаем подсказку для весов и делаем небольшой шаг.

    Эта короткая формула получается, если соединить BCE с sigmoid. Полное раскрытие производных можно изучать позже; для понимания обучения сейчас достаточно читать её как «ошибка × признак».

    Что запомнить: loss говорит, насколько плохи предсказания; градиент подсказывает, в какую сторону менять параметры; α задаёт размер изменения. Компьютер повторяет эти шаги, стараясь уменьшать loss.

    Как читать Xᵀ и матричное умножение →

    Проверь себя: Loss и градиент — одно число с разными названиями?

    Теперь мы умеем

    • Различать loss, градиент и α.
    • Раскрывать одно обновление веса по шагам.
    • Читать формулу обновления нескольких весов.

    Зачем идём дальше? Разный масштаб признаков может делать шаги неудобными. Разберём это на числах.

    ОбучениеГде мы сейчас?

    Мы научились менять веса. Почему рубли и годы могут мешать удобным шагам?

    Масштаб: одинаковый шаг в разных единицах

    Почему размеры чисел имеют значение?

    Меняем пример: теперь у людей есть возраст и годовой доход. Возраст записан десятками, доход — миллионами. Это разные единицы измерения; большое число ещё не означает большую важность.

    Вклады признаков в градиент могут сильно различаться. Приведение шкал часто делает подбор весов удобнее.

    Учебная картинка: форма «долины ошибки»
    масштабы сильно различаютсяшаги могут идти зигзагом
    после приведения масштабовнастройке часто проще

    Это схема для интуиции, не обещание: стандартизация часто помогает градиентному спуску, но не гарантирует круглую долину в каждой задаче.

    Проверь себя: Доход записан большим числом, значит он важнее возраста?

    Как измерить расстояние от среднего?

    В учебной группе возраста . Среднее = (20++40)/3 = 30 лет. Стандартное отклонение ≈ лет измеряет разброс вокруг среднего.

    40 − 30 = 10 — на столько лет выше среднего.
    10 / 8.16 ≈ — примерно на столько стандартных отклонений выше среднего (считали без промежуточного округления).

    Сначала вычитаем среднее, чтобы узнать отклонение; затем делим на разброс, чтобы выразить его в общей шкале.

    новое значение = ( − μ) / σ

    x — значение признака; μ — среднее; σ — стандартное отклонение. Это называется стандартизацией. В слайдах DLS для этой формулы используется слово «нормализация».

    Поиграй с одним значением
    Изменить μ и σ вручную для опыта

    Сначала μ = 30 и σ ≈ 8.16 рассчитаны по возрастам 20, 30, 40. Если изменить их вручную, это будут экспериментальные настройки.

    Сначала: 40 − 30 = 10. Затем: 10 / 10 = 1. Стандартизованное значение: +1.
    Откуда точно взялось σ ≈ 8.16?

    Отклонения от 30: −10, 0, 10. Квадраты: 100, 0, 100. Среднее квадратов: (100+0+100)/3 = 200/3. Берём корень, чтобы вернуться к годам: σ = √(200/3) ≈ 8.16497. Поэтому 10/σ ≈ 1.22474. Здесь делим на 3, как StandardScaler; в статистике бывает другая договорённость с n−1.

    Проверь себя: Что означает результат −1?

    Как применять это к новым данным?

    Сначала разделяем обучение и проверку. и считаем только по обучающей части и затем ими же преобразуем новые данные. Так модель видит одну и ту же шкалу.

    Обучение → нашли μ и σ → сохранили → применили к обучению, проверке и новым объектам.

    В практике ДЗ это делает StandardScaler внутри Pipeline: при кросс-валидации статистики заново считаются только на обучающей части каждого разбиения.

    Таблица «до и после» и дополнительные пояснения
    ЧеловекВозраст доВозраст послеДоход доДоход после
    А20 лет≈ −1.22500 000 ₽≈ −1.22
    Б30 лет01 500 000 ₽0
    В40 лет≈ +1.222 500 000 ₽≈ +1.22

    Для этой таблицы средние — лет и 1 500 000 ₽; стандартные отклонения примерно лет и 816 497 ₽. Смысл данных сохранился: А ниже среднего, Б около среднего, В выше.

    Результаты не обязаны лежать между 0 и 1. Если признак постоянный и σ=0, делить на ноль нельзя; StandardScaler обрабатывает такой столбец отдельно.

    Проверь себя: На каких данных находят μ и σ?

    Теперь мы умеем

    • Понимать, зачем вычитать μ и делить на σ.
    • Не смешивать масштаб признака с его важностью.
    • Избегать утечки при масштабировании.

    Зачем идём дальше? Теперь можно осмысленнее сравнивать размеры весов и добавлять штраф за них.

    ОбучениеГде мы сейчас?

    Мы умеем уменьшать ошибку и учитывать масштаб признаков. Почему иногда полезно сдерживать веса?

    Регуляризация: второе пожелание к весам

    Что добавляется к обычному loss?

    Иногда разные веса дают похожие прогнозы, а иногда модель слишком подстраивается под обучение. Добавим пожелание: предсказывать хорошо и по возможности обходиться умеренными весами.

    Для объяснения заранее задали два числа: loss данных = 2, штраф за веса = 5. При выбранной силе = 0.1 добавка равна 0.1 × 5 = 0.5; общий loss = 2.5.

    общий loss = loss данных + λ × штраф за веса

    λ — «лямбда», настройка силы штрафа. Её выбирают до обучения. При λ=0 добавка выключена.

    Loss данных = 2
    Penalty = 5
    Общий loss = 2 + 0.10 × 5 = 2.5

    При λ = 0 штраф выключен. Чем больше λ, тем сильнее модель учитывает штраф.

    Проверь себя: Регуляризация заменяет ошибку на данных?

    Как L1 и L2 считают штраф?

    Возьмём для опыта один вес = −2. Модуль — расстояние от нуля: |−2| = 2. Квадрат — произведение числа на себя: (−2)² = 4.

    L1: складываем модули весов.
    L2: складываем квадраты весов.

    На графике горизонталь — вес w, вертикаль — штраф за этот вес до умножения на λ. Точка показывает выбранный вес.

    Форма штрафа L1 и L20510152025−505вес wштраф
    L1: |w| = 2
    L2: w² = 4
    Как штраф добавляется к градиенту?

    L1 складывает модули весов. L2 складывает квадраты.

    L1 может давать нулевые веса в решении. L2 обычно уменьшает их плавно. Обычные шаги с sign(w) не обязаны попадать ровно в ноль.

    Ещё один расчёт модуля и квадрата
    |w| = 2; w² = 4
    Проверь себя: Какой штраф использует w²?

    Как это связано с градиентом и ДЗ?

    В ДЗ добавляются два штрафа одновременно — это Elastic Net. Коэффициенты называются l1_coef и l2_coef. Первый вес — bias, общий сдвиг: в этом задании его не штрафуем.

    К градиенту данных прибавляем:
    L1: l1_coef × sign()
    L2: 2 × l2_coef × w

    sign(w) возвращает −1 для отрицательного веса, +1 для положительного и 0 для нуля. Формулы применяются к весам признаков; добавка для bias равна 0.

    Почему возникают эти две добавки?

    Градиент L2 складывается из двух подсказок

    ∂/∂ читается: «как изменится loss, если немного изменить только вес w₁?»

    ∂L/∂w₁ = 2(xᵢᵀw − yᵢ)xᵢ₁ + 2λw₁

    xᵢᵀw — предсказание для объекта i, yᵢ — его настоящий ответ, xᵢ₁ — значение первого признака. Сумма складывает вклад всех объектов. ∂L/∂w₁ — подсказка, как меняется общий loss, если чуть изменить только первый вес.

    Вклад данных

    Σ 2(xᵢᵀw − yᵢ)xᵢ₁ подсказывает, как улучшить предсказания.

    Вклад L2

    2λw₁ тянет вес к нулю. Градиент учитывает обе цели сразу.

    В учебном примере gradient_data = −2
    2λw = 2×0.10×2 = 0.4
    Общий градиент = −1.6
    Вклад L2 в шаг: 2 − 0.1×0.4 = 1.96 (к нулю)

    Здесь вклад данных закреплён равным −2 для наглядности. Ползунок меняет вес, выше — силу регуляризации. L2 участвует в каждом шаге, а не добавляется только после обучения.

    Как L1 меняет градиент?

    ∂L/∂w₁ = Σ2(xᵢᵀw − yᵢ)xᵢ₁ + λ sign(w₁)

    sign(w) — знак числа: если вес положительный, sign = +1; если отрицательный, sign = −1. При вычитании градиента оба варианта двигают вес к нулю.

    w = +5

    sign(w) = +1 → шаг уменьшает положительный вес к нулю.

    w = −5

    sign(w) = −1 → шаг делает вес менее отрицательным, тоже к нулю.

    Что происходит в точке w = 0?

    У графика |w| в нуле острый угол, поэтому обычная производная там не определена. Используют обобщённое понятие — субградиент. Оптимизаторы умеют с ним работать.

    Про / bias: свободный коэффициент часто не включают в штраф. Обычно регуляризуют w₁, w₂, …, а w₀ оставляют отдельно. Детали зависят от реализации.
    Почему одинаковые прогнозы могут иметь разные веса?

    Когда два признака говорят почти одно и то же

    Представь, что мы предсказываем цену квартиры. x₁ — площадь в м², а x₂ — та же площадь, случайно скопированная в другой столбец. Значит, x₂ = x₁.

    = w₁x₁ + w₂x₂
    если x₁ = x₂ = , то ŷ = (w₁ + w₂)x

    Для прогноза важна сумма весов. Все три пары ниже дают одинаковое правило ŷ = 2x:

    Вариант Aw₁ = 2, w₂ = 0
    Вариант Bw₁ = 1, w₂ = 1
    Вариант Cw₁ = 3, w₂ = −1
    Веса разные, а предсказания одинаковые. По одной только ошибке модель не всегда понимает, какой набор весов выбрать.

    Когда признаки сильно связаны и несут почти одну информацию, это называют мультиколлинеарностью. Из-за неё отдельные веса могут быть нестабильными: они меняются, а общий прогноз почти тот же.

    Математическая запись со слайда

    — таблица признаков, w — набор весов, а Xw — предсказания: ŷ = Xw. Если столбцы признаков зависимы, существует ненулевой вектор v, для которого Xv = 0.

    X(w + cv) = Xw + cXv = Xw

    c — число, которым мы умножаем направление v. Так как Xv = 0, веса меняются, а ответы модели остаются теми же. На слайде направление может называться другой буквой; здесь v — зависимость признаков, а λ ниже — сила регуляризации.

    Проверим это на двух одинаковых признаках

    Возьмём x₁ = x₂ = 5 и правильный ответ = 10. Если сумма весов равна 2, прогноз всегда будет 10. Но L2-штраф разный.

    Меняй веса и смотри, что происходит
    ŷ = 2×5 + 0×5 = 10
    Ошибка на данных = 0
    L2 penalty = 2² + 0² = 4
    Общий loss = 0 + 0.10 × 4 = 0.4

    Сумма весов остаётся 2, прогноз тот же, но L2-штраф меняется.

    Примеры: веса (2, 0) дают прогноз 10 и штраф 4; веса (1, 1) дают прогноз 10 и штраф 2; веса (3, −1) дают прогноз 10 и штраф 10. При одной и той же ошибке L2 предпочитает (1, 1), потому что общий штраф меньше.
    Математика глубже: Weight Decay и запись со слайдов

    Почему L2 называют Weight Decay?

    При L2 к подсказке от данных прибавляется 2λw. В результате обычный шаг обучения слегка уменьшает старый вес, а затем вносит поправку по данным.

    без штрафа: w_new = w − × gradient_data
    с L2: w_new = w − α(gradient_data + 2λw)
    раскрываем скобки: w_new = (1 − 2αλ)w − αgradient_data

    α (альфа) — размер шага обучения. Множитель 1 − 2αλ уменьшает старый вес: например, 10 × 0.99 = 9.9. Потом добавляется поправка от данных. Такое «затухание весов» и называют Weight Decay.

    L2 и Weight Decay всегда полностью одно и то же?

    При обычном градиентном спуске L2 приводит к такому уменьшению весов. Некоторые оптимизаторы, например AdamW, применяют weight decay отдельно от градиента loss. Для первого знакомства это близкие идеи, но технически реализация может различаться.

    L2: штраф за квадраты весов

    L2 возводит каждый вес в квадрат и складывает квадраты. Квадрат делает штраф положительным и особенно быстро растущим для больших весов.

    L(w) = Σ(ŷᵢ − yᵢ)² + λΣwⱼ²

    Обычно штрафуют веса признаков w₁…wₙ; свободный коэффициент w₀ часто оставляют без штрафа.

    ОбозначениеПростое значение
    ŷᵢпредсказание для объекта i
    yᵢнастоящий ответ для объекта i
    ŷᵢ − yᵢошибка
    (ŷᵢ − yᵢ)²квадрат ошибки
    Σсложить по всем объектам или весам
    wⱼ²квадрат одного веса
    λΣwⱼ²штраф за размеры весов

    Здесь i — номер объекта, j — номер веса, L(w) — общий loss для выбранных весов.

    Квадрат веса

    Если w = 1, то w² = 1.
    Если w = 2, то w² = 4.
    Если w = 5, то w² = 25.

    Что видно?

    Вес вырос с 5 до 10 в 2 раза, а его квадрат — с 25 до 100, в 4 раза. Большие веса обходятся модели дороже.

    Проверь себя: Нужно обнулить сам bias модели?

    Теперь мы умеем

    • Различать ошибку данных и штраф за веса.
    • Понимать λ, L1 и L2.
    • Добавлять штрафы к градиенту, не штрафуя bias в ДЗ.

    Зачем идём дальше? Перейдём от цены квартиры к другому виду ответа — клику или отсутствию клика.

    КлассификацияГде мы сейчас?

    До этого ответом была цена квартиры — число. Теперь ответ один из двух: клик или не клик.

    Меняем задачу: кликнет или не кликнет?

    Что изменилось в задаче?

    Предсказать цену — регрессия. Предсказать категорию — классификация. Дальше один постоянный пример: реклама и клик.

    Что знаем до прогнозаЧто выяснится позже
    X: прошлые посещения, клики, объявлениеy: кликнул (1) или не кликнул (0)

    Модель оценивает вероятность клика p. Мы хотим сохранить степень уверенности: 51% и 99% — разные прогнозы, даже если оба превращаются в ответ «клик» при пороге 50%.

    Проверь себя: Что означает y = 0 в наших данных?

    Как читать вероятность?

    Вся вероятность — 1, или 100%. Например, = 0.8 означает оценку 80% для клика; для не клика остаётся 1 − 0.8 = 0.2, то есть 20%.

    0.10.30.50.70.9
    0 — практически невозможно0.5 — посередине1 — модель максимально уверена
    0.80 = 80%: скорее кликнет

    Если нужен один итоговый класс, часто используют порог 0.5: ниже — класс 0, от 0.5 — класс 1. Порог можно менять. Сначала модель всё равно рассчитывает вероятность.

    Здесь ты задаёшь готовую вероятность вручную, чтобы освоить шкалу. В следующей теме модель сама рассчитает её из признака и весов. Порог 0.5 — частый выбор, его можно менять.

    Проверь себя: При p(клик) = 0.3 сколько остаётся на не клик?

    Теперь мы умеем

    • Отличать регрессию от классификации.
    • Читать вероятность и отличать её от метки y.

    Зачем идём дальше? Пока мы двигали вероятность руками. Теперь узнаем, как её рассчитывает модель.

    КлассификацияГде мы сейчас?

    Мы знаем, что p — вероятность клика. Как получить её из обычных чисел?

    От признака к вероятности: z и sigmoid

    Сначала получим сырую оценку z

    Пусть у человека было посещения сайта. Это единственный признак x. Для демонстрации зададим веса: и .

    Умножаем визиты на их вес, затем добавляем сдвиг:

    × = 4
    + 4 =
    = + ×

    z — сырая оценка, её можно назвать logit. Это ещё не вероятность: она может быть меньше 0 или больше 1.

    Проверь себя: Почему z = 2 ещё не вероятность?

    Sigmoid превращает оценку в вероятность

    Нужен переводчик, который большую положительную оценку приближает к 1, а отрицательную — к 0. Эта функция называется sigmoid, или сигмоида.

    = 2 → sigmoid(2) ≈ → примерно 88.1% для клика.
    = sigmoid(z) = 1 / (1 + e−z)

    p — вероятность клика; z — рассчитанная оценка; e ≈ 2.718 — постоянное математическое число. (z) тоже может обозначать sigmoid; в стандартизации σ имела другой смысл — разброс.

    Откуда получилось 0.881?

    Подставили z=2. Калькулятор даёт e^() ≈ 0.1353. Прибавляем 1: 1.1353. Делим 1 на это число: 1 / 1.1353 ≈ 0.8808. Округляем до 0.881. Это преобразование гарантирует число между 0 и 1; качество вероятностей зависит от обучения.

    Попробуй сам: меняются визиты — как меняется p?

    Веса фиксированы: = −2, = 1. Ползунок выбирает вход x.

    Горизонталь — оценка z; вертикаль — вероятность p. Точка — расчёт для выбранного числа визитов.

    Проверь себя: При z = 0 что выдаст sigmoid?

    Теперь мы умеем

    • Читать цепочку x → веса → z → sigmoid → p.
    • Отличать учебные веса, входные данные и вычисленную вероятность.

    Зачем идём дальше? Теперь у нас есть вероятности и реальные ответы. Проверим, насколько они согласуются.

    КлассификацияГде мы сейчас?

    Модель уже выдала вероятности клика p. В данных есть реальные ответы y. Как объединить поддержку всех ответов?

    Likelihood: поддержала ли модель реальные ответы?

    Какую вероятность брать, если человек не кликнул?

    Для следующих трёх людей зададим готовые ответы условной модели: = , , 0.6. Это отдельный учебный пример, а не результаты ползунка с визитами.

    ЧеловекЧто произошло на самом делеЧто сказала модельВероятность настоящего ответа
    № 1Кликнул, y = 1P(клик) = 0.80.8
    № 2Не кликнул, y = 0P(клик) = 0.3Не клик: 1 − 0.3 = 0.7
    № 3Кликнул, y = 1P(клик) = 0.60.6

    Назовём вероятностью именно того ответа, который случился: при =1 берём q=p, при y=0 берём q=1−p. Поэтому второй человек даёт q=1−0.3=0.7.

    Почему 1 − 0.3, а не 1 + 0.3?

    Весь «пирог» вероятности — 1. Клик занял 0.3. На противоположный исход осталось 0.7. Проверка: 0.3 + = 1.

    Проверь себя: В данных y=0, модель дала клику p=0.3. Что берём?

    Как собрать одно число для всех трёх?

    В этой модели считаем ответы отдельных людей независимыми при заданных признаках и весах. Поэтому вероятность наблюдать все эти ответы вместе — произведение их вероятностей.

    × × =

    Это likelihood, правдоподобие. На одних и тех же наблюдениях можно сравнивать разные веса: больше произведение — сильнее модель поддержала записанные ответы. Это не вероятность, что модель «правильная».

    Запись из лекции: ∏ и индекс i
    Likelihood() = ∏ᵢ qᵢ

    — перемножить; i — номер человека; qᵢ — вероятность его настоящего ответа при текущих весах w. В других материалах её могут обозначать P(Y=yᵢ | =xᵢ, w). Вертикальная черта читается «при известных» признаках и весах.

    Каждый ползунок — вероятность, которую модель дала правильному ответу одного человека. Начальные значения — из таблицы выше.

    Общее правдоподобие0.336
    0.80 × 0.70 × 0.60 = 0.336

    Ползунки напрямую меняют для опыта; в настоящем обучении меняют общие веса, и уже из них получаются вероятности. У второго ползунка начальное q=, а вероятность клика была =0.3.

    Проверь себя: Likelihood вычисляет исходную вероятность клика?

    Теперь мы умеем

    • Выбирать p или 1−p по реальному ответу.
    • Понимать произведение вероятностей для фиксированных данных.

    Зачем идём дальше? Произведение множества вероятностей становится крошечным. Понадобится ln — сначала вспомним его отдельно.

    КлассификацияГде мы сейчас?

    Мы получили likelihood как произведение вероятностей. Что за операция поможет заменить произведение суммой?

    Математическая пауза: что означает ln?

    Логарифм спрашивает: какая степень?

    На минуту отложим модель. В записи 2³=8 мы знаем степень 3 и ищем результат: 2×2×2=8. Теперь задаём обратный вопрос: какую степень нужно поставить у 2, чтобы получить 8?

    Ответ 3. Записываем: log₂(8)=3.

    Логарифм ищет степень. Маленькая 2 внизу — основание, 8 — нужный результат, 3 — найденная степень.

    2³ = 8
    Обратный вопрос: log₂(8) = ?
    Ответ: 3
    Проверь себя: Что означает log₂(8) = 3?

    Что особенного у ln?

    ln — логарифм с постоянным основанием e ≈ 2.718. ln(0.9) спрашивает: в какую степень возвести e, чтобы получить 0.9?

    e? = 0.9
    ? ≈
    ln(0.9) ≈

    e⁰=1. Чтобы получить число меньше 1, нужна отрицательная степень: например, e⁻¹=1/e≈0.368. Для 0.9 подходит меньший по модулю отрицательный показатель.

    Попробуй: какую степень ищет ln?
    Несколько значений и границы
    qln(q)
    10
    0.9≈ −0.105
    0.5≈ −0.693
    0.1≈ −2.303
    0.01≈ −4.605

    Для 0<<1 логарифм отрицательный; при q=1 он равен 0. ln(0) не определён; когда q приближается к нулю справа, ln(q) уходит в минус без границы.

    Проверь себя: Откуда число −0.105?

    Теперь мы умеем

    • Читать логарифм как вопрос о степени.
    • Понимать ln(0.9) и знак результата.

    Зачем идём дальше? Возвращаемся к 0.8 × 0.7 × 0.6: применим ln и получим штраф.

    КлассификацияГде мы сейчас?

    Мы знаем, что ln ищет степень. Зачем применять его к вероятностям и менять знак?

    От likelihood к loss и BCE

    Возвращаемся к произведению

    Мы вернулись к тому месту, где остановились до математической паузы. Снова посмотрим на готовый likelihood, а затем применим к нему ln.

    Likelihood = 0.8 × 0.7 × 0.6 = 0.336
    Теперь берём логарифм: ln(0.8 × 0.7 × 0.6)
    Зачем здесь ln? В большом наборе произведение множества вероятностей становится крошечным. Вместо него компьютер может складывать логарифмы вероятностей. Это удобнее считать, а сравнение моделей сохраняется.
    ln(a × b) = ln(a) + ln(b)

    Каждая вероятность отвечает своему человеку; после ln умножение заменяется сложением этих отдельных значений:

    Вероятность ответа № 1ln(0.8) ≈
    Вероятность ответа № 2ln(0.7) ≈
    Вероятность ответа № 3ln(0.6) ≈
    Сложили вместо умножения−0.223 − 0.357 − 0.511 ≈
    ln(0.8 × 0.7 × 0.6) = ln(0.8) + ln(0.7) + ln(0.6) ≈ −1.091

    Это называется log-likelihood — логарифм правдоподобия. Он может быть отрицательным: логарифм числа от 0 до 1 отрицательный. Это нормально.

    Почему лучший порядок моделей не меняется?

    Логарифм сохраняет порядок чисел: если одно likelihood больше другого, его логарифм тоже будет больше. Поэтому модель, у которой likelihood лучше, останется лучшей и после логарифма. Мы изменили удобство вычисления, а не результат сравнения.

    Проверь себя: Как посчитать ln(0.8 × 0.7 × 0.6)?

    Почему минус превращает это в штраф?

    Хорошие веса дают больший log-likelihood. Но привычная задача обучения — уменьшать loss. Меняем знак: максимум log-likelihood становится минимумом его отрицания.

    Для одного человека возьмём — вероятность настоящего ответа:

    q=0.9: ln(q)≈− → −(−0.105)=0.105.
    q=0.1: ln(q)≈− → −(−2.303)=2.303.

    Первый прогноз поддержал настоящий ответ сильнее и получил меньший штраф. Уверенная ошибка получает большой штраф.

    loss одного ответа = −ln(q)

    q — вероятность настоящего ответа; ln — логарифм; минус меняет знак результата. Это один вид loss, а не определение любого loss.

    Двигай ползунок: q — вероятность правильного ответа, которую дала модель.

    q = 0.90 · ln(q) ≈ −0.105 · loss ≈ 0.105

    Модель дала правильному ответу высокую вероятность — штраф маленький.

    Как меняется штраф, когда меняется вероятность? 012344.6 0.010.10.51 q — вероятность правильного ответаloss = −ln(q) 0.01 → 4.605 0.1 → 2.303 0.5 → 0.693 0.9 → 0.105

    Оранжевая точка показывает текущее значение ползунка. При q → 1 штраф стремится к 0; при q → 0 быстро растёт. Точные текущие значения смотри в расчёте над графиком.

    Почему два минуса дают плюс?

    Внешний минус означает умножить результат на −1. Поэтому −(−0.105) = (−1)×(−0.105) = +0.105.

    Почему штраф так быстро растёт около нуля?

    При уменьшении q логарифм становится всё более отрицательным. Например, q=0.1 даёт 2.303 штрафа, q=0.01 — 4.605. При q→0 штраф не ограничен. Это мешает модели безнаказанно почти исключать реально случившийся ответ.

    Проверь себя: Что старается уменьшить обучение?

    BCE: объединяем два случая

    В бинарной классификации есть два ответа: = 1 или y = 0. Модель выдаёт вероятность класса 1, например = 0.8.

    Если правильный ответ y = 1

    Нас интересует вероятность класса 1: это p.

    Если модель дала ему 0.8, правильный ответ получил вероятность 0.8.

    Если правильный ответ y = 0

    Нас интересует вероятность класса 0: это 1 − p.

    Если класс 1 получил 0.8, класс 0 получает 1 − 0.8 = 0.2.

    Мы уже разобрали штраф для одной вероятности. Сейчас объединим два случая — когда правильный ответ y = 1 и когда y = 0 — в одну формулу:

    BCE = −[ y × ln(p) + (1 − y) × ln(1 − p) ]
    Что этоЗначение
    yНастоящий ответ из данных: 0 или 1
    pВероятность класса 1, которую выдала модель
    1 − pВероятность класса 0
    −ln(...)Штраф: меньше вероятность настоящего класса — больше штраф
    Как формула выбирает нужный случай? Если y = 1, первая часть остаётся: −ln(p). Если y = 0, первая часть обнуляется, остаётся −ln(1 − p).

    Поменяй ответ и вероятность

    Настоящий ответ1
    Вероятность настоящего класса0.80
    Loss = −ln(этой вероятности)0.223

    Настоящий ответ — 1, поэтому смотрим на вероятность класса 1: p = 0.80. Чем она выше, тем меньше штраф.

    Название: Binary Cross Entropy (BCE) — это negative log-likelihood для бинарного ответа. Не нужно заучивать название отдельно: смысл тот же — маленькая вероятность настоящего ответа даёт большой штраф.
    Почему уверенная ошибка получает большой штраф?

    Если в данных y = 0, а модель дала классу 1 вероятность 0.99, то классу 0 остаётся только 0.01. Вероятность настоящего ответа очень низкая, поэтому −ln(0.01) ≈ — большой штраф. Если модель уверена и права, штраф маленький.

    Связь с обучением: посчитали p по и → выбрали вероятность ответа по y → получили loss → вычислили градиент → изменили w. Модель не вычисляет ln до likelihood; это способ записать критерий её обучения.

    Что суммируется в ДЗ?

    Для каждого объекта считается BCE. Затем штрафы складываются: = Σᵢ BCEᵢ. Градиент этой суммы: Xᵀ(p−y). В других реализациях можно брать среднее, но в вашем notebook деления на размер батча нет.

    Проверь себя: В BCE символ p означает…

    Теперь мы умеем

    • Переходить от произведения к сумме логарифмов.
    • Понимать знак минус в loss.
    • Читать BCE для y=1 и y=0.

    Зачем идём дальше? В notebook те же действия записаны через таблицы и векторы. Разберём эту короткую запись.

    ДЗ и справкаГде мы сейчас?

    По одному объекту мы уже умеем умножать признаки на веса и складывать. Как записать то же сразу для многих объектов?

    Векторы, матрицы и код из ДЗ

    Вектор: список с фиксированным порядком

    Начнём не с абстрактных букв. Представь карточку одного пользователя. В ней записаны его признаки — несколько чисел.

    Пример признаков одного пользователя
    = [1, 2, 3]

    Первое число 1 — техническая единица для свободного коэффициента. Второе: условно 2 прошлых визита. Третье: 3 клика.

    Что называют вектором?

    Вектор — это упорядоченный список чисел. Здесь вектор x содержит три числа. Порядок важен: если договорились, что второй элемент — визиты, нельзя потом поставить туда клики.

    Можно представить вектор как аккуратную коробочку с ячейками: в каждой ячейке лежит значение одного признака.

    x = [x₀, x₁, x₂] = [1, 2, 3]

    Что такое веса?

    Модель хранит по одному весу для каждого элемента x. Вес показывает, как данная модель учитывает соответствующий признак. Это не универсальная «важность в мире»: знак и величина веса зависят от данных, масштаба признака и остальных весов.

    = [, , w₂] = [−2, 0.5, 1]

    Если вес положительный, увеличение соответствующего признака увеличивает итоговую сумму, если остальные значения неизменны. Если вес отрицательный — уменьшает. Нулевой вес не добавляет вклад.

    Умножили пары чисел и сложили

    Операция w · x называется скалярным произведением. В этом контексте её проще читать так: «перемножить пары соответствующих чисел и сложить результаты».

    w · x = (−2 × 1) + (0.5 × 2) + (1 × 3)
    = −2 + 1 + 3
    = 2

    Получилось одно число — 2. Это пока не вероятность и не класс. Это сырая оценка модели.

    Не перепутай: точка в записи w · x означает операцию «скалярное произведение», а не обычное умножение двух целых векторов. Результат этой операции — одно число.
    Попробуй вклады двух признаков

    Попробуй посчитать сама моделью

    Поменяй компоненты признаков или весов. Ползунки покажут каждый вклад wᵢ × xᵢ и их сумму.

    z = −2×1 + 0.5×2 + 1×3 = 2

    Итоговая сумма = 2.00
    Проверь себя: Как получить скалярное произведение?

    Зачем столбец единиц?

    В формуле модели часто есть свободный коэффициент, который называют b или :

    = b + w₁x₁ + w₂x₂

    Можно положить x₀ = 1 и считать w₀ = b. Тогда всё складывается в одну запись:

    z = w₀x₀ + w₁x₁ + w₂x₂ = ·

    Единица не измеряет свойство пользователя. Она просто позволяет записать свободный коэффициент как ещё один член суммы.

    Почему число элементов должно совпадать?

    Если в x три компонента, то и весов для них должно быть три. Иначе неясно, какой вес умножать на какой признак.

    x = [1, 2, 3] и w = [−2, 0.5, 1] → три пары → одно число

    В реальных моделях признаков может быть тысячи или миллионы, но принцип тот же.

    Квартиры как строки :
    [1, 30]
    [1, 50]
    [1, 70]
    Веса w = [0.5, 0.15].
    Xw = [5, 8, 11] — три прогноза.

    Единица позволяет включить сдвиг в то же умножение: 1×0.5 + площадь×0.15. Здесь форма X — (3, 2), w — (2,), результата — (3,).

    Как читать Xᵀ(p − y)?

    Меняем числа для маленькой задачи о кликах: признак =[0,1,2], ответы =[0,0,1]. При нулевых весах =0 и =0.5 для всех.

    Строка X с единицейp − y
    [1, 0]0.5 − 0 = 0.5
    [1, 1]0.5 − 0 = 0.5
    [1, 2]0.5 − 1 = −0.5

    Для bias складываем разницы: 0.5+0.5−0.5=0.5. Для веса признака сначала умножаем на его значения: 0×0.5+1×0.5+2×(−0.5)=−0.5.

    градиент = Xᵀ(p − y) = [0.5, −0.5]

    Xᵀ — таблица , у которой поменяли строки и столбцы. Так каждый признак собирает вклад всех объектов. В NumPy X.T @ (p - y): .T меняет оси, @ умножает матрицу на вектор.

    Размеры массивов и короткий словарь NumPy

    X: (3,2); X.T: (2,3); p−y: (3,). Результат: (2,) — одна подсказка для каждого из двух весов. Это одномерный массив, не столбец формы (2,1).

    ЗаписьСмысл здесь
    .shapeРазмеры массива
    np.sumСложить значения
    np.meanВзять среднее
    np.linalg.norm(w)Длина вектора весов; для L2 берут её квадрат
    np.randomСлучайный старт или порядок объектов
    Проверь себя: В ДЗ для двух весов градиент содержит…

    Дополнительно: точное решение из лекции

    В слайдах есть второй способ обучить линейную регрессию: решить задачу наименьших квадратов сразу. Для домашки вы реализуете градиентный спуск; подробную альтернативу можно открыть позже.

    Линейность по параметрам и псевдообратная матрица

    Линейная модель линейна по весам. В признаках могут быть x² или другие заранее вычисленные преобразования: =+w₁x+w₂x² всё ещё линейна по w.

    Для таблицы и ответов ищем веса с минимальной суммой квадратов: ()=‖Xw−y‖². Знак ‖…‖ означает длину вектора промахов, квадрат длины — сумму квадратов его элементов.

    ∇L = 2Xᵀ(Xw−y)
    XᵀXw = Xᵀy
    w = X⁺y

    Приравняли градиент к нулю, чтобы найти минимум. X⁺ — псевдообратная матрица. Если столбцы X независимы, можно записать X⁺=(XᵀX)⁻¹Xᵀ. Знак −1 здесь означает обратную матрицу, а не поэлементное деление.

    При зависимых столбцах эта обратная матрица не существует, но псевдообратная остаётся определена. На практике решают через np.linalg.lstsq(X, y, rcond=None)[0] или np.linalg.pinv(X) @ y, не вычисляя обратную вручную. Если решений несколько, псевдообратная выбирает решение с минимальной длиной весов.

    Теперь мы умеем

    • Читать Xw как прогнозы по строкам.
    • Понимать столбец единиц и формы массивов.
    • Связывать X.T @ (p−y) с ручным расчётом.

    Зачем идём дальше? Можно переходить к четырём упражнениям: подсказки и код открываются по желанию.

    Дополнительно: softmax для нескольких классов

    В лекции эта тема есть; в HW 2 мы обучаем бинарную модель. Теперь меняем пример с кликов на три категории изображений.

    Для двух классов достаточно одной вероятности: если P(класс 1) = 0.8, то P(класс 0) = 0.2. Для трёх и более классов модель должна оценить каждый класс.

    У каждого класса свой набор весов

    Представим, что модель различает кота, собаку и птицу. У всех изображений одинаковый набор признаков x, но для каждого класса есть свой набор весов.

    вектор признаков: x = [x₀, x₁, x₂]

    веса кота: wкот = [ ... ]
    веса собаки: wсобака = [ ... ]
    веса птицы: wптица = [ ... ]

    Считаем скалярное произведение отдельно для каждой строки весов. Получаем три числа — по одному на класс.

    zкот = wкот · x
    zсобака = wсобака · x
    zптица = wптица · x

    Если сложить все наборы весов строками, получится матрица. Матрица — это прямоугольная таблица чисел. Умножение этой матрицы на вектор признаков сразу возвращает вектор оценок для классов.

    W = [строка весов кота;
    строка весов собаки;
    строка весов птицы]

    logits = W · x = [zкот, zсобака, zптица]
    Размерности можно прочитать буквально: если в признаковом векторе n чисел, каждая строка матрицы W тоже должна иметь n весов. Если классов K, матрица содержит K строк, а результат — K оценок.

    Logits — оценки до вероятностей

    Logit — сырая оценка, которую модель рассчитала для класса до преобразования в вероятность. Logits могут быть отрицательными, положительными и больше единицы. Они не обязаны складываться в 1.

    кот: 2    собака: 1    птица: 0

    Пока что самое большое число у кота, поэтому кот — наиболее вероятный выбор модели. Но сами числа 2, 1 и 0 ещё не означают вероятности 2%, 1% и 0%.

    Softmax переводит набор оценок в вероятности

    Для каждого класса softmax берёт экспоненту его logit, а затем делит на сумму экспонент по всем классам:

    softmax(z)k = exp(zk) / Σj exp(zj)

    Для logits [2, 1, 0] считаем по шагам:

    exp(2) ≈ 7.39; exp(1) ≈ 2.72; exp(0) = 1
    сумма = 7.39 + 2.72 + 1 = 11.11

    кот: 7.39 / 11.11 ≈ 0.665
    собака: 2.72 / 11.11 ≈ 0.245
    птица: 1 / 11.11 ≈ 0.090

    Теперь все значения от 0 до 1, а вместе дают примерно 1 (расхождение в последнем знаке может быть из-за округления).

    Результат: модель оценивает кота примерно в 66.5%, собаку — в 24.5%, птицу — в 9.0%. Наибольшая вероятность у кота.

    Почему в нейросетях часто не пишут softmax перед Cross Entropy?

    В математике мы объясняем цепочку как logits → softmax → вероятности → cross-entropy. В библиотеках вроде PyTorch для обучения обычно передают logits прямо в CrossEntropyLoss: функция сама внутри устойчиво сочетает softmax и log-loss. Если вручную применить softmax, а затем передать результат туда, где ожидаются logits, получится неверное использование.

    Название может запутать: logit и логарифм — разные слова. Logit здесь означает сырую оценку класса. В бинарном случае математический logit вероятности имеет ещё и специальное определение как log-odds, но в этой лекции главное — значение до sigmoid/softmax.

    Карта темы и источники

    В машинном обучении модель получает примеры, выдаёт ответ, сравнивает его с реальностью и настраивает свои параметры.

    данные→X — признаки→модель с весами w→предсказание
    Если нужен числовой ответ

    Линейная регрессия → прогноз ŷ (например, цена квартиры).

    Если нужна категория

    Классификация → вероятность p → выбранный класс 0 или 1.

    сравнили с настоящим y→ошибка + штраф за веса→общий loss→изменили веса w→повторили обучение
    Цепочка вероятностей в классификации
    Модель оценила классвероятность p
    Выбрали вероятность реального ответавероятность правильного класса
    Объединили ответы многих объектовlikelihood
    Произведение заменили суммой логарифмовlog-likelihood
    Поменяли знак, чтобы уменьшать числоloss / BCE
    Главная мысль: это связанные шаги одного процесса, а не набор отдельных формул.
    Какие разделы соответствуют DLS?
    ИсточникГде на странице
    Лекция, слайды 3–12Линейная модель, loss, векторы, точное решение
    Лекция, слайды 13–27Классификация, likelihood, sigmoid, BCE, softmax
    Лекция, слайды 28–40Главный раздел градиентного спуска
    Лекция, слайды 41–47Регуляризация и масштабирование
    HW 2, задания 1–4Градиент sin²x+sin²y; батчи; fit/get_grad; Elastic Net

    Квартиры, чаши и числа кликов — учебные примеры для объяснения тех же идей. Порядок подачи изменён для новичка; формулы и требования ДЗ сохранены.

    Лекционные слайды DLS ↗ · HW 2, autumn26 ↗

    Сверено 16 октября 2026: задания в main и autumn26 совпадают; в autumn26 добавлена проверка fit и обновлён один вызов построения 3D-графика. HTML объясняет решение, но не подтверждает выполнение вашего Colab.

    Словарь: что означает символ здесь?

    ОбозначениеЧто значитПо-простому
    Xздесь: таблица признаков; на вероятностных слайдах — случайный векторкакие вообще бывают входные данные
    xᵢконкретный объектодна строка датасета
    Yна вероятностных слайдах: случайная целевая переменнаячто мы хотим предсказывать вообще
    yᵢконкретный правильный ответистинная метка объекта i
    ŷпредсказанное числоответ модели в регрессии
    pвероятностьнапример, вероятность класса 1
    Likelihoodправдоподобиенасколько модель поддержала настоящие ответы
    Log-likelihoodлогарифм правдоподобиято же сравнение моделей, но произведение стало суммой
    NLLотрицательный log-likelihoodштраф: чем меньше, тем лучше
    BCEBinary Cross Entropyштраф за вероятность настоящего ответа 0 или 1
    wпараметры моделичисла, которые модель обучает
    Σсуммасложить
    ∏произведениеперемножить
    lnнатуральный логарифмматематическое преобразование
    Llossнасколько плохо модель ошибается
    αскорость обученияразмер шага при изменении параметров
    градиентнабор производных по параметрамподсказка, куда растёт ошибка и насколько быстро
    MSEсредняя квадратичная ошибкасредний квадрат промахов для числовых ответов
    регуляризациядобавочный штраф в lossпомогает сдерживать слишком большие веса
    λ (лямбда)сила регуляризациинасколько сильно учитываем штраф
    L1штраф по сумме модулей весовможет сделать часть весов нулевыми
    L2штраф по сумме квадратов весовплавно уменьшает большие веса
    мультиколлинеарностьсильная связь между признакаминесколько признаков сообщают почти одну информацию

    Одна буква может иметь разные значения в разных местах. В sin²x+sin²y буква y — координата, а в классификации y — настоящий класс.

    СимволСмысл в нашем контексте
    qВероятность настоящего ответа: p или 1−p
    μ, σСреднее и стандартное отклонение признака
    σ(z)Иногда так обозначают sigmoid — другой контекст σ
    ∂L/∂wКак меняется loss при малом изменении выбранного веса
    α, β в Elastic NetСилы L1/L2; α здесь не learning rate

    Проверка: от данных до обучения

    Отвечай своими словами, потом выбирай вариант. Ошибка — повод вернуться к одному конкретному шагу.

    Проверь себя: Что известно модели о квартире до прогноза?

    Проверь себя: Откуда наклон 0.15?

    Проверь себя: Что говорит loss?

    Проверь себя: Зачем вычитают градиент?

    Проверь себя: Что выбираем сами перед обучением?

    Проверь себя: Где считаем среднее для StandardScaler?

    Проверь себя: Что исключаем из штрафов в ДЗ?

    Проверь себя: Как получается вероятность логистической модели?

    Проверь себя: Человек не кликнул; p(клик)=0.8. Какое q?

    Проверь себя: ln(0.9)≈−0.105 означает…

    Проверь себя: При q=0.01 штраф −ln(q)…

    Проверь себя: Градиент батча в notebook…