Изменения

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

Рекуррентные нейронные сети

489 байт добавлено, 03:15, 9 апреля 2019
Пример кода
== Области и примеры применения ==
Используются, когда важно соблюдать последовательность, когда важен порядок поступающих объектов.
* Обработка текста на естественном языке:** Анализ текста;** Автоматический перевод;* Обработка аудио :** Автоматическое распознавание речи;* Обработка видео:** Прогнозирование следующего кадра на основе предыдущих;** Распознавание эмоций;* Обработка изображений:** Прогнозирование следующего пикселя на основе окружения;** Генерация описания изображений.
== Виды RNN ==
Нейронная сеть Элмана состоит из трёх слоев: x, y, z (см рис. Сеть Элмана). Дополнительно к сети добавлен набор «контекстных блоков»: u (см рис. Сеть Элмана). Средний (скрытый) слой соединён с контекстными блоками с фиксированным весом, равным единице. С каждым шагом времени на вход поступает информация, которая проходит прямой ход к выходному слою в соответствии с правилами обучения. Фиксированные обратные связи сохраняют предыдущие значения скрытого слоя в контекстных блоках (до того как скрытый слой поменяет значение в процессе обучения). Таким способом сеть сохраняет своё состояние, что может использоваться в предсказании последовательностей, выходя за пределы мощности многослойного перцептрона.
<math>h_t = \sigma_h(W_h x_t + U_h h_{t-1} + b_h)</math>,
<math>y_t = \sigma_y(W_y h_t + b_y)</math>,
Обозначения переменных и функций:
* <math>x_t</math>: вектор входного слоя;* <math>h_t</math>: вектор скрытого слоя;* <math>y_t</math>: вектор выходного слоя;* <math>W, U, b</math>: матрица и вектор параметров;* <math>\sigma_h, \sigma_y</math>: функция активации.
=== Сеть Джордана ===
Нейронная сеть Джордана подобна сети Элмана, но контекстные блоки связаны не со скрытым слоем, а с выходным слоем. Контекстные блоки таким образом сохраняют своё состояние. Они обладают рекуррентной связью с собой.
<math>h_t = \sigma_h(W_h x_t + U_h y_{t-1} + b_h)</math>,
<math>y_t = \sigma_y(W_y h_t + b_y)</math>,
=== Эхо-сети ===
== Пример кода ==
===Пример кода на Python с использованием библиотеки Keras.<ref name=KerasRNN>[https://keras.io/layers/recurrent/ Keras RNN]</ref>===
<font color="green"># Импорты</font>
scores = model.evaluate(X_test, y_test, batch_size = <font color="blue">64</font>)
print(<font color="red">'Точность на тестовых данных: %.2f%%'</font> % (scores[1] * <font color="blue">100</font>))
 
===Пример на языке Java===
[https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/recurrent/basic/BasicRNNExample.java Пример] простой рекуррентной нейронной сети, способной генерировать заданную строку по первому символу, с применением библиотеки <code>deeplearning4j</code>.
==См. также==
Анонимный участник

Навигация