Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Në kontakt me
  • Kufizimet e të mësuarit të thellë dhe e ardhmja. Si duken rrjetet nervore të thella dhe pse kërkojnë kaq shumë memorie

Kufizimet e të mësuarit të thellë dhe e ardhmja. Si duken rrjetet nervore të thella dhe pse kërkojnë kaq shumë memorie

Ai më tha se sa artificiale rrjetet nervore si ndryshojnë nga ato tradicionale programet kompjuterike dhe pse ky trend do të na qëndrojë për një kohë të gjatë.

Çfarë është të mësuarit e thellë?

Për suksesin e të mësuarit të thellë u dëgjua për herë të parë në vitin 2012, dhe tre vjet më vonë të gjithë po flasin për të. E njëjta gjë ndodhi me internetin gjatë epokës së flluskës së investimeve. Dhe duke qenë se tani po bëhen investime të konsiderueshme në rrjetet nervore, mund të flasim me siguri për një flluskë të re.

Interneti ishte i lehtë për t'u demonstruar: në fillim ishte i shpejtë (krahasuar me letrën) Email, pastaj faqet e internetit shumëngjyrëshe të aksesueshme në çdo kompjuter të lidhur me internetin. Në të mësuarit e thellë, gjithçka është ndryshe: ka vëmendje për të, por është e pamundur të demonstrosh diçka specifike. Në të vërtetë, ajo që lidh programet dhe programet e njohjes së të folurit përkthim automatik, programe për identifikimin e defekteve në pajisjet e naftës dhe gazit dhe programet për sintetizimin e tekstit që përshkruan fotografi?



Ky diversitet nuk është i rastësishëm: nëse interneti është thjesht një lloj komunikimi, atëherë rrjetet e thella nervore (DNN) janë në thelb lloj i ri programe që janë po aq të gjithanshme sa edhe programet tradicionale kompjuterike. Ky universalitet është vërtetuar teorikisht: një rrjet nervor në teori mund të përafrojë me saktësi pafundësisht çdo funksion të shumë variablave - dhe gjithashtu të kryejë llogaritjet ekuivalente me llogaritjet e një makine Turing.

Rrjetet që duhet të mësoni

Informacioni mund të transmetohet në internet në një mënyrë shumë monotone, në paketa të unifikuara dhe është ndërtuar mbi këtë ide. Por ju mund të gjeneroni informacion dhe ta konsumoni atë në mënyra të ndryshme. Programet kompjuterike që e bëjnë këtë janë shumë të ndryshme. Rrjetet nervore janë të njëjta, ato ofrojnë të njëjtën shumëllojshmëri të përpunimit.

Të përshkruash sot se çfarë janë rrjetet nervore do të thotë të përshkruash në fund të viteve pesëdhjetë se çfarë janë programet kompjuterike tradicionale (dhe gjuha FORTRAN u lëshua në vitin 1957) - nëse filloni të thoni se kompjuterët do të kontrollojnë ndezjen në çdo makinë, dhe gjithashtu duke shfaqur filma porno në ekranet e telefonit do t'ju bënte të qeshni.

Nëse të them tani se do të flasësh me një nervor rrjeti kompjuterik në tabletin tuaj dhe rrjeti nervor do të kontrollojë një makinë pa shofer, as ju nuk do ta besoni - por më kot.

Nga rruga, "fotografitë pornografike" në në rrjetet sociale Nuk zbulohet më nga njerëzit, por nga vetë rrjetet. Por 100 mijë njerëz në botë po e bënin këtë, duke parë terabajt dhe terabajt foto dhe video. Me ardhjen e mësimit të thellë, bota e përpunimit të të dhënave filloi të ndryshojë papritur dhe me shpejtësi.

Ndryshe nga programet tradicionale kompjuterike, rrjetet nervore nuk kanë nevojë të "shkruhen", ato duhet të "mësohen". Dhe atyre mund t'u mësohet ajo që është pafundësisht e vështirë (nëse jo e pamundur) për t'u zbatuar me inxhinierinë tradicionale të softuerit. Për shembull, rrjetet nervore tashmë kanë mësuar të njohin audio dhe video në nivelin e njerëzve - madje edhe më mirë se ata. Ose anasjelltas, krijoni audio dhe video - nëse keni një kuptim të imazheve të disa objekteve të mishëruara në një rrjet nervor të thellë të trajnuar, i njëjti kuptim mund të përdoret për të krijuar imazhe të këtyre objekteve. Sinteza e zërit, tekstit dhe imazheve nuk ka arritur ende në treg, por eksperimentet tashmë po tregojnë suksese të paarritshme më parë në këtë fushë. Për më tepër, rrjetet nervore jo vetëm që mund të analizojnë të dhënat, por edhe të lëshojnë komanda. Kështu, ata mësuan të luanin lojëra Atari 2600, madje shumë më mirë se njeriu, dhe nuk duhej të programoheshin posaçërisht për këtë.

Si u bë e mundur kjo vetëm sot? Pse nuk u arritën rezultate të tilla shumë kohë më parë, madje edhe para ardhjes së internetit? Në fund të fundit, diskutimet për aftësitë e rrjeteve nervore kanë vazhduar që nga vitet 50 të shekullit të kaluar!

Së pari, u bë e qartë se si të mësohen rrjetet e thella nervore - çfarë lloj matematike funksionon atje. Një rrjet nervor i thellë nënkupton një me një thellësi prej më shumë se dy shtresa. Nëse ka më pak shtresa, atëherë po flasim për mësim të cekët. Nëse numri i shtresave është më shumë se dhjetë, atëherë ata flasin për mësim shumë të thellë, por deri më tani kjo është e rrallë. Më parë, ata u përpoqën të mësonin rrjetet nervore me provë dhe gabim (i njohur ndryshe si metoda "poking shkencor"), dhe në këtë mënyrë ata mund të stërviteshin vetëm rrjete të vogla. Me kalimin e kohës, u shfaq një kuptim i matematikës së rrjeteve nervore me shumë shtresa, u bë i mundur dizajnimi i tyre dhe erdhi një kuptim se si të krijohen lloje të reja rrjetesh dhe të sigurohet aftësia e tyre e të mësuarit.

Së dyti, rrjeti nervor funksionon shpejt, por mëson shumë ngadalë, dhe kjo kërkon sasi të mëdha të dhënash - të dhëna të mëdha . Dhe sa më shumë shtresa të ketë një rrjet nervor, aq më shumë kërkesa ka një rrjet i tillë për fuqinë llogaritëse gjatë trajnimit. Në fakt, deri vonë, rrjetet nervore mund të mësoheshin vetëm në një superkompjuter.



Sot situata ka ndryshuar, pasi kartat video janë lidhur me punën me rrjetet nervore - dhe kjo e ka përshpejtuar trajnimin e tyre dhjetëfish. Por edhe një mësim i tillë i përshpejtuar shpesh nënkupton shumë orë dhe madje ditë, dhe nganjëherë javë, llogaritje. I vetmi ngushëllim është se në rastin e programimit tradicional, zgjidhja e të njëjtave probleme do të kërkonte jo vetëm javë, por vite punë nga programuesit.

Por sapo të trajnohet një rrjet nervor i thellë, ai zakonisht është qindra deri në mijëra herë më i shpejtë se algoritmet tradicionale. Programi merr qindra herë më pak kujtesë e gjallëcilesia me e mire rezultatet.

« Mjeshtrat e rrjeteve nervore"

Vetitë e pazakonta të këtyre rrjeteve kanë çuar në faktin se pothuajse të gjitha konkurset ndërkombëtare në analizën e të dhënave fitohen nga rrjetet e thella nervore. Dhe nëse keni një lloj detyre të analizës së të dhënave, dhe ka shumë të dhëna, atëherë ka një shans të mirë që në këtë rast të përfitojnë edhe rrjetet nervore të thella.

Profesioni i atyre që janë të përfshirë në rrjetet nervore nuk ka ende një emër. Nëse në agimin e Internetit u shfaq koncepti i "webmaster" (dhe zgjati pesë ose gjashtë vjet), atëherë nuk ka ende një profesion të ngjashëm "mjeshtër i rrjetit nervor". Në fushën e të dhënave të mëdha, specialistë të tillë e quajnë veten "shkencëtarë të të dhënave", por megjithatë puna e tyre është e së njëjtës natyrë inxhinierike si puna e programuesve. Inxhinierët matin, analizojnë, projektojnë, ndërtojnë dhe synojnë sistemet dhe mjetet inxhinierike. Inxhinieria e softuerit është e ndryshme nga Shkenca Kompjuterike(Shkenca Kompjuterike). Është e njëjta gjë me rrjetet nervore: ende nuk ka emër për profesionin, por tashmë ka inxhinierë që do t'ju ndihmojnë t'i krijoni, trajnoni dhe përdorni ato. Për fat të mirë, për Vitin e kaluar infrastrukturë të zhvilluar për profesion i ri: universitet kurse trajnimi, dhjetëra mësime, libra, terrene konkurrimi dhe trajnimi, sasi e madhe software i lirë. Vetëm në komunitetin rusisht-folës të të mësuarit të thellë VKontakte sot

Sot, një grafik është një nga mënyrat më të pranueshme për të përshkruar modelet e krijuara në sistem mësimi i makinës. Këta grafikë llogaritës përbëhen nga kulme neuronesh të lidhura nga skajet e sinapsës që përshkruajnë lidhjet midis kulmeve.

Ndryshe nga një procesor grafik qendror ose vektorial skalar, një IPU, një lloj i ri procesori i krijuar për mësimin e makinerive, lejon ndërtimin e grafikëve të tillë. Një kompjuter që është krijuar për të menaxhuar grafikët - makinë perfekte për modelet e grafikëve llogaritës të krijuara nga mësimi i makinerive.

Një nga më mënyra të thjeshta Mënyra për të përshkruar procesin e inteligjencës së makinës është ta vizualizoni atë. Ekipi i zhvillimit të Graphcore ka krijuar një koleksion imazhesh të tilla që shfaqen në IPU. Ajo bazohej në software Plepi, i cili vizualizon punën inteligjence artificiale. Studiuesit nga kjo kompani zbuluan gjithashtu arsyen rrjete të thella kërkojnë kaq shumë memorie dhe çfarë zgjidhjesh ekzistojnë për problemin.

Poplar përfshin një përpilues grafik që u ndërtua nga themeli për të përkthyer operacionet standarde të mësimit të makinerive në kodin e aplikacionit IPU shumë të optimizuar. Kjo ju lejon të mbledhni këto grafikë së bashku duke përdorur të njëjtin parim si mblidhen POPNN-të. Biblioteka përmban një grup lloje të ndryshme kulmet për primitivët e përgjithësuar.

Grafikët janë paradigma mbi të cilën bazohet i gjithë softueri. Në Poplar, grafikët ju lejojnë të përcaktoni një proces llogaritjeje, ku kulmet kryejnë operacione dhe skajet përshkruajnë marrëdhënien midis tyre. Për shembull, nëse doni të shtoni dy numra së bashku, mund të përcaktoni një kulm me dy hyrje (numrat që dëshironi të shtoni), disa llogaritje (një funksion për të shtuar dy numra) dhe një dalje (rezultati).

Në mënyrë tipike, operacionet me kulme janë shumë më komplekse sesa në shembullin e përshkruar më sipër. Ata shpesh janë të vendosur programe të vogla, të quajtur kodleta (emrat e kodit). Abstraksioni grafik është tërheqës sepse nuk bën supozime për strukturën e llogaritjes dhe e zbërthen llogaritjen në komponentë që IPU mund t'i përdorë për të operuar.

Poplar përdor këtë abstraksion të thjeshtë për të ndërtuar grafikë shumë të mëdhenj që përfaqësohen si imazhe. Gjenerimi i softuerit të grafikut do të thotë që ne mund ta përshtatim atë me llogaritjet specifike të nevojshme për të siguruar sa më shumë përdorim efektiv Burimet e IPU-së.

Kompiluesi përkthen operacionet standarde, i përdorur në sistemet e mësimit të makinerive, në kodin e aplikacionit IPU shumë të optimizuar. Përpiluesi i grafikut krijon një imazh të ndërmjetëm të grafikut llogaritës, i cili vendoset në një ose më shumë pajisje IPU. Përpiluesi mund të shfaqë këtë grafik llogaritës, kështu që një aplikacion i shkruar në nivelin e kornizës së rrjetit nervor shfaq një imazh të grafikut llogaritës që funksionon në IPU.


Grafiku i ciklit të plotë të trajnimit AlexNet në drejtimet përpara dhe prapa

Përpiluesi i grafikëve Poplar e ktheu përshkrimin AlexNet në një grafik llogaritës prej 18.7 milion kulmesh dhe 115.8 milion skajesh. Grumbullimi i dukshëm i qartë është rezultat i komunikimit të fortë midis proceseve në secilën shtresë të rrjetit, me komunikim më të lehtë midis shtresave.

Një shembull tjetër është një rrjet i thjeshtë i lidhur plotësisht i trajnuar në MNIST - thirrja e thjeshtë të dhëna për vizion kompjuterik, një lloj "Përshëndetje, botë" në mësimin e makinerive. Rrjet i thjeshtë eksplorimi i këtij grupi të dhënash ndihmon për të kuptuar grafikët që drejtohen nga aplikacionet Poplar. Duke integruar bibliotekat e grafikëve me korniza të tilla si TensorFlow, kompania ofron një prej tyre mënyra të thjeshta për përdorimin e IPU-ve në aplikacionet e mësimit të makinerive.

Pasi grafiku të jetë ndërtuar duke përdorur përpiluesin, ai duhet të ekzekutohet. Kjo është e mundur duke përdorur Graph Engine. Shembulli i ResNet-50 tregon funksionimin e tij.


Grafiku ResNet-50

Arkitektura ResNet-50 lejon krijimin e rrjeteve të thella nga ndarjet e përsëritura. Procesori duhet t'i përcaktojë këto seksione vetëm një herë dhe t'i thërrasë përsëri. Për shembull, grupi i nivelit conv4 ekzekutohet gjashtë herë, por vihet në hartë vetëm një herë në grafik. Imazhi gjithashtu demonstron shumëllojshmërinë e formave të shtresave konvolucionale, pasi secila prej tyre ka një grafik të ndërtuar sipas një forme natyrore llogaritjeje.

Motori krijon dhe menaxhon ekzekutimin e një modeli të mësimit të makinës duke përdorur një grafik të krijuar nga përpiluesi. Pasi të vendoset, Graph Engine monitoron dhe u përgjigjet IPU-ve, ose pajisjeve, të përdorura nga aplikacionet.

Imazhi ResNet-50 tregon të gjithë modelin. Në këtë nivel është e vështirë të identifikohen lidhjet midis kulmeve individuale, kështu që ia vlen të shikoni imazhe të zmadhuara. Më poshtë janë disa shembuj të seksioneve brenda shtresave të rrjetit nervor.

Pse rrjetet e thella kanë nevojë për kaq shumë memorie?

Sasi të mëdha të memories së zënë janë një nga më probleme të mëdha rrjete të thella nervore. Studiuesit po përpiqen të luftojnë të kufizuarit xhiros Pajisjet DRAM që duhet të përdoren sistemet moderne për të ruajtur një numër të madh peshash dhe aktivizimesh në një rrjet nervor të thellë.

Arkitekturat janë projektuar duke përdorur çipe procesori të dizajnuara për përpunim sekuencial dhe optimizim DRAM për memorie me densitet të lartë. Ndërfaqja midis këtyre dy pajisjeve është një pengesë që paraqet kufizime të gjerësisë së brezit dhe shton shpenzime të konsiderueshme në konsumin e energjisë.

Megjithëse nuk kemi ende një kuptim të plotë të trurit të njeriut dhe mënyrës se si funksionon ai, përgjithësisht kuptohet se nuk ka një depo të madhe të veçantë memorie. Funksioni i kujtesës afatgjatë dhe afatshkurtër në trurin e njeriut besohet të jetë i ngulitur në strukturën e neuroneve + sinapset. Edhe organizmat e thjeshtë si krimbat, me një strukturë të trurit nervor prej pak më shumë se 300 neuronesh, kanë disa funksione memorie.

Ndërtimi i memories në procesorët konvencionalë është një mënyrë për të kapërcyer problemin fyte të ngushta memorie, duke zhbllokuar një gjerësi të madhe brezi me konsum shumë më të ulët të energjisë. Sidoqoftë, memoria në çip është e shtrenjtë dhe nuk është e dizajnuar për sasi vërtet të mëdha të memories që janë bashkangjitur me CPU-të dhe GPU-të që përdoren aktualisht për të trajnuar dhe vendosur rrjete të thella nervore.

Pra, është e dobishme të shikoni se si përdoret memoria sot në CPU-të dhe sistemet e mësimit të thellë të bazuar në GPU dhe të pyesni veten pse u nevojitet një memorie e tillë. pajisje të mëdha ruajtja e kujtesës kur truri i njeriut funksionon mirë pa to?

Rrjetet nervore kanë nevojë për memorie për të ruajtur të dhënat hyrëse, peshat dhe funksionet e aktivizimit ndërsa hyrja përhapet nëpër rrjet. Gjatë mësimit, aktivizimi në hyrje duhet të mbahet derisa të mund të përdoret për të llogaritur gabimet në gradientët e daljes.

Për shembull, një rrjet ResNet me 50 shtresa ka rreth 26 milionë parametra të peshës dhe llogarit 16 milionë aktivizime përpara. Nëse përdorni një notues 32-bit për të ruajtur çdo peshë dhe aktivizim, do të kërkojë rreth 168 MB hapësirë. Duke përdorur më shumë vlerë të ulët saktësinë për të ruajtur këto pesha dhe aktivizime, ne mund ta përgjysmojmë apo edhe katërfishojmë këtë kërkesë për ruajtje.

Një problem i madh i memories lind nga fakti se GPU-të mbështeten në të dhënat e përfaqësuara si vektorë të dendur. Prandaj, ata mund të përdorin një fije udhëzimi të vetëm (SIMD) për të arritur densitet të lartë llogaritës. CPU përdor njësi të ngjashme vektoriale për llogaritje me performancë të lartë.

GPU-të kanë një gjerësi sinapse prej 1024 bit, kështu që ata përdorin të dhëna me pikë lundruese 32-bit, kështu që shpesh i ndajnë ato në mini-grumcë paralele prej 32 mostrash për të krijuar vektorë të të dhënave 1024-bit. Kjo qasje për organizimin e paralelizmit vektorial rrit numrin e aktivizimeve me 32 herë dhe nevojën për ruajtje lokale me një kapacitet prej më shumë se 2 GB.

GPU-të dhe makineritë e tjera të krijuara për algjebër matricore janë gjithashtu subjekt i ngarkesës së memories nga pesha ose aktivizimet e rrjetit nervor. GPU-të nuk mund të kryejnë me efikasitet konvolucionet e vogla të përdorura në rrjetet nervore të thella. Prandaj, një transformim i quajtur "reduktim" përdoret për t'i kthyer këto konvolucione në shumëzime matricë-matricë (GEMM), me të cilat përshpejtuesit grafikë mund të përballojë në mënyrë efektive.

Kërkohet gjithashtu memorie shtesë për të ruajtur të dhënat hyrëse, vlerat e përkohshme dhe udhëzimet e programit. Matja e përdorimit të kujtesës kur stërvitni ResNet-50 në HPC GPU tregoi se kërkon më shumë se 7,5 GB DRAM lokale.

Disa mund të mendojnë se saktësia më e ulët llogaritëse mund të zvogëlojë sasinë e memories së kërkuar, por nuk është kështu. Duke kaluar vlerat e të dhënave në gjysmën e saktësisë për peshat dhe aktivizimet, ju do të mbushni vetëm gjysmën e gjerësisë së vektorit SIMD, duke humbur gjysmën e burimeve llogaritëse të disponueshme. Për të kompensuar këtë, kur kaloni nga saktësia e plotë në gjysmën e saktësisë në GPU, atëherë do t'ju duhet të dyfishoni madhësinë e mini-batch-it për të detyruar paralelizmin e mjaftueshëm të të dhënave për të përdorur të gjithë llogaritjen e disponueshme. Kështu, kalimi në pesha dhe aktivizime me saktësi më të ulët në GPU kërkon ende më shumë se 7,5 GB memorie dinamike me qasje të lirë.

Me të tilla sasi e madhe të dhënat që duhen ruajtur, është thjesht e pamundur t'i vendosni të gjitha në GPU. Çdo shtresë e rrjetit nervor konvolucional duhet të ruajë gjendjen e DRAM-it të jashtëm, të ngarkojë shtresën tjetër të rrjetit dhe më pas të ngarkojë të dhënat në sistem. Si rezultat, ndërfaqja tashmë është e kufizuar nga gjerësia e brezit dhe vonesa e kujtesës. memorie të jashtme vuan nga një ngarkesë shtesë rindezje e vazhdueshme peshat, dhe ruajtjen dhe marrjen e funksioneve të aktivizimit. Kjo ngadalëson ndjeshëm kohën e stërvitjes dhe rrit ndjeshëm konsumin e energjisë.

Ka disa mënyra për të zgjidhur këtë problem. Së pari, operacione të tilla si funksionet e aktivizimit mund të kryhen "në vend", duke lejuar që të dhënat hyrëse të rishkruhen direkt në dalje. Kështu, memorie ekzistuese mund të ripërdoret. Së dyti, mundësia për ripërdorim memoria mund të merret duke analizuar varësinë e të dhënave ndërmjet operacioneve në rrjet dhe shpërndarjen e së njëjtës memorie për operacionet që nuk e përdorin atë në atë moment.

Qasja e dytë është veçanërisht efektive kur i gjithë rrjeti nervor mund të analizohet në kohën e kompilimit për të krijuar një memorie të caktuar fikse, pasi shpenzimet e menaxhimit të memories reduktohen pothuajse në zero. Doli se kombinimi i këtyre metodave mund të zvogëlojë përdorimin e kujtesës së një rrjeti nervor me dy deri në tre herë.
Një qasje e tretë e rëndësishme u zbulua kohët e fundit nga ekipi Baidu Deep Speech. Ata aplikuan metoda të ndryshme duke kursyer kujtesën për të marrë një reduktim 16 herë në konsumin e memories së funksioneve të aktivizimit, gjë që i lejoi ata të trajnojnë rrjetet me 100 shtresa. Më parë, me të njëjtën sasi memorie, ata mund të trajnonin rrjetet me nëntë shtresa.

Kombinimi i memories dhe burimeve të përpunimit në një pajisje të vetme ka potencial të konsiderueshëm për të përmirësuar performancën dhe efikasitetin e rrjeteve nervore konvolucionale, si dhe forma të tjera të mësimit të makinerive. Mund të bëhen shkëmbime ndërmjet memories dhe burimeve llogaritëse për të arritur një ekuilibër të veçorive dhe performancës në sistem.

Rrjetet nervore dhe modelet e njohurive në metodat e tjera të mësimit të makinerive mund të mendohen si grafikë matematikorë. Ka një sasi të madhe paralelizmi të përqendruar në këta grafikë. Një procesor paralel i krijuar për të shfrytëzuar paralelizmin në grafikë nuk mbështetet në mini-batch dhe mund të zvogëlojë ndjeshëm sasinë e kërkuar të ruajtjes lokale.

Rezultatet aktuale të hulumtimit kanë treguar se të gjitha këto metoda mund të përmirësojnë ndjeshëm performancën e rrjeteve nervore. GPU-të dhe CPU-të moderne kanë memorie shumë të kufizuar në bord, vetëm disa megabajt në total. Arkitekturat e reja të procesorit të krijuara posaçërisht për të mësuarit e makinerive balancojnë kujtesën dhe llogaritjen në çip, duke ofruar përmirësime të rëndësishme të performancës dhe efikasitetit mbi teknologjitë aktuale. procesorë qendrorë dhe përshpejtuesit grafikë.

Sot, një grafik është një nga mënyrat më të pranueshme për të përshkruar modelet e krijuara në një sistem të mësimit të makinerive. Këta grafikë llogaritës përbëhen nga kulme neuronesh të lidhura nga skajet e sinapsës që përshkruajnë lidhjet midis kulmeve.

Ndryshe nga një procesor grafik qendror ose vektorial skalar, një IPU, një lloj i ri procesori i krijuar për mësimin e makinerive, lejon ndërtimin e grafikëve të tillë. Një kompjuter i krijuar për të manipuluar grafikët është një makinë ideale për llogaritjen e modeleve të grafikëve të krijuar përmes mësimit të makinerive.

Një nga mënyrat më të lehta për të përshkruar procesin e inteligjencës së makinës është ta vizualizoni atë. Ekipi i zhvillimit të Graphcore ka krijuar një koleksion imazhesh të tilla që shfaqen në IPU. Ai bazohet në softuerin Poplar, i cili vizualizon punën e inteligjencës artificiale. Studiuesit nga kjo kompani zbuluan gjithashtu pse rrjetet e thella kërkojnë kaq shumë memorie dhe cilat zgjidhje ekzistojnë për të zgjidhur problemin.

Poplar përfshin një përpilues grafik që u ndërtua nga themeli për të përkthyer operacionet standarde të mësimit të makinerive në kodin e aplikacionit IPU shumë të optimizuar. Kjo ju lejon të mbledhni këto grafikë së bashku duke përdorur të njëjtin parim si mblidhen POPNN-të. Biblioteka përmban një grup të llojeve të ndryshme të kulmeve për primitivët e përgjithësuar.

Grafikët janë paradigma mbi të cilën bazohet i gjithë softueri. Në Poplar, grafikët ju lejojnë të përcaktoni një proces llogaritjeje, ku kulmet kryejnë operacione dhe skajet përshkruajnë marrëdhënien midis tyre. Për shembull, nëse doni të shtoni dy numra së bashku, mund të përcaktoni një kulm me dy hyrje (numrat që dëshironi të shtoni), disa llogaritje (një funksion për të shtuar dy numra) dhe një dalje (rezultati).

Në mënyrë tipike, operacionet me kulme janë shumë më komplekse sesa në shembullin e përshkruar më sipër. Ato shpesh përcaktohen nga programe të vogla të quajtura kodelet (emrat e kodeve). Abstraksioni grafik është tërheqës sepse nuk bën supozime për strukturën e llogaritjes dhe e zbërthen llogaritjen në komponentë që IPU mund t'i përdorë për të operuar.

Poplar përdor këtë abstraksion të thjeshtë për të ndërtuar grafikë shumë të mëdhenj që përfaqësohen si imazhe. Gjenerimi i softuerit të grafikut do të thotë se ne mund ta përshtatim atë me llogaritjet specifike të nevojshme për të siguruar përdorimin më efikas të burimeve të IPU.

Përpiluesi i përkthen operacionet standarde të përdorura në sistemet e mësimit të makinerive në kodin e aplikacionit shumë të optimizuar për IPU. Përpiluesi i grafikut krijon një imazh të ndërmjetëm të grafikut llogaritës, i cili vendoset në një ose më shumë pajisje IPU. Përpiluesi mund të shfaqë këtë grafik llogaritës, kështu që një aplikacion i shkruar në nivelin e kornizës së rrjetit nervor shfaq një imazh të grafikut llogaritës që funksionon në IPU.


Grafiku i ciklit të plotë të trajnimit AlexNet në drejtimet përpara dhe prapa

Përpiluesi i grafikëve Poplar e ktheu përshkrimin AlexNet në një grafik llogaritës prej 18.7 milion kulmesh dhe 115.8 milion skajesh. Grumbullimi i dukshëm i qartë është rezultat i komunikimit të fortë midis proceseve në secilën shtresë të rrjetit, me komunikim më të lehtë midis shtresave.

Një shembull tjetër është një rrjet i thjeshtë i lidhur plotësisht i trajnuar në MNIST, një grup i thjeshtë vizionesh kompjuterike, një lloj "Përshëndetje, botë" në mësimin e makinerive. Një rrjet i thjeshtë për të eksploruar këtë grup të dhënash ndihmon për të kuptuar grafikët e drejtuar nga aplikacionet Poplar. Duke integruar bibliotekat e grafikëve me korniza të tilla si TensorFlow, kompania ofron një nga mënyrat më të thjeshta për të përdorur IPU-të në aplikacionet e mësimit të makinerive.

Pasi grafiku të jetë ndërtuar duke përdorur përpiluesin, ai duhet të ekzekutohet. Kjo është e mundur duke përdorur Graph Engine. Shembulli i ResNet-50 tregon funksionimin e tij.


Grafiku ResNet-50

Arkitektura ResNet-50 lejon krijimin e rrjeteve të thella nga ndarjet e përsëritura. Procesori duhet t'i përcaktojë këto seksione vetëm një herë dhe t'i thërrasë përsëri. Për shembull, grupi i nivelit conv4 ekzekutohet gjashtë herë, por vihet në hartë vetëm një herë në grafik. Imazhi gjithashtu demonstron shumëllojshmërinë e formave të shtresave konvolucionale, pasi secila prej tyre ka një grafik të ndërtuar sipas një forme natyrore llogaritjeje.

Motori krijon dhe menaxhon ekzekutimin e një modeli të mësimit të makinës duke përdorur një grafik të krijuar nga përpiluesi. Pasi të vendoset, Graph Engine monitoron dhe u përgjigjet IPU-ve, ose pajisjeve, të përdorura nga aplikacionet.

Imazhi ResNet-50 tregon të gjithë modelin. Në këtë nivel është e vështirë të identifikohen lidhjet midis kulmeve individuale, kështu që ia vlen të shikoni imazhe të zmadhuara. Më poshtë janë disa shembuj të seksioneve brenda shtresave të rrjetit nervor.

Pse rrjetet e thella kanë nevojë për kaq shumë memorie?

Gjurmët e mëdha të memories janë një nga sfidat më të mëdha të rrjeteve të thella nervore. Studiuesit po përpiqen të luftojnë gjerësinë e kufizuar të brezit të pajisjeve DRAM, të cilat sistemet moderne duhet të përdorin për të ruajtur një numër të madh peshash dhe aktivizimesh në një rrjet të thellë nervor.

Arkitekturat janë projektuar duke përdorur çipe procesori të dizajnuara për përpunim sekuencial dhe optimizim DRAM për memorie me densitet të lartë. Ndërfaqja midis këtyre dy pajisjeve është një pengesë që paraqet kufizime të gjerësisë së brezit dhe shton shpenzime të konsiderueshme në konsumin e energjisë.

Megjithëse nuk kemi ende një kuptim të plotë të trurit të njeriut dhe mënyrës se si funksionon ai, përgjithësisht kuptohet se nuk ka një depo të madhe memorie të veçantë. Funksioni i kujtesës afatgjatë dhe afatshkurtër në trurin e njeriut besohet të jetë i ngulitur në strukturën e neuroneve + sinapset. Edhe organizmat e thjeshtë si krimbat, me një strukturë të trurit nervor prej pak më shumë se 300 neuronesh, kanë një shkallë të caktuar të funksionit të kujtesës.

Ndërtimi i memories në procesorë konvencionalë është një mënyrë për të anashkaluar problemin e bllokimit të kujtesës, duke zhbllokuar një gjerësi bande të madhe ndërsa konsumon shumë më pak energji. Megjithatë, memoria në çip është e shtrenjtë dhe nuk është e dizajnuar për sasi vërtet të mëdha të memories që janë bashkangjitur me CPU-të dhe GPU-të që përdoren aktualisht për të trajnuar dhe vendosur rrjete të thella nervore.

Pra, është e dobishme të shikoni se si përdoret memoria sot në CPU dhe sistemet e të mësuarit të thellë të bazuara në GPU dhe pyesni veten: pse ata kërkojnë pajisje kaq të mëdha ruajtjeje memorie kur truri i njeriut funksionon mirë pa to?

Rrjetet nervore kanë nevojë për memorie për të ruajtur të dhënat hyrëse, peshat dhe funksionet e aktivizimit ndërsa hyrja përhapet nëpër rrjet. Gjatë mësimit, aktivizimi në hyrje duhet të mbahet derisa të mund të përdoret për të llogaritur gabimet në gradientët e daljes.

Për shembull, një rrjet ResNet me 50 shtresa ka rreth 26 milionë parametra të peshës dhe llogarit 16 milionë aktivizime përpara. Nëse përdorni një notues 32-bit për të ruajtur çdo peshë dhe aktivizim, do të kërkojë rreth 168 MB hapësirë. Duke përdorur një vlerë më të ulët të saktësisë për të ruajtur këto pesha dhe aktivizime, ne mund ta përgjysmojmë apo edhe katërfishojmë këtë kërkesë ruajtjeje.

Një problem i madh i memories lind nga fakti se GPU-të mbështeten në të dhënat e përfaqësuara si vektorë të dendur. Prandaj, ata mund të përdorin një fije udhëzimi të vetëm (SIMD) për të arritur densitet të lartë llogaritës. CPU përdor njësi të ngjashme vektoriale për llogaritje me performancë të lartë.

GPU-të kanë një gjerësi sinapse prej 1024 bit, kështu që ata përdorin të dhëna me pikë lundruese 32-bit, kështu që shpesh i ndajnë ato në mini-grumcë paralele prej 32 mostrash për të krijuar vektorë të të dhënave 1024-bit. Kjo qasje ndaj paralelizmit të vektorit rrit numrin e aktivizimeve me 32 herë dhe nevojën për ruajtje lokale me një kapacitet prej më shumë se 2 GB.

GPU-të dhe makineritë e tjera të krijuara për algjebër matricore janë gjithashtu subjekt i ngarkesës së memories nga pesha ose aktivizimet e rrjetit nervor. GPU-të nuk mund të kryejnë me efikasitet konvolucionet e vogla të përdorura në rrjetet nervore të thella. Prandaj, një transformim i quajtur "reduktim" përdoret për të kthyer këto konvolucione në shumëzime matrice-matrice (GEMM), të cilat GPU-të mund t'i trajtojnë në mënyrë efikase.

Kërkohet gjithashtu memorie shtesë për të ruajtur të dhënat hyrëse, vlerat e përkohshme dhe udhëzimet e programit. Matja e përdorimit të memories gjatë stërvitjes së ResNet-50 në një GPU të nivelit të lartë tregoi se kërkonte më shumë se 7,5 GB DRAM lokale.

Disa mund të mendojnë se saktësia më e ulët llogaritëse mund të zvogëlojë sasinë e memories së kërkuar, por nuk është kështu. Duke kaluar vlerat e të dhënave në gjysmën e saktësisë për peshat dhe aktivizimet, ju do të mbushni vetëm gjysmën e gjerësisë së vektorit SIMD, duke humbur gjysmën e burimeve llogaritëse të disponueshme. Për të kompensuar këtë, kur kaloni nga saktësia e plotë në gjysmën e saktësisë në GPU, atëherë do t'ju duhet të dyfishoni madhësinë e mini-batch-it për të detyruar paralelizmin e mjaftueshëm të të dhënave për të përdorur të gjithë llogaritjen e disponueshme. Kështu, kalimi në pesha dhe aktivizime me saktësi më të ulët në GPU kërkon ende më shumë se 7,5 GB memorie dinamike me qasje të lirë.

Me kaq shumë të dhëna për të ruajtur, është thjesht e pamundur t'i vendosni të gjitha në një GPU. Çdo shtresë e rrjetit nervor konvolucional duhet të ruajë gjendjen e DRAM-it të jashtëm, të ngarkojë shtresën tjetër të rrjetit dhe më pas të ngarkojë të dhënat në sistem. Si rezultat, ndërfaqja e memories së jashtme tashmë e kufizuar me gjerësi bande vuan nga barra shtesë e ringarkimit të vazhdueshëm të peshores dhe ruajtjes dhe marrjes së funksioneve të aktivizimit. Kjo ngadalëson ndjeshëm kohën e stërvitjes dhe rrit ndjeshëm konsumin e energjisë.

Ka disa mënyra për të zgjidhur këtë problem. Së pari, operacione të tilla si funksionet e aktivizimit mund të kryhen "në vend", duke lejuar që të dhënat hyrëse të rishkruhen direkt në dalje. Në këtë mënyrë kujtesa ekzistuese mund të ripërdoret. Së dyti, mundësia për ripërdorimin e memories mund të merret duke analizuar varësinë e të dhënave midis operacioneve në rrjet dhe shpërndarjen e së njëjtës memorie për operacionet që aktualisht nuk e përdorin atë.

Qasja e dytë është veçanërisht efektive kur i gjithë rrjeti nervor mund të analizohet në kohën e kompilimit për të krijuar një memorie të caktuar fikse, pasi shpenzimet e menaxhimit të memories reduktohen pothuajse në zero. Doli se kombinimi i këtyre metodave mund të zvogëlojë përdorimin e kujtesës së një rrjeti nervor me dy deri në tre herë.
Një qasje e tretë e rëndësishme u zbulua kohët e fundit nga ekipi Baidu Deep Speech. Ata aplikuan teknika të ndryshme të kursimit të kujtesës për të arritur një reduktim 16-fish në konsumin e memories së funksioneve të aktivizimit, duke i lejuar ata të trajnojnë rrjetet me 100 shtresa. Më parë, me të njëjtën sasi memorie, ata mund të trajnonin rrjetet me nëntë shtresa.

Kombinimi i memories dhe burimeve të përpunimit në një pajisje të vetme ka potencial të konsiderueshëm për të përmirësuar performancën dhe efikasitetin e rrjeteve nervore konvolucionale, si dhe forma të tjera të mësimit të makinerive. Mund të bëhen shkëmbime ndërmjet memories dhe burimeve llogaritëse për të arritur një ekuilibër të veçorive dhe performancës në sistem.

Rrjetet nervore dhe modelet e njohurive në metodat e tjera të mësimit të makinerive mund të mendohen si grafikë matematikorë. Ka një sasi të madhe paralelizmi të përqendruar në këta grafikë. Një procesor paralel i krijuar për të shfrytëzuar paralelizmin në grafikë nuk mbështetet në mini-batch dhe mund të zvogëlojë ndjeshëm sasinë e kërkuar të ruajtjes lokale.

Rezultatet aktuale të hulumtimit kanë treguar se të gjitha këto metoda mund të përmirësojnë ndjeshëm performancën e rrjeteve nervore. GPU-të dhe CPU-të moderne kanë memorie shumë të kufizuar në bord, vetëm disa megabajt në total. Arkitekturat e reja të procesorit të krijuara posaçërisht për të mësuarit e makinerive balancojnë kujtesën dhe llogaritjen në çip, duke ofruar përmirësime të rëndësishme të performancës dhe efikasitetit në krahasim me CPU-të dhe GPU-të e sotme.

Çfarë është të mësuarit e thellë? 3 mars 2016

Në ditët e sotme ata flasin për teknologjitë në modë të të mësuarit të thellë sikur të ishte mana nga parajsa. Por a e kuptojnë folësit se çfarë është në të vërtetë? Por kjo nuk ka asnjë koncept përkufizimi formal, dhe kombinon një grumbull të tërë teknologjish. Në këtë postim dua të shpjegoj sa më gjerësisht dhe në thelb se çfarë qëndron pas këtij termi, pse është kaq popullor dhe çfarë na japin këto teknologji.


Shkurt, kjo term i ri(të mësuarit e thellë) se si të mblidhni një abstraksion (përfaqësim) më kompleks dhe më të thellë nga disa abstraksione të thjeshta pavarësisht se edhe abstraksionet më të thjeshta duhet të grumbullohen nga vetë kompjuteri, dhe jo nga një person. ato. Nuk ka të bëjë më vetëm me të mësuarit, por me meta-mësimin. Në mënyrë figurative, vetë kompjuteri duhet të mësojë se si të mësojë më mirë. Dhe, në fakt, kjo është pikërisht ajo që nënkupton termi "thellë". Pothuajse gjithmonë, ky term zbatohet për rrjetet nervore artificiale që përdorin më shumë se një shtresë të fshehur, kështu që zyrtarisht "thellë" nënkupton gjithashtu një arkitekturë më të thellë të rrjetit nervor.

Këtu në rrëshqitjen e zhvillimit mund të shihni qartë se sa ndryshon të mësuarit e thellë nga të mësuarit e zakonshëm. E përsëris, Ajo që është unike për të mësuarit e thellë është se makina i gjen vetë veçoritë(tiparet kryesore të diçkaje me të cilat është më e lehtë të ndash një klasë objektesh nga një tjetër) dhe i strukturon këto shenja në mënyrë hierarkike: ato më të thjeshtat kombinohen në më komplekse. Më poshtë do ta shikojmë këtë me një shembull.

Le të shohim një shembull të një detyre për njohjen e imazhit: më parë, ata futën një të madhe në një rrjet nervor të rregullt me ​​një shtresë (1024×768 - rreth 800,000 vlerat numerike) fotoja dhe shikoi kompjuterin të vdesë ngadalë, duke u mbytur nga mungesa e kujtesës dhe pamundësia për të kuptuar se cilët pikselë janë të rëndësishëm për njohjen dhe cilët jo. Për të mos përmendur efektivitetin e kësaj metode. Këtu është arkitektura e një rrjeti nervor kaq të rregullt (të cekët).

Pastaj ata dëgjuan se si truri i dallon tiparet, dhe ai e bën këtë në një mënyrë strikte hierarkike, dhe ata gjithashtu vendosën të nxjerrin një strukturë hierarkike nga fotografitë. Për ta bërë këtë, ishte e nevojshme të shtoheshin më shumë shtresa të fshehura (shtresa që ndodhen midis hyrjes dhe daljes; përafërsisht, fazat e transformimit të informacionit) në rrjetin nervor. Edhe pse ata vendosën ta bënin këtë pothuajse menjëherë kur u shpikën neuronet, atëherë rrjetet me vetëm një shtresë të fshehur u trajnuan me sukses. ato. Në parim, rrjetet e thella kanë ekzistuar për aq kohë sa ato të rregullta, thjesht nuk mund t'i trajnonim. Çfarë ka ndryshuar?

Në vitin 2006, disa studiues të pavarur e zgjidhën këtë problem menjëherë (përveç kësaj, aftësitë e harduerit tashmë ishin zhvilluar mjaftueshëm, u shfaqën karta video mjaft të fuqishme). Këta studiues janë: Geoffrey Hinton (dhe kolegu i tij Ruslan Salakhutidinov) me teknikën e trajnimit paraprak të çdo shtrese të një rrjeti nervor me një makinë Boltzmann të kufizuar (më falni për këto terma...), Yann LeCun me rrjete nervore konvolucioniste, dhe Yoshuay Bengio me autoenkoder të kaskadës. Dy të parët u rekrutuan menjëherë nga Google dhe Facebook, përkatësisht. Këtu janë dy leksione: një - Hinton, tjetri - Lyakuna, në të cilën ata tregojnë se çfarë është të mësuarit e thellë. Askush nuk mund t'ju tregojë për këtë më mirë se ata. Një tjetër i lezetshëm leksion Schmidhuber për zhvillimin e të mësuarit të thellë, gjithashtu një nga shtyllat e kësaj shkence. Dhe Hinton gjithashtu ka një kurs të shkëlqyer në neuronet.

Çfarë mund të bëjnë tani rrjetet e thella nervore? Ata janë në gjendje të njohin dhe përshkruajnë objekte; dikush mund të thotë se "kuptojnë" se çfarë është. Bëhet fjalë për rreth njohjes së kuptimeve.

Thjesht shikoni këtë video të njohjes në kohë reale të asaj që shikon kamera.

Siç thashë tashmë, teknologjitë e të mësuarit të thellë janë një grup i tërë teknologjish dhe zgjidhjesh. Unë kam renditur tashmë disa prej tyre në paragrafin e mësipërm, një shembull tjetër janë rrjetet e përsëritura, të cilat përdoren në videon e mësipërme për të përshkruar atë që sheh rrjeti. Por përfaqësuesi më i njohur i teknologjisë të kësaj klase- këto janë ende rrjete nervore konvolucionare LyaKun. Ato janë ndërtuar në analogji me parimet e funksionimit të korteksit vizual të trurit të maceve, në të cilat u zbuluan të ashtuquajturat qeliza të thjeshta që u përgjigjen linjave të drejta në kënde të ndryshme, dhe qeliza komplekse - reagimi i të cilave shoqërohet me aktivizimin të një grupi të caktuar qelizash të thjeshta. Megjithëse, për të qenë i sinqertë, vetë LaCun nuk ishte i fokusuar në biologji, ai vendosi detyrë specifike(shikoni leksionet e tij), dhe më pas përkoi.

Për ta thënë thjesht, rrjetet konvolucionale janë rrjete ku kryesore element strukturor mësimi është një grup (kombinim) neuronesh (zakonisht një katror 3x3, 10x10, etj.), dhe jo një. Dhe në çdo nivel të rrjetit, dhjetëra grupe të tilla trajnohen. Rrjeti gjen kombinime të neuroneve që maksimizojnë informacionin rreth imazhit. Në nivelin e parë, rrjeti nxjerr elementet më themelore, strukturore të thjeshta të figurës - mund të thuhet, njësi ndërtimi: kufij, goditje, segmente, kontraste. Më lart janë tashmë kombinime të qëndrueshme të elementeve të nivelit të parë, e kështu me radhë deri në zinxhir. Dua të theksoj edhe një herë tipar kryesor mësimi i thellë: vetë rrjetet i formojnë këto elemente dhe vendosin se cilat prej tyre janë më të rëndësishme dhe cilat jo. Kjo është e rëndësishme sepse në fushën e mësimit të makinerive, krijimi i veçorive është kyç dhe tani po kalojmë në fazën kur vetë kompjuteri mëson të krijojë dhe përzgjedhë veçori. Vetë makina identifikon një hierarki të veçorive informative.

Pra, gjatë procesit të të mësuarit (duke parë qindra foto), rrjeti konvolucional formon një hierarki tiparesh të niveleve të ndryshme të thellësisë. Në nivelin e parë, ata mund të nxjerrin në pah, për shembull, elementë të tillë (duke reflektuar kontrastin, këndin, kufirin, etj.).


Në nivelin e dytë, ky do të jetë tashmë një element nga elementët e nivelit të parë. Në të tretën - nga e dyta. Ne duhet ta kuptojmë atë kjo foto- vetëm një demonstrim. Tani në përdorim industrial, rrjete të tilla kanë nga 10 deri në 30 shtresa (nivele).

Pasi të jetë trajnuar një rrjet i tillë, ne mund ta përdorim atë për klasifikim. Duke dhënë një imazh si hyrje, grupet e neuroneve në shtresën e parë kalojnë nëpër imazh, duke u aktivizuar në ato vende ku ka një element të figurës që korrespondon me një element specifik. ato. ky rrjet e analizon fotografinë në pjesë - fillimisht në vija, goditje, kënde të prirjes, pastaj në pjesë më komplekse dhe në fund del në përfundimin se fotografia është nga ky lloj kombinimi. elementet bazë- kjo fytyrë.

Më shumë rreth rrjeteve konvolucionale -

Inteligjenca artificiale, rrjetet nervore, mësimi i makinerive - çfarë nënkuptojnë në të vërtetë të gjitha këto koncepte të njohura aktualisht? Për shumicën e njerëzve të pa iniciuar, siç jam unë vetë, ata gjithmonë dukeshin si diçka fantastike, por në fakt thelbi i tyre qëndron në sipërfaqe. E kam pasur prej kohësh idenë të shkruaj në gjuhë të thjeshtë në lidhje me rrjetet nervore artificiale. Zbuloni vetë dhe tregoni të tjerëve se çfarë është kjo teknologji, si funksionon, merrni parasysh historinë dhe perspektivat e saj. Në këtë artikull, u përpoqa të mos futem në barërat e këqija, por thjesht dhe në mënyrë popullore të flas për këtë drejtim premtues në botën e teknologjisë së lartë.

Inteligjenca artificiale, rrjetet nervore, mësimi i makinerive - çfarë nënkuptojnë në të vërtetë të gjitha këto koncepte të njohura aktualisht? Për shumicën e njerëzve të pa iniciuar, siç jam unë vetë, ata gjithmonë dukeshin si diçka fantastike, por në fakt thelbi i tyre qëndron në sipërfaqe. Prej kohësh kam pasur idenë të shkruaj në gjuhë të thjeshtë për rrjetet nervore artificiale. Zbuloni vetë dhe tregoni të tjerëve se çfarë është kjo teknologji, si funksionon, merrni parasysh historinë dhe perspektivat e saj. Në këtë artikull, u përpoqa të mos futem në barërat e këqija, por thjesht dhe në mënyrë popullore të flas për këtë drejtim premtues në botën e teknologjisë së lartë.

Pak histori

Për herë të parë, koncepti i rrjeteve nervore artificiale (ANN) u ngrit në një përpjekje për të simuluar proceset e trurit. Zbulimi i parë i madh në këtë fushë mund të konsiderohet krijimi i modelit të rrjetit nervor McCulloch-Pitts në 1943. Shkencëtarët kanë zhvilluar për herë të parë një model të një neuroni artificial. Ata propozuan gjithashtu hartimin e një rrjeti të këtyre elementeve për të kryer operacionet logjike. Por më e rëndësishmja, shkencëtarët e kanë vërtetuar këtë rrjet i ngjashëm të aftë për të mësuar.

Tjetra hap i rëndësishëm ishte zhvillimi nga Donald Hebb i algoritmit të parë për llogaritjen e një ANN në 1949, i cili u bë themelor për disa dekada të mëvonshme. Në vitin 1958, Frank Rosenblatt zhvilloi parceptronin, një sistem që imiton proceset e trurit. Në një kohë, teknologjia nuk kishte analoge dhe është ende thelbësore në rrjetet nervore. Në vitin 1986, pothuajse njëkohësisht, pavarësisht nga njëri-tjetri, shkencëtarët amerikanë dhe sovjetikë përmirësuan ndjeshëm metodën themelore të trajnimit të një perceptroni me shumë shtresa. Në vitin 2007, rrjetet nervore përjetuan një rilindje. Shkencëtari britanik i kompjuterave Geoffrey Hinton zhvilloi së pari një algoritëm të të mësuarit të thellë për rrjetet nervore me shumë shtresa, i cili tani, për shembull, përdoret për të operuar makina vetë-drejtuese.

Shkurtimisht për gjënë kryesore

në një kuptim të përgjithshëm fjalët, rrjetet nervore janë modele matematikore, duke punuar në parimin e rrjeteve të qelizave nervore në trupin e një kafshe. ANN-të mund të implementohen si në zgjidhje të programueshme ashtu edhe në ato harduerike. Për t'i bërë gjërat më të lehta për t'u kuptuar, një neuron mund të mendohet si një qelizë që ka shumë vrima hyrëse dhe një vrimë dalëse. Se si formohen sinjale të shumta hyrëse në një sinjal dalës, përcaktohet nga algoritmi i llogaritjes. Vlerat efektive i jepen çdo hyrje neuroni, të cilat më pas shpërndahen përgjatë lidhjeve ndërneurone (sinopse). Sinapset kanë një parametër - peshë, për shkak të së cilës informacioni i hyrjes ndryshon kur lëviz nga një neuron në tjetrin. Mënyra më e lehtë për të imagjinuar parimin e funksionimit të rrjeteve nervore është duke përzier ngjyrat. Neuroni blu, jeshil dhe i kuq kanë pesha të ndryshme. Informacioni i neuronit, pesha e të cilit është më e madhe, do të jetë dominuese në neuronin e ardhshëm.

Vetë rrjeti nervor është një sistem i shumë neuroneve (përpunuesve) të tillë. Individualisht, këta procesorë janë mjaft të thjeshtë (shumë më të thjeshtë se a Kompjuter personal), por duke u lidhur në sistem i madh neuronet janë të afta të kryejnë detyra shumë komplekse.

Në varësi të zonës së aplikimit, një rrjet nervor mund të interpretohet në mënyra të ndryshme. Për shembull, nga pikëpamja e mësimit të makinerive, një ANN është një metodë e njohjes së modelit. Nga pikëpamja matematikore, ky është një problem me shumë parametra. Nga pikëpamja e kibernetikës - një model i kontrollit adaptiv të robotikës. Për inteligjencën artificiale, ANN është një komponent themelor për modelimin e inteligjencës natyrore duke përdorur algoritme llogaritëse.

Avantazhi kryesor i rrjeteve nervore ndaj algoritmeve konvencionale kompjuterike është aftësia e tyre për të mësuar. Në kuptimin e përgjithshëm të fjalës, të mësuarit ka të bëjë me gjetjen e koeficientëve të saktë të bashkimit midis neuroneve, si dhe përmbledhjen e të dhënave dhe identifikimin e varësive komplekse midis sinjaleve hyrëse dhe dalëse. Në fakt, trajnimi i suksesshëm i një rrjeti nervor do të thotë që sistemi do të jetë në gjendje të identifikojë rezultatin e saktë bazuar në të dhënat që nuk janë në grupin e trajnimit.

Gjendja aktuale

Dhe pa marrë parasysh se sa premtuese mund të jetë kjo teknologji, ANN-të janë ende shumë larg nga të qenit e mundur truri i njeriut dhe të menduarit. Megjithatë, rrjetet nervore përdoren tashmë në shumë fusha të veprimtarisë njerëzore. Deri më tani, ata nuk janë në gjendje të marrin vendime shumë inteligjente, por janë në gjendje të zëvendësojnë një person ku ai ishte i nevojshëm më parë. Ndër fushat e shumta të aplikimit të ANN mund të vëmë re: krijimin e sistemeve të vetë-mësimit proceset e prodhimit, pa pilot automjeteve, sistemet e njohjes së imazhit, sistemet inteligjente të sigurisë, robotika, sistemet e monitorimit të cilësisë, ndërfaqet e ndërveprimit zanor, sistemet analitike dhe shumë më tepër. Ky përdorim i gjerë i rrjeteve nervore është, ndër të tjera, për shkak të shfaqjes së në mënyra të ndryshme përshpejtimi i trajnimit ANN.

Sot, tregu për rrjetet nervore është i madh - miliarda dhe miliarda dollarë. Siç tregon praktika, shumica e teknologjive të rrjeteve nervore në mbarë botën ndryshojnë pak nga njëra-tjetra. Megjithatë, përdorimi i rrjeteve nervore është një aktivitet shumë i kushtueshëm, i cili në shumicën e rasteve mund të përballohet vetëm nga kompanitë e mëdha. Zhvillimi, trajnimi dhe testimi i rrjeteve nervore kërkon fuqi të madhe llogaritëse dhe është e qartë se kjo është e disponueshme me bollëk. lojtarët kryesorë në tregun e IT. Ndër kompanitë kryesore që udhëheqin zhvillimet në këtë fushë janë divizioni i Google DeepMind, divizioni i Microsoft Research, IBM, Facebook dhe Baidu.

Sigurisht, e gjithë kjo është e mirë: rrjetet nervore po zhvillohen, tregu po rritet, por deri më tani detyra kryesore ende i pazgjidhur. Njerëzimi ka dështuar të krijojë një teknologji që i afrohet as aftësive të trurit të njeriut. Le të shohim ndryshimet kryesore midis trurit të njeriut dhe rrjeteve nervore artificiale.

Pse rrjetet nervore janë ende larg trurit të njeriut?

Dallimi më i rëndësishëm, i cili ndryshon rrënjësisht parimin dhe efikasitetin e sistemit, është pajisje të ndryshme sinjalet në rrjetet nervore artificiale dhe në një rrjet biologjik neuronesh. Fakti është se në një ANN neuronet transmetojnë vlera që janë vlerat reale, pra numrat. Në trurin e njeriut, impulset transmetohen me një amplitudë fikse dhe këto impulse janë pothuajse të menjëhershme. Kjo çon në një numër avantazhesh të rrjetit njerëzor të neuroneve.

Së pari, linjat e komunikimit në tru janë shumë më efikase dhe ekonomike se ato në ANN. Së dyti, qark pulsi siguron thjeshtësinë e zbatimit të teknologjisë: mjafton të përdoren qarqe analoge në vend të mekanizmave komplekse llogaritëse. Në fund të fundit, rrjetet pulsuese janë imune ndaj ndërhyrjeve audio. Numrat realë i nënshtrohen zhurmës, gjë që rrit gjasat e gabimeve.

Fundi

Sigurisht, në dekadën e fundit ka pasur një bum të vërtetë në zhvillimin e rrjeteve nervore. Kjo është kryesisht për shkak të faktit se procesi i trajnimit ANN është bërë shumë më i shpejtë dhe më i lehtë. Të ashtuquajturat rrjete nervore "të para-trajnuara" gjithashtu kanë filluar të zhvillohen në mënyrë aktive, të cilat mund të përshpejtojnë ndjeshëm procesin e prezantimit të teknologjisë. Dhe nëse është shumë herët të thuhet nëse rrjetet nervore një ditë do të jenë në gjendje të riprodhojnë plotësisht aftësitë e trurit të njeriut, gjasat që në dekadën e ardhshme ANN-të të jenë në gjendje të zëvendësojnë njerëzit në një të katërtën e profesioneve ekzistuese po bëhen gjithnjë e më të vërteta. .

Për ata që duan të dinë më shumë

  • Lufta e Madhe Neurale: Çfarë po bën vërtet Google
  • Si kompjuterët njohës mund të ndryshojnë të ardhmen tonë

Artikujt më të mirë mbi këtë temë