Mikä on paras tapa oppia koneoppimista ilman verkkokursseja?
Mikä on paras tapa aloittaa koneoppimisen ja syväoppimisen oppiminen käymättä mitään verkkokursseja? ilmestyi alun perin sivustolla Quora: the place to gain and share knowledge, empowering people to learn from others and better understand the world.
Vastaaja: Eric Jang, Research engineer at Google Brain, on Quora:
Sallikaa minun aloittaa sanomalla, että ei ole olemassa yhtä ainoaa ”parasta tapaa” koneoppimisen oppimiseen, ja sinun pitäisi löytää järjestelmä, joka toimii sinulle hyvin. Jotkut ihmiset pitävät enemmän kurssien rakenteesta, toiset haluavat lukea kirjoja omaan tahtiinsa, ja jotkut haluavat sukeltaa suoraan koodiin.
Aloitin Andrew Ng:n Machine Learning Coursera -kurssilla vuonna 2012 tietäen melkein nollaa lineaarialgebrasta ja mitään tilastoista tai koneoppimisesta. Huomaa, että vaikka kurssilla käsiteltiin neuroverkkoja, se ei ollut Deep Learning -kurssi. Pidin todella siitä, miten kurssi muotoili ”koneoppimisen” pelkäksi numeeriseksi optimoinniksi.
Jos verkkokurssit ovat sinulle liian hitaita, paras konsolidoitu resurssi lienee Goodfellowin, Bengion ja Courvillen Deep Learning -kirja. Siinä on muutama luku omistettu perusteille (vähän niin kuin mitä Ng:n kurssilla käsitellään) ja sitten hypätään käytännön DNN:iin.
Tilastollinen/matemaattisesti tiukka tausta ei ole välttämätön hyödyllisen Deep Learning -työn tekemiseen, mutta se todella auttaa muotoilemaan hypoteeseja siitä, miksi mallit toimivat/ei toimi, ja mikä voisi auttaa. Murphyn Probabilistic Machine Learning -oppikirja on loistava perusta matemaattisesti tiukalle ML:lle (ja siinä on myös hienoja diagrammeja!)
Kun olet lukenut DL-kirjan loppuun, voit ”erikoistua” johonkin Deep Learningin osa-alueista/alalalohkoista toteuttamalla joitakin papereita itse. Joitakin esimerkki aiheita:
- Bayesian Deep Learning (neuroverkkojen ja graafisten mallien yhdistäminen)
- Deep Reinforcement Learning (AlphaGo, Atari-pelaava tekoäly, robotiikka)
- Generatiiviset mallit (GANit, PixelCNN, VAE:t)
- Adversariaaliset menetelmät (GAN:t, Actor-Critic)
- Syväoppimisen teoria
- Tietokonenäkö
- NLP/puhe (käännökset, kuvatekstit, seq2seq-mallit)
- Symbolinen päättely (esim.g. proof-solving)
- Rekursiiviset neuroverkot (esim. LSTM:t, ulkoinen muisti, tarkkaavaisuus)
- Sovellukset (aluespesifisten ongelmien ratkaiseminen, kuten syövän luokittelu, proteiinien taittaminen, huuliltalukeminen videolta)
- Meta-oppiminen/oppiminen oppimisesta oppimiseen (synteettiset gradientit, polkuverkko)
Syväoppimisen kenttä on laajentunut dramaattisesti viime vuosien aikana niin paljon, ettei ole realistista perehtyä syväluotaavan oppimisen kaikkiin osa-alueisiin lyhyessä ajassa. Suosittelen sukeltamaan syvälle yhteen tiettyyn osa-alueeseen, ja sitten on helpompi oppia muita osa-alueita, kun hallitset yhden alueen. Näillä aloilla ei ole enää kovin paljon yhteistä sen lisäksi, että ne kaikki hyödyntävät syväoppimisen ilmaisuvoimaa tehtävien oppimisessa päästä päähän ja ovat yleisesti ottaen kokeellisia (pikemminkin kuin teoreettista tietotekniikkaa).
Tänä päivänä mielenkiintoisimmat Deep Learning -julkaisut tulevat jonkin julkisesti saatavilla olevan toteutuksen kanssa TensorFlow’ssa, Pytorchissa, Torchissa, Kerasissa tai Theanossa, joten yksi tapa rakentaa intuitiota nopeasti on katsoa, voiko olemassa olevaa mallia parantaa (esim. tehdä paremman ResNetin).
Ei varmaankaan kannata toteuttaa omaa neuroverkkopakettia Pythonissa tyhjästä. On paljon työtä saada pienet yksityiskohdat kuntoon (katso esimerkiksi tämä kommentti siitä, miten softmax-operaatio on toteutettu TensorFlow’ssa).
Deep Learning -kehykset ovat monimutkaisia ja niiden opettelu vie aikaa, ja nopein tapa hallita DL-kehys on toteuttaa haastava neuroverkkoarkkitehtuuri, joka harjoittaa kehyksen hämäräperäisiä piirteitä tai DL:n useiden eri osa-alueiden rajat ylittäviä ideoita. Joitakin suosituksia hankalista arkkitehtuureista/koulutusputkistoista:
- Progressiiviset verkot
- DenseNet
- Synteettiset gradientit
- Neuraaliset Turing-koneet
- Embed-to-Control
- Neuraalinen konekääntäminen
Viimeinen, monet koneoppimisen tutkijat ovat Twitterissä, ja Redditin Machine Learning -yhteisö on mukava tapa saada uusimmat uutiset neuroverkoista. Ala on hyvin kilpaillut ja liikkuu todella nopeasti, joten se auttaa pysymään ajan tasalla.
Tämä kysymys ilmestyi alun perin Quora. the place to gain and share knowledge, empowering people to learn from others and better understand the world. Voit seurata Quoraa Twitterissä, Facebookissa ja Google+:ssa. Lisää kysymyksiä:
- Machine Learning: Kuinka vaikeaa motivoituneen tutkijan on rakentaa automatisoitu kaupankäyntijärjestelmä kotoa käsin?
- Tietokoneohjelmointi: Mistä tunnistat aloittelevan ohjelmoijan?
- Oppiminen: Miten voin ajatella nopeammin ja paremmin?
Quora: Paikka, jossa voit hankkia ja jakaa tietoa, antaa ihmisille mahdollisuuden oppia muilta ja ymmärtää maailmaa paremmin.