Rekurrentne närvivõrk

Allikas: testwiki
Mine navigeerimisribale Mine otsikasti

Mall:Keeletoimeta 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

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

LSTM

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

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

Tavaline rekurrentne närvivõrk

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

ht=fH(ot), kus

ot=WIHxt+WHHht1+bh,

fH() on peidetud kihi aktivatsioonifunktsioon ja bh on peidetud sõlmede kaaluvektor. Peidetud kiht on ühendatud väljundkihti kaalutud ühendustega WHO. Väljundkihil on P sõlme yt=(y1,y2,...,yP), mis arvutatakse nii:

yt=fO(WHOht+bo), kus

fO() on aktivatsioonifunktsioon ja bo on väljundkihi kaalude vektor.

Neid samme korratakse järjestikku üle aja

t=(1,...,T)

[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)

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

  • 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

Rekurrentsete närvivõrkude rakendusi:

Viited

Mall:Viited

  1. Viitamistõrge: Vigane <ref>-silt. Viide nimega 9aUzK on ilma tekstita.
  2. Viitamistõrge: Vigane <ref>-silt. Viide nimega sak2014 on ilma tekstita.
  3. Viitamistõrge: Vigane <ref>-silt. Viide nimega dq1eU on ilma tekstita.
  4. Viitamistõrge: Vigane <ref>-silt. Viide nimega schmidhuber1993 on ilma tekstita.
  5. Viitamistõrge: Vigane <ref>-silt. Viide nimega lstm on ilma tekstita.
  6. Viitamistõrge: Vigane <ref>-silt. Viide nimega fernandez2007keyword on ilma tekstita.
  7. Viitamistõrge: Vigane <ref>-silt. Viide nimega graves20093 on ilma tekstita.
  8. Viitamistõrge: Vigane <ref>-silt. Viide nimega fan2015 on ilma tekstita.
  9. Viitamistõrge: Vigane <ref>-silt. Viide nimega zen2015 on ilma tekstita.
  10. Viitamistõrge: Vigane <ref>-silt. Viide nimega sak2015 on ilma tekstita.
  11. Viitamistõrge: Vigane <ref>-silt. Viide nimega sutskever2014 on ilma tekstita.
  12. Viitamistõrge: Vigane <ref>-silt. Viide nimega recentadva2018 on ilma tekstita.
  13. Viitamistõrge: Vigane <ref>-silt. Viide nimega gers2002 on ilma tekstita.
  14. Viitamistõrge: Vigane <ref>-silt. Viide nimega schmidhuber2015 on ilma tekstita.
  15. Viitamistõrge: Vigane <ref>-silt. Viide nimega bayer2009 on ilma tekstita.
  16. Viitamistõrge: Vigane <ref>-silt. Viide nimega tdtc6 on ilma tekstita.
  17. Viitamistõrge: Vigane <ref>-silt. Viide nimega OvgEW on ilma tekstita.
  18. Viitamistõrge: Vigane <ref>-silt. Viide nimega K2uts on ilma tekstita.
  19. Viitamistõrge: Vigane <ref>-silt. Viide nimega aC8CS on ilma tekstita.
  20. Viitamistõrge: Vigane <ref>-silt. Viide nimega 95Pnw on ilma tekstita.
  21. Viitamistõrge: Vigane <ref>-silt. Viide nimega GY9xy on ilma tekstita.
  22. Viitamistõrge: Vigane <ref>-silt. Viide nimega graves2013 on ilma tekstita.
  23. Viitamistõrge: Vigane <ref>-silt. Viide nimega QWcDx on ilma tekstita.
  24. Viitamistõrge: Vigane <ref>-silt. Viide nimega peephole2002 on ilma tekstita.
  25. Viitamistõrge: Vigane <ref>-silt. Viide nimega Jjjvs on ilma tekstita.
  26. Viitamistõrge: Vigane <ref>-silt. Viide nimega tbiZP on ilma tekstita.
  27. Viitamistõrge: Vigane <ref>-silt. Viide nimega peepholeLSTM on ilma tekstita.
  28. Viitamistõrge: Vigane <ref>-silt. Viide nimega fkMjv on ilma tekstita.
  29. Viitamistõrge: Vigane <ref>-silt. Viide nimega vztDj on ilma tekstita.
  30. Viitamistõrge: Vigane <ref>-silt. Viide nimega CGqsU on ilma tekstita.
  31. Viitamistõrge: Vigane <ref>-silt. Viide nimega 5w8nP on ilma tekstita.
  32. Viitamistõrge: Vigane <ref>-silt. Viide nimega DCX3k on ilma tekstita.
  33. Viitamistõrge: Vigane <ref>-silt. Viide nimega s5fXr on ilma tekstita.
  34. Viitamistõrge: Vigane <ref>-silt. Viide nimega L9Iqn on ilma tekstita.