Никакого волшебства: измерить ошибку, понять, в какую сторону её уменьшить, сделать маленький шаг. Повторить миллион раз. Это весь алгоритм.
Всё. Дальше — следующий пример, и так миллионы раз.
Представьте, что вы настраиваете старый приёмник вслепую, на ощупь, в тёмной комнате. Крутите ручку — шум усилился, значит не туда. Крутите обратно — стало чище. Ещё немного в ту же сторону. Ещё. Вы не знаете, где идеальная точка, но знаете направление улучшения прямо сейчас.
Градиент — это и есть ответ на вопрос «в какую сторону крутить каждую ручку, чтобы стало лучше». Только ручек не одна, а семь миллиардов, и для каждой вычисляется своё направление. Одновременно.
Чтобы улучшать, надо мерить. Функция потерь превращает «сеть ошиблась» в конкретное число, которое можно уменьшать.
| Задача | Как меряют | Смысл |
|---|---|---|
| Предсказать число | Квадрат разности | Чем дальше промах, тем непропорционально хуже |
| Выбрать из вариантов | Перекрёстная энтропия | Насколько мала была вероятность, назначенная правильному ответу |
| Сгенерировать текст | То же самое, на каждом слове | Насколько модель «удивилась» настоящему следующему слову |
Для языковой модели ошибка — это мера удивления. Текст «паяльник надо держать за...» — если модель назначила слову «ручку» вероятность 0,9, удивление мало, ошибка мала. Назначила 0,01 — удивление огромно, ошибка большая, веса поедут сильно. Обучение языковой модели буквально сводится к «перестань удивляться настоящему тексту».
Главная техническая идея всего глубокого обучения, и по сути — школьное правило производной сложной функции.
Ошибка известна на выходе. Нужно понять вклад каждого веса в глубине сети. Считаем с конца: как последний слой повлиял на ошибку, затем как предпоследний повлиял на последний, и так до начала. Ответственность распределяется назад по цепочке.
вперёд: вход → слой1 → слой2 → слой3 → ответ → ошибка
назад: ошибка → вклад слоя3 → вклад слоя2 → вклад слоя1
и для каждого веса: «подвинуть сюда, на столько»
Наивный способ — подвинуть один вес, прогнать всю сеть, посмотреть, что стало. Для семи миллиардов весов это семь миллиардов прогонов на каждый пример. Обратное распространение даёт все направления сразу, за один проход назад. Разница в вычислительной стоимости — миллиарды раз, и именно она сделала обучение возможным.
Насколько большой шаг делать в найденном направлении.
| Шаг | Что происходит | Аналогия |
|---|---|---|
| Слишком маленький | Учится, но бесконечно долго | Подкручиваете ручку на микрон за раз |
| В самый раз | Ошибка плавно падает | Уверенные движения, точная настройка в конце |
| Слишком большой | Перескакивает минимум, ошибка скачет | Дёргаете ручку туда-сюда, проскакивая станцию |
| Катастрофически большой | Числа уходят в бесконечность, обучение умирает | Сорвали ручку |
На практике шаг делают переменным: сначала побольше, чтобы быстро прийти в нужную область, потом всё меньше, для тонкой настройки. Это расписание скорости обучения, и оно вам встретится в главе 13, когда будете обучать LoRA.
Считать градиент по одному примеру — шумно: этот конкретный пример может быть нетипичным. По всему набору сразу — слишком дорого. Компромисс: батч, пачка из нескольких десятков примеров, по которой градиент усредняется.
| Термин | Что значит |
|---|---|
| Батч | Пачка примеров, обрабатываемая за один шаг |
| Шаг | Один батч: прогон вперёд, назад, обновление весов |
| Эпоха | Все обучающие данные прошли по одному разу |
| Оптимизатор | Правило обновления весов. Adam — самый ходовой |
Чем больше батч, тем стабильнее градиент и тем больше нужно памяти. На 16 ГБ батчи будут маленькими. Обходной приём — накопление градиента: обработать четыре маленьких батча, усреднить и только потом обновить веса. Эффект как от большого батча, памяти — как от маленького. Вам это пригодится в главах 13 и 17.
Это до сих пор не до конца объяснено теоретически, и честно это сказать стоит. Поверхность ошибки в пространстве миллиардов параметров чудовищно сложна, и нет гарантии, что простой спуск придёт куда-то хорошее.
Эмпирически оказалось: в очень многомерных пространствах плохих тупиков практически не встречается, а найденные решения обычно достаточно хороши. Почему — предмет исследований. Работает надёжно, объясняется не полностью.
| Что обучаем | Порядок затрат | Реально ли у вас |
|---|---|---|
| Модель 7B с нуля | Тысячи видеокарт, недели, миллионы долларов | Нет |
| Дообучение 7B целиком | Несколько мощных карт, дни | Нет |
| LoRA к 7B | Одна карта, часы | Да — глава 13 |
| LoRA для изображений | Одна карта, десятки минут | Да — глава 17 |
| Маленькая своя сеть | Минуты | Да, и это полезно для понимания |
Сеть научилась давать правильные ответы на обучающих примерах. Это ещё ничего не значит — и следующая глава объясняет почему.
Бесплатная книга · tariel.ge · версии инструментов и команды проверяйте в документации проектов
Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.