dzejkob
Založen: 17. 08. 2013 Příspěvky: 130
|
Zaslal: 14. květen 2023, 00:36:21 Předmět: neuronová síť - první krůčky |
|
|
Nahazuju nějaký machine learning téma. Pište sem cokoliv ohledně toho. Teď jsem se k tomu dostal, abych měl alespoň základní přehled + vycházím z toho, co se řešilo zde:
http://www.ceske-hry.cz/forum/viewtopic.php?p=56930
Házím sem zápisky:
- sčítání dvoubitových čísel (4 in, 3 out) - funguje např. topologie 4;16;3 ale je zajímavý, že i třeba 4;6;3 má docela dobrý výsledky. 4:10:3 je taky v pohodě takže neplatí, že počet neuronů musí pokrýt stavový prostor
- sčítání tříbitových čísel (6 in, 4 out) - a tady jsem už v loji. Když nechám jenom jednu hidden layer např. 6:32:4, tak to prostě "vyteče" a vrací to furt 1 1 1 1 . Ono to "dává" nějaký smysl - když to ve feed forward sečte všech 32 neuronů, tak vstup je docela velký číslo což je pak tanh dlouhej float skoro 1 (na to, že u jednoduchejch případů tam běhaj čísla cca 0..1) a přijde mi, že pak na korekci té chyby to už má velký nepřesnosti nebo něco na ten způsob. Zkusil jsem tam dát místo tanh sigmoidu, relu - nepomáhá.
- HA funguje eta=1.0 pro topologii 6:32:4 - po 50 tis záznamech to zkonverguje a vrací správné výsledky. Funguje i méně neuronů (sigmoida)
- nicméně topologie 6:32:8:4 po 50 tis záznamech s eta=1.0 vrací pořád nesmysly. Po 100 tis se to začne trefovat tak v 10% případů (sigmoida)
- pokus s čtyřbitovými čísly je zajímavej (8:32:5) drží se to na 1 1 1 1 po 50 tis záznamech a pak to nějak zkonverguje a začne vracet výsledky (sigmoida). Druhá hidden layer se teda ukazuje docela k ničemu.
- zajímavý je, že čtyřbitové čísla (8:32:5) a tanh nezkonverguje ani po 200 tis záznamech. Předpokládám, že nestačí ten odhad derivace 1 - x^2, funguje jenom ta sigmoida. Čtu, že se opravdu používá to tanh s odhadem derivace, ale mě to nefunguje. Relu také ne (to vrací furt stejné odpovědi). Funguje jen sigmoida, kde ta derivace je přesná
- EDIT2 domněnka, že by s tím mohl souviset vstupní šum se ukázala správná - když jsou prvotní weights jenom kladné čísla, tak to přetéká - když ale i záporné, tak to nepřeteče a zkonverguje rychle
- s touto úpravou začínají maličko konvergovat i ty hidden layery např. 5 bitová čísla a 10:32:8:6 ale asi to je jenom zdání - i po 500 k záznamech je přesnost sítě tak max 20%
Tak trochu si připadám, že objevuju kolo. Napadají vás nějaké hinty? Neznáte nějaké dobré ale jednoduché zdroje? Zajímaly by mě především nějaké příklady jednodušších sítí - topologie, objemy dat, use casy atd. Nevíte jak "rozběhat" více hidden layerů? Ono by to snad mělo pak mít nějaké lepší vlastnosti u vstupů mimo trénovací data. Je možný, že když jeden hidden layer potřebuje 100 k záznamů, tak dva hidden layery o řád vyšší?
Zkusil jsem síť s jedním hidden layerem naučit na sčítání čísel s perfixy 00 v domění, že to pak někdy odhadne i delší číslo, nicméně když se naučený síti dá do prefixu 01 / 10 / 11, tak to ve 100% případech neodhadne výsledek - což je asi pochopitelný, když to tam jedničky nikdy nevidělo. |
|