Как нейросеть учится на ошибках: обратное распространение

Как нейросеть учится на ошибках: обратное распространение

Нейросеть в момент рождения не знает ничего. Числа в её весах заполнены случайными значениями, и на просьбу опознать объект на фотографии она отвечает наугад. Через сутки обучения та же модель заявляет: «на 90% это собака». Между двумя состояниями нет ни одной инструкции, написанной человеком. Есть только цикл, повторённый тысячи и миллионы раз: предсказать, измерить ошибку, вернуть её назад и подправить себя. Этот цикл объясняет, как нейросеть учится на ошибках, и почему для обучения нужны гигантские датасеты и вычислительные мощности.

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

Что такое обучение нейросети

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

Нейроны, веса и смещения

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

Нейроны собраны в слои, и здесь прячется разгадка слова «глубокое». Входной слой принимает данные как есть: для картинки это тысячи чисел яркости пикселей, для текста числа, кодирующие слова. Скрытые слои делают основную работу: первые улавливают простые штрихи и границы, следующие собирают из них формы, верхние оперируют уже целыми объектами. Выходной слой выдаёт финальный ответ: категорию, число или набор вероятностей.

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

Цикл обучения: четыре шага, повторённые миллион раз

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

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

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

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

Четвёртый шаг исправляет веса и смещения на основе этого знания. Цикл замыкается: новое предсказание, новая ошибка, новая правка. Через тысячи повторов случайные числа превращаются в слаженную систему, которая узнаёт лица, голоса и рукописный текст.

Функция потерь: язык самооценки

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

Для каждой задачи своя функция. В классификации обычно используют кросс-энтропию, о которой у нас есть отдельный разбор, в задачах с числами, скажем при оценке стоимости квартиры, работает среднеквадратичная ошибка. Смысл один: дать обучающей процедуре измеримую цель, которую можно уменьшать.

Почему бы просто не помечать ответы ярлыками «верно» и «неверно»? Потому что такой сигнал не подсказывает, в какую сторону исправляться. Числовая оценка ошибки сразу отвечает на два вопроса: насколько силён промах и как каждый из миллионов весов на него повлиял. Чем аккуратнее измерена ошибка, тем осмысленнее следующая правка. Без числовой функции потерь обучение превратилось бы в слепой поиск: модель не знала бы, куда двигаться.

Обратное распространение: ошибка идёт обратно

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

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

Оптимизатор: размер шага решает всё

Градиент говорит, куда двигаться, но не говорит, насколько широко шагать. За это отвечает оптимизатор и его главный параметр, скорость обучения. Шаг слишком большой, и модель начнёт скакать вокруг решения, перескакивая его при каждом обновлении. Слишком маленький, и обучение превратится в вечную загрузку, застрявшую на 99%.

Классический подход, стохастический градиентный спуск (SGD), обновляет веса по небольшим порциям данных. Современные оптимизаторы вроде Adam подстраивают размер шага отдельно для каждого веса: там, где сигнал устойчивый, шаг больше, в шумных местах меньше. Придумано это не ради красоты: неудачная скорость обучения превращает даже перспективную модель в бесконечную калибровку.

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

Активации и нелинейность: деталь, без которой сеть бесполезна

Внутри каждого нейрона спрятана маленькая деталь, без которой вся затея разваливается: функция активации. Она решает, как сильно нейрон реагирует на полученную сумму сигналов, пропускать ли их дальше и с какой интенсивностью. Звучит как техническая мелочь, но именно она даёт сети нелинейность.

Что это значит на практике? Без активаций каждый слой выполнял бы лишь линейное преобразование, а композиция линейных преобразований всегда линейна, сколько слоёв ни ставь. Сеть могла бы выучить только прямые зависимости: поработал вдвое больше, получил вдвое больше. Реальные данные устроены иначе. Связи меняются по контексту, малые изменения иногда не значат ничего, а иногда переворачивают результат.

Нелинейность позволяет модели изгибать зависимость, а не только выпрямлять её. Ощущение похоже на момент озарения при подготовке к экзамену: вы битый час сидели над задачей, а потом что-то щёлкнуло, и разрозненные куски сложились в картину. Современные сети чаще всего используют простейшую активацию ReLU: она пропускает положительные сигналы и обнуляет отрицательные. Этой примитивной детали достаточно, чтобы сеть научилась распознавать лица и понимать язык.

Чем глубокое обучение отличается от классического машинного обучения

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

Отсюда вытекают две разницы. Первая в масштабе данных: классическому ML хватает сотен или тысяч примеров, потому что часть интеллекта в систему заносят люди, уже переварившие предметную область. Глубокому обучению приходится брать всё из данных, поэтому примеров нужны миллионы, а лучше миллиарды. Вторая разница в вычислительной цене: миллионы параметров требуют графических процессоров (GPU), памяти и терпения, тогда как классические алгоритмы нередко укладываются в ноутбук.

Обе разницы объясняют, почему глубокое обучение выстрелило именно в 2010-х, когда одновременно выросли вычислительные мощности и накопились данные. Переломным стал 2012 год: сеть AlexNet снизила ошибку в соревновании ImageNet с 26% у ближайшего конкурента до 15%, и с этого момента глубокие сети начали вытеснять классические подходы в задачах восприятия.

Как из этого выросли большие языковые модели

Языковые модели вроде GPT и Claude работают на том же цикле обучения, только доведённом до крайней степени. Триллионы токенов текста, миллиарды параметров, тысячи GPU и месяцы непрерывной работы. Функция потерь та же кросс-энтропия, обратное распространение то же самое. Разница только в масштабе, а масштаб здесь имеет значение: это он превращает предсказатель следующего слова в собеседника, который пишет код и рассуждает.

Архитектуру таких моделей мы разбирали на примере Qwen3 в отдельном посте. Если коротко, трансформеры устроены как те же слои, нейроны и веса, только соединённые особым образом, который позволяет учитывать контекст вокруг каждого слова.

Часто задаваемые вопросы

Почему нейросеть называют «чёрным ящиком»?

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

Сколько данных и вычислений нужно для обучения?

Разница достигает трёх-четырёх порядков. Классической модели машинного обучения хватает тысяч примеров, глубокой сети нужны миллионы, большой языковой модели триллионы токенов и тысячи GPU на месяцы. При этом небольшие сети обучают на одном ноутбуке за часы, так что правило «нужен дата-центр» действует только на верхних ступенях масштаба.

Что такое переобучение?

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

Итог

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

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

← Все записи