глоссарий

Stochastic Weight Averaging

Stochastic Weight Averaging

Stochastic Weight Averaging, или стохастическое усреднение весов, — это приём, который улучшает качество обученной нейросети, буквально вычисляя среднее арифметическое её «мозгов». Обычно после завершения обучения мы берём финальные веса модели, но исследователи заметили: если усреднить веса, полученные на нескольких последних этапах, ошибка на новых данных часто снижается. Метод важен, потому что он даёт прирост точности практически бесплатно, без изменения архитектуры и без дополнительного обучения.

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

Практический пример — классификация изображений. Допустим, вы тренируете свёрточную сеть на наборе CIFAR-100. Без усреднения точность на валидации может достигнуть 75 %. Применив Stochastic Weight Averaging, вы получите 77 % при том же арсенале гиперпараметров. Это сложно добиться простым переобучением, зато достигается тремя строками кода.

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