Kuunda mitandao ya neva kutoka mwanzo. Tunasoma mitandao ya neva katika hatua nne. Vidokezo na orodha ya marejeleo kwa usomaji zaidi

Ujuzi wangu na mitandao ya neural ulitokea wakati ulipotoka Programu ya Prisma. Huchakata picha yoyote kwa kutumia mitandao ya neva na kuizalisha kutoka mwanzo kwa kutumia mtindo uliochaguliwa. Baada ya kupendezwa na hili, niliharakisha kutafuta makala na “mafunzo,” hasa kuhusu Habré. Na kwa mshangao wangu mkubwa, sikupata nakala moja ambayo kwa uwazi na hatua kwa hatua ilielezea algorithm ya uendeshaji wa mitandao ya neural. Taarifa zilitawanyika na kukosa pointi muhimu. Pia, waandishi wengi hukimbilia kuonyesha msimbo katika lugha moja ya programu au nyingine bila kutumia maelezo ya kina.

P Ugunduzi wangu wa kwanza na muhimu zaidi ulikuwa orodha ya kucheza ya programu ya Amerika Jeff Heaton, ambayo anaelezea kwa undani na kwa uwazi kanuni za uendeshaji wa mitandao ya neural na uainishaji wao. Baada ya kutazama orodha hii ya kucheza, niliamua kuunda mtandao wangu wa neva, kuanzia na sana mfano rahisi. Pengine unajua kwamba unapoanza tu kufundisha lugha mpya, programu yako ya kwanza itakuwa Hello World. Ni aina ya mila. Katika dunia kujifunza mashine pia ina ulimwengu wake wa Hello na huu ni mtandao wa neva kutatua tatizo kipekee au (XOR). Jedwali la XOR linaonekana kama hii:

Ipasavyo, mtandao wa neva huchukua nambari mbili kama pembejeo na lazima itoe nambari nyingine - jibu. Sasa kuhusu mitandao ya neural yenyewe.

Mtandao wa neva ni nini?

Mtandao wa neva ni mlolongo wa niuroni zilizounganishwa na sinepsi. Muundo wa mtandao wa neva ulikuja kwenye ulimwengu wa programu moja kwa moja kutoka kwa biolojia. Shukrani kwa muundo huu, mashine hupata uwezo wa kuchambua na hata kukumbuka habari mbalimbali. Mitandao ya Neural pia ina uwezo wa sio tu kuchambua habari zinazoingia, lakini pia kuizalisha kutoka kwa kumbukumbu zao. Kwa wale wanaovutiwa, hakikisha kutazama video 2 kutoka TED Talks:Video 1 , Video 2 ) Kwa maneno mengine, mtandao wa neva ni tafsiri ya mashine ya ubongo wa binadamu, ambayo ina mamilioni ya neurons zinazopeleka habari kwa namna ya msukumo wa umeme.

Kuna nini mitandao ya neva?

Kwa sasa, tutazingatia mifano katika hali halisi aina ya msingi mitandao ya neural - huu ni mtandao wa usambazaji-mbele (hapa unajulikana kama DPR). Pia katika makala zinazofuata nitatambulisha dhana zaidi na kukuambia juu ya mitandao ya kawaida ya neva. SPR, kama jina linamaanisha, ni mtandao wenye muunganisho unaofuatana wa tabaka za neva, ambamo habari hutiririka katika mwelekeo mmoja tu.

Mitandao ya neva ni ya nini?

Mitandao ya neva hutumiwa kutatua matatizo changamano ambayo yanahitaji mahesabu ya uchanganuzi sawa na yale ambayo ubongo wa binadamu hufanya. Matumizi ya kawaida ya mitandao ya neva ni:

Uainishaji - usambazaji wa data kwa vigezo. Kwa mfano, unapewa seti ya watu kama pembejeo na unahitaji kuamua ni nani kati yao wa kumpa sifa na yupi sio. Kazi hii inaweza kufanywa na mtandao wa neva, kuchanganua maelezo kama vile umri, muda, historia ya mikopo, n.k.

Utabiri - uwezo wa kutabiri hatua inayofuata. Kwa mfano, kupanda au kushuka kwa hisa kulingana na hali katika soko la hisa.

Utambuzi - Hivi sasa, matumizi yaliyoenea zaidi ya mitandao ya neva. Hutumika katika Google unapotafuta picha au katika kamera za simu inapotambua mahali pa uso wako na kuiangazia na mengine mengi.

Sasa, ili kuelewa jinsi mitandao ya neural inavyofanya kazi, hebu tuangalie vipengele vyake na vigezo vyake.

Niuroni ni nini?

Neuroni ni kitengo cha hesabu ambacho hupokea habari na kutoa juu yake mahesabu rahisi na kuipitisha. Wamegawanywa katika aina tatu kuu: pembejeo (bluu), iliyofichwa (nyekundu) na pato (kijani). Pia kuna neuroni ya kuhama na neuroni ya muktadha, ambayo tutazungumza juu yake katika makala inayofuata. Katika kesi wakati mtandao wa neural una idadi kubwa ya neurons, safu ya neno huletwa. Ipasavyo, kuna safu ya pembejeo inayopokea habari, n tabaka zilizofichwa (kawaida sio zaidi ya 3) zinazoichakata, na safu ya pato inayotoa matokeo. Kila neuroni ina vigezo 2 kuu: data ya ingizo na data ya pato. Kwa upande wa neuroni ya ingizo: input=output. Katika sehemu nyingine, uga wa ingizo una taarifa ya jumla ya niuroni zote kutoka safu ya awali, na kisha inasawazishwa kwa kutumia chaguo la kuamilisha (kwa sasa hebu tuifikirie kama f(x)) na kuishia kwenye uga wa pato.

Muhimu kukumbuka kwamba niuroni hufanya kazi na nambari katika safu au [-1,1]. Lakini jinsi gani, unauliza, kisha kuchakata nambari ambazo ziko nje ya safu hii? Washa katika hatua hii, jibu rahisi zaidi ni kugawanya 1 kwa nambari hiyo. Utaratibu huu unaitwa kuhalalisha na hutumiwa mara nyingi sana katika mitandao ya neva. Zaidi juu ya hili baadaye kidogo.

Sinapsi ni nini?

Sinapsi ni muunganisho kati ya niuroni mbili. Synapses zina parameter 1 - uzito. Shukrani kwake, habari ya uingizaji hubadilika inapopitishwa kutoka neuroni moja hadi nyingine. Wacha tuseme kuna niuroni 3 zinazosambaza habari kwa inayofuata. Kisha tuna uzani 3 unaolingana na kila moja ya niuroni hizi. Kwa neuroni ambayo uzito wake ni mkubwa zaidi, habari hiyo itatawala katika neuroni inayofuata (kwa mfano, kuchanganya rangi). Kwa kweli, seti ya uzani wa mtandao wa neva au tumbo la uzani ni aina ya ubongo wa mfumo mzima. Ni kutokana na uzito huu kwamba taarifa ya pembejeo inasindika na kugeuka kuwa matokeo.

Muhimu kukumbuka , kwamba wakati wa kuanzishwa kwa mtandao wa neva, uzani huwekwa kwa mpangilio wa nasibu.

Mtandao wa neva hufanyaje kazi?

KATIKA katika mfano huu inaonyesha sehemu ya mtandao wa neva, ambapo herufi Ninazoashiria niuroni za pembejeo, herufi H inaashiria niuroni iliyofichwa, na herufi w inaashiria uzani. Fomula inaonyesha kuwa maelezo ya ingizo ni jumla ya data yote ya ingizo inayozidishwa na uzani unaolingana. Kisha tutatoa 1 na 0 kama ingizo Wacha w1=0.4 na w2 = 0.7 Data ya ingizo ya neuron H1 itakuwa kama ifuatavyo: 1*0.4+0*0.7=0.4. Sasa kwa kuwa tuna ingizo, tunaweza kupata pato kwa kuchomeka ingizo kwenye kitendakazi cha kuwezesha (zaidi juu ya hilo baadaye). Sasa kwa kuwa tuna pato, tunapitisha. Na hivyo, tunarudia kwa tabaka zote mpaka tufikie neuron ya pato. Baada ya kuzindua mtandao kama huo kwa mara ya kwanza, tutaona kuwa jibu sio sahihi, kwa sababu mtandao haujafunzwa. Ili kuboresha matokeo tutamfundisha. Lakini kabla ya kujifunza jinsi ya kufanya hivyo, hebu tujulishe masharti machache na sifa za mtandao wa neva.

Kitendaji cha uanzishaji

Kazi ya kuwezesha ni njia ya kurekebisha data ya pembejeo (tulizungumza juu ya hili mapema). Hiyo ni, ikiwa kwenye mlango unao idadi kubwa Kwa kuipitisha kupitia kitendakazi cha kuwezesha, utapata pato katika masafa unayohitaji. Kuna vitendaji vingi vya kuwezesha, kwa hivyo tutazingatia zile za msingi zaidi: Linear, Sigmoid (Logistic) na Hyperbolic tangent. Tofauti zao kuu ni anuwai ya maadili.

Utendakazi wa mstari

Chaguo hili la kukokotoa halitumiki kamwe, isipokuwa unapohitaji kujaribu mtandao wa neva au kupitisha thamani bila ubadilishaji.

Sigmoid

Hiki ndicho kitendakazi cha kawaida cha kuwezesha na anuwai ya maadili ni . Hapa ndipo mifano mingi kwenye wavuti inaonyeshwa, na pia wakati mwingine huitwa kazi ya vifaa. Ipasavyo, ikiwa katika kesi yako kuna maadili hasi (kwa mfano, hisa zinaweza kwenda sio tu juu, lakini pia chini), basi utahitaji kazi ambayo pia inachukua maadili hasi.

Tanjenti ya hyperbolic

Inaeleweka tu kutumia tanjiti ya hyperbolic wakati maadili yako yanaweza kuwa hasi na chanya, kwani masafa ya chaguo za kukokotoa ni [-1,1]. Haipendekezi kutumia kitendakazi hiki tu na maadili chanya kwani hii itazidisha sana matokeo ya mtandao wako wa neva.

Seti ya mafunzo

Seti ya mafunzo ni mlolongo wa data ambayo mtandao wa neva hufanya kazi. Katika kesi yetu ya kuondoa au (xor), tuna matokeo 4 tu tofauti, ambayo ni, tutakuwa na seti 4 za mafunzo: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.

Kurudia

Hii ni aina ya kaunta ambayo huongezeka kila wakati mtandao wa neva unapopitia seti moja ya mafunzo. Kwa maneno mengine, hii ni jumla ya idadi ya seti za mafunzo zilizokamilishwa na mtandao wa neva.

zama

Wakati mtandao wa neva unapoanzishwa, thamani hii imewekwa kuwa 0 na ina dari iliyowekwa kwa mikono. Kadiri enzi inavyokuwa kubwa, ndivyo mtandao ulivyofunza mtandao na, ipasavyo, matokeo yake. Enzi huongezeka kila tunapopitia seti nzima ya seti za mafunzo, kwa upande wetu, seti 4 au marudio 4.

Muhimu usichanganye kurudia na epoch na kuelewa mlolongo wa ongezeko lao. Kwanza nmara iteration inapoongezeka, na kisha enzi na sio kinyume chake. Kwa maneno mengine, huwezi kwanza kutoa mafunzo kwa mtandao wa neural kwenye seti moja tu, kisha kwa nyingine, na kadhalika. Unahitaji kutoa mafunzo kwa kila seti mara moja kwa kila enzi. Kwa njia hii, unaweza kuepuka makosa katika mahesabu.

Hitilafu

Hitilafu ni asilimia inayoonyesha tofauti kati ya majibu yanayotarajiwa na kupokewa. Hitilafu huundwa kila enzi na lazima ipungue. Ikiwa hii haifanyiki, basi unafanya kitu kibaya. Hitilafu inaweza kuhesabiwa kwa njia tofauti, lakini tutazingatia njia kuu tatu tu: Hitilafu ya Maana ya Mraba (hapa MSE), Mizizi MSE na Arctan. Hakuna kizuizi cha matumizi hapa, kama katika kazi ya kuwezesha, na uko huru kuchagua njia yoyote ambayo itakuletea. matokeo bora. Ni lazima tu kukumbuka kuwa kila njia huhesabu makosa tofauti. Na Arctan, kosa litakuwa karibu kila wakati, kwani inafanya kazi kwa kanuni: tofauti kubwa zaidi, the kosa zaidi. Root MSE itakuwa na hitilafu ndogo zaidi, kwa hivyo ni kawaida kutumia MSE ambayo hudumisha usawa katika hesabu ya makosa.

Mzizi wa MSE

Arctan

Kanuni ya kuhesabu makosa ni sawa katika matukio yote. Kwa kila seti, tunahesabu kosa kwa kuondoa matokeo kutoka kwa jibu bora. Ifuatayo, tunaiweka mraba au kuhesabu tangent ya mraba kutoka kwa tofauti hii, baada ya hapo tunagawanya nambari inayotokana na idadi ya seti.

Kazi

Sasa, ili kujijaribu, hesabu matokeo ya mtandao wa neural uliopewa kwa kutumia sigmoid na makosa yake kwa kutumia MSE.

Data:

I1=1, I2=0, w1=0.45, w2=0.78,w3=-0.12,w4=0.13,w5=1.5,w6=-2.3.

Suluhisho

Ingizo la H1 = 1*0.45+0*-0.12=0.45

H1output = sigmoid(0.45)=0.61

H2 pembejeo = 1*0.78+0*0.13=0.78

H2output = sigmoid(0.78)=0.69

O1 pembejeo = 0.61*1.5+0.69*-2.3=-0.672

O1output = sigmoid(-0.672)=0.33

O1bora = 1 (0xor1=1)

Hitilafu = ((1-0.33)^2)/1=0.45

Matokeo - 0.33, kosa - 45%.

Asante sana kwa umakini wako! Natumai nakala hii iliweza kukusaidia katika kusoma mitandao ya neva. Katika makala inayofuata, nitazungumza juu ya nyuroni za upendeleo na jinsi ya kufundisha mtandao wa neva kwa kutumia njia uenezaji wa nyuma na kushuka kwa gradient.

Rasilimali zilizotumika:

Tunafanya nini? Tutajaribu kuunda mtandao rahisi na mdogo sana wa neural, ambao sisi hebu tueleze Na tutafundisha kutofautisha kitu. Wakati huo huo, hatutaingia kwenye historia na jungle la hisabati (habari kama hiyo ni rahisi sana kupata) - badala yake, tutajaribu kuelezea kazi hiyo (sio ukweli kwamba itafanikiwa) kwako na sisi wenyewe na michoro na kanuni.
Maneno mengi katika mitandao ya neural yanahusiana na biolojia, kwa hivyo wacha tuanze mwanzoni:

Ubongo ni kitu ngumu, lakini inaweza kugawanywa katika sehemu kuu kadhaa na shughuli:

Wakala wa causative anaweza kuwa ndani(kwa mfano, picha au wazo):

Sasa hebu tuangalie mambo ya msingi na yaliyorahisishwa sehemu ubongo:

Ubongo kwa ujumla ni kama mtandao wa kebo.

Neuroni- Kitengo cha msingi cha hesabu katika ubongo, hupokea na kusindika ishara za kemikali kutoka kwa niuroni zingine, na, kulingana na sababu kadhaa, haifanyi chochote au hutoa msukumo wa umeme, au Uwezo wa Kitendo, ambao hutuma ishara kupitia sinepsi kwa jirani. wale kuhusiana nyuroni:

Ndoto, kumbukumbu, harakati za kujidhibiti, tafakari, na kwa kweli kila kitu unachofikiria au kufanya - kila kitu hufanyika kwa sababu ya mchakato huu: mamilioni, au hata mabilioni ya niuroni hufanya kazi. viwango tofauti na kuunda miunganisho inayounda mifumo midogo midogo sambamba na kuwakilisha neva ya kibayolojia wavu.

Kwa kweli, haya yote ni kurahisisha na jumla, lakini shukrani kwao tunaweza kuelezea rahisi
mtandao wa neva:

Na ueleze rasmi kwa kutumia grafu:

Ufafanuzi fulani unahitajika hapa. Miduara ni nyuroni na mistari ni miunganisho kati yao, na kuweka mambo rahisi katika hatua hii, mahusiano kuwakilisha harakati ya moja kwa moja ya habari kutoka kushoto kwenda kulia. Neuroni ya kwanza ndani wakati huu hai na iliyoangaziwa kwa kijivu. Pia tuliikabidhi nambari (1 ikiwa inafanya kazi, 0 ikiwa haifanyi kazi). Nambari kati ya niuroni zinaonyesha uzito mawasiliano.

Grafu zilizo hapo juu zinaonyesha muda wa mtandao; kwa onyesho sahihi zaidi, unahitaji kuligawanya katika vipindi vya muda:

Ili kuunda mtandao wako wa neva, unahitaji kuelewa jinsi uzani unavyoathiri niuroni na jinsi nyuroni hujifunza. Kwa mfano, hebu tuchukue sungura (sungura ya mtihani) na kuiweka chini ya hali ya majaribio ya classic.

Wakati mkondo salama wa hewa unaelekezwa kwao, sungura, kama watu, huangaza:

Mtindo huu wa tabia unaweza kuonyeshwa kwenye grafu:

Kama kwenye mchoro uliopita, grafu hizi zinaonyesha tu wakati ambapo sungura huhisi pumzi, na hivyo encode whiff kama thamani ya boolean. Kwa kuongeza, tunahesabu ikiwa niuroni ya pili inawaka moto kulingana na thamani ya uzito. Ikiwa ni sawa na 1, basi neuroni ya hisia inawaka, tunapepesa; ikiwa uzito ni chini ya 1, hatupepesi: neuroni ya pili kikomo— 1.

Hebu tuanzishe kipengele kimoja zaidi - salama ishara ya sauti:

Tunaweza kuiga maslahi ya sungura kama hii:

Tofauti kuu ni kwamba sasa uzito ni sawa na sufuri, kwa hiyo hatukupata sungura ya blinking, vizuri, bado, angalau. Sasa hebu tufundishe sungura blink juu ya amri kwa kuchanganya
Kichocheo (beep na pigo):

Ni muhimu kwamba matukio haya hutokea kwa nyakati tofauti zama, kwenye grafu itaonekana kama hii:

Sauti yenyewe haifanyi chochote, lakini mtiririko wa hewa bado husababisha sungura kupepesa, na tunaonyesha hii kupitia uzani unaozidishwa na vichocheo (katika nyekundu). Elimu tabia changamano inaweza kuonyeshwa kwa urahisi kama mabadiliko ya polepole ya uzito kati ya niuroni zilizounganishwa baada ya muda.

Kufundisha sungura, tunarudia hatua:

Kwa majaribio matatu ya kwanza, miradi itaonekana kama hii:

Tafadhali kumbuka kuwa uzito wa kichocheo cha sauti huongezeka baada ya kila marudio (yaliyoangaziwa kwa nyekundu), thamani hii kwa sasa ni ya kiholela - tulichagua 0.30, lakini nambari inaweza kuwa chochote, hata hasi. Baada ya kurudia kwa tatu, hutaona mabadiliko katika tabia ya sungura, lakini baada ya kurudia kwa nne, kitu cha kushangaza kitatokea - tabia itabadilika.

Tuliondoa mfiduo wa hewa, lakini sungura bado anapepesa anaposikia mlio! Mchoro wetu wa mwisho unaweza kuelezea tabia hii:

Tulimzoeza sungura kuitikia sauti kwa kupepesa macho.

Katika jaribio la kweli la aina hii, inaweza kuchukua zaidi ya marudio 60 ili kufikia matokeo.

Sasa tutaacha ulimwengu wa kibaolojia wa ubongo na sungura na jaribu kurekebisha kila kitu
alijifunza kuunda mtandao wa neva bandia. Kwanza, hebu jaribu kufanya kazi rahisi.

Wacha tuseme tunayo mashine iliyo na vifungo vinne ambavyo hutoa chakula wakati moja sahihi imebonyezwa
vifungo (vizuri, au nishati ikiwa wewe ni roboti). Kazi ni kujua ni kitufe kipi kinatoa thawabu:

Tunaweza kuonyesha (kimkakati) kile kitufe hufanya wakati kubofya kama hii:

Ni bora kutatua tatizo hili kabisa, kwa hiyo hebu tuangalie matokeo yote iwezekanavyo, ikiwa ni pamoja na moja sahihi:

Bonyeza kitufe cha 3 kupata chakula chako cha jioni.

Ili kuzalisha tena mtandao wa neva katika msimbo, tunahitaji kwanza kutengeneza kielelezo au grafu ambayo mtandao unaweza kulinganishwa. Hapa kuna grafu moja inayofaa kwa kazi zaidi ya hayo, inaonyesha vizuri analogi yake ya kibaolojia:

Mtandao huu wa neural hupokea tu taarifa zinazoingia - katika kesi hii itakuwa ni mtazamo wa kifungo gani kilibonyezwa. Ifuatayo, mtandao hubadilisha habari inayoingia na uzani na hufanya hitimisho kulingana na nyongeza ya safu. Inasikika kuwa ya kutatanisha, lakini wacha tuone jinsi kitufe kinawakilishwa katika mfano wetu:

Kumbuka kuwa uzani wote ni 0, kwa hivyo mtandao wa neva ni kama mtoto, tupu kabisa, lakini umeunganishwa kabisa.

Kwa hivyo, tunalinganisha tukio la nje na safu ya pembejeo ya mtandao wa neva na kuhesabu thamani katika matokeo yake. Inaweza au isiendane na ukweli, lakini tutapuuza hili kwa sasa na kuanza kuelezea tatizo kompyuta inaeleweka njia. Wacha tuanze kwa kuingiza uzani (tutatumia JavaScript):

Var pembejeo =; var uzito =; // Kwa urahisi, vectors hizi zinaweza kuitwa

Hatua inayofuata ni kuunda kazi ambayo inachukua maadili ya pembejeo na uzani na kuhesabu thamani ya pato:

Tathmini kazi yaNeuralNetwork(inputVector, weightVector)( var result = 0; inputVector.forEach(function(inputValue, weightIndex) ( layerValue = inputValue*weightVector; result += layerValue; )); rudisha (matokeo.toFixed(2)); ) / / Inaweza kuonekana kuwa changamano, lakini inachofanya ni kulinganisha uzito/jozi za pembejeo na kuongeza matokeo

Kama inavyotarajiwa, ikiwa tutaendesha nambari hii, tutapata matokeo sawa na mfano wetu au grafu ...

TathminiNeuralNetwork(pembejeo, uzani); // 0.00

Mfano hai: Neural Net 001. Hatua inayofuata katika kuboresha mtandao wetu wa neva itakuwa njia ya kuangalia matokeo yake yenyewe au maadili yanayotokana kulinganishwa na hali halisi, wacha kwanza tusindike ukweli huu maalum kuwa tofauti:

Ili kugundua kutokwenda (na kuna ngapi), tutaongeza kazi ya hitilafu:

Hitilafu = Ukweli - Neural Net Output

Kwa hiyo tunaweza kutathmini utendaji wa mtandao wetu wa neva:

Lakini muhimu zaidi, vipi kuhusu hali ambapo ukweli hutoa matokeo mazuri?

Sasa tunajua kuwa mtindo wetu wa mtandao wa neural umevunjika (na tunajua ni kiasi gani), nzuri! Kinachopendeza ni kwamba sasa tunaweza kutumia kipengele cha kukokotoa kudhibiti ujifunzaji wetu. Lakini haya yote yatakuwa na maana ikiwa tutafafanua upya kazi ya makosa kama ifuatavyo:

Hitilafu = Pato Unalohitajika- Pato la Neural Net

Tofauti isiyowezekana, lakini muhimu kama hii, ikionyesha kimya kwamba tutafanya hivyo
tumia matokeo ya awali kulinganisha na matendo yajayo
(na kwa ajili ya kujifunza, kama tutakavyoona baadaye). Hii pia ipo katika maisha halisi, kamili
kurudia mifumo, kwa hivyo inaweza kuwa mkakati wa mageuzi (vizuri, in
kesi nyingi).

Var pembejeo =; var uzito =; var takaResult = 1;

Na kazi mpya:

Tathmini ya kaziNeuralNetError(inayotakiwa,halisi) (rejesha (inayotakiwa — halisi);) // Baada ya kutathmini Mtandao na Kosa tungepata: // "Neural Net output: 0.00 Error: 1"

Mfano hai: Neural Net 002. Hebu tufanye muhtasari. Tulianza na kazi, tukaifanya mfano rahisi katika mfumo wa mtandao wa neva wa kibayolojia na kuwa na njia ya kupima utendaji wake ikilinganishwa na ukweli au matokeo yanayotarajiwa. Sasa tunahitaji kutafuta njia ya kusahihisha hitilafu, mchakato ambao kwa kompyuta na binadamu unaweza kufikiriwa kama kujifunza.

Jinsi ya kutoa mafunzo kwa mtandao wa neva?

Msingi wa mafunzo kwa mitandao ya neva ya kibaolojia na bandia ni kurudia.
Na kujifunza algorithms, kwa hivyo tutafanya kazi nao tofauti. Hebu tuanze na
algorithms ya mafunzo.

Kwa asili, kanuni za kujifunza hurejelea mabadiliko ya kimwili au kemikali
Tabia za neurons baada ya majaribio:

Kielelezo cha kushangaza cha jinsi niuroni mbili zinavyobadilika kwa wakati katika msimbo na kielelezo chetu cha "algorithm ya kujifunza" inamaanisha kuwa tutabadilisha tu mambo baada ya muda ili kurahisisha maisha yetu. Kwa hivyo wacha tuongeze kigezo kuashiria jinsi maisha ni rahisi:

Var LearningRate = 0.20; // Kadiri thamani inavyokuwa kubwa, ndivyo mchakato wa kujifunza utakuwa haraka :)

Na hii itabadilika nini?

Hii itabadilisha uzani (kama sungura!), haswa uzani wa pato tunataka kutoa:

Jinsi ya kuweka algorithm kama hiyo ni chaguo lako, kwa unyenyekevu ninaongeza sababu ya kujifunza kwa uzani, hapa iko katika mfumo wa kazi:

Kazi jifunze(inputVector, weightVector) (weightVector.forEach(function(uzito, index, weights) (ikiwa (inputVector > 0) (weights = weight + learningRate; ) ));)

Inapotumiwa, kipengele hiki cha mafunzo kitaongeza tu kipengele chetu cha kujifunza kwenye vekta ya uzani neuroni hai, kabla na baada ya duru ya mafunzo (au marudio), matokeo yatakuwa kama ifuatavyo:

// Vekta ya uzani asilia: // Pato la Neural Net: 0.00 Hitilafu: 1 jifunze(pembejeo, uzani); // Vekta Mpya ya Uzito: // Pato la Neural Net: 0.20 Kosa: 0.8 // Ikiwa sio dhahiri, pato la neural net ni karibu na 1 (pato la kuku) - ambayo ndio tuliyotaka, kwa hivyo tunaweza kuhitimisha kuwa tunasonga. kuelekea katika mwelekeo sahihi

Mfano hai: Neural Net 003. Sawa, kwa kuwa sasa tunaelekea katika mwelekeo sahihi, sehemu ya mwisho ya fumbo hili itakuwa utekelezaji marudio.

Sio ngumu sana, kwa asili tunafanya jambo lile lile tena na tena, lakini kwa nambari tunataja tu idadi ya marudio:

Var majaribio = 6;

Na utekelezaji wa idadi ya marudio ya kazi kwenye mtandao wetu wa neural wa mafunzo utaonekana kama hii:

Treni ya kazi(majaribio) ( kwa (i = 0; i< trials; i++) { neuralNetResult = evaluateNeuralNetwork(input, weights); learn(input, weights); } }

Kweli, hii ndio ripoti yetu ya mwisho:

Pato la Neural Net: 0.00 Hitilafu: 1.00 Weight Vector: Neural Net output: 0.20 Hitilafu: 0.80 Weight Vector: Neural Net output: 0.40 Hitilafu: 0.60 Weight Vector: Neural Net output: 0.60 Hitilafu: 0.40 Weight Net0: 0.40 Weight Net0 : 0.20 Vekta ya Uzito: Pato la Neural Net: Hitilafu 1.00: Vekta ya Uzito 0.00: // Chakula cha jioni cha Kuku!

Mfano hai: Neural Net 004. Sasa tuna vector ya uzito ambayo itazalisha pato moja tu (kuku kwa chakula cha jioni) ikiwa vector ya pembejeo inafanana na ukweli (kubonyeza kifungo cha tatu). Kwa hivyo ni jambo gani la baridi zaidi tulilofanya hivi punde?

Katika kesi hii, mtandao wetu wa neva (baada ya mafunzo) unaweza kutambua data ya pembejeo na kusema nini kitasababisha matokeo unayotaka (bado tutahitaji kupanga hali maalum):

Kwa kuongeza, ni mfano unaoweza kupunguzwa, toy na chombo cha kujifunza kwetu. Tuliweza kujifunza jambo jipya kuhusu kujifunza kwa mashine, mitandao ya neva na akili bandia. Onyo kwa watumiaji:

  • Hakuna utaratibu wa kuhifadhi uzani uliojifunza, kwa hivyo mtandao huu wa neva utasahau kila kitu unachojua. Wakati wa kusasisha au kuendesha tena msimbo, unahitaji angalau marudio sita ya mafanikio ili mtandao ujifunze kikamilifu, ikiwa unafikiri kuwa mtu au mashine itabonyeza vitufe bila mpangilio... Hii itachukua muda.
  • Mitandao ya kibaolojia ya kujifunza mambo muhimu kuwa na kiwango cha kujifunza cha 1, kwa hivyo marudio moja tu ya mafanikio yatahitajika.
  • Kuna algorithm ya kujifunza ambayo inafanana kwa karibu na nyuroni za kibaolojia, na ina jina la kuvutia: Utawala wa Widroff-hoff, au Mafunzo ya Widroff-hoff.
  • Vizingiti vya Neuron (1 katika mfano wetu) na athari za kujizoeza (na kiasi kikubwa marudio matokeo yatakuwa zaidi 1) hayazingatiwi, lakini ni muhimu sana kwa asili na yanawajibika kwa kubwa na vitalu tata athari za tabia. Kwa hivyo fanya uzani hasi.

Vidokezo na orodha ya marejeleo kwa usomaji zaidi

Nilijaribu kuepuka istilahi za hesabu na kiufundi, lakini ikiwa una nia, tulitengeneza kielelezo, ambacho kinafafanuliwa kama kanuni ya ujifunzaji inayosimamiwa (kujifunza kusimamiwa) ya viainishi viwili - vitu vizito. Muundo wa kibayolojia wa ubongo sio mada rahisi, kwa sehemu kwa sababu ya kutokuwa sahihi na kwa sehemu kwa sababu ya ugumu wake. Ni bora kuanza na Neuroscience (Purves) na Cognitive Neuroscience (Gazzaniga). Nimerekebisha na kurekebisha mfano wa sungura kutoka Gateway to Memory (Gluck), ambao pia ni utangulizi mzuri kwa ulimwengu wa grafu. Utangulizi wa Mitandao ya Neural (Gurney) ni rasilimali nyingine nzuri kwa mahitaji yako yote ya AI.
Na sasa kwenye Python! Asante kwa Ilya Andshmidt kwa kutoa toleo la Python:

Ingizo = uzito = taka_matokeo = 1 kiwango_cha_kujifunza = majaribio 0.2 = 6 def evaluate_neural_network(input_array, weight_array): tokeo = 0 kwa i katika safu(len(input_array)): layer_value = input_array[i] *weight_array[i] tokeo print("evaluate_neural_network: " + str(matokeo)) chapisha("uzito: " + str(uzito)) rudisha tokeo la def evaluate_error(inayotakiwa, halisi): error = taka - chapa halisi("evaluate_error: " + str(kosa) ) return error def learn(input_array, weight_array): print("learning...") for i in range(len(input_array)): if input_array[i] > 0: weight_array[i] += learning_rate def train(majaribio ): kwa i katika safu(majaribio): neural_net_result = evaluate_neural_network(pembejeo, uzani) jifunze(pembejeo, uzani) treni(majaribio)

Na sasa GO! Asante kwa Kieran Maher kwa toleo hili.

Uingizaji mkuu wa kifurushi ("fmt" "hesabu") func main() ( fmt.Println("Kuunda pembejeo na uzani ...") pembejeo:= float64(0.00, 0.00, 1.00, 0.00) uzani:= float64(0.00, 0.00. kwa i:= 1;< trials; i++ { weights = learn(inputs, weights, learningRate) output:= evaluate(inputs, weights) errorResult:= evaluateError(desired, output) fmt.Print("Output: ") fmt.Print(math.Round(output*100) / 100) fmt.Print(" Error: ") fmt.Print(math.Round(errorResult*100) / 100) fmt.Print(" ") } } func learn(inputVector float64, weightVector float64, learningRate float64) float64 { for index, inputValue:= range inputVector { if inputValue >0.00 (weightVector = weightVector + learningRate ) return weightVector ) func evaluate(inputVector float64, weightVector float64) float64 (matokeo:= 0.00 kwa index, inputValue:= range inputVector ( layerValue:= inputValue * weightValue result ) return + results func evaluateError(float64 inayotakiwa, float64 halisi) float64 ( rudisha taka - halisi )

Kwa vialamisho

Tunakuambia jinsi ya kuunda mtandao rahisi wa neural katika hatua chache na kuifundisha kutambua wajasiriamali maarufu kwenye picha.

Hatua ya 0. Hebu tuelewe jinsi mitandao ya neural inavyofanya kazi

Njia rahisi zaidi ya kuelewa kanuni za utendakazi wa mitandao ya neva ni kutumia mfano wa Mashine inayoweza Kufundishwa, mradi wa kielimu wa Google.

Mashine Inayoweza Kufundishwa hutumia picha kutoka kwa kamera ya kompyuta ya mkononi kama data ya kuingiza - kinachohitaji kuchakatwa na mtandao wa neva. Kama data ya pato - mtandao wa neural unapaswa kufanya nini baada ya kuchakata data inayoingia - unaweza kutumia gif au sauti.

Kwa mfano, unaweza kufundisha Mashine Inayoweza Kufundishwa kusema "Hujambo" kiganja chako kinapoinuliwa. Kwa kidole gumba - "Poa", na kwa uso ulioshangaa na mdomo wazi - "Wow".

Kwanza unahitaji kutoa mafunzo kwa mtandao wa neva. Ili kufanya hivyo, inua kiganja chako na ubonyeze kitufe cha "Train Green" - huduma inachukua picha kadhaa ili kupata muundo kwenye picha. Seti ya picha kama hizo kawaida huitwa "seti ya data".

Sasa kinachobakia ni kuchagua hatua ambayo inahitaji kuitwa wakati wa kutambua picha - sema kifungu, onyesha GIF au cheza sauti. Vile vile, tunafunza mtandao wa neva kutambua uso ulioshangaa na kidole gumba.

Mara tu mtandao wa neva unapofunzwa, unaweza kutumika. Mashine Inayoweza Kufundishwa inaonyesha kipengele cha "kujiamini" - jinsi mfumo ulivyo "ujasiri" kwamba unafundishwa moja ya ujuzi.

Video fupi kuhusu jinsi Mashine Inayoweza Kufundishwa inavyofanya kazi

Hatua ya 1. Kuandaa kompyuta kufanya kazi na mtandao wa neva

Sasa tutaunda mtandao wetu wa neural, ambayo, wakati wa kutuma picha, itaripoti kile kinachoonyeshwa kwenye picha. Kwanza, tutafundisha mtandao wa neural kutambua maua kwenye picha: chamomile, alizeti, dandelion, tulip au rose.

Ili kuunda mtandao wako wa neural utahitaji Python - moja ya lugha ndogo na za kawaida za programu, na TensorFlow - fungua maktaba Google kwa kuunda na kufunza mitandao ya neva.

Mitandao ya Neural sasa iko katika mtindo, na kwa sababu nzuri. Kwa msaada wao, unaweza, kwa mfano, kutambua vitu kwenye picha au, kinyume chake, kuteka ndoto za Salvador Dali. Shukrani kwa maktaba zinazofaa, mitandao rahisi zaidi ya neural inaweza kuundwa katika mistari michache tu ya kanuni;

Nadharia

Wanabiolojia bado hawajui hasa jinsi ubongo unavyofanya kazi, lakini kanuni ya uendeshaji vipengele vya mtu binafsi mfumo wa neva umejifunza vizuri. Inajumuisha neurons - seli maalum ambazo hubadilishana ishara za electrochemical na kila mmoja. Kila neuroni ina dendrites nyingi na axon moja. Dendrites inaweza kulinganishwa na pembejeo ambazo data huingia kwenye neuroni, wakati axon hutumika kama pato lake. Uunganisho kati ya dendrites na axons huitwa synapses. Wao sio tu kusambaza ishara, lakini pia wanaweza kubadilisha amplitude yao na mzunguko.

Mabadiliko yanayotokea katika kiwango cha neurons ya mtu binafsi ni rahisi sana, lakini hata mitandao ndogo ya neural ina uwezo wa mengi. utofauti mzima wa tabia ya Caenorhabditis elegans minyoo - harakati, kutafuta chakula, athari mbalimbali kwa uchochezi nje na mengi zaidi - ni encoded katika niuroni mia tatu tu. Na sawa minyoo! Hata mchwa wanahitaji neurons elfu 250, na wanachofanya bila shaka ni zaidi ya uwezo wa mashine.

Karibu miaka sitini iliyopita, mtafiti wa Marekani Frank Rosenblatt alijaribu kuunda mfumo wa kompyuta, iliyoundwa kwa sura na mfano wa ubongo, lakini uwezekano wa uumbaji wake ulikuwa mdogo sana. Tangu wakati huo, riba katika mitandao ya neural imeongezeka mara kwa mara, lakini mara kwa mara ikawa kwamba nguvu ya kompyuta haitoshi kwa mitandao yoyote ya juu ya neural. Mengi yamebadilika katika suala hili katika muongo mmoja uliopita.

Ubongo wa kielektroniki na motor

Mashine ya Rosenblatt iliitwa Mark I Perceptron. Iliundwa kwa ajili ya utambuzi wa picha, kazi ambayo kompyuta bado ni hivyo tu. Mark I alikuwa na mfano wa retina: matrix ya mraba ya seli 400 za picha, ishirini wima na ishirini kwa mlalo. Seli za picha ziliunganishwa kwa nasibu kwa miundo ya kielektroniki ya niuroni, nazo, kwa upande wake, ziliunganishwa kwa matokeo nane. Rosenblatt alitumia potentiometers kama sinepsi zinazounganisha niuroni za kielektroniki, seli za picha na matokeo. Wakati wa kufundisha perceptron, motors 512 za stepper zilizunguka moja kwa moja vifungo vya potentiometer, kurekebisha voltage kwenye neurons kulingana na usahihi wa matokeo ya pato.

Ndivyo mtandao wa neva unavyofanya kazi kwa ufupi. Neuroni bandia, kama ile halisi, ina pembejeo kadhaa na pato moja. Kila pembejeo ina kipengele cha uzani. Kwa kubadilisha hesabu hizi, tunaweza kutoa mafunzo kwa mtandao wa neva. Utegemezi wa ishara ya pato kwenye ishara za pembejeo imedhamiriwa na kinachojulikana kama kazi ya uanzishaji.

Katika perceptron ya Rosenblatt, kazi ya kuwezesha iliongeza uzito wa pembejeo zote zilizopokea moja ya kimantiki, na kisha kulinganisha matokeo na thamani ya kizingiti. Ubaya wake ni kwamba mabadiliko kidogo katika moja ya vigawo vya uzani na mbinu hii inaweza kuwa na athari kubwa kwa matokeo. Hii inafanya kujifunza kuwa ngumu.

Mitandao ya kisasa ya neva kwa kawaida hutumia vitendaji visivyo vya mstari, kama vile sigmoid. Kwa kuongezea, mitandao ya zamani ya neva ilikuwa na tabaka chache sana. Siku hizi, safu moja au zaidi zilizofichwa za niuroni kawaida ziko kati ya ingizo na pato. Hapo ndipo furaha yote hutokea.

Ili iwe rahisi kuelewa nini tunazungumzia, tazama mchoro huu. Ni mtandao wa neva wa kusambaza na safu moja iliyofichwa. Kila duara inalingana na neuroni. Upande wa kushoto ni neurons ya safu ya pembejeo. Upande wa kulia ni neuroni ya safu ya pato. Katikati kuna safu iliyofichwa na neurons nne. Matokeo ya niuroni zote katika safu ya ingizo yanaunganishwa kwa kila niuroni ya safu ya kwanza iliyofichwa. Kwa upande mwingine, pembejeo za niuroni ya safu ya pato zimeunganishwa kwa matokeo yote ya niuroni za safu iliyofichwa.

Sio mitandao yote ya neva imeundwa hivi. Kwa mfano, kuna mitandao (ingawa si ya kawaida) ambamo mawimbi kutoka kwa niuroni hutumwa sio tu kwa safu inayofuata, kama vile mtandao wa usambazaji-mbele kwenye mchoro wetu, lakini pia mwelekeo wa nyuma. Mitandao hiyo inaitwa mara kwa mara. Safu zilizounganishwa kikamilifu pia ni chaguo moja tu, na tutagusa hata moja ya njia mbadala.

Fanya mazoezi

Kwa hivyo, hebu tujaribu kujenga mtandao rahisi wa neva kwa mikono yetu wenyewe na tujue jinsi inavyofanya kazi tunapoendelea. Tutatumia Python na maktaba ya Numpy (tunaweza kufanya bila Numpy, lakini kwa Numpy algebra ya mstari itachukua juhudi kidogo). Mfano katika swali ni msingi wa nambari kutoka kwa Andrew Trask.

Tutahitaji vitendaji kuhesabu sigmoid na derivative yake:

Muendelezo unapatikana kwa waliojisajili pekee

Chaguo 1. Jiandikishe kwa Hacker kusoma nyenzo zote kwenye wavuti

Usajili utakuruhusu kusoma nyenzo ZOTE zilizolipwa kwenye wavuti ndani ya muda uliowekwa. Tunakubali malipo kwa kadi za benki, pesa za kielektroniki na uhamisho kutoka kwa akaunti za kampuni za simu.


Akili Bandia, mitandao ya neva, kujifunza kwa mashine - dhana hizi zote maarufu kwa sasa zinamaanisha nini? Kwa watu wengi wasio na ufahamu, ambayo mimi mwenyewe niko, daima walionekana kama kitu cha ajabu, lakini kwa kweli kiini chao kiko juu ya uso. Kwa muda mrefu nimekuwa na wazo la kuandika kwa lugha rahisi kuhusu mitandao ya neva bandia. Jitambue mwenyewe na uwaambie wengine teknolojia hii ni nini, jinsi inavyofanya kazi, fikiria historia na matarajio yake. Katika makala hii, nilijaribu kutoingia kwenye magugu, lakini kwa urahisi na kwa kawaida kuzungumza juu ya mwelekeo huu wa kuahidi katika ulimwengu wa teknolojia ya juu.


Akili Bandia, mitandao ya neva, kujifunza kwa mashine - dhana hizi zote maarufu kwa sasa zinamaanisha nini? Kwa watu wengi wasio na ujuzi, ambayo mimi mwenyewe ni, walionekana kama kitu cha ajabu, lakini kwa kweli kiini chao kiko juu ya uso. Kwa muda mrefu nimekuwa na wazo la kuandika kwa lugha rahisi kuhusu mitandao ya neural ya bandia. Jitambue mwenyewe na uwaambie wengine teknolojia hii ni nini, jinsi inavyofanya kazi, fikiria historia na matarajio yake. Katika makala hii, nilijaribu kutoingia kwenye magugu, lakini kwa urahisi na kwa kawaida kuzungumza juu ya mwelekeo huu wa kuahidi katika ulimwengu wa teknolojia ya juu.

Historia kidogo

Kwa mara ya kwanza, dhana ya mitandao ya neural ya bandia (ANN) iliibuka katika jaribio la kuiga michakato ya ubongo. Mafanikio makubwa ya kwanza katika eneo hili yanaweza kuzingatiwa uundaji wa muundo wa mtandao wa neural wa McCulloch-Pitts mnamo 1943. Wanasayansi wameunda mfano wa neuroni bandia kwa mara ya kwanza. Pia walipendekeza muundo wa mtandao wa vipengele hivi ili kufanya shughuli za kimantiki. Lakini muhimu zaidi, wanasayansi wamethibitisha kuwa mtandao kama huo una uwezo wa kujifunza.

Inayofuata hatua muhimu ilikuwa ni maendeleo ya Donald Hebb ya algoriti ya kwanza ya kukokotoa ANN mwaka wa 1949, ambayo ikawa ya msingi kwa miongo kadhaa iliyofuata. Mnamo 1958, Frank Rosenblatt alitengeneza parceptron, mfumo unaoiga michakato ya ubongo. Wakati mmoja, teknolojia haikuwa na analogi na bado ni ya msingi katika mitandao ya neural. Mnamo 1986, karibu wakati huo huo, kwa kujitegemea, wanasayansi wa Marekani na Soviet waliboresha kwa kiasi kikubwa njia ya msingi ya mafunzo ya perceptron ya multilayer. Mnamo 2007, mitandao ya neural ilipata kuzaliwa upya. Mwanasayansi wa kompyuta wa Uingereza Geoffrey Hinton kwanza alitengeneza algorithm ya kujifunza kwa kina kwa mitandao ya neva ya multilayer, ambayo sasa, kwa mfano, hutumiwa kuendesha magari ya kujitegemea.

Kwa kifupi juu ya jambo kuu

KATIKA kwa maana ya jumla maneno, mitandao ya neural ni mifano ya hisabati, kufanya kazi kwa kanuni ya mitandao ya seli za ujasiri katika mwili wa wanyama. ANN zinaweza kutekelezwa katika suluhisho zinazoweza kupangwa na maunzi. Ili kurahisisha mambo kueleweka, neuroni inaweza kuzingatiwa kama seli ambayo ina mashimo mengi ya kuingiza na tundu moja la kutoa. Jinsi ishara nyingi zinazoingia zinaundwa katika mawimbi ya pato huamuliwa na algorithm ya hesabu. Thamani zinazofaa hutolewa kwa kila pembejeo ya neuroni, ambayo husambazwa pamoja na miunganisho ya interneuron (synopses). Synapses ina parameter moja - uzito, kutokana na ambayo habari ya pembejeo inabadilika wakati wa kusonga kutoka neuron moja hadi nyingine. Njia rahisi zaidi ya kufikiria kanuni ya uendeshaji wa mitandao ya neural ni kuchanganya rangi. Neuron ya bluu, kijani na nyekundu ina uzito tofauti. Taarifa ya neuroni ambayo uzito wake ni mkubwa zaidi itatawala katika neuroni inayofuata.

Mtandao wa neva yenyewe ni mfumo wa neurons nyingi kama hizo (wachakataji). Kwa kibinafsi, wasindikaji hawa ni rahisi sana (rahisi zaidi kuliko a kompyuta binafsi), lakini kuunganishwa ndani mfumo mkubwa nyuroni zina uwezo wa kufanya kazi ngumu sana.

Kulingana na eneo la maombi, mtandao wa neural unaweza kufasiriwa kwa njia tofauti, kwa mfano, kutoka kwa mtazamo wa ujifunzaji wa mashine, ANN ni njia ya utambuzi wa muundo. Kutoka kwa mtazamo wa hisabati, hili ni tatizo la vigezo vingi. Kutoka kwa mtazamo wa cybernetics - mfano kudhibiti adaptive robotiki. Kwa akili bandia, ANN ni sehemu ya msingi ya kuiga akili asilia kwa kutumia algoriti za hesabu.

Faida kuu ya mitandao ya neural juu ya algoriti za kawaida za kompyuta ni uwezo wao wa kujifunza. Katika maana ya jumla ya neno, kujifunza ni kuhusu kupata viambatanisho sahihi vya kuunganisha kati ya niuroni, pamoja na muhtasari wa data na kutambua utegemezi changamano kati ya ishara za ingizo na pato. Kwa kweli, mafunzo ya mafanikio ya mtandao wa neva inamaanisha kuwa mfumo utaweza kutambua matokeo sahihi kulingana na data ambayo haiko katika seti ya mafunzo.

Hali ya sasa

Na bila kujali jinsi teknolojia hii inaweza kuwa ya kuahidi, ANN bado ni mbali sana na iwezekanavyo ubongo wa binadamu na kufikiri. Hata hivyo, mitandao ya neva tayari inatumika katika maeneo mengi ya shughuli za binadamu. Kufikia sasa, hawana uwezo wa kufanya maamuzi ya busara sana, lakini wanaweza kuchukua nafasi ya mtu ambapo alihitajika hapo awali. Kati ya maeneo mengi ya utumiaji wa ANN tunaweza kumbuka: uundaji wa mifumo ya mchakato wa uzalishaji wa kujisomea, isiyo na rubani. magari, mifumo ya utambuzi wa picha, akili mifumo ya usalama, robotiki, mifumo ya ufuatiliaji wa ubora, violesura vya sauti mwingiliano, mifumo ya uchanganuzi na mengi zaidi. Utumizi huu mkubwa wa mitandao ya neva ni, miongoni mwa mambo mengine, kutokana na kuibuka kwa kwa njia mbalimbali kuongeza kasi ya mafunzo ya ANN.

Leo, soko la mitandao ya neva ni kubwa - mabilioni na mabilioni ya dola. Kama inavyoonyesha mazoezi, teknolojia nyingi za mtandao wa neva duniani kote hutofautiana kidogo kutoka kwa nyingine. Hata hivyo, matumizi ya mitandao ya neural ni shughuli ya gharama kubwa sana, ambayo katika hali nyingi inaweza kumudu tu makampuni makubwa. Kutengeneza, mafunzo, na kupima mitandao ya neural inahitaji kubwa nguvu ya kompyuta, ni dhahiri kwamba wachezaji wakubwa katika soko la IT wana mengi ya haya. Miongoni mwa kampuni kuu zinazoongoza maendeleo katika eneo hili ni kitengo cha Google DeepMind, kitengo cha Utafiti wa Microsoft, IBM, Facebook na Baidu.

Bila shaka, hii yote ni nzuri: mitandao ya neural inaendelea, soko linakua, lakini hadi sasa kazi kuu bado haijatatuliwa. Ubinadamu umeshindwa kuunda teknolojia hata karibu katika uwezo wa ubongo wa mwanadamu. Wacha tuangalie tofauti kuu kati ya ubongo wa mwanadamu na mitandao ya neva bandia.

Kwa nini mitandao ya neva bado iko mbali na ubongo wa mwanadamu?

Tofauti muhimu zaidi, ambayo inabadilisha kwa kiasi kikubwa kanuni na ufanisi wa mfumo, ni gia tofauti ishara katika mitandao ya neva bandia na katika mtandao wa kibayolojia wa niuroni. Ukweli ni kwamba katika ANN, neurons husambaza maadili ambayo ni maadili halisi, yaani, nambari. Katika ubongo wa binadamu, msukumo hupitishwa na amplitude fasta, na msukumo huu ni karibu mara moja. Hii inasababisha idadi ya faida ya mtandao wa binadamu wa neurons.

Kwanza, njia za mawasiliano katika ubongo ni bora zaidi na za kiuchumi kuliko zile za ANN. Pili, mzunguko wa mapigo huhakikisha urahisi wa utekelezaji wa teknolojia: inatosha kutumia mizunguko ya analog badala ya mifumo ngumu ya hesabu. Hatimaye, mitandao ya mapigo haina kinga ya kuingiliwa na sauti. Nambari halisi zinakabiliwa na kelele, ambayo huongeza uwezekano wa makosa.

Mstari wa chini

Bila shaka, katika miaka kumi iliyopita kumekuwa na ongezeko la kweli katika maendeleo ya mitandao ya neural. Hii ni kwa sababu ya ukweli kwamba mchakato wa mafunzo wa ANN umekuwa haraka na rahisi zaidi. Mitandao ya neva inayoitwa "kabla ya mafunzo" pia imeanza kuendelezwa kikamilifu, ambayo inaweza kuharakisha kwa kiasi kikubwa mchakato wa kuanzisha teknolojia. Na ikiwa ni mapema sana kusema ikiwa mitandao ya neva siku moja itaweza kuzaliana kikamilifu uwezo wa ubongo wa mwanadamu, uwezekano kwamba katika muongo ujao ANNs wataweza kuchukua nafasi ya wanadamu katika robo ya taaluma zilizopo unazidi kuwa kweli. .

Kwa wale wanaotaka kujua zaidi

  • Vita Kuu ya Neural: Google inakusudia nini hasa
  • Jinsi kompyuta za utambuzi zinaweza kubadilisha maisha yetu ya usoni