Блок вічкової ДКЧП з входовим, виходовим та забувальним вентилями. Виходові стрілки з вузла ct насправді позначають виходові стрілки з ct-1, крім єдиної стрілки зліва направо. Існує також і багато інших видів ДКЧП.[1]
До́вга короткоча́сна па́м'ять (ДКЧП, англ.long short-term memory, LSTM) — це архітектура рекурентних нейронних мереж (РНМ, штучна нейронна мережа), запропонована 1997 року Зеппом Хохрайтером[en] та Юргеном Шмідгубером.[2] Як і більшість РНМ, мережа ДКЧП є універсальною в тому сенсі, що за достатньої кількості вузлів мережі вона може обчислювати будь-що, що може обчислювати звичайний комп'ютер, за умови, що вона має належну матрицювагових коефіцієнтів[en], що може розглядатися як її програма. На відміну від традиційних РНМ, мережа ДКЧП добре підходить для навчання з досвіду з метою класифікації, обробки або передбаченнячасових рядів в умовах, коли між важливими подіями існують часові затримки невідомої тривалості. Відносна нечутливість до довжини прогалин дає ДКЧП перевагу в численних застосуваннях над альтернативними РНМ, прихованими марковськими моделями та іншими методами навчання послідовностей. Серед інших успіхів, ДКЧП досягла найкращих з відомих результатів у стисненні тексту природною мовою,[3]розпізнаванні несегментованого неперервного рукописного тексту,[4] і 2009 року виграла змагання з розпізнавання рукописного тексту ICDAR[en]. Мережі ДКЧП також застосовувалися до автоматичного розпізнавання мовлення, і були головною складовою мережі, яка 2003 року досягла рекордного 17.7-відсоткового рівня пофонемних помилок на класичному наборі даних природного мовлення TIMIT[en].[5] Станом на 2016 рік основні технологічні компанії, включно з Google, Apple, Microsoft та Baidu, використовували мережі ДКЧП як основні складові нових продуктів.[6][7]
Архітектура
Мережа ДКЧП є штучною нейронною мережею, яка містить вузли ДКЧП замість, або на додачу, до інших вузлів мережі. Вузол ДКЧП — це вузол рекурентної нейронної мережі, який виділяється запам'ятовуванням значень для довгих, або коротких проміжків часу. Ключем до цієї здатності є те, що він не використовує функції активації в межах своїх рекурентних складових. Таким чином, значення, що зберігається, не розплющується ітеративно з плином часу, і член градієнту або вини (англ.blame) не має схильності розмиватися, коли для його тренування застосовується зворотне поширення в часі.
Вузли ДКЧП часто втілюють у «блоках» (англ.blocks), які містять декілька вузлів ДКЧП. Така конструкція є типовою для «глибоких» багатошарових нейронних мереж, і сприяє реалізаціям на паралельному апаратному забезпеченні. В наведених нижче рівняннях кожна змінна курсивом у нижньому регістрі представляє вектор, що має розмір, який дорівнює числу вузлів ДКЧП у блоці.
Блоки ДКЧП містять три або чотири «вентилі» (англ.gates), які вони використовують для керування плином інформації до або з їхньої пам'яті. Ці вентилі реалізують із застосуванням логістичної функції для обчислення значень між 0 та 1. Для часткового дозволяння або заборони плину інформації до або з цієї пам'яті застосовується множення на це значення. Наприклад, «входовий вентиль» (англ.input gate) керує мірою, до якої нове значення входить до пам'яті. «Забувальний вентиль» (англ.forget gate) керує мірою, до якої значення залишається в пам'яті. А «виходовий вентиль» (англ.output gate) керує мірою, до якої значення в пам'яті використовується для обчислення активування виходу блоку. (В деяких втіленнях входовий та забувальний вентилі об'єднують в один. Ідея їхнього об'єднання полягає в тому, що час забувати настає тоді, коли з'являється нове значення, варте запам'ятовування.)
Єдині ваги, що є в блоці ДКЧП ( та ), використовуються для спрямовування дії вентилів. Ці ваги застосовуються між значеннями, які надходять до блоку (включно з входовим вектором та виходом з попереднього моменту часу ) та кожним із вентилів. Отже, блок ДКЧП визначає, яким чином підтримувати свою пам'ять як функцію від цих значень, і тренування ваг блока ДКЧП спричиняє його навчання такої функції, яка мінімізує втрати. Блоки ДКЧП зазвичай тренують за допомогою зворотного поширення в часі.
Традиційна ДКЧП
Традиційна ДКЧП із забувальними вузлами.[2][8] і . позначає добуток Адамара (поелементний добуток).
Змінні
: входовий вектор
: виходовий вектор
: вектор стану комірки
, і : матриці та вектор параметрів (W від англ.weight, вага, U від англ.update?, уточнення, b від англ.bias?, упередження)
, і : вектори вентилів
: Вектор забувального вентиля. Вага пам'ятання старої інформації.
: Вектор входового вентиля. Вага отримання нової інформації.
: Вектор виходового вентиля. Кандидатність на вихід.
Для мінімізації загальної похибки ДКЧП на тренувальних послідовностях може застосовуватися ітеративний градієнтний спуск, такий як зворотне поширення в часі, для зміни кожного вагового коефіцієнту пропорційно до його похідної по відношенню до похибки. Основною проблемою з градієнтним спуском для стандартних РНМ є те, що градієнти похибок зникають експоненційно швидко з розміром часової затримки між важливими подіями, як це було вперше з'ясовано 1991 року.[12][13] Проте у блоках ДКЧП, коли значення похибки зворотно поширюються з виходу, похибка виявляється в пастці в частині пам'яті блоку. Це називають «каруселлю похибки» (англ."error carousel"), яка постійно подає похибку назад до кожного з вентилів, поки вони не стають натренованими відсікати це значення. Таким чином, регулярне зворотне поширення є дієвим при тренуванні блоку ДКЧП запам'ятовувати значення для дуже довгих тривалостей.
↑Klaus Greff; Rupesh Kumar Srivastava; Jan Koutník; Bas R. Steunebrink; Jürgen Schmidhuber (2015). LSTM: A Search Space Odyssey. arXiv:1503.04069. (англ.)
↑A. Graves, M. Liwicki, S. Fernandez, R. Bertolami, H. Bunke, J. Schmidhuber. A Novel Connectionist System for Improved Unconstrained Handwriting Recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 31, no. 5, 2009. (англ.)
↑ абGraves, Alex; Mohamed, Abdel-rahman; Hinton, Geoffrey (2013). Speech Recognition with Deep Recurrent Neural Networks. Acoustics, Speech and Signal Processing (ICASSP), 2013 IEEE International Conference on: 6645—6649. (англ.)
↑S. Hochreiter. Untersuchungen zu dynamischen neuronalen Netzen. Diploma thesis, Institut f. Informatik, Technische Univ. Munich, 1991. (нім.)
↑S. Hochreiter, Y. Bengio, P. Frasconi, and J. Schmidhuber. Gradient flow in recurrent nets: the difficulty of learning long-term dependencies. In S. C. Kremer and J. F. Kolen, editors, A Field Guide to Dynamical Recurrent Neural Networks. IEEE Press, 2001. (англ.)
↑Schmidhuber, J.; Wierstra, D.; Gagliolo, M.; Gomez, F. (2007). Training Recurrent Networks by Evolino. Neural Computation. 19 (3): 757—779. doi:10.1162/neco.2007.19.3.757. (англ.)
↑H. Mayer, F. Gomez, D. Wierstra, I. Nagy, A. Knoll, and J. Schmidhuber. A System for Robotic Heart Surgery that Learns to Tie Knots Using Recurrent Neural Networks. Advanced Robotics, 22/13–14, pp. 1521–1537, 2008. (англ.)
↑J. Schmidhuber and D. Wierstra and F. J. Gomez. Evolino: Hybrid Neuroevolution / Optimal Linear Search for Sequence Learning. Proceedings of the 19th International Joint Conference on Artificial Intelligence (IJCAI), Edinburgh, pp. 853–858, 2005. (англ.)
↑Graves, A.; Schmidhuber, J. (2005). Framewise phoneme classification with bidirectional LSTM and other neural network architectures. Neural Networks. 18 (5–6): 602—610. doi:10.1016/j.neunet.2005.06.042. (англ.)
↑S. Fernandez, A. Graves, J. Schmidhuber. An application of recurrent neural networks to discriminative keyword spotting. Intl. Conf. on Artificial Neural Networks ICANN'07, 2007. (англ.)
↑D. Eck and J. Schmidhuber. Learning The Long-Term Structure of the Blues. In J. Dorronsoro, ed., Proceedings of Int. Conf. on Artificial Neural Networks ICANN'02, Madrid, pages 284–289, Springer, Berlin, 2002. (англ.)
↑Schmidhuber, J.; Gers, F.; Eck, D.; Schmidhuber, J.; Gers, F. (2002). Learning nonregular languages: A comparison of simple recurrent networks and LSTM. Neural Computation. 14 (9): 2039—2041. doi:10.1162/089976602320263980. (англ.)
↑A. Graves, J. Schmidhuber. Offline Handwriting Recognition with Multidimensional Recurrent Neural Networks. Advances in Neural Information Processing Systems 22, NIPS'22, pp 545–552, Vancouver, MIT Press, 2009. (англ.)
↑A. Graves, S. Fernandez,M. Liwicki, H. Bunke, J. Schmidhuber. Unconstrained online handwriting recognition with recurrent neural networks. Advances in Neural Information Processing Systems 21, NIPS'21, pp 577–584, 2008, MIT Press, Cambridge, MA, 2008. (англ.)
↑M. Baccouche, F. Mamalet, C Wolf, C. Garcia, A. Baskurt. Sequential Deep Learning for Human Action Recognition. 2nd International Workshop on Human Behavior Understanding (HBU), A.A. Salah, B. Lepri ed. Amsterdam, Netherlands. pp. 29–39. Lecture Notes in Computer Science 7065. Springer. 2011 (англ.)
↑Hochreiter, S.; Heusel, M.; Obermayer, K. (2007). Fast model-based protein homology detection without alignment. Bioinformatics. 23 (14): 1728—1736. doi:10.1093/bioinformatics/btm247. PMID17488755. (англ.)
Праця про виявлення шахрайства з двома главами, присвяченими поясненню рекурентних нейронних мереж, особливо ДКЧП. (англ.)
Праця [Архівовано 23 квітня 2013 у Wayback Machine.] про високопродуктивне розширення ДКЧП, яке було спрощено до єдиного типу вузла, і яке може тренувати довільні архітектури. (англ.)