7
правок
Изменения
м
Исправить дефисы на тире
'''Сети глубокого доверия''' {{- --}} это вероятностные генеративные модели, которые состоят из нескольких слоев стохастических скрытых переменных. Скрытые переменные обычно имеют двоичные значения и часто называются скрытыми узлами или детекторами признаков. Два верхних слоя имеют ненаправленные, симметричные связи между ними и образуют ассоциативную память. Нижние слои действуют сверху вниз, направленные соединения от слоя выше. Состояния узлов в нижнем слое представляют вектор данных.
Два наиболее значимых свойства сетей глубокого доверия:
[[Файл:Rbmimage4.png |400px|thumb| right| Рис. 1 Распределение RBM]]
Глубокая сеть доверия может рассматриваться как набор простых обучающих модулей, каждый из которых представляет собой [https://ru.wikipedia.org/wiki/%D0%9E%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%91%D0%BE%D0%BB%D1%8C%D1%86%D0%BC%D0%B0%D0%BD%D0%B0 ограниченную машину Больцмана(RBM)], которая содержит слой видимых узлов, представляющий данные, и слой скрытых узлов, который обучаются представлению особенностей, которые захватывают более высокие порядки корреляции в данных. Ограниченные машины Больцмана могут быть сложены и обучены [https://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%A0%D0%B0%D0%B4%D0%BE-%D0%AD%D0%B4%D0%BC%D0%BE%D0%BD%D0%B4%D1%81%D0%B0_(%D0%B6%D0%B0%D0%B4%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC) жадным алгоритмом], чтобы сформировать так называемые Глубокие сети доверия, которые моделируют совместное распределение между наблюдаемым вектором x и скрытыми слоями h ^ k следующим образом
[[Файл:Rbmimage1.png| 340px]], Где [[Файл:Rbmimage2.png | 120px]] {{---}} условное распределение для видимых узлов, обусловленных скрытыми узлами RBM на уровне k, и [[Файл:Rbmimage3.png | 90px]] {{---}} это видимое-скрытое совместное распределение в RBM верхнего уровня. Это показано на рисунке 1.
# Один скрытый слой
# Один узел смещения
В приведенном выше примере видимые узлы {{- --}} это не что иное, как то, нравится ли вам книга или нет. Скрытые узлы помогают найти то, что заставило вас одобрить эту книгу. Узлы смещения добавлены, чтобы включить различные виды свойств, разных книг.
Простая визуализация Ограниченной машины Больцмана Рис 2.
# Фаза предварительного обучения
# Фаза тонкой настройки
Фаза предварительного обучения {{- --}} это не что иное, как несколько уровней RBN, в то время как фаза тонкой настройки {{--- }} это нейронная сеть с прямой связью. Визуализация обеих фаз на рис.3 ниже
[[Файл:Vis2f.png |600px|thumb| center| Рис. 3 Визуализация фаз RBM]]
self.y = T.ivector('y')
<code>self.sigmoid_layers</code> будет хранить графики прямой связи, которые вместе образуют MLP, в то время как <code>self.rbm_layers</code> будет хранить RBM, используемые для предварительной подготовки каждого уровня MLP.
Следующим шагом мы строим сигмоидные слои <code>n_layers</code> (мы используем класс <code>HiddenLayer</code>, введенный в Multilayer Perceptron, с единственной модификацией, в которой мы заменили нелинейность от <tex>tanh</tex> на логистическую функцию [[Файл:Vital1.png]] и <code>n_layers</code> RBM, где <code>n_layers</code> {{- --}} это глубина нашей модели. Мы связываем сигмовидные слои так, что они образуют MLP, и строим каждый RBM таким образом, чтобы они разделяли весовую матрицу и скрытое смещение с соответствующим сигмовидным слоем.
for i in range(self.n_layers):
if i == 0:
return pretrain_fns
Теперь любая функция <code>pretrain_fns[i]</code> принимает в качестве аргумента индекс и, опционально, <code>lr</code> {{- --}} скорость обучения. Обратите внимание, что имена параметров {{--- }} это имена, данные переменным <code>Theano</code> (например, <code>lr</code>) при их создании, а не имена переменных python (например, <code>learning_rate</code>). Имейте это в виду при работе с <code>Theano</code>. При желании, если вы укажете <tex>k</tex> (количество шагов Гиббса, которые нужно выполнить на CD или PCD), это также станет аргументом функции.
Точно так же класс <code>DBN</code> включает метод для построения функций, необходимых для тонкой настройки (<code>train_model</code>, <code>validate_model</code> и <code>test_model</code>).