alterna ai
ALTERNA AI / ГЛАВА 05 · 03

05.3 Какие примеры участвовали в исправлении

На предыдущей странице: небольшой шаг против роста ошибки.

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

Индивидуальные производные: [1,−1,−3,−5].

Не каждый градиент требует всех данных

Если L(θ)=N⁻¹ΣLᵢ(θ), полный g=N⁻¹Σ∇Lᵢ. Mini-batch выбирает подмножество B и использует его средний градиент. При равномерной случайной выборке подходящим способом это несмещённая оценка полного градиента. Шум зависит от выборки и структуры данных, не добавляется произвольным декоративным дрожанием линии.

gB=1∣B∣∑i∈B∇Li(θ).g_B=\frac1{|B|}\sum_{i\in B}\nabla L_i(\theta).

Для Lᵢ(θ)=.5(θ−tᵢ)² и targets[−1,1,3,5] приθ=0 индивидуальные gradients[1,−1,−3,−5], полное среднее−2. Batch из первого и второго примеров даёт0, хотя общий g≠0. Batch из всех четырёх возвращает−2. Дляη=.1 полный шагθ_new=.2.

Эксперимент. Меняйте размер batch1/2/4 при фиксированном seed. В панели видны выбранные индексы и их градиенты. Смена seed меняет выбор, не данные. Полный batch не должен зависеть от перестановки. Фиксированный seed обеспечивает воспроизводимый опыт, но сам по себе не доказывает статистическое свойство несмещённости.

В race-лаборатории используется точный градиент аналитической поверхности, поэтому первый метод называется GD, не SGD. Эта отдельная batch-лаборатория действительно выбирает примеры. Нельзя выдавать первую демонстрацию за стохастическое обучение только потому, что алгоритмы применимы к SGD.

Под капотом. Больший batch часто лучше использует матричные вычисления, но требует больше памяти активаций. Уменьшение шума, качество переноса и скорость в секунду зависят от задачи; равенство «больше batch всегда лучше» не следует из формулы среднего.

targets = [-1,1,3,5]
theta = 0
gradients = [theta-t for t in targets]
assert sum(gradients)/4 == -2
assert sum(gradients[:2])/2 == 0

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Градиент вычислен по данным, а не нарисован случайным шумом. Поэтому разные части данных могут давать разные шаги.

Учитываем прошлые исправления. Как этот вопрос продолжает полученный результат?

Python-примеры главы 05 Академическая база →