Kouluttamisen käytännöt
Tässä osiossa käydään läpi mallin kouluttamiseen liittyviä hyviä tai yleisiä käytäntöjä. Jatkossa kurssilla edetään eteenpäin kytkeytyvistä, täysin kytketyistä verkoista (engl. feedforward fully connected neural networks, multilayer perceptron) kohti oudompia rakenteita, kuten konvoluutioverkkoja ja sekvensseihin soveltuvia rekursiivisia verkkoja. Ennen näitä on hyvä varmistaa, että päädyt johonkin johtopäätökseen siitä, millä oletusarvoilla voit lähteä liikenteeseen esimerkiksi projektityössäsi, mikäli tehtävään soveltuu MLP/FFNN-malli.
On oletus, että luet tässä yhteydessä kurssikirjan Hands-On Machine Learning with Scikit-Learn and PyTorch1 luvun 10 sekä 11 1. Voi olla miellekästä selata myös erittäin kansantajuista kirjaa nimeltään Machine Learning Yearning2. Toinen kurssikirja, Understanding Deep Learning, antaa hyvin taustaa erityisesti regularisointiin. Toivon mukaan olet jo valmiiksi edennyt luvun 8 loppuun asti kirjassa, sillä kurssin aiheet ovat tähän asti liittyneet pitkälti kirjan lukuihin 1–8. Alla on taulukko, joka on lainattu suoraan kurssikirjasta1. Se toimikoon hyvänä koosteena termeistä, jotka sinun tulisi osata selittää omin sanoin oppimispäiväkirjaasi.
| Hyperparameter | Default value |
|---|---|
| Kernel initialization | He initialization |
| Activation function | ReLU if shallow; Swish if deep |
| Normalization | None if shallow; batch-norm or layer-norm if deep |
| Regularization | Early stopping; weight decay if needed |
| Optimizer | Nesterov accelerated gradient or Adam |
| Learning rate scheduler | Performance scheduling or 1cycle |
Taulukko 1. Yleisiä hyperparametreja ja niiden oletusarvoja. Taulukko on englanniksi alkuperäislähteen mukaisesti. 1
Tehtävät
Tehtävä: Kouluttamisen käytännöt
Selitä tiiviisti alla listatut termit omin sanoin oppimispäiväkirjaasi. Kirjaa asiat ylös siten, että voit jatkossa käyttää sitä omana muistiinpanona, kun sinun pitää palata näihin aiheisiin. Voit käyttää apuna kurssimateriaaleja ja muita lähteitä, mutta kirjoita asiat omin sanoin. Mikäli koodin käyttö on tarpeen, voit käyttää sitä havainnollistamaan asiaa. Se on jopa suositeltavaa osassa termeissä.
- Validation split (sinulle on training ja testing jo aiemmin tuttua tavaraa.) (ks.
luvut 5–7 ja 12)
- Vanishing gradients (ks.
luku 11)
- Regularisointi (dropout, L1 ja L2 weight decay) (ks.
ja
)
- Error analysis (ks.
luku 14–19)
Alla lähdevinkkejä:
Hands-On Machine Learning with Scikit-Learn and PyTorch -kirjaa eli virallista kurssikirjaa. Se löytyy koulun kirjastosta.
Machine Learning Yearning -kirjaa, joka on ilmainen e-kirja. Löytyy osoitteesta: andrew-ng-machine-learning-yearning.pdf
Understanding Deep Learning -kirja antaa ryhtiä teorialle. Regularisoinnista on kokonainen luku 9.
Tehtävä: Piirrä multihead malli (Gaussian)
Avaa 420_gaussian_regression.py ja tutustu sen koodiin, erityisesti mallin rakenteeseen. Vahvista osaamisesi piirtämällä malli valitsemallasi työkalulla (esim. Excalidraw). Malli on muotoa multi-task learning siinä mielessä, että se ennustaa kaksi lukua: mean ja variance. Mallilla on ns. shared trunk ja kaksi headia, mistä johtuu termi multihead.
Kannattaa tutustua myös kurssikirjan luvun 10 lopulla olevaan "Building Nonsequential Models Using Custom Modules" -osioon, jossa on eri tavalla haarautuva verkko. Verkkossa osa inputista tuodaan "ohitusreittiä" piilotetun kerrosten ohi.
Skip connections / Residual connections
Ohitusreittejä kutsutaan englanniksi termeillä skip connections tai residual connections. Ne auttavat mallia oppimaan syvempiä verkkoja tehokkaammin, koska ne helpottavat gradientin kulkua taaksepäin verkon läpi. Törmännet näihin myöhemmin konvoluutioverkon ResNet arkkitehtuurissa.