Kdyby se ten postup ze slovnikem a tokenizaci pouzil i pro bezne jazyky, jak by ten slovnik musel byt zhruba velky? Me pripadne, ze u beznych jazyku (rekneme anglictina, cestina, rustina, nemcina) by mohl byt slovnik mega maly a ze ty programovaci jazyky to maji slozitejsi. Protoze treba int, void, while, if, return je skoro vsude :)
Např. neural machine translation běžně pracuje s 20k-100k slovníkem (https://arxiv.org/abs/1709.07809 str. 61); záleží na jazyku a jeho morfologii. Na klasifikaci se používají word embeddings nebo character embeddings (doporučuji např. http://dx.doi.org/10.1613/jair.4992 ). Naopak, one-hot encoding při velkých slovnících to má těžší než u malých slovníků protože je velmi sparse, proto ty word embeddings (viz předchozí link).
Tak mě napadlo, k čemu se vlastně mohou použít ty paralelní sítě - když například budu rozpoznávat obrázky jako minule a kromě určení objektu (kočka, auto, truck) ještě budu chtít určit, jestli je obrázek rozostřený nebo přeexponovaný. Takže bych si udělal síť se třemi větvemi:
1) už popsanou konvoluční síť
2) asi normální síť pro detekci rozostření
3) taky asi normální síť pro detekci přeexponování (to bude nejjednodušší)
chápu to správně?
Tohle se dá řešit multi-task learningem. Tzn. pro každý task existuje jedna výstupní vrstva (např. softmax pro klasifikaci) ale skryté vrstvy mají sdílené váhy (resp. existuje jen jedna množina skrytých vrstev pro celou síť). Trénuje se to celé najednou, tzn. lossy se spočítají pro všechny výstupní tasky a back-propagation pak funguje jako normálně (gradienty "probublají" zpátky ke vstupu). Nevím jak Torch, ale např. v Keras se tohle dělá celkem snadno, když člověk použije jejich funkcionální API.
Tohle byl před pár lety hezký příklad na LSTM sítě: http://karpathy.github.io/2015/05/21/rnn-effectiveness/
no zkousel jsem ten predchozi priklad, ty obrazky z databaze CIFAR. a tam to pro vetsi pocet iteraci trvalo zhruba hodinu na i7 (vytizilo to vsech osm jader). Na vetsi site bych uz sel do CUDA a ten priklad se na to da upravit dost jednoduse.
btw. bych tu sit naucil rozpoznavat kod od Linuse. to asi da podle peprnych komentaru ;)