Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ゼロから作るディープラーニング MNIST(手書き数字)の認識を試してみる
Search
shohu
December 09, 2016
Education
0
990
ゼロから作るディープラーニング MNIST(手書き数字)の認識を試してみる
shohu
December 09, 2016
Tweet
Share
Other Decks in Education
See All in Education
セキュリティ・キャンプ全国大会2024 S17 探査機自作ゼミ 事前学習・当日資料
sksat
2
530
不登校予防・再登校支援プログラムを提供するToCo (トーコ) の会社紹介資料 toco.mom
toco3week
0
170
Flinga
matleenalaakso
2
13k
Skynet to Schoolnet
draycottmc
0
150
2024年度春学期 統計学 第12回 分布の平均を推測する ー 区間推定 (2024. 6. 27)
akiraasano
PRO
1
150
Прием на целевое обучение
pnuslide
0
6.5k
construindo uma carreira com opensource
caarlos0
0
120
2024年度春学期 統計学 第9回 確からしさを記述する ー 確率 (2024. 6. 6)
akiraasano
PRO
0
130
2024年度春学期 統計学 第15回 分布についての仮説を検証する ― 仮説検定(2) (2024. 7. 18)
akiraasano
PRO
0
100
20240810_ワンオペ社内勉強会のノウハウ
ponponmikankan
2
760
MLH Hackcon: Keynote (2024)
theycallmeswift
0
130
White Snake: Qing's Mission
movingcastal
0
240
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
156
15k
Visualization
eitanlees
142
15k
How to Think Like a Performance Engineer
csswizardry
15
910
RailsConf 2023
tenderlove
26
790
What’s in a name? Adding method to the madness
productmarketing
PRO
21
3k
Unsuck your backbone
ammeep
667
57k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
325
21k
From Idea to $5000 a Month in 5 Months
shpigford
378
46k
Pencils Down: Stop Designing & Start Developing
hursman
118
11k
Speed Design
sergeychernyshev
18
390
Docker and Python
trallard
39
2.9k
Optimising Largest Contentful Paint
csswizardry
28
2.7k
Transcript
θϩ͔Β࡞ΔσΟʔϓϥʔχϯά MNIST(खॻ͖ࣈ)ͷೝࣝΛࢼͯ͠ΈΔ @shohu33
ΰʔϧ खॻ͖ͷࣈΛPGʹผͤ͞Δ͜ͱ
͔͞ͳຊ ࠓ̏ষʙ̐ষΛΔ
ύʔηϓτϩϯ
x1 x2 y w1 w2 x1, x2 ೖྗ৴߸ y ग़ྗ৴߸
w1, w2ॏΈ y 0 (w1x1 + w2x2 <= θ) 1 (w1x1 + w2x2 > θ) θᮢɻᮢΛ͑ΔͱൃՐ͢Δʂ ෳͷ৴߸Λೖྗͱͯ͠ड͚औΓ ͻͱͭͷ৴߸Λग़ྗ͢Δ
x1 x2 y ୈ0 s1 s2 ୈ1 ୈ2 ύʔηϓτϩϯΛΈ߹ΘͤΔͱ ίϯϐϡʔλʔͰ͖Δͱ͍͏Λલճ͠·ͨ͠
Ͱɺࠓճ͍Α͍Α χϡʔϥϧωοτϫʔΫ
χϡʔϥϧωοτϫʔΫͱ
ਓؒͷͷਆܦճ࿏ͷΈΛͨ͠Ϟσϧɻ ίϯϐϡʔλʹֶशೳྗΛ ࣋ͨͤΔ͜ͱʹΑΓɺ༷ʑͳΛղܾ͢ΔͨΊͷΞϓϩʔν
χϡʔϥϧωοτϫʔΫ ͱ ύʔηϓτϩϯ ͷओͳҧ͍
׆ੑԽؔ ͷҧ͍͚ͩ
׆ੑԽؔͱʁ
ೖྗ৴߸ͷ ૯Λग़ྗ৴߸ʹ ม͢Δؔ ৴߸2 ଛࣦؔ ৴߸1 ৴߸3 ग़ྗ
׆ੑԽؔ χϡʔϥϧωοτϫʔΫͷͲ͜Ͱ͏͔ʁ
x1 x2 ૯ ग़ྗ ׆ੑԽؔ b όΠΞε χϡʔϩϯͷൃՐ͢͠͞Λίϯτϩʔϧ y1 y2
લ(͘͠ೖྗ)͔Β Λड͚औΓ࣍ͷͷग़ྗΛߦ͏ ग़ྗ = ׆ੑԽؔ(ೖྗ৴߸ͷ૯)
ͨͩɺύʔηϓτϩϯͷ࣌׆ੑԽؔͬͯ Δɻεςοϓؔͬͯͭɻ
݁ہ ύʔηϓτϩϯ ͱ χϡʔϥϧωοτϫʔΫ ͷ׆ੑԽؔ ͷ ҧ͍ʁ
ύʔηϓτϩϯ = εςοϓؔ χϡʔϥϧωοτϫʔΫ = γάϞΠυؔ or LeRUؔ ֊ஈঢ় ᮢʹୡ͢Δͱग़ྗ͞
ΕΔ άϥϑ͕গ͠ͷಈ͖ ͰԠ͢Δ
άϥϑ͕Β͔ͩͬͨΓɺগ͠ͷͷมԽ Ͱग़ྗ͕มԽ͠ͳ͍ͱ͏·ֶ͘शͰ͖ͳ͍ɻ ֶश͢Δࡍʹɺখ͘͞ೖྗΛߋ৽ͯ͠ɺ֤χϡʔϩϯઢͷॏΈΛ ࡉ͔͘ௐ͠ͳ͚ΕͳΒͳ͍͕ εςοϓؔͩͱେࡶ͗ͯ͢ௐͣ͠Β͍ɻ ͜ͷͨΊχϡʔϥϧωοτϫʔΫͰ γάϞΠυؔLeRUؔͷΑ͏ʹҾͷΛ গ͠ Ͱม͑ΔͱԠ͢Δ͕ؔΘΕΔ
·ͨɺ࠷ޙͷग़ྗʹ͏׆ੑԽؔ ͜Ε·Ͱ͏ؔͱผͰ͢
x1 x2 b y1 y2 b ग़ྗ ग़ྗͷ׆ੑԽ ؔɺલͱछ ྨ͕ҧ͏
׆ੑԽؔ
ग़ྗͷ׆ੑԽؔҎԼ̎छྨͳͲ͕͋Δ ɾ߃ؔ ɹɹճؼͰΑ͘ΘΕΔ ɾιϑτϚοΫεؔ ɹɹྨͰΑ͘ΘΕΔ
x1 x2 b y1 y2 ߃ؔΛͦͷ··ग़ྗ͢Δ͚ͩ b ߃ؔͷ߹ ೖྗΛͦͷ··ग़ྗ ճؼͰΑ͘ΘΕΔ
͋Δೖྗσʔλ͔Β(࿈ଓతͳ)ͷ༧ଌΛߦ͏ɻ ਓͷࣸͬͨը૾͔ΒͦͷਓͷମॏΛ༧ଌ͢ΔΑ͏ͳ ߃ؔ ͦͷ··ग़ྗ
x1 x2 b y1 y2 Softmax ؔ Softmaxؔग़ྗͷ֤χϡʔϩϯ͕શͯͷೖྗ৴߸͔ΒӨڹΛड͚Δ b Softmaxؔͷ߹
y3 ྨͰΑ͘ΘΕΔ σʔλ͕ͲͷΫϥεʹଐ͢Δ͔ͱ͍͏ɻ ਓͷࣸͬͨը૾͕ɺঁͳͷ͔ɺஉͳͷ͔ʁ உͷ֬70% ঁͷ֬20% ੑผෆ໌ 10%
׆ੑԽؔͷಛ͕௫Ίͨͱ͜ΖͰ
͔͜͜Βֶश͢ΔͨΊͷ֓೦ΛֶΜͰ͍͘
ֶशΛߦ͑ΔΑ͏ʹ͢ΔͨΊʹ ଛࣦؔΛಋೖ͢Δඞཁ͕͋Δ
ଛࣦؔͱʁ
χϡʔϥϧωοτϫʔΫͷ ѱ͞Λࣔ͢͜ͱ͕Ͱ͖Δɻ (ଛࣦؔͷ͕ࣔ͢ߴ͚Εѱ͍ɺ͚Εྑ͍) ͜ͷͨΊɺ͜ͷ ଛࣦؔͷ ग़ྗ͢ΔΛ͘͢Ε χϡʔϥϧωοτϫʔΫ͕ ྑ͘ͳΔ͜ͱΛҙຯ͢Δ
ଛࣦؔΛͲ͏ͬͯ͏͔ʁ
ଛࣦؔͱ χϡʔϥϧωοτϫʔΫͷग़ྗͨ͠ͱ ਖ਼ղσʔλΛൺֱͯ͠ɺͲΕ͘Β͍͕ҟͳ͍ͬͯΔ͔Ͱग़͢ ଛࣦؔ ڭࢣσʔλ χϡʔϥϧωοτ ϫʔΫͷѱ͞ ग़ྗ͕ߴ͍΄Ͳɺѱ͍ωοτϫʔΫ ͍΄Ͳɺྑ͍ωοτϫʔΫ ൺֱͯࠩ͠ͷग़ྗ
͕ࠩ͋Ε͋Δ΄Ͳਖ਼ղͱҟͳΔɻ ͜ͷͨΊग़ྗ͕ଟ͍΄Ͳɺѱ͍ωοτϫʔΫͱ͍͏͜ͱʹͳΔ
ɾ̎ޡࠩ ɾަࠩΤϯτϩϐʔޡࠩ ଛࣦؔͷछྨ
͜͜Ͱߴߍͷ࣌ʹͳΒͬͨ ඍ ͕ొɻ ඍͱଛࣦؔΛֶͬͯश͍͖ͯ͠·͢
χϡʔϥϧωοτϫʔΫͷඍͷׂ ଛࣦ͕ؔग़ྗ͢ΔΛখ͘͢͞Δ ͨΊʹඍΛ͏
Ͳ͏͏͔ʁ
ଛࣦؔΛԾʹ Y = X**2 ͱఆٛ͢Δɻ ͜ͷଛࣦ͕ؔҰ൪͕খ͘͞ͳΔͷx=0ͷͱ͖
͜ͷ࣌ඍͷ͖Ͱ ࠷খ͕ٻΊΕΔ
Ծʹx=2ͩͱ͢Δͱ͖͕4 x=0ͩͱ͢Δͱ͖0 ͳͷͰɺ͜ͷؔͷ࠷খ 0Λग़ྗ͢Δͷ x=0ͷ࣌ͱ͍͑Δ ඍ͢Δͱ Y’ = 2X
͜ͷ͜ͱ͔Β ඍΛ͍ଛࣦؔͷ ग़ྗͷ͕Ұ൪খ͘͞ͳΔ χϡʔϥϧωοτϫʔΫͷΛٻΊΕྑ͍͜ͱʹͳΔ ग़ྗ = ଛࣦؔ(χϡʔϥϧωοτϫʔΫ, ڭࢣσʔλ)
ͨͩɺχϡʔϥϧωοτϫʔΫͰɺ͝ଘͷ௨Γม͕̍ͭͰͳͯ͘ େྔʹ͋Δɻ ม1 ม2 ม3 上記のa1を求める場合 a1 = x1*w11 +
x2*w21+x3*w31 のように 変数が⼤量にでてくる。 (wは重み)
ͦ͜Ͱɺฤඍ
ฤඍͱʁ ଟมؔ(ཁؔͷதʹزͭมΛ͍࣋ͬͯΔؔ) ʹରͯ͠ҰͭͷมͷΈʹ ʢͦΕҎ֎ͷมఆͱͯ͠ݻఆ͢Δʣ ඍ͢Δ͜ͱ by wikipedia
Λภඍ͢Δͱɾɾɾ ຊࣜͷάϥϑ x0Λภඍ͢Δͱ 2 * x0 x1 Λภඍ͢Δͱ 2 *
x1 6 x0 = 3, x1 = 2 ͷͱ͖ͷ͖ 4 x0ͷํʹ6ͷ͖ x1ͷํʹ4ͷ͖
͜ͷάϥϑͷ͖( ޯ)ΛҹͰද͢ͱ
ͷ͖ͷਤ ֤ͷҹͷࣔ͢ํɺؔͷΛ࠷ݮΒ͢ํ ͪͳΈʹɺͯ͢ͷมͷภඍΛϕΫτϧͱͯ͠·ͱΊ ͨͷΛޯ(gradient)ͱ͍͏
Ͱʮม͕ෳʯ͋ΔଛࣦؔɺͲ͏͍ͬͨΛҾͱͯ͠ ೖΕͨΒɺ͕࠷খʹͳΔ͔ΛٻΊ͍͚ͯΕΑͯ͘ ͦͷํ๏ͱͯ͠ɾɾɾ
ޯ๏Λ͏
ޯ๏ͱʁ
ݱࡏͷॴ͔ΒޯํʹҰఆͷڑ͚ͩਐΊΔ Ҡಈͨ͠ઌͰޯΛٻΊɺ·ͨޯํʹਐΉ ͜ͷΑ͏ʹޯํʹਐΉࣄΛ܁Γฦ͢͜ͱͰ ؔͷΛঃʑʹݮΒ͢ͷ͕ޯ๏
ͷ͖ͷਤ த৺(Α͏͕͍ॴ)ʹ X0, X1Λ༠ಋͰ͖Δํ๏
ߋ৽ྔΛද͠ χϡʔϥϧωοτϫʔΫͷֶशΛࣔ͢ x0͖ ֶश ֶश x1͖
lr=0.1 ͷ߹ͷΠϝʔδ ͡ΐ͡ΐʹਅΜதͷ ͬͱ͕͘ͳΔʹ ͍͍ۙͮͯ͘ ֶश͕ஸྑ͍ͩͱऩଋ͢Δ
lr=1.0 ͷ߹ͷΠϝʔδ ߋ৽ྔ͕େ͖͗͢Δ ߹͍ͬͨΓ͖ͨΓ େ͖͗͢Δͱऩଋ͠ͳ͍
lr=1e-10 ͷ߹ͷΠϝʔδ ߋ৽ྔ͕খ͗͢͞Δ ߹ɺಈ͔ͳ͍ খ͗͢͞Δͱ ΄ͱΜͲߋ৽͠ͳ͍
͜͜Ͱ͍Α͍Α χϡʔϥϧωοτϫʔΫͷޯ
̍ݸ̍ݸͷઢͷॏΈͷ͖Λௐ͍͖ͯɺదͳʹௐ͍ͯ͘͠ɻ
ҎԼ֤(w1ʙw3)ͷ֤ม(ઢ)͝ͱʹଛࣦؔΛภඍΛͯ͠ޯٻΊΔɻ ͦͯ͠ɺͦͷޯΛݩʹҰ൪ଛࣦؔͷ͕࠷খʹͳΔ ύϥϝʔλ(ॏΈ)Λݟ͚͍ͭͯ͘ w1 ภඍ ภඍ ภඍ ภඍ ภඍ ภඍ
ภඍ ภඍ ภඍ ภඍ ภඍ ภඍ ภඍ ภඍ ภඍ ภඍ w2 w3
ܗঢ়͕ 2 x 3 ͷॏΈ W ͚ͩΛ ଛࣦؔΛLͰද͢߹ɺޯҎԼͷΑ͏ʹදͤΔ ্هͷଛࣦؔͷͯ͢ͷ૿ݮ͕0ʹۙͮ͘Λ ٻΊ͍ͯ͘ࣄΑΓɺ֤ύϥϝʔλͷॏΈΛ
దͳʹௐ͍ͯ͘͠ ͨͱ͑ɺ̍ߦ̍ྻͷཁૉͰ͋Δ ɺw11Λগ͠มԽͤ͞ΔͱଛࣦؔL ͕ͲΕ͚ͩมԽ͢Δ͔ʁͱ͍͏͜ͱΛࣔ͢ɻ ࣜͰҰԠද͓ͯ͘͠ͱ
ٻΊͨޯͷΛɺೖྗͨ͠ʹֶशΛݩʹߋ৽ͯ͠ χϡʔϥϧωοτϫʔΫΛֶश͍ͤͯ͘͞
MNISTͰχϡʔϥϧωοτϫʔΫΛࢼ͢
Ͱ͜ΕΒͷཧΛͬͯ ࣮ࡍʹखॻ͖ͷจࣈΛྨͯ͠ΈΔͨΊ MNISTσʔλΛ͍ खॻ͖ͷจࣈ͕ྨͰ͖Δ͔ࢼ͢
None
3 5 7 χϡʔϥϧωοτϫʔΫΛ௨ͯ͠ɺखॻ͖ͷจࣈը૾ ͷࣈΛೝࣝͤ͞Δ
ೖྗ = ը૾ 28*28 ͷϐΫηϧσʔλ ग़ྗ = 0 ʙ 9ͷ
ࢀߟจݙ θϩ͔Β࡞ΔDEEP LEARNING ―PYTHONͰֶͿσΟʔϓϥʔχϯ άͷཧͱ࣮ ୯ߦຊʢιϑτΧόʔʣ – 2016/9/24 ࡈ౻ ߁ؽ
(ஶ)
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ