Kufanya kazi na mitandao ya neva: orodha ya kuangalia kwa utatuzi

Kufanya kazi na mitandao ya neva: orodha ya kuangalia kwa utatuzi

Nambari ya bidhaa za programu ya kujifunza mashine mara nyingi ni ngumu na inachanganya kabisa. Kugundua na kuondoa mende ndani yake ni kazi kubwa ya rasilimali. Hata rahisi zaidi mitandao ya neva ya feedforward zinahitaji mbinu makini ya usanifu wa mtandao, uanzishaji wa uzani, na uboreshaji wa mtandao. Hitilafu ndogo inaweza kusababisha matatizo yasiyofurahisha.

Nakala hii ni kuhusu algoriti ya kurekebisha mitandao yako ya neva.

Skillbox inapendekeza: Kozi ya vitendo Msanidi wa Python kutoka mwanzo.

Tunakukumbusha: kwa wasomaji wote wa "Habr" - punguzo la rubles 10 wakati wa kujiandikisha katika kozi yoyote ya Skillbox kwa kutumia msimbo wa uendelezaji wa "Habr".

Algorithm ina hatua tano:

  • kuanza rahisi;
  • uthibitisho wa hasara;
  • kuangalia matokeo ya kati na viunganisho;
  • utambuzi wa parameter;
  • udhibiti wa kazi.

Ikiwa kitu kinaonekana kuvutia zaidi kwako kuliko wengine, unaweza kuruka mara moja kwa sehemu hizi.

Rahisi kuanza

Mtandao wa neva wenye usanifu changamano, urekebishaji, na kipanga ratiba cha viwango vya kujifunza ni vigumu zaidi kusuluhisha kuliko ule wa kawaida. Tunafanya ujanja hapa, kwani hatua yenyewe inahusiana moja kwa moja na utatuzi, lakini hili bado ni pendekezo muhimu.

Kuanza rahisi ni kuunda modeli iliyorahisishwa na kuifundisha kwenye seti moja (pointi) ya data.

Kwanza tunaunda mfano rahisi

Ili kuanza haraka, tunaunda mtandao mdogo na safu moja iliyofichwa na angalia kwamba kila kitu kinafanya kazi kwa usahihi. Kisha sisi huchanganya hatua kwa hatua mfano, kuangalia kila kipengele kipya cha muundo wake (safu ya ziada, parameter, nk), na kuendelea.

Tunafundisha mfano kwenye seti moja (pointi) ya data

Kama ukaguzi wa haraka wa utimamu wa mradi wako, unaweza kutumia pointi moja au mbili za data kwa mafunzo ili kuthibitisha kama mfumo unafanya kazi ipasavyo. Mtandao wa neva lazima uonyeshe usahihi wa 100% katika mafunzo na majaribio. Ikiwa sivyo, basi ama mfano ni mdogo sana au tayari una mdudu.

Hata ikiwa kila kitu kiko sawa, tayarisha kielelezo kwa kipindi kimoja au zaidi kabla ya kuendelea.

Tathmini ya hasara

Kadirio la upotezaji ndio njia kuu ya kuboresha utendaji wa modeli. Unahitaji kuhakikisha kuwa upotezaji unafaa kwa tatizo na kwamba vipengele vya kupoteza vimekadiriwa kwa kiwango sahihi. Ikiwa unatumia zaidi ya aina moja ya upotezaji, hakikisha zote ni za mpangilio sawa na zimepimwa kwa usahihi.

Ni muhimu kuwa makini na hasara za awali. Angalia jinsi matokeo halisi yalivyo karibu na matokeo yanayotarajiwa ikiwa mtindo ulianza na nadhani bila mpangilio. KATIKA Kazi ya Andrey Karpathy inapendekeza yafuatayo:: β€œHakikisha unapata matokeo unayotarajia unapoanza na idadi ndogo ya vigezo. Ni bora kuangalia mara moja upotezaji wa data (pamoja na kiwango cha urekebishaji kilichowekwa hadi sifuri). Kwa mfano, kwa CIFAR-10 iliyo na kiainishaji cha Softmax, tunatarajia upotezaji wa awali kuwa 2.302 kwa sababu uwezekano wa kueneza unaotarajiwa ni 0,1 kwa kila darasa (kwani kuna madarasa 10) na upotezaji wa Softmax ni uwezekano hasi wa logi wa darasa sahihi. kama βˆ’ ln (0.1) = 2.302.”

Kwa mfano wa binary, hesabu sawa hufanywa tu kwa kila darasa. Hapa, kwa mfano, kuna data: 20% 0 na 80% 1. Hasara ya awali inayotarajiwa itakuwa hadi -0,2ln (0,5) -0,8ln (0,5) = 0,693147. Ikiwa matokeo ni makubwa kuliko 1, inaweza kuonyesha kuwa uzani wa mtandao wa neva haujasawazishwa ipasavyo au data haijasawazishwa.

Kuangalia matokeo ya kati na miunganisho

Ili kutatua mtandao wa neva, ni muhimu kuelewa mienendo ya michakato ndani ya mtandao na jukumu la tabaka za kati za mtu binafsi zinapounganishwa. Hapa kuna makosa ya kawaida ambayo unaweza kukutana nayo:

  • maneno yasiyo sahihi kwa sasisho za taratibu;
  • sasisho za uzito hazitumiki;
  • gradient zinazolipuka.

Ikiwa thamani za gradient ni sifuri, hii inamaanisha kwamba kiwango cha kujifunza katika kiboreshaji ni cha polepole sana, au kwamba unakutana na usemi usio sahihi wa kusasisha upinde rangi.

Kwa kuongezea, inahitajika kufuatilia maadili ya kazi za uanzishaji, uzani na sasisho za kila safu. Kwa mfano, ukubwa wa sasisho za parameta (uzito na upendeleo) inapaswa kuwa 1-e3.

Kuna jambo linaloitwa "Dying ReLU" au "tatizo la kutoweka kwa gradient", wakati niuroni za ReLU zitatoa sifuri baada ya kujifunza thamani kubwa ya upendeleo hasi kwa uzani wake. Neuroni hizi hazitumiwi tena wakati wowote kwenye data.

Unaweza kutumia ukaguzi wa upinde rangi kubaini makosa haya kwa kukadiria upinde rangi kwa kutumia mbinu ya nambari. Ikiwa iko karibu na gradients zilizohesabiwa, basi uenezi wa nyuma ulitekelezwa kwa usahihi. Ili kuunda ukaguzi wa upinde rangi, angalia nyenzo hizi kuu kutoka CS231 hapa ΠΈ hapana pia na somo Andrew Nga juu ya mada hii.

Faizan Sheikh inaonyesha njia tatu kuu za kuibua mtandao wa neva:

  • Utangulizi ni njia rahisi zinazotuonyesha muundo wa jumla wa modeli iliyofunzwa. Hizi ni pamoja na matokeo ya maumbo au vichujio vya tabaka mahususi za mtandao wa neva na vigezo ndani ya kila safu.
  • Uamilisho kulingana. Ndani yake, tunabainisha uwezeshaji wa niuroni binafsi au vikundi vya niuroni ili kuelewa utendakazi wao.
  • Kulingana na gradients. Mbinu hizi zina mwelekeo wa kuchezea kipenyo ambacho huundwa kutoka kwa pasi za mbele na nyuma za mafunzo ya kielelezo (ikiwa ni pamoja na ramani za ustadi na ramani za kuwezesha darasa).

Kuna zana kadhaa muhimu za kuibua uanzishaji na miunganisho ya tabaka za mtu binafsi, k.m. ConX ΠΈ Tensorboard.

Kufanya kazi na mitandao ya neva: orodha ya kuangalia kwa utatuzi

Utambuzi wa parameta

Mitandao ya Neural ina vigezo vingi vinavyoingiliana, ambayo inatatiza uboreshaji. Kwa kweli, sehemu hii ni somo la utafiti unaofanywa na wataalamu, kwa hivyo mapendekezo hapa chini yanapaswa kuzingatiwa tu kama ushauri, pointi za kuanzia za kujenga.

Ukubwa wa kifurushi (ukubwa wa kundi) - Iwapo ungependa saizi ya bechi iwe kubwa vya kutosha kupata makadirio sahihi ya upinde rangi yenye makosa, lakini ndogo ya kutosha kwa mteremko wa stochastic gradient (SGD) kuhalalisha mtandao wako. Saizi ndogo za bechi zitasababisha muunganiko wa haraka kwa sababu ya kelele wakati wa mchakato wa mafunzo na baadaye shida za uboreshaji. Hii inaelezwa kwa undani zaidi hapa.

Kiwango cha kujifunza - chini sana itasababisha muunganiko wa polepole au hatari ya kukwama katika minima ya ndani. Wakati huo huo, kiwango cha juu cha kujifunza kitasababisha tofauti ya uboreshaji kwa sababu una hatari ya kuruka kupitia sehemu ya kina lakini nyembamba ya kazi ya kupoteza. Jaribu kutumia upangaji wa kasi ili kuipunguza unapofunza mtandao wa neva. Imesasishwa na CS231n kuna sehemu kubwa iliyojitolea kwa shida hii.

Ukataji wa gradientβ€Š - kupunguza viwango vya kigezo wakati wa uenezaji wa nyuma kwa thamani ya juu au kawaida ya kando. Inatumika kwa utatuzi wa kipenyo chochote kinacholipuka ambacho unaweza kukutana nacho katika sehemu ya tatu.

Urekebishaji wa kundi - kutumika kurekebisha data ya pembejeo ya kila safu, ambayo inaruhusu sisi kutatua tatizo la mabadiliko ya ndani ya covariate. Ikiwa unatumia Dropout na Batch Norma pamoja, angalia nakala hii.

Kushuka kwa daraja la Stochastic (SGD) - kuna aina kadhaa za SGD zinazotumia kasi, viwango vya kujifunza vinavyobadilika na mbinu ya Nesterov. Walakini, hakuna hata mmoja wao aliye na faida dhahiri katika suala la ufanisi wa ujifunzaji na jumla (maelezo hapa).

Urekebishaji - ni muhimu kwa ajili ya kujenga modeli inayoweza kufikiwa kwa ujumla, kwani inaongeza adhabu kwa ugumu wa kielelezo au maadili yaliyokithiri ya parameta. Hii ni njia ya kupunguza tofauti za mfano bila kuongeza kwa kiasi kikubwa upendeleo wake. Zaidi habari ya kina - hapa.

Ili kutathmini kila kitu mwenyewe, unahitaji kuzima urekebishaji na uangalie upinde wa data wa upotezaji mwenyewe.

Kuacha nje ni njia nyingine ya kurahisisha mtandao wako ili kuzuia msongamano. Wakati wa mafunzo, kuacha shule kunafanywa tu kwa kudumisha shughuli za neuron na uwezekano fulani p (hyperparameter) au kuiweka kwa sifuri katika kesi kinyume. Kama matokeo, mtandao lazima utumie kitengo tofauti cha vigezo kwa kila kundi la mafunzo, ambayo hupunguza mabadiliko katika vigezo fulani ambavyo vinatawala.

Muhimu: Ikiwa unatumia zote mbili kuacha shule na urekebishaji wa bechi, kuwa mwangalifu kuhusu mpangilio wa shughuli hizi au hata kuzitumia pamoja. Yote hii bado inajadiliwa kikamilifu na kuongezewa. Hapa kuna mijadala miwili muhimu juu ya mada hii kwenye Stackoverflow ΠΈ kumbukumbu.

Udhibiti wa kazi

Ni kuhusu kurekodi mtiririko wa kazi na majaribio. Ikiwa hutaandika chochote, unaweza kusahau, kwa mfano, ni kiwango gani cha kujifunza au uzito wa darasa hutumiwa. Shukrani kwa udhibiti, unaweza kutazama na kuzalisha majaribio ya awali kwa urahisi. Hii hukuruhusu kupunguza idadi ya majaribio yanayorudiwa.

Hata hivyo, nyaraka za mwongozo zinaweza kuwa kazi ngumu katika kesi ya kiasi kikubwa cha kazi. Hapa ndipo zana kama vile Comet.ml huingia ili kukusaidia kuweka hifadhidata kiotomatiki, mabadiliko ya misimbo, historia ya majaribio na miundo ya uzalishaji, ikijumuisha maelezo muhimu kuhusu muundo wako (hyperparameta, vipimo vya utendakazi wa modeli na maelezo ya mazingira).

Mtandao wa neva unaweza kuwa nyeti sana kwa mabadiliko madogo, na hii itasababisha kushuka kwa utendaji wa mfano. Kufuatilia na kuweka kumbukumbu za kazi yako ni hatua ya kwanza unayoweza kuchukua ili kusawazisha mazingira na uundaji wako.

Kufanya kazi na mitandao ya neva: orodha ya kuangalia kwa utatuzi

Natumai chapisho hili linaweza kuwa mahali pa kuanzia kwako kuanza kurekebisha mtandao wako wa neva.

Skillbox inapendekeza:

Chanzo: mapenzi.com

Kuongeza maoni