Рекуррентная нейронная сеть
Рекуррентные нейронные сети (РНС, англ. Recurrent neural network, RNN) — вид нейронных сетей, где связи между элементами образуют направленную последовательность. Благодаря этому появляется возможность обрабатывать серии событий во времени или последовательные пространственные цепочки. В отличие от многослойных перцептронов, рекуррентные сети могут использовать свою внутреннюю память для обработки последовательностей произвольной длины. Поэтому сети RNN применимы в таких задачах, где нечто целостное разбито на части, например: распознавание рукописного текста[1] или распознавание речи[2][3]. Было предложено много различных архитектурных решений для рекуррентных сетей от простых до сложных. В последнее время наибольшее распространение получили сеть с долговременной и кратковременной памятью (LSTM) и управляемый рекуррентный блок (GRU).
История
[править | править код]Джон Хопфилд в 1982 предложил Сеть Хопфилда. В 1993 нейронная система запоминания и сжатия исторических данных смогла решить задачу «очень глубокого обучения», в которой в рекуррентной сети разворачивалось более 1000 последовательных слоёв.[4]
Долгая краткосрочная память (LSTM)
[править | править код]Сеть с долговременной и кратковременной памятью (англ. Long short-term memory, LSTM).[5] нашла применение в различных приложениях.
Начиная с 2007 года LSTM приобрела популярность и смогла вывести на новый уровень распознавание речи, показав существенное улучшение по сравнению с традиционными моделями.[6] В 2009 году появился подход классификации по рейтингу (англ. Connectionist temporal classification, CTC). Этот метод позволил рекуррентным сетям подключить анализ контекста при распознавании рукописного текста.[7] В 2014 году китайская энциклопедия и поисковая система Baidu, используя рекуррентные сети с обучением по CTC, смогли поднять на новый уровень показатели Switchboard Hub5’00, опередив традиционные методы.[8]
LSTM привела также к улучшению распознавания речи с большими словарями[2][3] и улучшения синтеза речи по тексту[9] и нашла также применение в операционной системе Google Android.[10] В 2015 году распознавание речи у Google значительно повысило показатели вплоть до 49 %, причиной того стало использование специальной системы обучения LSTM на базе CTC в системе Google Voice Search[англ.].[11]
LSTM вывело на новый уровень качество машинного перевода,[12], построения языковых моделей и[13] обработки многоязычного текста.[14] Сочетание LSTM со свёрточными нейронными сетями (CNN) позволило усовершенствовать автоматическое описание изображений.[15]
Архитектура
[править | править код]Существует много разновидностей, решений и конструктивных элементов рекуррентных нейронных сетей.
Трудность рекуррентной сети заключается в том, что если учитывать каждый шаг времени, то становится необходимым для каждого шага времени создавать свой слой нейронов, что вызывает серьёзные вычислительные сложности. Кроме того, многослойные реализации оказываются вычислительно неустойчивыми, так как в них, как правило, исчезают или зашкаливают веса. Если ограничить расчёт фиксированным временным окном, то полученные модели не будут отражать долгосрочных трендов. Различные подходы пытаются усовершенствовать модель исторической памяти и механизм запоминания и забывания.
Полностью рекуррентная сеть
[править | править код]Эта базовая архитектура разработана в 1980-х. Сеть строится из узлов, каждый из которых соединён со всеми другими узлами. У каждого нейрона порог активации меняется со временем и является вещественным числом. Каждое соединение имеет переменный вещественный вес. Узлы разделяются на входные, выходные и скрытые.
Для обучения с учителем с дискретным временем, каждый (дискретный) шаг времени на входные узлы подаются данные, прочие узлы завершают свою активацию, а выходные сигналы готовятся для передачи нейроном следующего уровня. Если, например, сеть отвечает за распознавание речи, в результате на выходные узлы поступают уже метки (распознанные слова).
В обучении с подкреплением (reinforcement learning) нет учителя, обеспечивающего целевые сигналы для сети, вместо этого иногда используется функция приспособленности (годности) или функция оценки (reward function), по которой проводится оценка качества работы сети, при этом значения на выходе оказывает влияние на поведение сети на входе. В частности, если сеть реализует игру, на выходе измеряется количество пунктов выигрыша или оценки позиции.
Каждая цепочка вычисляет ошибку как суммарную девиацию по выходным сигналам сети. Если имеется набор образцов обучения, ошибка вычисляется с учётом ошибок каждого отдельного образца.
Рекурсивная сеть
[править | править код]Рекурсивные нейронные сети представляют собой более общий случай рекуррентных сетей, когда сигнал в сети проходит через структуру в виде дерева (обычно бинарные деревья).[16]Те же самые матрицы весов используются рекурсивно по всему графу в соответствии с его топологией.[17][18] Рекурсивные нейронные сети находят применение в задачах обработки естественного языка.[19] Существуют также тензорные рекурсивные нейронные сети (RNTN, Recursive Neural Tensor Network), которые используют тензорные функции для всех узлов в дереве.[20]
Нейронная сеть Хопфилда
[править | править код]Сеть Хопфилда — это такой тип рекуррентной сети, когда все соединения симметричны. Изобретена Джоном Хопфилдом в 1982 году и гарантируется, что динамика такой сети сходится к одному из положений равновесия. Если при создании соединений используют обучение Хебба[англ.], то сеть Хопфилда может работать как надёжная ассоциативная память, устойчивая к изменению подключений.
Двунаправленная ассоциативная память (BAM)
[править | править код]Вариацией сети Хопфилда является двунаправленная ассоциативная память (BAM). BAM имеет два слоя, каждый из которых может выступать в качестве входного, находить (вспоминать) ассоциацию и генерировать результат для другого слоя.[21][22][23]
Сети Элмана и Джордана
[править | править код]Нейронная сеть Элмана является трёхслойной нейронной сетью. На иллюстрации слои сети обозначены x, y, и z. Сеть также содержит набор «контекстных блоков» (u на иллюстрации), в которых сохраняются предыдущие значения узлов скрытого слоя. Для этого скрытый слой соединён с контекстными блоками прямыми связями с фиксированным весом, равным единице.[24] С каждым шагом на вход поступает информация, которая проходит прямой ход к выходному слою в соответствии с правилами обучения. Фиксированные обратные связи из контекстных блоках передают значения предыдущих состояний узлов скрытого слоя (до того, как скрытый слой поменяет значение в процессе обучения). Таким способом сеть сохраняет своё предыдущее состояние, обеспечивая тем самым предсказание последовательностей, что выходит за пределы возможностей многослойного перцептрона.
Нейронная сеть Джордана подобна сети Элмана. Однако контекстные блоки связаны не со скрытым слоем, а с выходным слоем. Контекстные блоки таким образом сохраняют предыдущее состояние сети и обеспечивают рекуррентную связь в сети.[24]
Сети Элмана и Джордана называют также «простыми рекуррентными сетями» (SRN).
Обозначения переменных и функций:
- : вектор входного слоя
- : вектор скрытого слоя
- : вектор выходного слоя
- , и : Матрицы весов соединений и вектор параметров
- и : Функция активации
Эхо-сети
[править | править код]Эхо-сеть (англ. echo state network; ESN) характеризуется одним скрытым слоем (который называется резервуаром) со случайными редкими связями между нейронами. При этом связи внутри резервуара фиксированы, но связи с выходным слоем подлежат обучению. Состояние резервуара (state) вычисляется через предыдущие состояния резервуара, а также предыдущие состояния входного и выходного сигналов. Так как эхо-сети обладают только одним скрытым слоем, они обладают достаточно низкой вычислительной сложностью, однако качество моделирования сильно зависит от начальных установок, которые, грубо говоря, случайны. Эхо-сети хорошо работают, воспроизводя временные ряды.[27] Вариацией эхо-сетей являются импульсные (спайковые) нейронные сети, известные также как жидкие нейронные сети ("жидкие" сети названы с использование метафоры расходящихся кругов по воде от падения камешка, что характеризует кратковременную память от входного события).[28]
Нейронный компрессор истории
[править | править код]Нейронный компрессор исторических данных - это блок, позволяющий в сжатом виде хранить существенные исторические особенности процесса, который является своего рода стеком рекуррентной нейронной сети, формируемым в процессе самообучения.[29] На уровне входного сигнала, нейронный компрессор истории пытается предсказать следующий вход по историческим данным. На следующий уровень рекуррентной сети поступают только те входные сигналы, которые не смогли быть предсказаны, и которые при этом способствуют изменению состояния компрессора. Каждый следующий слой сети точно также изучает сжатую историческую информацию с предыдущих слоёв. Таким образом, входная последовательность может быть точно восстановлена по представлению последующих слоёв.
Система пытается свести к минимуму размер описания или же использует негативные логарифмы для оценки вероятностей данных.[30] Используя обучаемую предсказуемость во входящей последовательности данных, сеть RNN следующего уровня, применяя уже обучение с учителем, может уже классифицировать даже глубокие последовательности с большими временными интервалами между ключевыми событиями.
Таким образом, сеть RNN можно разделить на два уровня слоёв: «сознательный» (более высокий уровень) и «подсознательный» автоматизатор (нижний уровень). После того, как верхний уровень научился прогнозировать и сжимать входы (которые непредсказуемы) с помощью автоматизатора, тогда автоматизатор может быть вынужден на следующей стадии обучения предсказывать сам или подражать через дополнительные или скрытые блоки более медленно меняющегося высшего уровня. Это упрощает работу автоматизатора, позволяя учесть долгосрочные, но редко меняющиеся воспоминания. В свою очередь, это помогает автоматизатору сделать многие из его некогда непредсказуемых входов предсказуемыми, так что высший уровень может сосредоточиться на оставшихся непредсказуемых событиях.[29]
Долгая краткосрочная память (LSTM)
[править | править код]Сеть с долговременной и кратковременной памятью (англ. Long short term memory, LSTM) представляет собой систему глубинного обучения, при реализации которой удалось обойти проблему исчезновения или зашкаливания градиентов в процессе обучения методом обратного распространения ошибки. Сеть LSTM обычно модерируется с помощью рекуррентных вентилей, которые называются вентили (gates) «забывания».[31] Ошибки распространяются назад по времени через потенциально неограниченное количество виртуальных слоёв. Таким образом происходит обучение в LSTM [32], при этом сохраняя память о тысячах и даже миллионах временных интервалов в прошлом. Топологии сетей типа LSTM могут развиваться в соответствии со спецификой процесса.[33] В сети LSTM даже большие задержки между значимыми событиями могут учитываться, и тем самым высокочастотные и низкочастотные компоненты могут смешиваться.
Многие рекуррентные сети используют стеки данных, присущие LSTM [34] Сети могут обучаться с помощью "Классификации по времени и соединениям (CTC)" (англ. Connectionist Temporal Classification) [35] чтобы найти такую матрицу весов, в которой вероятность последовательности меток в наборе образцов при соответствующем входном потоке сводится к максимуму. CTC позволяет добиться как упорядочивания так и распознавания.
LSTM может также обучаться для распознавания контекстно-чувствительных языков, в отличие от предыдущих моделей, базировавшихся на скрытой марковской модели (HMM) и подобных идеях.[36]
Рекуррентные сети второго порядка
[править | править код]Рекуррентные сети второго порядка используют веса высших порядков вместо обычных весов , при этом входные параметры и параметры состояния могут получать в виде произведения. В этом случае сеть трансформируется (mapping) в конечный автомат как в процессе обучения, так и при стабилизации и представлении.[37][38] Долгая краткосрочная память в данном случае не имеет такой трансформации и проверки стабильности.
Управляемый рекуррентный блок
[править | править код]Управляемый рекуррентный блок (англ. Gated recurrent unit; GRU) - механизм управления рекуррентной сети, предложенный в 2014 году. Производительность GRU в моделях речевого сигнала или полифонической музыки оказалась сопоставимой с долгой краткосрочной памятью (LSTM).[39] У данной модели меньше параметров, чем у LSTM, и в ней отсутствует выходное управление.[40]
См. также
[править | править код]- Долгая краткосрочная память
- Управляемый рекуррентный блок
- Нейронная сеть Хопфилда
- Нейронная сеть Коско
- Нейронная сеть Джордана
- Нейронная сеть Элмана
- Йорген Шмидхубер
Примечания
[править | править код]- ↑ Graves, A.; Liwicki, M.; Fernandez, S.; Bertolami, R.; Bunke, H.; Schmidhuber, J.[англ.]. A Novel Connectionist System for Improved Unconstrained Handwriting Recognition (англ.) // IEEE Transactions on Pattern Analysis and Machine Intelligence[англ.] : journal. — 2009. — Vol. 31, no. 5. Архивировано 2 января 2014 года.
- ↑ 1 2 Sak, Hasim; Senior, Andrew; Beaufays, Francoise Long Short-Term Memory recurrent neural network architectures for large scale acoustic modeling (недоступная ссылка — история) (2014). Дата обращения: 9 декабря 2017.
- ↑ 1 2 Li, Xiangang; Wu, Xihong (2014-10-15). "Constructing Long Short-Term Memory based Deep Recurrent Neural Networks for Large Vocabulary Speech Recognition". arXiv:1410.4281 [cs.CL].
- ↑ Schmidhuber, Jürgen. Habilitation thesis: System modeling and optimization (англ.). — 1993. Page 150 ff demonstrates credit assignment across the equivalent of 1,200 layers in an unfolded RNN.
- ↑ Hochreiter, Sepp[англ.]; Schmidhuber, Jürgen[англ.]. Long Short-Term Memory (англ.) // Neural Computation[англ.]. — 1997. — 1 November (vol. 9, no. 8). — P. 1735—1780. — doi:10.1162/neco.1997.9.8.1735.
- ↑ Fernández, Santiago; Graves, Alex; Schmidhuber, Jürgen. An Application of Recurrent Neural Networks to Discriminative Keyword Spotting (англ.) // Proceedings of the 17th International Conference on Artificial Neural Networks : journal. — Berlin, Heidelberg: Springer-Verlag, 2007. — Vol. ICANN'07. — P. 220—229. — ISBN 978-3-540-74693-5. Архивировано 6 октября 2018 года.
- ↑ Graves, Alex; Schmidhuber, Jürgen. Offline Handwriting Recognition with Multidimensional Recurrent Neural Networks (англ.) // Neural Information Processing Systems (NIPS) Foundation : journal / Bengio, Yoshua; Schuurmans, Dale; Lafferty, John; Williams, Chris editor-K. I.; Culotta, Aron. — 2009. — P. 545—552. Архивировано 7 сентября 2020 года.
- ↑ Hannun, Awni; Case, Carl; Casper, Jared; Catanzaro, Bryan; Diamos, Greg; Elsen, Erich; Prenger, Ryan; Satheesh, Sanjeev; Sengupta, Shubho (2014-12-17). "Deep Speech: Scaling up end-to-end speech recognition". arXiv:1412.5567 [cs.CL].
- ↑ Bo Fan, Lijuan Wang, Frank K. Soong, and Lei Xie (2015). Photo-Real Talking Head with Deep Bidirectional LSTM. In Proceedings of ICASSP 2015.
- ↑ Zen, Heiga; Sak, Hasim Unidirectional Long Short-Term Memory Recurrent Neural Network with Recurrent Output Layer for Low-Latency Speech Synthesis . Google.com 4470–4474. ICASSP (2015). Архивировано 9 мая 2021 года.
- ↑ Sak, Haşim; Senior, Andrew; Rao, Kanishka; Beaufays, Françoise; Schalkwyk, Johan Google voice search: faster and more accurate (сентябрь 2015). Дата обращения: 9 декабря 2017. Архивировано 9 марта 2016 года.
- ↑ Sutskever, L.; Vinyals, O.; Le, Q. Sequence to Sequence Learning with Neural Networks (неопр.) // Electronic Proceedings of the Neural Information Processing Systems Conference. — 2014. — Т. 27. — С. 5346. — . — arXiv:1409.3215. Архивировано 9 мая 2021 года.
- ↑ Jozefowicz, Rafal; Vinyals, Oriol; Schuster, Mike; Shazeer, Noam; Wu, Yonghui (2016-02-07). "Exploring the Limits of Language Modeling". arXiv:1602.02410 [cs.CL].
- ↑ Gillick, Dan; Brunk, Cliff; Vinyals, Oriol; Subramanya, Amarnag (2015-11-30). "Multilingual Language Processing From Bytes". arXiv:1512.00103 [cs.CL].
- ↑ Vinyals, Oriol; Toshev, Alexander; Bengio, Samy; Erhan, Dumitru (2014-11-17). "Show and Tell: A Neural Image Caption Generator". arXiv:1411.4555 [cs.CV].
- ↑ Goller, C.; Küchler, A. Learning task-dependent distributed representations by backpropagation through structure (англ.) // IEEE International Conference on Neural Networks, 1996 : journal. — 1996. — Vol. 1. — P. 347. — ISBN 0-7803-3210-5. — doi:10.1109/ICNN.1996.548916. Архивировано 17 апреля 2017 года.
- ↑ Seppo Linnainmaa (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors. Master’s Thesis (in Finnish), Univ. Helsinki, 6-7.
- ↑ Griewank, Andreas; Walther, Andrea. Evaluating Derivatives: Principles and Techniques of Algorithmic Differentiation (англ.). — Second. — SIAM, 2008. — ISBN 978-0-89871-776-1. Архивировано 10 февраля 2023 года.
- ↑ Socher, Richard; Lin, Cliff; Ng, Andrew Y.; Manning, Christopher D., "Parsing Natural Scenes and Natural Language with Recursive Neural Networks" (PDF), 28th International Conference on Machine Learning (ICML 2011), Архивировано из оригинала (PDF) 31 октября 2017, Дата обращения: 10 декабря 2017
- ↑ Socher, Richard; Perelygin, Alex; Y. Wu, Jean; Chuang, Jason; D. Manning, Christopher; Y. Ng, Andrew; Potts, Christopher. Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank (англ.) // Emnlp 2013 : journal. Архивировано 28 декабря 2016 года.
- ↑ Kosko, B. (1988). "Bidirectional associative memories". IEEE Transactions on Systems, Man, and Cybernetics. 18 (1): 49—60. doi:10.1109/21.87054.
- ↑ Rakkiyappan, R.; Chandrasekar, A.; Lakshmanan, S.; Park, Ju H. Exponential stability for markovian jumping stochastic BAM neural networks with mode-dependent probabilistic time-varying delays and impulse control (англ.) // Complexity : journal. — 2015. — 2 January (vol. 20, no. 3). — P. 39—65. — doi:10.1002/cplx.21503.
- ↑ Rául Rojas. Neural networks: a systematic introduction (англ.). — Springer, 1996. — P. 336. — ISBN 978-3-540-60505-8. Архивировано 2 июля 2020 года.
- ↑ 1 2 Cruse, Holk; Neural Networks as Cybernetic Systems Архивная копия от 20 октября 2016 на Wayback Machine, 2nd and revised edition
- ↑ Elman, Jeffrey L. Finding Structure in Time (неопр.) // Cognitive Science. — 1990. — Т. 14, № 2. — С. 179—211. — doi:10.1016/0364-0213(90)90002-E.
- ↑ Jordan, Michael I. Serial Order: A Parallel Distributed Processing Approach (англ.) // Advances in Psychology : journal. — 1997. — 1 January (vol. 121). — P. 471—495. — ISBN 9780444819314. — doi:10.1016/s0166-4115(97)80111-2.
- ↑ Jaeger, Herbert; Haas, Harald. Harnessing Nonlinearity: Predicting Chaotic Systems and Saving Energy in Wireless Communication (англ.) // Science : journal. — 2004. — 2 April (vol. 304, no. 5667). — P. 78—80. — doi:10.1126/science.1091277. — . — PMID 15064413.
- ↑ W. Maass, T. Natschläger, and H. Markram. A fresh look at real-time computation in generic recurrent neural circuits. Technical report, Institute for Theoretical Computer Science, TU Graz, 2002.
- ↑ 1 2 Schmidhuber, Jürgen. Learning complex, extended sequences using the principle of history compression (англ.) // Neural Computation[англ.] : journal. — Vol. 4, no. 2. — P. 234—242.
- ↑ Schmidhuber, Jürgen. Deep Learning (неопр.) // Scholarpedia. — 2015. — Т. 10, № 11. — С. 32832. Архивировано 19 апреля 2016 года.
- ↑ Gers, Felix; Schraudolph, Nicol N.; Schmidhuber, Jürgen Learning Precise Timing with LSTM Recurrent Networks (PDF Download Available) . ResearchGate. Дата обращения: 13 июня 2017. Архивировано 4 апреля 2019 года.
- ↑ Schmidhuber, Jürgen[англ.]. Deep Learning in Neural Networks: An Overview (неопр.) // Neural Networks. — 2015. — January (т. 61). — С. 85—117. — doi:10.1016/j.neunet.2014.09.003. — arXiv:1404.7828. — PMID 25462637.
- ↑ Bayer, Justin; Wierstra, Daan; Togelius, Julian; Schmidhuber, Jürgen. Evolving Memory Cell Structures for Sequence Learning (англ.) // Artificial Neural Networks – ICANN 2009 : journal. — Springer, Berlin, Heidelberg, 2009. — 14 September (vol. Lecture Notes in Computer Science). — P. 755—764. — ISBN 978-3-642-04276-8. — doi:10.1007/978-3-642-04277-5_76.
- ↑ Fernández, Santiago; Graves, Alex; Schmidhuber, Jürgen. Sequence labelling in structured domains with hierarchical recurrent neural networks (англ.) // Proc. 20th Int. Joint Conf. on Artificial In℡ligence, Ijcai 2007 : journal. — 2007. — P. 774—779.
- ↑ Graves, Alex; Fernández, Santiago; Gomez, Faustino. Connectionist temporal classification: Labelling unsegmented sequence data with recurrent neural networks (англ.) // In Proceedings of the International Conference on Machine Learning, ICML 2006 : journal. — 2006. — P. 369—376.
- ↑ Gers, F. A.; Schmidhuber, E. LSTM recurrent networks learn simple context-free and context-sensitive languages (англ.) // IEEE Transactions on Neural Networks[англ.] : journal. — 2001. — November (vol. 12, no. 6). — P. 1333—1340. — ISSN 1045-9227. — doi:10.1109/72.963769. Архивировано 1 декабря 2017 года.
- ↑ C.L. Giles, C.B. Miller, D. Chen, H.H. Chen, G.Z. Sun, Y.C. Lee, «Learning and Extracting Finite State Automata with Second-Order Recurrent Neural Networks» Архивная копия от 15 апреля 2021 на Wayback Machine, Neural Computation, 4(3), p. 393, 1992.
- ↑ C.W. Omlin, C.L. Giles, «Constructing Deterministic Finite-State Automata in Recurrent Neural Networks» Архивная копия от 18 апреля 2017 на Wayback Machine Journal of the ACM, 45(6), 937—972, 1996.
- ↑ Chung, Junyoung; Gulcehre, Caglar; Cho, KyungHyun; Bengio, Yoshua (2014). "Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling". arXiv:1412.3555 [cs.NE].
- ↑ Recurrent Neural Network Tutorial, Part 4 – Implementing a GRU/LSTM RNN with Python and Theano – WildML . Дата обращения: 18 мая 2016. Архивировано 10 ноября 2021 года.
Литература
[править | править код]- Recurrent Neural Networks Tutorial
- J. J. Hopfield. [PNAS Reprint (Abstract) PNAS Reprint (PDF) Neural networks and physical systems with emergent collective computational abilities] // Proceedings of National Academy of Sciences. — April 1982. — С. vol. 79 no. 8 pp. 2554—2558.
- Jordan, M. I. Serial order: A parallel distributed processing approach // Institute for Cognitive Science Report 8604. — University of California, San Diego, 1986.
- Elman, J.L. Finding structure in time // Cognitive Science. — 1990. — С. 179—211. (недоступная ссылка)