ã¯ããã«
ãã£ãŒãã©ãŒãã³ã°ãã¯ãããžãŒããã°ããç解ã§ããããã«èšèšãããã·ãªãŒãºã®3çªç®ã®ïŒãããŠæåŸã®ïŒèšäºã玹ä»ããŸãã MNISTïŒææžãæ°åã®åé¡ïŒãšCIFAR-10ïŒå°ããªç»åã®10ã¯ã©ã¹ãžã®åé¡ïŒé£è¡æ©ãè»ãé³¥ãç«ã鹿ãç¬ãã«ãšã«ïŒã®é©åãªããã©ãŒãã³ã¹ãåŸãããã«ãåºæ¬ååããéèŠãªæ©èœã«ç§»è¡ããŸãã銬ãè¹ããã©ãã¯ïŒã
ååã
ç³ã¿èŸŒã¿ãã¥ãŒã©ã«ãããã¯ãŒã¯ã¢ãã«ãèŠãŠãããããã¢ãŠããšåŒã°ããåçŽã ãå¹æçãªæ£ååæ¹æ³ã䜿çšããŠãKeras深局åŠç¿ãããã¯ãŒã¯ãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠ78.6ïŒ
ã®ç²ŸåºŠãè¿
éã«éæã§ããããšã瀺ããŸããã
ããã§ãæãèå³æ·±ãã¿ã¹ã¯ã«ãã£ãŒãã©ãŒãã³ã°ãé©çšããããã«å¿
èŠãªåºæ¬ã¹ãã«ãåŸãããŸããïŒäŸå€ã¯
éç·åœ¢æç³»åãåŠçããã¿ã¹ã¯ã§ããããã®èæ
®äºé
ã¯ãã®ã¬ã€ãã®ç¯å²ãè¶
ããŠãããã©ã®
ãªã«ã¬ã³ããã¥ãŒã©ã«ãããã¯ãŒã¯ ïŒRNNïŒãéåžžæãŸãããœãªã¥ãŒã·ã§ã³ã§ãããã®ã¬ã€ãã®æåŸã®éšåã«ã¯ãéåžžã«éèŠã§ããããã®ãããªèšäºã§ã¯èŠèœãšãããã¡ãªã®ã¯ãåºæ¬çãªã¢ãã«ãããäžè¬åããããã«ã¢ãã«ãæããããã®ã¢ãã«ã®åŸ®èª¿æŽã®ç§andã§ã ããªããå§ããŸããã
ããã¥ã¢ã«ã®ãã®éšåã¯ããµã€ã¯ã«ã®
æåãš
2çªç®ã®èšäºã«ç²ŸéããŠããããšãåæãšããŠããŸãã
ãã€ããŒãã©ã¡ãŒã¿ãŒã®ã»ããã¢ãããšããŒã¹ã¢ãã«
éåžžããã¥ãŒã©ã«ãããã¯ãŒã¯ã®éçºããã»ã¹ã¯ããã®ãããªåé¡ã解決ããããã«æ¢ã«æ£åžžã«äœ¿çšãããŠããã¢ãŒããã¯ãã£ãçŽæ¥äœ¿çšãããã以åã¯è¯ãçµæãããããããã€ããŒãã©ã¡ãŒã¿ãŒã䜿çšããŠãåçŽãªãããã¯ãŒã¯ã®éçºããå§ãŸããŸãã æçµçã«ã¯ãé©åãªéå§ç¹ãšãªãããã©ãŒãã³ã¹ã¬ãã«ãéæãããã®åŸããã¹ãŠã®åºå®ãã©ã¡ãŒã¿ãŒãå€æŽãããããã¯ãŒã¯ããæ倧ã®ããã©ãŒãã³ã¹ãæœåºã§ããããã«ãªãããšãé¡ã£ãŠããŸãã ãã®ããã»ã¹ã¯ããã¬ãŒãã³ã°ãéå§ããåã«ã€ã³ã¹ããŒã«ããå¿
èŠããããããã¯ãŒã¯ã³ã³ããŒãã³ãã®å€æŽã䌎ããããäžè¬ã«
ãã€ããŒãã©ã¡ãŒã¿ãŒã®ãã¥ãŒãã³ã°ãšåŒã°ããŸãã
ããã§èª¬æããæ¹æ³ã¯ãã°ã©ãã£ãã¯ããã»ããµããªãå Žåã«CIPAR-10ããã°ãããããã¿ã€ãã³ã°ããã®ãæ¯èŒçé£ãããããCIFAR-10ã§ããå
·äœçãªã¡ãªãããæäŸããå¯èœæ§ããããŸãããMNISTã§ã®ããã©ãŒãã³ã¹ã®æ¹åã«çŠç¹ãåœãŠãŸãã ãã¡ããããªãœãŒã¹ãèš±ãã°ãCIFARã§ãããã®ã¡ãœãããè©ŠããŠãæšæºã®CNNã¢ãããŒããšæ¯èŒããŠã©ãã ãã®ã¡ãªãããããããèªåã§ç¢ºãããããšããå§ãããŸãã
åºçºç¹ã¯ã以äžã«ç€ºãå
ã®CNNã§ãã äžéšã®ã³ãŒããã©ã°ã¡ã³ããç解ã§ããªããšæãããå Žåã¯ããã®ã·ãªãŒãºã®åã®2ã€ã®ããŒãã«ãã¹ãŠã®åºæ¬ååã説æããããšããå§ãããŸãã
ããŒã¹ã¢ãã«ã³ãŒãfrom keras.datasets import mnist
ãã¬ãŒãã³ã°äžèŠ§ Train on 54000 samples, validate on 6000 samples Epoch 1/12 54000/54000 [==============================] - 4s - loss: 0.3010 - acc: 0.9073 - val_loss: 0.0612 - val_acc: 0.9825 Epoch 2/12 54000/54000 [==============================] - 4s - loss: 0.1010 - acc: 0.9698 - val_loss: 0.0400 - val_acc: 0.9893 Epoch 3/12 54000/54000 [==============================] - 4s - loss: 0.0753 - acc: 0.9775 - val_loss: 0.0376 - val_acc: 0.9903 Epoch 4/12 54000/54000 [==============================] - 4s - loss: 0.0629 - acc: 0.9809 - val_loss: 0.0321 - val_acc: 0.9913 Epoch 5/12 54000/54000 [==============================] - 4s - loss: 0.0520 - acc: 0.9837 - val_loss: 0.0346 - val_acc: 0.9902 Epoch 6/12 54000/54000 [==============================] - 4s - loss: 0.0466 - acc: 0.9850 - val_loss: 0.0361 - val_acc: 0.9912 Epoch 7/12 54000/54000 [==============================] - 4s - loss: 0.0405 - acc: 0.9871 - val_loss: 0.0330 - val_acc: 0.9917 Epoch 8/12 54000/54000 [==============================] - 4s - loss: 0.0386 - acc: 0.9879 - val_loss: 0.0326 - val_acc: 0.9908 Epoch 9/12 54000/54000 [==============================] - 4s - loss: 0.0349 - acc: 0.9894 - val_loss: 0.0369 - val_acc: 0.9908 Epoch 10/12 54000/54000 [==============================] - 4s - loss: 0.0315 - acc: 0.9901 - val_loss: 0.0277 - val_acc: 0.9923 Epoch 11/12 54000/54000 [==============================] - 4s - loss: 0.0287 - acc: 0.9906 - val_loss: 0.0346 - val_acc: 0.9922 Epoch 12/12 54000/54000 [==============================] - 4s - loss: 0.0273 - acc: 0.9909 - val_loss: 0.0264 - val_acc: 0.9930 9888/10000 [============================>.] - ETA: 0s [0.026324689089493085, 0.99119999999999997]
ã芧ã®ãšããããã®ã¢ãã«ã¯ãã¹ãã»ããã§99.12ïŒ
ã®ç²ŸåºŠãéæããŠããŸãã ããã¯ãååã§èª¬æããMLPã®çµæãããããã«åªããŠããŸããããŸã æé·ã®äœå°ããããŸãïŒ
ãã®ã¬ã€ãã§ã¯ããã®ãããªãåºæ¬çãªããã¥ãŒã©ã«ãããã¯ãŒã¯ãïŒCNNã¢ãŒããã¯ãã£ããéžè±ããããšãªãïŒæ¹åããæ¹æ³ãå
±æããåŸãããããã©ãŒãã³ã¹ã²ã€ã³ãè©äŸ¡ããŸãã
-æ£èŠå
åã®èšäºã§ãæ©æ¢°åŠç¿ã®äž»ãªåé¡ã®1ã€ã¯ããã¬ãŒãã³ã°ã³ã¹ãã®æå°åãè¿œæ±ããã¢ãã«ãäžè¬åããèœåã倱ã£ãå Žåã®
éå°é©åã®åé¡ã§ãããšè¿°ã¹ãŸããã
æ¢ã«è¿°ã¹ãããã«ãåãã¬ãŒãã³ã°ããã§ãã¯ãç¶ããç°¡åãªæ¹æ³ã
ããããã¢ãŠãã¡ãœããããããŸãã
ããããç§ãã¡ã®ãããã¯ãŒã¯ã«é©çšã§ããä»ã®ã¬ã®ã¥ã©ã€ã¶ãŒããããŸãã ããããæã人æ°ã®ãããã®ã¯

-æ£èŠåïŒæžéãè±èªãæžéãšãåŒã°ããŸãïŒãããããã¢ãŠããããçŽæ¥çãªæ£ååã¢ãããŒãã䜿çšããŸãã éåžžãåãã¬ãŒãã³ã°ã®äž»ãªåå ã¯ãã¢ãã«ã®è€éãïŒãã©ã¡ãŒã¿ãŒã®æ°ã®ç¹ã§ïŒã§ããããã¯ãåé¡ã解決ããã«ã¯ååã§ã¯ãªãããã¬ãŒãã³ã°ã»ãããå©çšã§ããŸããã ããæå³ã§ã¯ãã¬ã®ã¥ã©ã©ã€ã¶ãŒã®ã¿ã¹ã¯ã¯ãã¢ãã«ã®è€éãã軜æžãããã©ã¡ãŒã¿ãŒã®æ°ãä¿æããããšã§ãã

-æ£èŠåã¯ãæé«å€ã®
éã¿ã«ããã«ãã£ã課ã ãããããæå°åããããšã«ããå®è¡ãããŸã

ãã©ã¡ãŒã¿ãŒÎ»ã䜿çšãã-normã¯ããã¬ãŒãã³ã°ã»ããã®æ倱ãæå°åããããšã«é¢ããŠããã«ã ãæå°åããåªå
床ãè¡šãæ£ååä¿æ°ã§ãã ã€ãŸããåéã¿Ïã«ã€ããŠãç®çé¢æ°ã«è¿œå ããŸãã
)
æé

ïŒä¿æ°Âœã¯ããã©ã¡ãŒã¿Ïã«å¯Ÿãããã®é
ã®åŸé
ã2λÏã§ã¯ãªãλÏã«çãããªãããã«äœ¿çšãããŸã-誀差éäŒææ³ãé©çšãã䟿å®äžïŒã
é©åãªÎ»ãéžæããããšãéåžžã«éèŠã§ããããšã«æ³šæããŠãã ããã ä¿æ°ãå°ããããå Žåãæ£ååã®åœ±é¿ã¯ç¡èŠã§ãã倧ããããå Žåãã¢ãã«ã¯ãã¹ãŠã®éã¿ããªã»ããããŸãã ããã§ã¯ãλ= 0.0001ã䜿çšããŸãã ãã®æ£èŠåã¡ãœãããã¢ãã«ã«è¿œå ããã«ã¯ãã€ã³ããŒãããã1ã€å¿
èŠã§ãããã®åŸãæ£èŠåãé©çšããåã¬ã€ã€ãŒã«
W_regularizer
ãã©ã¡ãŒã¿ãŒãè¿œå ããã ãã§ååã§ãã
from keras.regularizers import l2
ãããã¯ãŒã¯ã®åæå
åã®èšäºã§èŠèœãšããç¹ã®1ã€ã¯ãã¢ãã«ãæ§æããã¬ã€ã€ãŒ
ã®éã¿ã®åæå€ãéžæããåçã§ãã æããã«ããã®è³ªåã¯éåžžã«éèŠã§ãããã¹ãŠã®éã¿ã0ã«èšå®ããããšã¯ãåŠç¿ã®é倧ãªé害ã«ãªããŸããæåã¯ã©ã®éã¿ãã¢ã¯ãã£ãã«ãªããªãããã§ãã éé±1ã®å€ã«éã¿ãå²ãåœãŠãããšããéåžžã¯æé©ãªãªãã·ã§ã³ã§ã¯ãããŸãã-å®éãæã«ã¯ïŒã¿ã¹ã¯ãšã¢ãã«ã®è€éãã«å¿ããŠïŒã¢ãã«ã®æ£ããåæåã«äŸåããå Žåããããæé«ã®ããã©ãŒãã³ã¹ãéæãããããŸã£ããåæããŸããã ã¿ã¹ã¯ã«ãã®ãããªæ¥µç«¯ãªãã®ãå«ãŸããŠããªãå Žåã§ããéã¿ãåæåããé©åãªæ¹æ³ã¯ãæ倱é¢æ°ãèæ
®ããŠã¢ãã«ãã©ã¡ãŒã¿ãŒãäºåèšå®ãããããã¢ãã«ã®åŠç¿èœåã«å€§ãã圱é¿ããŸãã
æãèå³æ·±ã2ã€ã®æ¹æ³ã次ã«ç€ºããŸãã
Xavieråæåã¡ãœããïŒå Žåã«ãã£ãŠã¯Glorotã®ã¡ãœããïŒã ãã®æ¹æ³ã®äž»ãªã¢ã€ãã¢ã¯ã
ç·åœ¢æŽ»æ§åé¢æ°ã®ãšã©ãŒã®åæ¹ããã³åŸæ¹äŒæ¬äžã«ã¬ã€ã€ãŒãééããä¿¡å·ã®ééãåçŽåããããšã§ãïŒãã®æ¹æ³ã¯ãã·ã°ã¢ã€ãé¢æ°ã§ã
äžé£œåé åãç·åœ¢ç¹æ§ãæã€ãããããŸãæ©èœããŸãïŒã éã¿ãèšç®ãããšãããã®æ¹æ³ã¯ãåæ£ãçãã確çååžïŒåäžãŸãã¯æ£èŠïŒã«äŸåããŸãã
%20%3D%20%7B2%20%5Cover%7Bn_%7Bin%7D%20%2B%20n_%7Bout%7D%7D%7D)
ã©ãã§

ãããŠ

-åã®ã¬ã€ã€ãŒãšæ¬¡ã®ã¬ã€ã€ãŒã®ãã¥ãŒãã³ã®æ°ã
åæåã¡ãœãã
GeïŒHeïŒã¯ãZawierã¡ãœããã®ããªãšãŒã·ã§ã³ã§ããã
ReLUã¢ã¯ãã£ããŒã·ã§ã³é¢æ°ã«ããé©ããŠããŸãããã®é¢æ°ãå®çŸ©ã®ååã®é åã§ãŒããè¿ããšããäºå®ãè£æ£ããŸãã ã€ãŸãããã®å Žå
%20%3D%20%7B2%20%5Cover%7Bn_%7Bin%7D%7D%7D)
Zawierã®åæåã«å¿
èŠãªåæ£ãååŸããããã«ãéã¿ãšå
¥åå€
ãçžé¢ãã ã
æåŸ
å€ã
ãŒãã§ãããšä»®å®ããŠãç·åœ¢ãã¥ãŒãã³ã®åºåå€ã®åæ£ïŒãã€ã¢ã¹æåãªãïŒãã©ããªãããèã
ãŸã ã
ãããã£ãŠãã¬ã€ã€ãŒãééããåŸã®å
¥åããŒã¿ã®åæ£ãç¶æããã«ã¯ãåæ£ã
%20%3D%20%7B1%20%5Cover%7Bn_%7Bin%7D%7D%7D)
ã ãšã©ãŒãäŒæããŠååŸãããšãã«åãåŒæ°ãé©çšã§ããŸã
%20%3D%20%7B1%20%5Cover%7Bn_%7Bout%7D%7D%7D)
ã éåžžããããã®èŠä»¶ã®äž¡æ¹ãæºããããšã¯ã§ããªããããéã¿ã®åæ£ãå¹³åãšããŠéžæããŸãã
%20%3D%20%7B2%20%5Cover%7Bn_%7Bin%7D%20%2B%20n_%7Bout%7D%7D%7D)
ããã¯ãå®éã«ã¯ãéåžžã¯ããŸãæ©èœããŸãã
ãããã®2ã€ã®æ¹æ³ã¯ãåºäŒãã»ãšãã©ã®äŸã«é©ããŠããŸãïŒãã ãã
çŽäº€åæåæ¹æ³ããç¹ã«ãªã«ã¬ã³ããããã¯ãŒã¯ã«é¢ããŠã¯ç 究ã«å€ããŸãïŒã ã¬ã€ã€ãŒã®åæåã¡ãœãããæå®ããããšã¯é£ãããããŸããã以äžã§èª¬æããããã«ã
init
ãã©ã¡ãŒã¿ãŒãæå®ããã ãã§ãã ãã¹ãŠã®ReLUã¬ã€ã€ãŒã«Geã®åäžãªåæåïŒ
glorot_uniform
ïŒã䜿çšããåºå
glorot_uniform
ã«Gevierã®åäžãªåæåïŒ
glorot_uniform
ïŒã䜿çšããŸãïŒæ¬è³ªçã«ãããžã¹ãã£ãã¯é¢æ°ãè€æ°ã®é¡äŒŒããŒã¿ã«äžè¬åããããã§ãïŒã
ãããæ£èŠå
ãããæ£èŠåã¯ã2015幎åé ã«
IoffeãšSzegedyã«ãã£ãŠææ¡ããããã£ãŒãã©ãŒãã³ã°ã®é«éåæ¹æ³ã§ãarXivã§æ¢ã«560ååŒçšãããŠããŸãïŒ ãã®æ¹æ³ã¯ããã¥ãŒã©ã«ãããã¯ãŒã¯ã®å¹æçãªåŠç¿ã劚ãã次ã®åé¡ã解決ããŸããä¿¡å·ããããã¯ãŒã¯ãäŒæãããšããå
¥åã§ä¿¡å·ãæ£èŠåããå
åŽã®å±€ãééããŠããå¹³åãšåæ£ã®äž¡æ¹ã«ãã£ãŠå€§ããæªãå¯èœæ§ããããŸãïŒãã®çŸè±¡ã¯
å
éšå
±åæ£ã·ãããšåŒã°ããŸãïŒ ïŒãç°ãªãã¬ãã«ã®åŸé
éã®æ·±å»ãªäžäžèŽã«æºã¡ãŠããŸãã ãããã£ãŠããã匷åãªæ£ååã䜿çšããå¿
èŠããããããã«ãã£ãŠåŠç¿ã®ããŒã¹ãé
ããªããŸãã
ãããæ£èŠåã¯ããã®åé¡ã«å¯Ÿããéåžžã«ç°¡åãªè§£æ±ºçãæäŸããŸããæåŸ
å€ãšåäœåæ£ããŒãã«ãªãããã«å
¥åããŒã¿ã
æ£èŠåããŸãã åã¬ã€ã€ãŒã«å
¥ãåã«æ£èŠåãå®è¡ãããŸãã ã€ãŸãããã¬ãŒãã³ã°äžã¯
batch_size
äŸãæ£èŠåãããã¹ãäžã¯äºåã«ãã¹ãããŒã¿ã衚瀺ã§ããªãããããã¬ãŒãã³ã°ã»ããå
šäœã«åºã¥ããŠååŸããçµ±èšãæ£èŠåããŸãã ã€ãŸããç¹å®ã®ãããïŒããã±ãŒãžïŒã®æåŸ
å€ãšåæ£ãèšç®ããŸã

次ã®ããã«ïŒ
ãããã®çµ±èšçç¹æ§ã䜿çšããŠããããå
šäœã§ãŒãã®æåŸ
å€ãšåäœåæ£ãæã€ããã«ã¢ã¯ãã£ããŒã·ã§ã³é¢æ°ãå€æããŸãã
ããã§ãε> 0ã¯ã0ã§é€ç®ããããšãé²ããã©ã¡ãŒã¿ãŒã§ãïŒãããã®æšæºåå·®ãéåžžã«å°ããå ŽåããŸãã¯ãŒãã«çããå Žåã§ãïŒã æåŸã«ãæçµçãªã¢ã¯ãã£ããŒã·ã§ã³é¢æ°
yãååŸããããã«ãæ£èŠåäžã«äžè¬åããèœåã倱ãããªãããšã確èªããå¿
èŠããããŸããå
ã®ããŒã¿ã«ã¹ã±ãŒãªã³ã°ããã³ã·ããæäœãé©çšãããããæ£èŠåãããå€ã®ä»»æã®ã¹ã±ãŒãªã³ã°ããã³ã·ãããèš±å¯ããŠæçµé¢æ°ãååŸã§ããŸãã¢ã¯ãã£ããŒã·ã§ã³ïŒ
ããã§ãβãšÎ³ã¯ãã·ã¹ãã ããã¬ãŒãã³ã°ã§ãããããæ£èŠåã®ãã©ã¡ãŒã¿ãŒã§ãïŒãã¬ãŒãã³ã°ããŒã¿ã®åŸé
éäžæ³ã«ãã£ãŠæé©åã§ããŸãïŒã ãã®äžè¬åã¯ããããã®æ£èŠåããã¥ãŒã©ã«ãããã¯ãŒã¯ã®å
¥åã«çŽæ¥é©çšããã®ã«åœ¹ç«ã€ããšãæå³ããŸãã
ãã®æ¹æ³ã¯ãæ·±ãç³ã¿èŸŒã¿ãããã¯ãŒã¯ã«é©çšããããšãã»ãšãã©ã®å Žåãç®æšãéæããŸã-åŠç¿ãé«éåããŸãã ããã«ãåªãã
ã¬ã®ã¥ã©ã©ã€ã¶ãŒã§ããå¯èœ
æ§ããã ããã¬ãŒãã³ã°ã®ããŒã¹ããã¯ãŒãéžæã§ããŸã

-ã¬ã®ã¥ã¬ãŒã¿ãšããããã¢ãŠãïŒå Žåã«ãã£ãŠã¯å®å
šã«äžèŠã§ãïŒã ããã§ã®æ£ååã¯ãç¹å®ã®äŸã®ãããã¯ãŒã¯ã®çµæã
ãã¯ã決å®è«çã§ã¯ãªããšããäºå®ã®çµæã§ããïŒãã®çµæãåŸããããããå
šäœã«äŸåããŸãïŒãäžè¬åãåçŽåããŸãã
ãããŠæåŸã«ãã¡ãœããã®èè
ã¯ãã¥ãŒãã³ã®æŽ»æ§åæ©èœã®
åã«æ£èŠå
ãæ£åžž
ã«é©çšããããšãæšå¥šããŠããŸãããæè¿ã®ç 究ã§ã¯ããããããæçšã§ãªãå Žåãå°ãªããšã掻æ§å
åŸã«äœ¿çšããããšãæçã§ããããšã瀺ãããŠããŸããããã¯ãã®ã¬ã€ãã®äžéšãšããŠè¡ããŸãã
BatchNormalization
ããããã¯ãŒã¯ã«ãããæ£èŠåãè¿œå ããã®ã¯éåžžã«ç°¡åã§ãïŒ
BatchNormalization
ã¬ã€ã€ãŒããããæ
åœããããã€ãã®ãã©ã¡ãŒã¿ãæž¡ããŸããæãéèŠãªãã©ã¡ãŒã¿ã¯
axis
ïŒããŒã¿ã®ã©ã®è»žã«æ²¿ã£ãŠçµ±èšç¹æ§ãèšç®ãããŸãïŒã ç¹ã«ãç³ã¿èŸŒã¿å±€ã§äœæ¥ããŠãããšãã¯ãåã
ã®ãã£ãã«ã«æ²¿ã£ãŠæ£èŠåããæ¹ãé©åã§ãããããã£ãŠãselect
axis=1
ã§ãã
from keras.layers.normalization import BatchNormalization
ãã¬ãŒãã³ã°ã»ããã®æ¡åŒµïŒããŒã¿æ¡åŒµïŒ
äžèšã®æ¹æ³ã¯äž»ã«
ã¢ãã«èªäœã®åŸ®èª¿æŽã«é¢ãããã®ã§ãããç¹ã«ç»åèªèã¿ã¹ã¯ã«é¢ããŠã¯ã
ããŒã¿èª¿æŽãªãã·ã§ã³ãæ€èšããã®ã«åœ¹ç«ã¡ãŸãã
ã»ãŒåããµã€ãºã§ããããã«é
眮ãããææžãã®æ°åãèªèããããã«ãã¥ãŒã©ã«ãããã¯ãŒã¯ããã¬ãŒãã³ã°ãããšæ³åããŠãã ããã ããã§ã誰ãããã®ãããã¯ãŒã¯ã«ç°ãªããµã€ãºãšåŸæã®ãããã«ã·ããããæ°ã®ãã¹ããäžãããšã©ããªãããæ³åããŠã¿ãŸããããé©åãªã¯ã©ã¹ã«å¯Ÿããèªä¿¡ãæ¥æ¿ã«äœäžããŸãã çæ³çã«ã¯ããã®ãããª
æªã¿ã«èããããããã«ãããã¯ãŒã¯ããã¬ãŒãã³ã°ã§ãããšäŸ¿å©ã§ãããã¢ãã«ã¯ãã¬ãŒãã³ã°ã»ããã®äœããã®çµ±èšåæãå®è¡ããŠæšå®ããäžæ¹ã§ãæäŸãããµã³ãã«ã«åºã¥ããŠã®ã¿ãã¬ãŒãã³ã°ã§ããŸãã
幞ããªããšã«ããã®åé¡ã®è§£æ±ºçã¯åçŽã§ãããç¹ã«ç»åèªèã¿ã¹ã¯ã§ã¯å¹æçã§ãããã¬ãŒãã³ã°äžã«æªãã ããŒãžã§ã³ã§ãã¬ãŒãã³ã°ããŒã¿ã人工çã«æ¡åŒµããŸãã ããã¯æ¬¡ã®ããšãæå³ããŸããã¢ãã«ã®å
¥åã®äŸãèšå®ããåã«ãå¿
èŠãšæããããã¹ãŠã®å€æãé©çšãããããã¯ãŒã¯ãããŒã¿ã«äžãã圱é¿ãçŽæ¥èŠ³å¯ãããããã«å¯ŸããŠãããŸãåäœãããããã«æããŸãäŸã ããšãã°ãMNISTã»ããããã·ãããã¹ã±ãŒãªã³ã°ãã¯ãŒãããã«ããããæ°åã®äŸã次ã«ç€ºããŸãã





Kerasã¯ãåŠç¿ã»ãããæ¡åŒµããããã®çŽ æŽãããã€ã³ã¿ãŒãã§ãŒã¹ã§ãã
ImageDataGenerator
ã¯ã©ã¹ãæäŸããŸãã ã¯ã©ã¹ãåæåããŠãç»åã«ã©ã®ãããªå€æãé©çšããããäŒããŠããããžã§ãã¬ãŒã¿ãŒãä»ããŠãã¬ãŒãã³ã°ããŒã¿ãå®è¡ãã
fit
ã¡ãœãããåŒã³åºãã次ã«
flow
ã¡ãœãããåŒã³åºããŠãè£å
ãããããã®ç¶ç¶çã«å±éããã€ãã¬ãŒã¿ãŒãååŸããŸãã ãã®ã€ãã¬ãŒã¿ã䜿çšããŠã¢ãã«ããã¬ãŒãã³ã°ããç¹å¥ãª
model.fit_generator
ã¡ãœããããããã³ãŒãã倧å¹
ã«ç°¡çŽ åãããŸãã å°ããªæ¬ ç¹ããããŸãïŒããã¯
validation_split
ãã©ã¡ãŒã¿ãŒã倱ãæ¹æ³ã§ããã€ãŸããããŒã¿ã®æ€èšŒãµãã»ãããèªåã§åé¢ããå¿
èŠããããŸãããããã«ã¯4è¡ã®ã³ãŒãããå¿
èŠãããŸããã
ããã§ã¯ãã©ã³ãã ãªæ°Žå¹³ããã³åçŽã·ããã䜿çšããŸãã
ImageDataGenerator
ã¯ãã©ã³ãã ãªå転ãã¹ã±ãŒãªã³ã°ãã¯ãŒãã³ã°ããã©ãŒãªã³ã°ãå®è¡ããæ©èœãæäŸããŸãã å®éã«ã¯ããã®ããã«æ¡å€§ãããææžãã®æ°åã«åºäŒãå¯èœæ§ã¯äœãããããããã®å€æã¯ãã¹ãŠãããããé¡åãé€ããŠãè©ŠããŠã¿ã䟡å€ããããŸãã
from keras.preprocessing.image import ImageDataGenerator
ã¢ã³ãµã³ãã«
ãã¥ãŒã©ã«ãããã¯ãŒã¯ã䜿çšããŠããŒã¿ã3ã€ä»¥äžã®ã¯ã©ã¹ã«åæ£ãããšãã«èŠãããèå³æ·±ãæ©èœã®1ã€ã¯ãç°ãªãåæåŠç¿æ¡ä»¶ã®äžã§ã1ã€ã®ã¯ã©ã¹ã«ããç°¡åã«å²ãåœãŠãããäžæ¹ã§ãä»ã®ã¯ã©ã¹ãæ··ä¹±ããããšã§ãã MNISTãäŸãšããŠäœ¿çšãããšãåäžã®ãã¥ãŒã©ã«ãããã¯ãŒã¯ã§ããªãã«ãš5ãå®å
šã«åºå¥ã§ããããšãããããŸããã7ãããŠããããæ£ããåé¢ããæ¹æ³ã¯åŠç¿ããŸããããéã¯å¥ã®ãããã¯ãŒã¯ããåå²ããå Žåã§ãã
ãã®äžäžèŽã¯ãçµ±èš
ã¢ã³ãµã³ãã«ã®æ¹æ³ã䜿çšããŠåŠçã§ããŸã
ã1ã€ã®ãããã¯ãŒã¯ãé
眮ããç°ãªãåæå€ã§ãã®
ã³ããŒãè€æ°æ§ç¯ããåãå
¥åããŒã¿ã§å¹³åçµæãèšç®ããŸãã ããã§ã¯ã3ã€ã®åå¥ã®ã¢ãã«ãæ§ç¯ããŸãã ãããã®éãã¯ãKerasã«çµã¿èŸŒãŸããå³åœ¢åŒã§ç°¡åã«è¡šãããšãã§ããŸãã
ã³ã¢ãããã¯ãŒã¯ã¢ã³ãµã³ãã«ç¹°ãè¿ãã«ãªããŸãããKerasã§ã¯ãæå°éã®ã³ãŒããè¿œå ããã ãã§èšç»ãå®è£
ã§ããŸããæåŸã®
merge
ã¬ã€ã€ãŒã§çµæãçµã¿åãããŠãã¢ãã«ã®ã³ã³ããŒãã³ããã«ãŒãã§æ§ç¯ããæ¹æ³ããŸãšããŸãã
from keras.layers import merge
æ©æåæ¢
ãã
ã§ããã€ããŒãã©ã¡ãŒã¿ã®
æé©åã®ããåºãåéãžã®å°å
¥ãšããŠãå¥ã®æ¹æ³ã説æããŸãã ãããŸã§ããã¬ãŒãã³ã°ã®é²æç¶æ³ãç£èŠããããã ãã«æ€èšŒæžã¿ã®ããŒã¿ã»ããã䜿çšããŸããããããã¯ééããªãåççã§ã¯ãããŸããïŒãã®ããŒã¿ã¯å»ºèšçãªç®çã«ã¯äœ¿çšãããªãããïŒã å®éãæ€èšŒã»ããã¯ããããã¯ãŒã¯ãã€ããŒãã©ã¡ãŒã¿ãŒïŒæ·±ãããã¥ãŒãã³/æ žã®æ°ãæ£ååãã©ã¡ãŒã¿ãŒãªã©ïŒãè©äŸ¡ããããã®åºç€ãšããŠäœ¿çšã§ããŸãã ãããã¯ãŒã¯ããã€ããŒãã©ã¡ãŒã¿ãŒã®ããŸããŸãªçµã¿åããã§é§åãããæ€èšŒã»ããã§ã®ããã©ãŒãã³ã¹ã«åºã¥ããŠæ±ºå®ãè¡ãããããšãæ³åããŠãã ããã
æçµçã«ãã€ããŒãã©ã¡ãŒã¿ã決å®ããåã«
ããã¹ãã»ããã«ã€ããŠäœãç¥ãå¿
èŠããªãããšã«æ³šæããŠãã ããã
ããããªããšããã¹ãã»ããã®å
åãåŠç¿ããã»ã¹ã«ç¡æèã«æµã蟌ãã§ããŸããŸãã ãã®ååã¯
ãæ©æ¢°åŠç¿ã®é»éåŸãšãåŒã°ããå€ãã®åæã®ã¢ãããŒãã§éåãããŠããŸãã
ãããããæ€èšŒã»ããã䜿çšããæãç°¡åãªæ¹æ³ã¯ã
æ©æåæ¢ãšåŒã°ããæé ã䜿çšããŠã
æ代 ãïŒãµã€ã¯ã«ïŒã®æ°ãèšå®ããããšã§ããç¹å®ã®æ代ïŒãã©ã¡ãŒã¿ã®å¿èïŒã§æ倱ãæžå°ãå§ããªãå Žåã¯ãåŠç¿ããã»ã¹ãåæ¢ããŸãã ããŒã¿ã»ããã¯æ¯èŒçå°ãããããã«é£œåãããããå¿èåã5ãšããã¯ã«èšå®ãããšããã¯ã®æ倧æ°ã50ã«å¢ãããŸãïŒãã®æ°ã«éããããšã¯ã»ãšãã©ãããŸããïŒã
æ©æåæ¢ã¡ã«ããºã ã¯ã
ã³ãŒã«ããã¯é¢æ°ã®EarlyStoppingã¯ã©ã¹ãéããŠKerasã«å®è£
ãããŠããŸãã ã³ãŒã«ããã¯é¢æ°ã¯ã
fit
ãŸãã¯
fit_generator
æž¡ããã
callbacks
ãã©ã¡ãŒã¿ãŒã䜿çšããŠãåãã¬ãŒãã³ã°ãšããã¯åŸã«
fit_generator
ã ãã€ãã®ããã«ããã¹ãŠãéåžžã«ã³ã³ãã¯ãã§ããããã°ã©ã ã¯1è¡ã®ã³ãŒãã§æé·ããŸãã
from keras.callbacks import EarlyStopping
ã³ãŒããèŠããŠãã ãã
äžèšã®6ã€ã®æé©åææ³ãé©çšãããšããã¥ãŒã©ã«ãããã¯ãŒã¯ã®ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
ã³ãŒã from keras.datasets import mnist
Epoch 1/50 54000/54000 [==============================] - 30s - loss: 0.3487 - acc: 0.9031 - val_loss: 0.0579 - val_acc: 0.9863 Epoch 2/50 54000/54000 [==============================] - 30s - loss: 0.1441 - acc: 0.9634 - val_loss: 0.0424 - val_acc: 0.9890 Epoch 3/50 54000/54000 [==============================] - 30s - loss: 0.1126 - acc: 0.9716 - val_loss: 0.0405 - val_acc: 0.9887 Epoch 4/50 54000/54000 [==============================] - 30s - loss: 0.0929 - acc: 0.9757 - val_loss: 0.0390 - val_acc: 0.9890 Epoch 5/50 54000/54000 [==============================] - 30s - loss: 0.0829 - acc: 0.9788 - val_loss: 0.0329 - val_acc: 0.9920 Epoch 6/50 54000/54000 [==============================] - 30s - loss: 0.0760 - acc: 0.9807 - val_loss: 0.0315 - val_acc: 0.9917 Epoch 7/50 54000/54000 [==============================] - 30s - loss: 0.0740 - acc: 0.9824 - val_loss: 0.0310 - val_acc: 0.9917 Epoch 8/50 54000/54000 [==============================] - 30s - loss: 0.0679 - acc: 0.9826 - val_loss: 0.0297 - val_acc: 0.9927 Epoch 9/50 54000/54000 [==============================] - 30s - loss: 0.0663 - acc: 0.9834 - val_loss: 0.0300 - val_acc: 0.9908 Epoch 10/50 54000/54000 [==============================] - 30s - loss: 0.0658 - acc: 0.9833 - val_loss: 0.0281 - val_acc: 0.9923 Epoch 11/50 54000/54000 [==============================] - 30s - loss: 0.0600 - acc: 0.9844 - val_loss: 0.0272 - val_acc: 0.9930 Epoch 12/50 54000/54000 [==============================] - 30s - loss: 0.0563 - acc: 0.9857 - val_loss: 0.0250 - val_acc: 0.9923 Epoch 13/50 54000/54000 [==============================] - 30s - loss: 0.0530 - acc: 0.9862 - val_loss: 0.0266 - val_acc: 0.9925 Epoch 14/50 54000/54000 [==============================] - 31s - loss: 0.0517 - acc: 0.9865 - val_loss: 0.0263 - val_acc: 0.9923 Epoch 15/50 54000/54000 [==============================] - 30s - loss: 0.0510 - acc: 0.9867 - val_loss: 0.0261 - val_acc: 0.9940 Epoch 16/50 54000/54000 [==============================] - 30s - loss: 0.0501 - acc: 0.9871 - val_loss: 0.0238 - val_acc: 0.9937 Epoch 17/50 54000/54000 [==============================] - 30s - loss: 0.0495 - acc: 0.9870 - val_loss: 0.0246 - val_acc: 0.9923 Epoch 18/50 54000/54000 [==============================] - 31s - loss: 0.0463 - acc: 0.9877 - val_loss: 0.0271 - val_acc: 0.9933 Epoch 19/50 54000/54000 [==============================] - 30s - loss: 0.0472 - acc: 0.9877 - val_loss: 0.0239 - val_acc: 0.9935 Epoch 20/50 54000/54000 [==============================] - 30s - loss: 0.0446 - acc: 0.9885 - val_loss: 0.0226 - val_acc: 0.9942 Epoch 21/50 54000/54000 [==============================] - 30s - loss: 0.0435 - acc: 0.9890 - val_loss: 0.0218 - val_acc: 0.9947 Epoch 22/50 54000/54000 [==============================] - 30s - loss: 0.0432 - acc: 0.9889 - val_loss: 0.0244 - val_acc: 0.9928 Epoch 23/50 54000/54000 [==============================] - 30s - loss: 0.0419 - acc: 0.9893 - val_loss: 0.0245 - val_acc: 0.9943 Epoch 24/50 54000/54000 [==============================] - 30s - loss: 0.0423 - acc: 0.9890 - val_loss: 0.0231 - val_acc: 0.9933 Epoch 25/50 54000/54000 [==============================] - 30s - loss: 0.0400 - acc: 0.9894 - val_loss: 0.0213 - val_acc: 0.9938 Epoch 26/50 54000/54000 [==============================] - 30s - loss: 0.0384 - acc: 0.9899 - val_loss: 0.0226 - val_acc: 0.9943 Epoch 27/50 54000/54000 [==============================] - 30s - loss: 0.0398 - acc: 0.9899 - val_loss: 0.0217 - val_acc: 0.9945 Epoch 28/50 54000/54000 [==============================] - 30s - loss: 0.0383 - acc: 0.9902 - val_loss: 0.0223 - val_acc: 0.9940 Epoch 29/50 54000/54000 [==============================] - 31s - loss: 0.0382 - acc: 0.9898 - val_loss: 0.0229 - val_acc: 0.9942 Epoch 30/50 54000/54000 [==============================] - 31s - loss: 0.0379 - acc: 0.9900 - val_loss: 0.0225 - val_acc: 0.9950 Epoch 31/50 54000/54000 [==============================] - 30s - loss: 0.0359 - acc: 0.9906 - val_loss: 0.0228 - val_acc: 0.9943 10000/10000 [==============================] - 2s [0.017431972888592554, 0.99470000000000003]
99.47% , 99.12%. , , MNIST, . CIFAR-10, , .
: , , , , , , , ( 99.79% MNIST).
ãããã«
ïŒãã®èšäºã§ã¯ãæã
ã¯ä»¥åã®èšäºã§èª¬æãããã¥ãŒã©ã«ãããã¯ãŒã¯ã®åŸ®èª¿æŽã®ããã®6ã€ã®ã¬ã»ãã·ã§ã³ãèŠ
-regulyariatsiyaåæå
ãããæ£èŠåãã¬ãŒãã³ã°ã»ããã®æ¡åŒµEnsembleã¡ãœããã¢ãŒãªãŒã¹ãããKerasãã£ãŒãã³ã³ããªã¥ãŒã·ã§ã³ãããã¯ãŒã¯ã«æ£åžžã«é©çšãããMNISTã®ç²ŸåºŠã倧å¹
ã«åäžãã90è¡æªæºã®ã³ãŒãã§æžã¿ãŸããããããã·ãªãŒãºã®æåŸã®èšäºã§ããããããšåã®2ã€ã®éšåãèªãããšãã§ããŸããããªãã®ç¥èããå¿
èŠãªãªãœãŒã¹ãšçµã¿åãããããšã§ããã£ãŒãã©ãŒãã³ã°ãããã¯ãŒã¯ã§æãã¯ãŒã«ãªãšã³ãžãã¢ã«ãªãããã®ã€ã³ã»ã³ãã£ãã«ãªãããšãé¡ã£ãŠããŸãããããããé¡ãããŸãïŒ
ãããä»äºã«æ¥ãŠãããŸãããïŒ :)wunderfund.ioã¯ã
é«é »åºŠã¢ã«ãŽãªãºã ååŒãæ±ãè¥ã財å£ã§ãã é«é »åºŠååŒã¯ãäžçäžã®æé«ã®ããã°ã©ããŒãšæ°åŠè
ã«ããç¶ç¶çãªç«¶äºã§ãã ç§ãã¡ã«åå ããããšã§ãããªãã¯ãã®é
åçãªæŠãã®äžéšã«ãªããŸãã
ç±å¿ãªç 究è
ãããã°ã©ããŒåãã«ãèå³æ·±ãè€éãªããŒã¿åæãšäœé
延ã®éçºã¿ã¹ã¯ãæäŸããŠããŸãã æè»ãªã¹ã±ãžã¥ãŒã«ãšå®å䞻矩ããªããããææ決å®ãè¿
éã«è¡ãããå®æœãããŸãã
ããŒã ã«åå ïŒ
wunderfund.io