×÷Õߣº ÁúÐij¾&&º®Ð¡Ñô
ʱ¼ä£º2015Äê12Ô¡£
³ö´¦£º
£¬
ÉùÃ÷£º°æȨËùÓУ¬×ªÔØÇëÁªÏµ×÷Õß²¢×¢Ã÷³ö´¦£¬Ð»Ð»¡£
¡°»úÆ÷ѧϰ¡±ÊÇÒ»¸öºÜʵ¼ùµÄ¹ý³Ì¡£¾ÍÏñ¸Õ¿ªÊ¼Ñ§ÓÎÓ¾£¬ÄãÔÚÖ»ÔÚ°¶ÉϱȻ®Ò»¶Ñ¹æ¶¨¶¯×÷»¹²»ÈçÏÈÌøµ½Ë®ÀïÊìϤˮÐÔѧϰÀ´µÃ¿ì¡£ÒÔÎÒÃÇѧϰ¡°»úÆ÷ѧϰ¡±µÄ¾ÑéÀ´¿´£¬ºÜ¶à¸ß´óÉϵĸÅÄî¸Õ¿ªÊ¼²»¶®Ò²Ã»¹Øϵ£¬ÏÈд¸ö¶«Î÷À´ÅÜÅÜ£¬Óиö¸Ð¾õÁËÖ®ºóÔÙѧϰÄÇЩ¸ÅÄîºÍÀíÂ۾Ϳì¶àÁË¡£Èç¹û±ðÈËÒѾ×öºÃÁËÂÖ×Ó£¬Ö±½ÓÄùýÀ´ÓÃÔò¸ü¿ì¡£Òò´Ë£¬±¾ÎÄÖ±½ÓÓÃMichael NielsenÏÈÉúµÄ´úÂ루githubµØÖ·£¬Ñ¹Ëõ°üµØÖ·£©×÷ΪÀý×Ó£¬¸ø´ó¼ÒÕ¹ÏÖÉñ¾ÍøÂç·ÖÎöµÄÆÕ±é¹ý³Ì£ºµ¼ÈëÊý¾Ý£¬ÑµÁ·Ä£ÐÍ£¬ÓÅ»¯Ä£ÐÍ£¬Æô·¢Ê½Àí½âµÈ¡£
±¾ÎļÙÉè´ó¼ÒÒѾÁ˽âpythonµÄ»ù±¾Óï·¨£¬²¢ÔÚ×Ô¼º»úÆ÷ÉÏÔËÐйý¼òµ¥python½Å±¾¡£
2¡¢ ÎÒÃÇÒª½â¾öµÄÎÊÌ⣺ÊÖдÊý×Öʶ±ðÊÖдÊý×Öʶ±ðÊÇ»úÆ÷ѧϰÁìÓòÖÐÒ»¸ö¾µäµÄÎÊÌ⣬ÊÇÒ»¸ö¿´ËƶÔÈËÀàºÜ¼òµ¥È´¶Ô³ÌÐòÊ®·Ö¸´ÔÓµÄÎÊÌâ¡£ºÜ¶àÔçÆÚµÄÑéÖ¤Âë¾ÍÊÇÀûÓÃÕâ¸öÌصãÀ´Çø·ÖÈËÀàºÍ³ÌÐòÐÐΪµÄ£¬µ±È»´Ë´¦¾Í²»Ìá12306½üºõ·´ÈËÀàµÄÆæÝâÑéÖ¤ÂëÁË¡£
»Øµ½ÊÖдÊý×Öʶ±ð£¬±ÈÈçÎÒÃÇҪʶ±ð³öÒ»¸öÊÖдµÄ¡°9¡±£¬ÈËÀà¿ÉÄÜͨ¹ýʶ±ð¡°Éϰ벿·ÖÒ»¸öԲȦ£¬ÓÒÏ·½Òý³öÒ»ÌõÊúÏß¡±¾ÍÄܽøÐÐÅжϡ£µ«ÓóÌÐò±í´ï¾ÍËƺõºÜÀ§ÄÑÁË£¬ÄãÐèÒª¿¼ÂǷdz£¶àµÄÃèÊö·½Ê½£¬¿¼ÂǷdz£¶àµÄÌØÊâÇé¿ö£¬×îÖÕ·¢ÏÖ³ÌÐòдµÃ·Ç³£¸´ÔÓ¶øÇÒЧ¹û²»ºÃ¡£
¶øÓ㨻úÆ÷ѧϰ£©Éñ¾ÍøÂçµÄ·½·¨£¬ÔòÌṩÁËÁíÒ»¸ö˼·£º»ñÈ¡´óÁ¿µÄÊÖдÊý×ÖµÄͼÏñ£¬²¢ÇÒÒÑÖªËüÃDZíʾµÄÊÇÄĸöÊý×Ö£¬ÒÔ´ËΪѵÁ·Ñù±¾¼¯ºÏ£¬×Ô¶¯Éú³ÉÒ»Ì×Ä£ÐÍ£¨ÈçÉñ¾ÍøÂçµÄ¶ÔÓ¦³ÌÐò£©£¬ÒÀ¿¿ËüÀ´Ê¶±ðеÄÊÖдÊý×Ö¡£
±¾ÎÄÖвÉÓõÄÊý¾Ý¼¯¾ÍÊÇÖøÃûµÄ¡°MNISTÊý¾Ý¼¯¡±¡£ËüµÄÊÕ¼¯ÕßÖ®Ò»ÊÇÈ˹¤ÖÇÄÜÁìÓòÖøÃûµÄ¿Æѧ¼Ò¡ª¡ªYann LeCu¡£Õâ¸öÊý¾Ý¼¯ÓÐ60000¸öѵÁ·Ñù±¾Êý¾Ý¼¯ºÍ10000¸ö²âÊÔÓÃÀý¡£ÔËÓñ¾ÎÄչʾµÄµ¥Òþ²ãÉñ¾ÍøÂ磬¾Í¿ÉÒÔ´ïµ½96%µÄÕýÈ·ÂÊ¡£ 3¡¢Í¼½â£º½â¾öÎÊÌâµÄ˼·
ÎÒÃÇ¿ÉÒÔÓÃÏÂͼչʾÉÏÃæµÄ´ÖÂÔ˼·¡£
µ«ÊÇÈçºÎÓÉ¡°ÑµÁ·¼¯¡±À´¡°Éú³ÉÄ£ÐÍ¡±ÄØ£¿
ÔÚÕâÀïÎÒÃÇʹÓ÷´¸´ÍƼöµÄÄæÍÆ·¨¡ª¡ª¼ÙÉèÕâ¸öÄ£ÐÍÒѾÉú³ÉÁË£¬ËüÓ¦¸ÃÂú×ãʲôÑùµÄÌØÐÔ£¬ÔÙÒÔ´ËÌØÐÔΪÌõ¼þ·´¹ýÀ´Çó³öÄ£ÐÍ¡£
¿ÉÒÔÍÆÏë¶øÖª£¬±»Éú³ÉµÄÄ£ÐÍÓ¦¸Ã¶ÔÓÚѵÁ·¼¯µÄÇø·ÖЧ¹û·Ç³£ºÃ£¬Ò²¾ÍÊÇÏàÓ¦µÄѵÁ·Îó²î·Ç³£µÍ¡£±ÈÈçÓÐÒ»¸öδ֪ÆäÏàӦȨÖغÍÆ«ÒƵÄÉñ¾ÍøÂ磬¶øѵÁ·Éñ¾ÍøÂçµÄ¹ý³Ì¾ÍÊÇÖð²½È·¶¨ÕâЩδ֪²ÎÊýµÄ¹ý³Ì£¬×îÖÕʹµÃÕâЩ²ÎÊýÈ·¶¨µÄÄ£ÐÍÔÚѵÁ·¼¯ÉϵÄÎó²î´ïµ½×îСֵ¡£ÎÒÃǽ«»áÉè¼ÆÒ»¸öÊýÁ¿Ö¸±êºâÁ¿Õâ¸öÎó²î£¬Èç¹ûѵÁ·Îó²îûÓдﵽ×îС£¬ÎÒÃǽ«¼ÌÐøµ÷Õû²ÎÊý£¬Ö±µ½Õâ¸öÖ¸±ê´ïµ½×îС¡£µ«ÕâÑùѵÁ·³öÀ´µÄÄ£ÐÍÎÒÃÇÈÔÎÞ·¨±£Ö¤ËüÃæ¶ÔеÄÊý¾ÝÈÔ»áÓÐÕâÑùºÃµÄʶ±ðЧ¹û£¬¾ÍÐèÒªÓòâÊÔ¼¯¶ÔÄ£ÐͽøÐп¼ºË£¬µÃ³öµÄ²âÊÔ½á¹û×÷Ϊ¶ÔÄ£Ð͵ÄÆÀ¼Û¡£Òò´Ë£¬ÉÏͼ¾Í¿ÉÒÔϸ»¯³ÉÏÂͼ£º
µ«ÊÇ£¬Èç¹ûÎÒÃÇÒѾÉú³ÉÁ˶à¸öÄ£ÐÍ£¬Ôõô´ÓÖÐÑ¡³ö×îºÃµÄÄ£ÐÍ£¿Ò»¸ö×ÔÈ»µÄ˼·¾ÍÊÇͨ¹ý±È½Ï²»Í¬Ä£ÐÍÔÚ²âÊÔ¼¯ÉϵÄÎó²î£¬ÌôÑ¡³öÎó²î×îСµÄÄ£ÐÍ¡£Õâ¸öÏë·¨¿´ËÆûʲôÎÊÌ⣬µ«ÊÇËæ×ÅÄã²âÊÔµÄÄ£ÐÍÔö¶à£¬Äã»á¾õµÃÓòâÊÔ¼¯É¸Ñ¡³öÀ´µÄÄ£ÐÍÒ²²»ÄÇô¿ÉÐÅ¡£±ÈÈçÎÒÃÇÔö¼ÓÒ»¸öÉñ¾ÍøÂçµÄÒþ²Ø²ã½Úµã£¬¾Í»á²úÉúеĶÔӦȨÖØ£¬²úÉúÒ»¸öеÄÄ£ÐÍ¡£µ«ÊÇÎÒÒ²²»ÖªµÀÔö¼Ó¶àÉÙ¸ö½ÚµãÊǺÏÊʵģ¬ËùÒԱȽÏÈ«ÃæµÄÏë·¨¾ÍÊdz¢ÊÔ²âÊÔ²»Í¬µÄ½ÚµãÊýx¡Ê(1,2,3,4,¡,100), À´¹Û²ìÕâЩ²»Í¬Ä£Ð͵IJâÊÔÎó²î£¬²¢Ìô³öÎó²î×îСµÄÄ£ÐÍ¡£ÕâʱÎÒÃÇ·¢ÏÖÎÒÃǵÄÄ£ÐÍÆäʵ¶à³öÀ´ÁËÒ»¸ö²ÎÊýx£¬ ÎÒÃÇÌôÑ¡Ä£Ð͵Ĺý³Ì¾ÍÊÇÈ·¶¨×îÓÅ»¯µÄ²ÎÊýx µÄ¹ý³Ì¡£Õâ¸ö·ÖÎö¹ý³ÌÓëÉÏÃæѵÁ·²ÎÊýµÄ˼·Èç³öÒ»ÕÞ£¡Ö»ÊÇÕâ¸ö¹ý³ÌÊÇ»ùÓÚͬһ¸ö²âÊÔ¼¯£¬¶ø²»ÑµÁ·¼¯¡£ÄÇô£¬²»Í¬µÄÉñ¾ÍøÂçµÄ²ãÊýÊDz»ÊÇÒ²ÊÇÒ»¸öеIJÎÊýy¡Ê(1,2,3,4,¡,100), Ò²Òª¾¹ýÕâô¸ö¹ý³ÌÀ´¡°ÑµÁ·¡±£¿
ÎÒÃǻᷢÏÖÎÒÃÇ֮ǰÉú³ÉÄ£Ð͹ý³ÌÖкܶ಻±äµÄ²¿·ÖÆäʵ¶¼ÊÇ¿ÉÒԱ任µ÷½ÚµÄ£¬ÕâЩҲÊÇеIJÎÊý£¬±ÈÈçѵÁ·´ÎÊý¡¢ÌݶÈϽµ¹ý³ÌµÄ²½³¤¡¢¹æ·¶»¯²ÎÊý¡¢Ñ§Ï°»ØºÏÊý¡¢minibatch ÖµµÈµÈ£¬ÎÒÃÇ°ÑËûÃǽÐ×ö³¬²ÎÊý¡£³¬²ÎÊýÊÇÓ°ÏìËùÇó²ÎÊý×îÖÕÈ¡ÖµµÄ²ÎÊý£¬ÊÇ»úÆ÷ѧϰģÐÍÀïÃæµÄ¿ò¼Ü²ÎÊý£¬¿ÉÒÔÀí½â³É²ÎÊýµÄ²ÎÊý£¬ËüÃÇͨ³£ÊÇÊÖ¹¤É趨£¬²»¶ÏÊÔ´íµ÷ÕûµÄ£¬»òÕ߶ÔһϵÁÐÇî¾Ù³öÀ´µÄ²ÎÊý×éºÏһͨ½øÐÐö¾Ù£¨Íø¸ñËÑË÷£©À´È·¶¨¡£µ«ÎÞÂÛÈçºÎ£¬ÕâÒ²ÊÇ»ùÓÚͬÑùÒ»¸öÊý¾Ý¼¯·´¸´ÑéÖ¤ÓÅ»¯µÄ½á¹û¡£ÔÚÕâ¸öÊý¾Ý¼¯ÉÏ×îºóµÄ½á¹û²¢²»Ò»¶¨ÔÚеÄÊý¾Ý¼ÌÐøÓÐЧ¡£ËùÒÔΪÁËÆÀ¹ÀÕâ¸öÄ£Ð͵Äʶ±ðЧ¹û£¬¾ÍÐèÒªÓÃеIJâÊÔ¼¯¶ÔÄ£ÐͽøÐп¼ºË£¬µÃ³öµÄ²âÊÔ½á¹û×÷Ϊ¶ÔÄ£Ð͵ÄÆÀ¼Û¡£Õâ¸öеIJâÊÔ¼¯ÎÒÃǾÍÖ±½Ó½Ð¡°²âÊÔ¼¯¡±£¬Ö®Ç°ÄǸöÓÃÓÚɸѡ³¬²ÎÊýµÄ²âÊÔ¼¯£¬ÎÒÃǾͽÐ×ö¡°½»²æÑéÖ¤¼¯¡±¡£É¸Ñ¡Ä£Ð͵Ĺý³ÌÆäʵ¾ÍÊǽ»²æÑéÖ¤µÄ¹ý³Ì¡£
ËùÒÔ£¬¹æ·¶µÄ·½·¨µÄÊǽ«Êý¾Ý¼¯²ð·Ö³ÉÈý¸ö¼¯ºÏ£ºÑµÁ·¼¯¡¢½»²æÑéÖ¤¼¯¡¢²âÊÔ¼¯£¬È»ºóÒÀ´ÎѵÁ·²ÎÊý¡¢³¬²ÎÊý£¬×îÖյõ½×îÓŵÄÄ£ÐÍ¡£
Òò´Ë£¬ÉÏͼ¿ÉÒÔ½øÒ»²½Ï¸»¯³ÉÏÂͼ£º
»òÕßÏÂͼ£º
¿É¼û»úÆ÷ѧϰ¹ý³ÌÊÇÒ»¸ö·´¸´µü´ú²»¶ÏÓÅ»¯µÄ¹ý³Ì¡£ÆäÖкܴóÒ»²¿·Ö¹¤×÷ÊÇÔÚµ÷Õû²ÎÊýºÍ³¬²ÎÊý¡£ 4¡¢ÏÈÅÜÅÜÔÙ˵£º³õ²½ÔËÐдúÂë
Michael NielsenµÄ´úÂë·â×°µÃºÜºÃ£¬Ö»ÐèÒÔÏÂ5ÐÐÃüÁî¾Í¿ÉÒÔÉú³ÉÉñ¾ÍøÂç²¢²âÊÔ½á¹û£¬²¢´ïµ½94.76%µÄÕýÈ·ÂÊ£¡¡£
import mnist_loader import network # ½«Êý¾Ý¼¯²ð·Ö³ÉÈý¸ö¼¯ºÏ£ºÑµÁ·¼¯¡¢½»²æÑéÖ¤¼¯¡¢²âÊÔ¼¯ training_data, validation_data, test_data = mnist_loader.load_data_wrapper() # Éú³ÉÉñ¾ÍøÂç¶ÔÏó£¬Éñ¾ÍøÂç½á¹¹ÎªÈý²ã£¬Ã¿²ã½ÚµãÊýÒÀ´ÎΪ£¨784, 30, 10£© net = network.Network([784, 30, 10]) # Óã¨mini-batch£©ÌݶÈϽµ·¨ÑµÁ·Éñ¾ÍøÂ磨ȨÖØÓëÆ«ÒÆ£©£¬²¢Éú³É²âÊÔ½á¹û¡£ # ѵÁ·»ØºÏÊý=30, ÓÃÓÚËæ»úÌݶÈϽµ·¨µÄ×îСÑù±¾Êý=10£¬Ñ§Ï°ÂÊ=3.0 net.SGD(training_data, 30, 10, 3.0, test_data=test_data)±¾ÎIJ¢²»´òËãÏêϸ½âÊÍËæ»úÌݶÈϽµ·¨µÄϸ½Ú£¬¸ÐÐËȤµÄͬѧÇëÔĶÁÇ°ÎÄ¡¶Éî¶ÈѧϰÓë¼ÆËã»úÊÓ¾õϵÁÐ(4)_×îÓÅ»¯ÓëËæ»úÌݶÈϽµ¡·
¡¡