Изменения

Перейти к: навигация, поиск

Сети глубокого доверия

179 байт добавлено, 15:50, 28 октября 2020
м
Выделение формул и исправление опечаток
== Композиция простых обучающих модулей ==
[[Файл: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) жадным алгоритмом], чтобы сформировать так называемые Глубокие сети доверия, которые моделируют совместное распределение между наблюдаемым вектором <math>x </math> и скрытыми слоями <math>h ^ {k }</math> следующим образом:[[Файл:Rbmimage1.png <center><tex>P(x, h^1, \ldots, h^l)=\left( \prod\limits_{k = 0}^{l - 2}P(h^k|h^{k + 1}) \right) P(h^{l - 1}| 340px]]h^l)</tex></center>, Где [[Файл:Rbmimage2.png где $x=h^0$, $P(h^{k}| 120px]] h^{k + 1})$ {{---}} условное распределение для видимых узлов, обусловленных скрытыми узлами RBM на уровне <math>k</math>, и [[Файл:Rbmimage3.png $P(h^{l - 1}| 90px]] h^l)$ {{---}} это видимое-скрытое совместное распределение в RBM верхнего уровня. Это показано на рисунке 1.
== Ограниченная машина больцмана Больцмана (RBM) ==
[[Файл:Bolcman.jpg |400px| thumb | right |Рис 2. Визуализация RBM]]
Если вы знаете, что такое факторный анализ, то RBM можно рассматривать как двоичную версию факторного анализа. Таким образом, вместо множества факторов, определяющих вывод, мы можем иметь двоичную переменную в форме 0 или 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]] $s(x) = \frac{1}{1 + e^{-x}}$ и <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>. При желании, если вы укажете <texmath>k</texmath> (количество шагов Гиббса, которые нужно выполнить на CD или PCD), это также станет аргументом функции.
Точно так же класс <code>DBN</code> включает метод для построения функций, необходимых для тонкой настройки (<code>train_model</code>, <code>validate_model</code> и <code>test_model</code>).
7
правок

Навигация