|
|
||
|---|---|---|
| .. | ||
| lab | ||
| AdversarialCat_TF.ipynb | ||
| Dropout.ipynb | ||
| README.md | ||
| TrainingTricks.md | ||
| TransferLearningPyTorch.ipynb | ||
| TransferLearningTF.ipynb | ||
README.md
Esikoulutetut verkot ja siirtÀminen oppiminen
CNN:ien kouluttaminen voi viedÀ paljon aikaa, ja siihen tarvitaan runsaasti dataa. Suuri osa ajasta kuluu kuitenkin parhaita matalan tason suodattimia oppiessa, joita verkko voi kÀyttÀÀ kuvioiden tunnistamiseen kuvista. Luonnollinen kysymys herÀÀ - voimmeko kÀyttÀÀ yhdellÀ datasetillÀ koulutettua neuroverkkoa ja mukauttaa sen luokittelemaan erilaisia kuvia ilman tÀydellistÀ koulutusprosessia?
Pre-lecture quiz
TÀtÀ lÀhestymistapaa kutsutaan siirtÀmiseksi oppimiseksi, koska siirrÀmme tietoa yhdestÀ neuroverkkon mallista toiseen. SiirtÀmisessÀ oppimisessa aloitamme yleensÀ esikoulutetulla mallilla, joka on koulutettu suurella kuvadatasetillÀ, kuten ImageNet. NÀmÀ mallit osaavat jo hyvin tunnistaa erilaisia piirteitÀ yleisistÀ kuvista, ja monissa tapauksissa pelkkÀ luokittelijan rakentaminen nÀiden piirteiden pÀÀlle voi tuottaa hyviÀ tuloksia.
â SiirtĂ€minen oppiminen on termi, joka esiintyy myös muilla akateemisilla aloilla, kuten kasvatustieteessĂ€. Se viittaa prosessiin, jossa tietoa siirretÀÀn yhdeltĂ€ alueelta toiselle.
Esikoulutetut mallit piirteiden tunnistajina
EdellisessÀ osiossa kÀsitellyt konvoluutiot sisÀltÀvÀt useita kerroksia, joista jokainen on tarkoitettu tunnistamaan piirteitÀ kuvasta, alkaen matalan tason pikseliyhdistelmistÀ (kuten vaakasuora/pystysuora viiva tai veto) ja pÀÀtyen korkeampien tasojen piirteisiin, jotka vastaavat esimerkiksi liekin silmÀÀ. Jos koulutamme CNN:n riittÀvÀn suurella datasetillÀ, joka sisÀltÀÀ yleisiÀ ja monipuolisia kuvia, verkon pitÀisi oppia tunnistamaan nÀmÀ yleiset piirteet.
SekÀ Keras ettÀ PyTorch sisÀltÀvÀt toimintoja, joilla voi helposti ladata esikoulutettuja neuroverkon painoja joillekin yleisille arkkitehtuureille, joista useimmat on koulutettu ImageNet-kuvilla. Useimmin kÀytetyt arkkitehtuurit on kuvattu CNN Architectures -sivulla edellisessÀ oppitunnissa. Erityisesti kannattaa harkita seuraavia:
- VGG-16/VGG-19, jotka ovat suhteellisen yksinkertaisia malleja mutta tuottavat silti hyvÀÀ tarkkuutta. VGG:n kÀyttö ensimmÀisenÀ kokeiluna on hyvÀ valinta, kun halutaan nÀhdÀ, miten siirtÀminen oppiminen toimii.
- ResNet, Microsoft Researchin vuonna 2015 ehdottama malliperhe. NÀissÀ on enemmÀn kerroksia, ja ne vaativat enemmÀn resursseja.
- MobileNet, pienennettyjen mallien perhe, joka sopii mobiililaitteille. KÀytÀ niitÀ, jos sinulla on rajalliset resurssit ja voit tinkiÀ hieman tarkkuudesta.
TÀssÀ on esimerkki piirteistÀ, jotka VGG-16-verkko on tunnistanut kissan kuvasta:
Kissojen ja koirien datasetti
TÀssÀ esimerkissÀ kÀytÀmme Kissojen ja koirien datasettiÀ, joka on hyvin lÀhellÀ todellista kuvanluokitteluskenaariota.
âïž Harjoitus: SiirtĂ€minen oppiminen
Katsotaan siirtÀmistÀ oppimista kÀytÀnnössÀ vastaavissa muistikirjoissa:
Adversaarisen kissan visualisointi
Esikoulutettu neuroverkko sisÀltÀÀ erilaisia kuvioita "aivoissaan", mukaan lukien kÀsityksiÀ ihanteellisesta kissasta (sekÀ ihanteellisesta koirasta, ihanteellisesta seeprasta jne.). Olisi mielenkiintoista jotenkin visualisoida tÀmÀ kuva. TÀmÀ ei kuitenkaan ole yksinkertaista, koska kuviot ovat hajautettu verkon painoihin ja jÀrjestetty hierarkkiseen rakenteeseen.
Yksi lÀhestymistapa on aloittaa satunnaisesta kuvasta ja yrittÀÀ kÀyttÀÀ gradient descent -optimointitekniikkaa sÀÀtÀmÀÀn kuvaa niin, ettÀ verkko alkaa ajatella sen olevan kissa.
Jos teemme nÀin, saamme jotain hyvin satunnaisen kohinan kaltaista. TÀmÀ johtuu siitÀ, ettÀ on monia tapoja saada verkko ajattelemaan, ettÀ syötekuva on kissa, mukaan lukien sellaisia, jotka eivÀt ole visuaalisesti jÀrkeviÀ. Vaikka nÀmÀ kuvat sisÀltÀvÀt paljon kissalle tyypillisiÀ kuvioita, mikÀÀn ei rajoita niitÀ olemaan visuaalisesti erottuvia.
Tuloksen parantamiseksi voimme lisÀtÀ toisen termin hÀviöfunktioon, jota kutsutaan variation loss -termiksi. Se on mittari, joka osoittaa, kuinka samanlaisia kuvan vierekkÀiset pikselit ovat. Variation lossin minimointi tekee kuvasta tasaisemman ja poistaa kohinaa - paljastaen visuaalisesti miellyttÀvÀmpiÀ kuvioita. TÀssÀ esimerkki tÀllaisista "ihanteellisista" kuvista, jotka luokitellaan kissaksi ja seepraksi suurella todennÀköisyydellÀ:
![]() |
![]() |
|---|---|
| Ihanteellinen kissa | Ihanteellinen seepra |
Samaa lÀhestymistapaa voidaan kÀyttÀÀ suorittamaan niin sanottuja adversaarisia hyökkÀyksiÀ neuroverkkoon. Oletetaan, ettÀ haluamme huijata neuroverkkoa ja saada koiran nÀyttÀmÀÀn kissalta. Jos otamme koiran kuvan, jonka verkko tunnistaa koiraksi, voimme sitten sÀÀtÀÀ sitÀ hieman gradient descent -optimoinnin avulla, kunnes verkko alkaa luokitella sen kissaksi:
![]() |
![]() |
|---|---|
| AlkuperÀinen kuva koirasta | Kuva koirasta, joka luokitellaan kissaksi |
Katso koodi yllÀ olevien tulosten toistamiseen seuraavasta muistikirjasta:
Yhteenveto
SiirtÀmisen oppimisen avulla voit nopeasti rakentaa luokittelijan mukautettuun objektinluokittelutehtÀvÀÀn ja saavuttaa korkean tarkkuuden. NÀet, ettÀ monimutkaisemmat tehtÀvÀt, joita nyt ratkaisemme, vaativat suurempaa laskentatehoa, eikÀ niitÀ voida helposti ratkaista CPU:lla. Seuraavassa osiossa yritÀmme kÀyttÀÀ kevyempÀÀ toteutusta saman mallin kouluttamiseen pienemmillÀ laskentaresursseilla, mikÀ johtaa vain hieman alhaisempaan tarkkuuteen.
đ Haaste
Mukana olevissa muistikirjoissa on alaviitteitÀ siitÀ, miten siirtÀmisen oppiminen toimii parhaiten jossain mÀÀrin samanlaisen koulutusdatan kanssa (esimerkiksi uusi elÀinlaji). Tee kokeiluja tÀysin uusilla kuvatyypeillÀ nÀhdÀksesi, kuinka hyvin tai huonosti siirtÀmisen oppimisen mallit toimivat.
Post-lecture quiz
Kertaus ja itseopiskelu
Lue TrainingTricks.md syventÀÀksesi tietÀmystÀsi muista tavoista kouluttaa mallejasi.
TehtÀvÀ
TÀssÀ laboratoriossa kÀytÀmme todellista Oxford-IIIT lemmikkielÀindatasettiÀ, joka sisÀltÀÀ 35 kissan- ja koirarotua, ja rakennamme siirtÀmisen oppimisen luokittelijan.





