Osaisiko joku kertoa jotain opsasta/oppaita neuroverkoista? Siis tiedan suunilleen mita ne on, mutta en miten sellaista pitaisi lahtea toteuttamaan, miten esim opetus pitaisi toteuttaa? Lisaksi kiinostaisi millaisia versioita niista on, ja mita kayttokohteelisia/ajatuksellisia eroja niissa on?
Kiitos jo etukateen!
Noniin, aika rekisteröidä.
Neuroverkkojen pointti on löytää datasta piileviä korrelaatioita ja hyödyntää niitä regressio- tai klassifikaatio-ongelmissa. Helpoin lähestyttävä arkkitehtuuri lienee feedforward/multi layer perceptron (MLP) -neuroverkko, jossa syötetty data virtaa kerros kerrokselta eteenpäin tarkoituksena muodostaa viimeiselle kerrokselle jokin hyödyllinen representaatio. Alimmalla kerroksella saattaa olla esimerkiksi bittikarttana käsinkirjoitettuja (ja täten sotkuisia) numeroita ja ylimmälle kerrokselle muodostuu bittikartasta tunnistettu numero.
MLP edustaa neuroverkkojen matemaattista puolta, jossa kaikki kaavat perustellaan analyyttisesti optimointiongelmana. Esimerkiksi jos neuroverkon kaarien painojen opettamiseen käyttää backpropagation-algoritmia oikeasti tulee hyödyntäneeksi Gradient descent/jyrkin lasku -operaatiota virhefunktiolle, joka aiemmassa esimerkissä olisi erotus verkon toivotusta ja nykyisestä numeroennusteesta. Backpropagation-algoritmin voi toteuttaa itse pienellä vaivalla ja siitä suosittelisin aloittamaan.
Viimeaikojen trendi "Deep learning" on yksinkertaisuudessaan ajatus siitä, että nykyajan näytönohjaimista löytyy tarpeksi potkua isojen (leveiden+syvien) MLP-verkkojen kouluttamiseen. Googlella näitä on hyödynnetty esim. kuvahaussa. Myöskin treenimatskua löytyy nykyään todella paljon varsinkin Googlen tutkimusryhmillä ;).
Toki muitakin arkkitehtuureita on. Backpropagation on supervised learningia, eli opettaminen vaatii aina opettajasignaalin muotoa "Syötteellä X odotan tulosta Y, generalisoi siitä". Unsupervised learningissa ajatus on, että verkolle näytetään vain iso määrä dataa ja annetaan sen mukautua datan ominaisuuksiin itse. Yksi hyöty tässä on että maailmassa on paljon enemmän luokittelematonta/unlabeled -dataa kuin valmiiksi pureskeltuja X=Y-pareja.
Yksi mielenkiintoinen unsupervised learningin tekniikka on Teuvo Kohosen Self Organizing Map (SOM). Tässä eräs hauska tutorial: http://www.generation5.org/content/2004/
Jos otetaan askel kohti biologiaa, niin Numentan NuPIC-projekti on todella mielenkiintoinen (ja open sauce!). Heidän kehittämä laskennallinen malli pyrkii imitoimaan aivokuorella tapahtuvia operaatioita ja ottamaan huomioon esim. ajan etenemisen.
Koodioppaita löytyy Googlella melko helposti mille vaan ympäristölle. Itse tykkään nykyään pyöritellä laskentaa joko OpenCL:llä tai vielä agilemmin pythonin Theano-kirjastolla, joka muuntaa symboliset operaatiot C- tai CUDA-koodiksi. Osaa jopa derivoida puolestasi, fuk jea.
Aihe on jo aika vanha, joten et voi enää vastata siihen.