14 Deep Belief Nets
Контекст
2006: глубокие сети формально обучаемы backprop, но на практике плохо — затухающий градиент, плохие минимумы, мало данных; их считают непрактичными. Хинтон с соавторами даёт обходной путь и возрождает интерес.
Идея и механизм
Глубокая генеративная сеть как стэк RBM (ограниченных машин Больцмана). Учим жадно, послойно и без учителя: первый RBM моделирует данные; его скрытые активации становятся «данными» для второго RBM; и так далее. Затем всю сеть аккуратно дообучаем (например supervised backprop). Послойное предобучение даёт хорошую инициализацию весов, из которой дообучение уже сходится.
теория вероятностей RBM и трюк contrastive divergence
RBM задаёт совместное распределение видимых v и скрытых h через энергию:
Хотим максимизировать правдоподобие данных. Градиент логарифма имеет красивый, но неподатливый вид — разность двух средних:
Второе среднее требует сэмплирования из всей модели (дорогой MCMC). Contrastive Divergence приближает его одним шагом Гиббса от данных («реконструкцией») — это и сделало обучение быстрым. Затем RBM-ы стэкаются жадно: каждый слой учит распределение активаций предыдущего.
NumPy Один шаг contrastive divergence (CD-1)
import numpy as np
sig = lambda z: 1 / (1 + np.exp(-z))
def cd1(v, W, eta=0.1): # обучение одного RBM
h = (sig(v @ W) > np.random.rand(W.shape[1])).astype(float) # данные
v2 = sig(h @ W.T) # реконструкция видимого слоя
h2 = sig(v2 @ W)
W += eta * (np.outer(v, h) - np.outer(v2, h2)) # data − reconstruction
return W
Почему это важно
Работа, которой приписывают старт современной «deep learning»-эпохи: показала, что глубокие сети можно обучить и они дают SOTA (на MNIST), вернув им респектабельность. Вокруг неё (грант CIFAR) держалась группа Хинтона–Бенжио–Лекуна сквозь «голодные годы». Нюанс: сам метод (RBM + послойное предобучение) вскоре вытеснен — ReLU, лучшая инициализация, BatchNorm и обилие данных позволили учить глубокие сети напрямую backprop.
Связи
RBM — родственник сети Хопфилда и машины Больцмана: те же энергетические модели из статфизики, но стохастические и обучаемые. Линия «энергия → вероятность → обучение» тянется прямо отсюда.
DBN зажгли веру, что глубокое обучаемо, и собрали сообщество. Через 6 лет AlexNet докажет это уже без RBM — напрямую backprop на GPU. Предобучение оказалось «костылём», который перестал быть нужен, но именно он провёл поле через тёмный период.
DBN решал «как вообще запустить обучение глубокой сети» предобучением. BatchNorm (и хорошая инициализация, ReLU) решили ту же проблему иначе — стабилизацией самого процесса обучения, сделав послойное предобучение ненужным.
Вопросы пытливого ума
Если предобучение так помогало, почему от него отказались?
Потому что устранили причину, по которой оно было нужно — плохую обучаемость глубоких сетей. ReLU (нет насыщения), грамотная инициализация (Xavier/He), BatchNorm и большие датасеты позволили градиенту течь сквозь глубину напрямую. Когда backprop заработал «в лоб», обходной манёвр стал лишним.
Чем RBM-предобучение отличается от автоэнкодерного?
Оба — unsupervised-инициализация через реконструкцию, и идея «слой учит представление входа» общая. RBM — вероятностная энергетическая модель, обучаемая contrastive divergence; автоэнкодер — детерминированная сеть, минимизирующая ошибку реконструкции напрямую backprop. Автоэнкодеры проще и быстро вытеснили RBM как способ предобучения, пока и они не стали не нужны.
Эта статья «придумала» термин deep learning?
Нет — термин старше. Она популяризовала современную рамку и стала символическим стартом эпохи, но «deep learning» употреблялось и раньше. Частая ошибка — приписывать ей чеканку термина; корректнее говорить «работа, вернувшая глубину в мейнстрим».
Что читать в оригинале
Достаточно конспекта — историческая роль важнее механики RBM, которая сегодня нишева. Если копать, смотрите идею жадного послойного обучения и contrastive divergence (мат-блок).