Rekurrentne närvivõrk

Allikas: Vikipeedia

Rekurrentne närvivõrk (RNN) on tehisnärvivõrkude klass, kus ühendused sõlmede vahel moodustavad suunatud graafi mööda jada. See võimaldab närvivõrgul ära tunda mustreid andmejadades. Erinevalt pärilevivõrkudest saab RNN kasutada oma sisemist olekut (mälu), et töödelda sisendite järjendeid. See muudab need kasutatavaks toimingutes nagu segmenteerimata ja ühendatud käekirja tuvastamine[1] või kõnetuvastus.[2]

Mõistet "rekurrentne närvivõrk" kasutatakse valimatult, et viidata kahele laiale liigile sarnase üldise struktuuriga närvivõrkudele, millest üks on lõpliku siirdega ja teine on piiramatu siirdega. Mõlemad neist väljendavad ajalist dünaamilist käitumist.[3] Lõpliku siirdega rekurrentne võrk on tsükliteta suunatud graaf, mille saab kirja panna ja asendada rangelt pärilevivõrguga, samas piiramatu siirdega rekurrentne võrk on suunatud tsükleid sisaldav graaf, mida ei ole võimalik asendada pärilevivõrguga.

Nii lõpliku siirdega kui ka piiramatu siirdega rekurrentsed võrgud võivad omada lisaks veel salvestatud olekut, mis võib olla otsese närvivõrgu kontrolli all. Salvestatud olek võib olla ka asendatud teise võrgu või graafiga, kui see sisaldab ajalisi viivitusi või tagasisideahelaid. Sellised kontrollitud olekud on üks osa tüüpides LSTM ja GRU.

Ajalugu[muuda | muuda lähteteksti]

Rekurrentsed närvivõrgud töötati välja 1980. aastatel. Hopfieldi võrgud avastas John Hopfield 1982. aastal.[4]

LSTM[muuda | muuda lähteteksti]

Pika lühiajalise mälu (ingl long short term memory, edaspidi LSTM) võrgud avastati Hochreiteri ja Schmidhuberi poolt 1997. aastal ja saavutati mitmeid täpsusrekordeid mitmes rakendusvaldkonnas.[5] 2007. aasta paiku tegi LSTM murrangulisi samme kõnetuvastuses, edestades traditsioonilisi mudeleid teatud kõnetuvastusrakendustes.[6] 2009. aastal oli LSTM võrk esimene RNN, mis võitis mustrituvastuskonkursi, saades esimesi kohti konkurssidel segmenteerimata käekirja tuvastamises.[7] 2014. aastal kasutas Hiina otsingumootor Baidu CTC (ingl Connectionist Temporal Classification) treenitud RNN-i, et murda Switchboard Hub5'00 kõnetuvastuse võrdlusalus, kasutamata lisaks ühtegi traditsioonilist kõne töötlemise meetodit.

LSTM parandas ka suure sõnavaraga kõnetuvastust ja kõnesünteesi,[8] seda kasutati Google'i Androidis.[9] 2015. aastal tegi Google'i kõnetuvastus teadaolevalt suure, 49% hüppe, kasutades CTC-treenitud LSTM-i, mida kasutas Google'i häälotsing.[10]

LSTM purustas rekordeid, parandades masintõlget[11], keele modelleerimist ja mitmekeelset keeletöötlust. LSTM võrgud koos konvolutsiooniliste närvivõrkudega (CNN) täiustasid ka automaatset pildi pealkirjastamist.

Arhitektuur[muuda | muuda lähteteksti]

Järgnevalt on välja toodud kaks populaarset rekurrentse närvivõrgu arhitektuuri.

Tavaline rekurrentne närvivõrk[muuda | muuda lähteteksti]

Tavaline RNN koosneb kolmest kihist: sisend-, peidetud rekurrentne ja väljundkiht. Sisendkihil on sisendsõlme. Sisend koosneb vektorite jadast läbi aja {}. Sisendsõlmede ühendused on defineeritud kaalude maatriksis . Peidetud kiht koosneb rekurrentsetest sõlmedest, millel on vähemalt üks tagasileviühendus. Peidetud kihis on sõlme, mis on omavahel ühendatud läbi aja rekurrentsete ühendustega. Peidetud kiht defineerib süsteemi oleku ehk mälu:

, kus

,

on peidetud kihi aktivatsioonifunktsioon ja on peidetud sõlmede kaaluvektor. Peidetud kiht on ühendatud väljundkihti kaalutud ühendustega . Väljundkihil on sõlme , mis arvutatakse nii:

, kus

on aktivatsioonifunktsioon ja on väljundkihi kaalude vektor.

Neid samme korratakse järjestikku üle aja [12]

Lahti volditud tavaline rekurrentne närvivõrk

Juhendamisega õppe jaoks diskreetses ajas, andmejadad reaalarvuliste väärtustega sisendvektoritest antakse sisendsõlmedele ükshaaval. Igal ajajärgul arvutab iga mittesisendsõlm oma praeguse aktivatsiooni mittelineaarse funktsioonina kõikidest temasse ühenduvate ühikute aktivatsioonide kaalutud summast. Näiteks kui sisendjada on kõnesignaal, mis vastab räägitud numbrile, siis tahetud lõppväljund jada lõpus võib olla silt, mis klassifitseerib numbri.

Iga jada tekitab vea, mille suurus arvuliselt on kõikide võrgu poolt arvutatud aktivatsioonide kõrvalekallete summa vastavatest tahetud signaalidest. Mitmeid jadasid sisaldava treeninghulga puhul on viga võrdne kõigi individuaalsete jadade vigade summaga.

Pikk lühiajaline mälu (LSTM)[muuda | muuda lähteteksti]

Pika lühiajalise mälu ühik

LSTM on süvaõppesüsteem, mis väldib haihtuva gradiendi probleemi (ingl vanishing gradient problem). LSTM on tavaliselt täiendatud rekurrentsete lülitustega, mida kutsutakse unustuslülitusteks.[13] LSTM takistab tagasilevivigade haihtumist või plahvatamist. Selle asemel saavad vead voolata läbi piiramata arvu virtuaalsete kihtide. Nii saab LSTM õppida ülesanded[14], mis nõuavad mälestusi ja sündmusi, mis juhtusid tuhandeid või isegi miljoneid diskreetseid ajajärke varem. Probleemi spetsiifilist LSTM sarnast topoloogiat saab edasi arendada.[15] LSTM töötab isegi siis, kui oluliste sündmuste vahel on pikk aeg ning palju muid sündmusi ja suudab käsitleda signaale, mis hõlmavad väikese ja suure sagedusega komponente.

LSTM suudab õppida ära tundma kontekstitundlikke keeli erinevalt varasematest mudelitest, mis põhinesid Markovi peitmudelil ja muudel sarnastel kontseptidel.[16]

Teegid[muuda | muuda lähteteksti]

  • Apache Singa
  • Caffe – loodud Berkeley Vision and Learning Centeri (BVLC) poolt. See toetab nii CPU-d kui ka GPU-d. Välja töötatud C++-is ning omab Pythoni ja MATLAB-i pakendeid.
  • Chainer – esimene stabiilne süvaõppe teek. Täielikult Python, CPU ja GPU tugi, hajus treenimine.
  • Deeplearning4j – süvaõpe Javas ja Scalas multi-GPU toega Sparkis. Üldine süvaõppeteek JVM jaoks, töötab C++ teadusliku andmetöötlusmootori peal. Võimaldab luua enda tehtud kihte. Integreeritav Hadoopi ja Kafkaga.
  • Dynet – dünaamiline närvivõrkude toolkit.
  • Keras – kõrgtaseme teek, lihtsalt kasutatav API, pakendab paljusid teisi süvaõppeteeke.
  • Microsoft Cognitive Toolkit
  • MXNet – tänapäevane avatud lähtekoodiga süvaõpperaamistik, mida kasutatakse, et treenida ja luua süvanärvivõrke.
  • pytorch – tensorid ja dünaamilised närvivõrgud Pythonis tugeva GPU kiirendusega.
  • TensorFlow – Apache 2.0 litsentsiga Theano-sarnane teek, CPU, GPU ja Google'i patenteeritud TPU toega.[17]
  • Torch (www.torch.ch) – teaduslik andmetöötlusraamistik, millel on lai masinõppe algoritmide tugi, kirjutatud C ja Lua keeltes. Peamine autor on Ronan Collobert ja praegu kasutatakse Facebook AI Reaserch ja Twitteri poolt.
  • Theano – süvaõppe teek Pythonile, API ühildub suuresti populaarse NumPy teegiga. Lubab kasutajatel kirjutada sümboolseid matemaatilisi võrrandeid, luues ise automaatselt nende tuletised, nii et kasutaja ei pea ise kodeerima gradiente või tagasilevi. Need sümboolsed võrrandid kompileeritakse automaatselt CUDA koodi, et saaks kasutada kiiret GPU implementatsiooni.

Rakendused[muuda | muuda lähteteksti]

Rekurrentsete närvivõrkude rakendusi:

Viited[muuda | muuda lähteteksti]

  1. Graves, A.; Liwicki, M.; Fernandez, S.; Bertolami, R.; Bunke, H.; Schmidhuber, J. (2009). "A Novel Connectionist System for Improved Unconstrained Handwriting Recognition" (PDF). IEEE Transactions on Pattern Analysis and Machine Intelligence. 31 (5). DOI:10.1109/tpami.2008.137.
  2. Sak, Hasim; Senior, Andrew; Beaufays, Francoise (2014). "Long Short-Term Memory recurrent neural network architectures for large scale acoustic modeling" (PDF). Vaadatud 29.10.2018.
  3. Miljanovic, Milos (veebruar 2012). "Comparative analysis of Recurrent and Finite Impulse Response Neural Networks in Time Series Prediction" (PDF). Indian Journal of Computer and Engineering. 3 (1).CS1 maint: Date format (link)
  4. Schmidhuber, Jürgen (1993). Habilitation thesis: System modeling and optimization (PDF).[alaline kõdulink]
  5. Hochreiter, Sepp; Schmidhuber, Jürgen (1. november 1997). "Long Short-Term Memory". Neural Computation. 9 (8): 1735–1780. DOI:10.1162/neco.1997.9.8.1735.
  6. Fernández, Santiago; Graves, Alex; Schmidhuber, Jürgen (2007). "An Application of Recurrent Neural Networks to Discriminative Keyword Spotting". Proceedings of the 17th International Conference on Artificial Neural Networks. ICANN'07. Berlin, Heidelberg: Springer-Verlag: 220–229. ISBN 978-3-540-74693-5.
  7. Graves, Alex; Schmidhuber, Jürgen (2009). Bengio, Yoshua; Schuurmans, Dale; Lafferty, John; Williams, Chris editor-K. I.; Culotta, Aron (toim-d). "Offline Handwriting Recognition with Multidimensional Recurrent Neural Networks". Neural Information Processing Systems (NIPS) Foundation: 545–552. {{cite journal}}: parameetris |editor-first4= on üldnimi (juhend)
  8. Bo Fan, Lijuan Wang, Frank K. Soong, and Lei Xie (2015). Photo-Real Talking Head with Deep Bidirectional LSTM. In Proceedings of ICASSP 2015.
  9. Zen, Heiga; Sak, Hasim (2015). "Unidirectional Long Short-Term Memory Recurrent Neural Network with Recurrent Output Layer for Low-Latency Speech Synthesis" (PDF). Google.com. ICASSP. Lk 4470–4474. Vaadatud 29.10.2018.
  10. Sak, Haşim; Senior, Andrew; Rao, Kanishka; Beaufays, Françoise; Schalkwyk, Johan (september 2015). "Google voice search: faster and more accurate". Vaadatud 30.10.2018.
  11. Sutskever, L.; Vinyals, O.; Le, Q. (2014). "Sequence to Sequence Learning with Neural Networks" (PDF). Electronic Proceedings of the Neural Information Processing Systems Conference. 27: 5346. arXiv:1409.3215. Bibcode:2014arXiv1409.3215S.
  12. Hojjat, Salehinejad; Sankar, Sharan; Barfett, Joseph (2014). "Recent Advances in Recurrent Neural Networks" (PDF): 3. arXiv:1801.01078. Bibcode:201. Vaadatud 29.10.2018. {{cite journal}}: viitemall journal nõuab parameetrit |journal= (juhend); kontrolli parameetri |bibcode= pikkust (juhend)
  13. Gers, Felix; Schraudolph, Nicol N.; Schmidhuber, Jürgen. "Learning Precise Timing with LSTM Recurrent Networks (PDF Download Available)". ResearchGate. Lk 115–143. Vaadatud 29.10.2018.
  14. Schmidhuber, Jürgen (jaanuar 2015). "Deep Learning in Neural Networks: An Overview". Neural Networks. 61: 85–117. arXiv:1404.7828. DOI:10.1016/j.neunet.2014.09.003. PMID 25462637.
  15. Bayer, Justin; Wierstra, Daan; Togelius, Julian; Schmidhuber, Jürgen (14. september 2009). "Evolving Memory Cell Structures for Sequence Learning". Artificial Neural Networks – ICANN 2009. Lecture Notes in Computer Science. Springer, Berlin, Heidelberg. 5769: 755–764. DOI:10.1007/978-3-642-04277-5_76. ISBN 978-3-642-04276-8.
  16. Gers, F. A.; Schmidhuber, E. (november 2001). "LSTM recurrent networks learn simple context-free and context-sensitive languages". IEEE Transactions on Neural Networks. 12 (6): 1333–1340. DOI:10.1109/72.963769. ISSN 1045-9227.
  17. Cade Metz (16.05.2016). "Google Built Its Very Own Chips to Power Its AI Bots". Wired.
  18. Mayer, H.; Gomez, F.; Wierstra, D.; Nagy, I.; Knoll, A.; Schmidhuber, J. (oktoober 2006). "A System for Robotic Heart Surgery that Learns to Tie Knots Using Recurrent Neural Networks". 2006 IEEE/RSJ International Conference on Intelligent Robots and Systems: 543–548. DOI:10.1109/IROS.2006.282190. ISBN 1-4244-0258-1.
  19. Wierstra, Daan; Schmidhuber, J.; Gomez, F. J. (2005). "Evolino: Hybrid Neuroevolution/Optimal Linear Search for Sequence Learning". Proceedings of the 19th International Joint Conference on Artificial Intelligence (IJCAI), Edinburgh (inglise): 853–858.
  20. 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.
  21. Fernández, Santiago; Graves, Alex; Schmidhuber, Jürgen (2007). "An Application of Recurrent Neural Networks to Discriminative Keyword Spotting". Proceedings of the 17th International Conference on Artificial Neural Networks. ICANN'07. Berlin, Heidelberg: Springer-Verlag: 220–229. ISBN 3540746935.
  22. 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.
  23. Malhotra, Pankaj; Vig, Lovekesh; Shroff, Gautam; Agarwal, Puneet (aprill 2015). "Long Short Term Memory Networks for Anomaly Detection in Time Series" (PDF). European Symposium on Artificial Neural Networks, Computational Intelligence and Machine Learning — ESANN 2015. Originaali (PDF) arhiivikoopia seisuga 30. oktoober 2020. Vaadatud 3. detsembril 2018.
  24. Gers, F.; Schraudolph, N.; Schmidhuber, J. (2002). "Learning precise timing with LSTM recurrent networks" (PDF). Journal of Machine Learning Research. 3: 115–143.
  25. Eck, Douglas; Schmidhuber, Jürgen (28. august 2002). "Learning the Long-Term Structure of the Blues". Artificial Neural Networks — ICANN 2002. Lecture Notes in Computer Science (inglise). Springer, Berlin, Heidelberg. 2415: 284–289. DOI:10.1007/3-540-46084-5_47. ISBN 3540460845.
  26. 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.
  27. 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. Originaali (PDF) arhiivikoopia seisuga 10. juuli 2020. Vaadatud 3. detsembril 2018.
  28. 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.
  29. 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.
  30. Graves, Alex; Fernández, Santiago; Liwicki, Marcus; Bunke, Horst; Schmidhuber, Jürgen (2007). "Unconstrained Online Handwriting Recognition with Recurrent Neural Networks". Proceedings of the 20th International Conference on Neural Information Processing Systems. NIPS'07. USA: Curran Associates Inc.: 577–584. ISBN 9781605603520.
  31. 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
  32. 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.
  33. Thireou, T.; Reczko, M. (2007). "Bidirectional Long Short-Term Memory Networks for predicting the subcellular localization of eukaryotic proteins". IEEE/ACM Transactions on Computational Biology and Bioinformatics (TCBB). 4 (3): 441–446. DOI:10.1109/tcbb.2007.1015.
  34. Tax, N.; Verenich, I.; La Rosa, M.; Dumas, M. (2017). "Predictive Business Process Monitoring with LSTM neural networks". Proceedings of the International Conference on Advanced Information Systems Engineering (CAiSE). Lecture Notes in Computer Science. 10253: 477–492. arXiv:1612.02130. DOI:10.1007/978-3-319-59536-8_30. ISBN 978-3-319-59535-1.