Довга короткочасна пам'ять
До́вга короткоча́сна па́м'ять (ДКЧП, англ. 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?, упередження)
- , і : вектори вентилів
- : Вектор забувального вентиля. Вага пам'ятання старої інформації.
- : Вектор входового вентиля. Вага отримання нової інформації.
- : Вектор виходового вентиля. Кандидатність на вихід.
- : В оригіналі є сигмоїдною функцією.
- : В оригіналі є гіперболічним тангенсом.
- : В оригіналі є гіперболічним тангенсом, але праця з вічкових ДКЧП радить .[9][10]
Вічкова ДКЧП
ред.Вічкова ДКЧП із забувальними вентилями.[9][10] не застосовується, натомість у більшості місць застосовується .
Згорткова ДКЧП
ред.Згорткова ДКЧП.[11] позначає оператор згортки.
Тренування
ред.Для мінімізації загальної похибки ДКЧП на тренувальних послідовностях може застосовуватися ітеративний градієнтний спуск, такий як зворотне поширення в часі, для зміни кожного вагового коефіцієнту пропорційно до його похідної по відношенню до похибки. Основною проблемою з градієнтним спуском для стандартних РНМ є те, що градієнти похибок зникають експоненційно швидко з розміром часової затримки між важливими подіями, як це було вперше з'ясовано 1991 року.[12][13] Проте у блоках ДКЧП, коли значення похибки зворотно поширюються з виходу, похибка виявляється в пастці в частині пам'яті блоку. Це називають «каруселлю похибки» (англ. "error carousel"), яка постійно подає похибку назад до кожного з вентилів, поки вони не стають натренованими відсікати це значення. Таким чином, регулярне зворотне поширення є дієвим при тренуванні блоку ДКЧП запам'ятовувати значення для дуже довгих тривалостей.
ДКЧП може також тренуватися поєднанням штучної еволюції для вагових коефіцієнтів прихованих вузлів, і псевдообернення або методу опорних векторів для вагових коефіцієнтів виходових вузлів.[14] У застосуваннях навчання з підкріпленням ДКЧП може тренуватися методами градієнту стратегії, еволюційними стратегіями або генетичними алгоритмами.
Застосування
ред.Застосування ДКЧП включають:
- Керування роботами[en][15]
- Прогнозування часових рядів[16]
- Розпізнавання мовлення[5][17][18]
- Навчання ритму[10]
- Написання музики[19]
- Навчання граматики[9][20][21]
- Розпізнавання рукописного тексту[22][23]
- Розпізнавання людських дій[24]
- Виявлення гомології білків[25]
Див. також
ред.Примітки
ред.- ↑ Klaus Greff; Rupesh Kumar Srivastava; Jan Koutník; Bas R. Steunebrink; Jürgen Schmidhuber (2015). LSTM: A Search Space Odyssey. arXiv:1503.04069. (англ.)
- ↑ а б Sepp Hochreiter[en]; Jürgen Schmidhuber (1997). Long short-term memory. Neural Computation[en]. 9 (8): 1735—1780. doi:10.1162/neco.1997.9.8.1735. PMID 9377276. Архів оригіналу за 8 серпня 2019. Процитовано 15 квітня 2017. (англ.)
- ↑ The Large Text Compression Benchmark (амер.). Архів оригіналу за 9 травня 2017. Процитовано 13 січня 2017. (англ.)
- ↑ 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. (англ.)
- ↑ With QuickType, Apple wants to do more than guess your next text. It wants to give you an AI. WIRED (амер.). Архів оригіналу за 24 березня 2017. Процитовано 16 червня 2016. (англ.)
- ↑ RECURRENT NEURAL NETWORKS - FEEDBACK NETWORKS - LSTM RECURRENT NETWORK - FEEDBACK NEURAL NETWORK - RECURRENT NETS - FEEDBACK NETWORK - RECURRENT NET - - FEEDBACK NET. people.idsia.ch. Архів оригіналу за 5 травня 2021. Процитовано 16 червня 2016. (англ.)
- ↑ Felix A. Gers; Jürgen Schmidhuber; Fred Cummins (2000). Learning to Forget: Continual Prediction with LSTM. Neural Computation[en]. 12 (10): 2451—2471. doi:10.1162/089976600300015015. Архів оригіналу за 7 квітня 2019. Процитовано 15 квітня 2017. (англ.)
- ↑ а б в Gers, F. A.; Schmidhuber, J. (2001). LSTM Recurrent Networks Learn Simple Context Free and Context Sensitive Languages (PDF). IEEE Transactions on Neural Networks. 12 (6): 1333—1340. doi:10.1109/72.963769. Архів оригіналу (PDF) за 10 липня 2020. Процитовано 15 квітня 2017. (англ.)
- ↑ а б в Gers, F.; Schraudolph, N.; Schmidhuber, J. (2002). Learning precise timing with LSTM recurrent networks (PDF). Journal of Machine Learning Research. 3: 115—143. Архів оригіналу (PDF) за 28 липня 2017. Процитовано 15 квітня 2017. (англ.)
- ↑ Xingjian Shi; Zhourong Chen; Hao Wang; Dit-Yan Yeung; Wai-kin Wong; Wang-chun Woo (2015). Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting. Proceedings of the 28th International Conference on Neural Information Processing Systems: 802—810. Архів оригіналу за 9 листопада 2016. Процитовано 15 квітня 2017. (англ.)
- ↑ 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. (англ.)
- ↑ Perez-Ortiz, J. A.; Gers, F. A.; Eck, D.; Schmidhuber, J. (2003). Kalman filters improve LSTM network performance in problems unsolvable by traditional recurrent nets. Neural Networks. 16 (2): 241—250. doi:10.1016/s0893-6080(02)00219-8. (англ.)
- ↑ 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. PMID 17488755. (англ.)
Посилання
ред.- Рекурентні нейронні мережі [Архівовано 2 січня 2014 у Wayback Machine.] із понад 30 працями від групи Юргена Шмідгубера в IDSIA[en] (англ.)
- Докторська дисертація [Архівовано 11 липня 2019 у Wayback Machine.] Жера про мережі ДКЧП. (фр.)
- Праця про виявлення шахрайства з двома главами, присвяченими поясненню рекурентних нейронних мереж, особливо ДКЧП. (англ.)
- Праця [Архівовано 23 квітня 2013 у Wayback Machine.] про високопродуктивне розширення ДКЧП, яке було спрощено до єдиного типу вузла, і яке може тренувати довільні архітектури. (англ.)
- Підручник [Архівовано 3 січня 2015 у Archive.is]: Як реалізувати ДКЧП в Python за допомогою Theano. (англ.)
- Karpathy, Andrej (2015). The Unreasonable Effectiveness of Recurrent Neural Networks. Архів оригіналу за 26 березня 2017. Процитовано 31 березня 2017. (англ.)
- Chen, Edwin (2017). Exploring LSTMs. Архів оригіналу за 6 квітня 2019. Процитовано 1 квітня 2019. (англ.)