Глубокое обучение сегодня стоит за большинством систем распознавания речи, компьютерного зрения и языковых моделей. Но за громкими названиями скрывается относительно небольшой набор математических идей, которые можно объяснить последовательно — именно это и делает первая часть образовательной серии на Habr.
Иерархия понятий выглядит так: искусственный интеллект — широкая область компьютерных наук, включающая доказательство теорем, анализ языка и игровые программы. Машинное обучение — одно из направлений внутри ИИ, посвящённое алгоритмам, которые извлекают закономерности из данных. Глубокое обучение — подраздел машинного обучения, работающий с крупными нейронными сетями. Сеть считается «глубокой», если в ней не менее двух скрытых слоёв; глубина формально равна числу скрытых слоёв плюс выходной.
| Категория МО | Наличие меток | Типичная задача | Пример |
|---|---|---|---|
| С учителем | Входы + целевые значения | Классификация, регрессия | Предсказание цены |
| Без учителя | Только входы | Кластеризация | Группировка пользователей |
| С подкреплением | Нет датасета | Управление в среде | Обучение игре в змейку |
Нейронная сеть состоит из нейронов, организованных в слои: входной, один или несколько скрытых и выходной. Каждый нейрон принимает набор значений, вычисляет их взвешенную сумму, затем пропускает результат через функцию активации — и выдаёт значение активации. Связи между нейронами направленные, каждая имеет числовой вес, показывающий силу влияния. Обучение сети — это поиск такого сочетания весов, при котором ошибка на обучающих данных минимальна.
Обучение модели сводится к поиску оптимального набора весов, минимизирующего ошибку предсказания.
Функция активации принципиально важна: без неё сеть из любого числа слоёв оставалась бы линейной моделью и не могла бы аппроксимировать сложные зависимости. Среди распространённых вариантов — выпрямляющая линейная функция (ReLU), гиперболический тангенс и пороговая функция. Нейрон с функцией ReLU принято называть выпрямляющим модулем.
Процесс обучения включает два этапа: собственно обучение (поиск подходящей функции) и формирование логического вывода (проверка на новых данных). На этапе обучения возникают две классические проблемы. Переобучение происходит, когда модель слишком точно подстраивается под тренировочные данные, захватывая шумы и случайные ошибки — это следствие малого индуктивного сдвига, то есть большой свободы в выборе функции. Недообучение, напротив, возникает при слишком жёстких ограничениях: алгоритм игнорирует важные закономерности.
Машинное обучение делится на три категории. Обучение с учителем — наиболее распространённое: набор данных содержит и входные признаки, и целевые значения, алгоритм сравнивает свои предсказания с эталоном и корректирует веса. Обучение без учителя применяется для кластеризации: целевых меток нет, модель сама группирует образцы по схожим признакам. Обучение с подкреплением используется там, где составить размеченный датасет невозможно или слишком затратно — модель учится непосредственно в среде, получая сигнал в виде очков или штрафов.
Центральный алгоритм оптимизации в глубоком обучении — градиентный спуск. Идея проста: ошибка модели (например, среднеквадратическая ошибка, SSE) зависит от весов. Если представить эту зависимость как поверхность в многомерном пространстве, задача сводится к спуску в её минимум. Градиент — вектор частных производных функции ошибки по всем весам в текущей точке — показывает направление наибольшего роста. Алгоритм движется в противоположную сторону, размер шага пропорционален величине градиента. Градиентный спуск обычно применяется совместно с обратным распространением ошибки — механизмом, который вычисляет градиенты для каждого слоя сети, двигаясь от выходного к входному.



