Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Deep LearningフレームワークChainerと最近の技術動向

Avatar for Shunta Saito Shunta Saito
September 19, 2017

Deep LearningフレームワークChainerと最近の技術動向

日本ソフトウェア科学会第34回大会 2017 チュートリアル
#chainer #深層学習 #DeepLearning #物体検出 #セグメンテーション #GAN #自然言語処理 #強化学習 #ChainerCV #ChainerRL #ニューラルネットワーク

Avatar for Shunta Saito

Shunta Saito

September 19, 2017

Other Decks in Technology

Transcript

  1. Agenda • ࣗݾ঺հʗձࣾ঺հ • χϡʔϥϧωοτϫʔΫͷجૅ • جຊతͳॲཧ • ීวੑఆཧͷ௚ײతཧղ •

    χϡʔϥϧωοτϫʔΫͷֶशํ๏ • ਂ͍ωοτϫʔΫΛֶश͢ΔͨΊͷ޻෉ • Chainerͷ঺հ • numpyͷΈΛ༻͍ͯ௒؆қ൛ChainerΛ࡞ͬͯΈΑ͏ • ॾྖҬͰͷਂ૚ֶशٕज़ͷల։ • ը૾ೝࣝ • GAN • ࣗવݴޠॲཧ • ڧԽֶश 2
  2. ࣗݾ঺հ • ໊લɿᜊ౻ ढ़ଠ • ܦྺɿ • 2010 ܚጯٛक़େֶཧ޻ֶ෦ిࢠ޻ֶՊଔۀ •

    2012 ܚጯٛक़େֶӃཧ޻ֶݚڀՊम࢜मྃˍത࢜ਐֶ • 2013 - 2014 UC Berkeley (Visiting Student Researcher) • 2015 ܚጯٛक़େֶେֶӃཧ޻ֶݚڀՊ ୯Ґऔಘୀֶ • 2016 ത࢜ʢ޻ֶʣऔಘ@ܚጯٛक़େֶʢ"Semantic Segmentation for Aerial Imagery with Convolutional Neural Network"ʣ • ʙ2016.9 Facebook, Inc. • 2016.9ʙ Preferred Networks, Inc. 3
  3. ձࣾ঺հ • ໊ࣾɿPreferred Networks • ུশɿPFN • ࣾһ਺ɿ106ਓʢ8ׂҎ্͕ΤϯδχΞ ʗϦαʔνϟʣ •

    ΦϑΟεɿେखொɼΧϦϑΥϧχΞभ αϯϚςΦ • ग़ࢿऀɿFANUCɼToyotaɼNTT • We are hiring! 4
  4. PFNͷ஫ྗ෼໺ Automotive Humanoid Robot Consumer Industrial Cloud Device Photo Game

    Text Speech Infrastructure Factory Robot Automotive Healthcare Smart City Industry4.0 Industrial IoT 5
  5. ઢܗม׵ͷྫ • ೖྗ Λ ߦྻ ͱ ࣍ݩ ϕΫτϧ Λ༻͍ͯઢܗม׵ ʢ

    ʣ͢Δ • χϡʔϥϧωοτϫʔΫͷจ຺Ͱ͸શ ݁߹૚ʢfully-connected layerʣͱݺ͹ ΕΔ͜ͱ͕ଟ͍ 9
  6. 4 3 2 1 0 1 2 3 4 x

    1 0 1 2 3 4 y y = 1/(1 + exp(x)) y = tanh(x) y = max(0, x) ඇઢܗม׵ͷྫ • Α͘༻͍ΒΕΔ΋ͷʹγάϞΠυؔ਺ ʢ ʣ΍ ɼ ReLUʢ ʣͳͲ͕͋Δ • χϡʔϥϧωοτϫʔΫͷจ຺Ͱ͸׆ ੑԽؔ਺ʢactivation functionʣͱݺ͹ Εɼ࠷ۙʹͳͬͯ΋৽͍͠ܗͷؔ਺͕ ఏҊ͞Εଓ͚͍ͯΔʢMaxout1, LReLU2, PReLU3, ELU4, SELU5, etc.ʣ 10
  7. σΟʔϓϥʔχϯάͷ "core idea" The core idea in deep learning is

    that we assume that the data was generated by the composition of factors or features, potentially at multiple levels in a hierarchy. — Ian Goodfellow, Yoshua Bengio, Aaron Courville, "Deep Learning" ֊૚తͳෳ਺ͷϨϕϧͷಛ௃͕૊Έ߹Θ ͬͯ͞σʔλ͸ੜ੒͞Ε͍ͯΔͱ͍͏Ծఆ ͕ɼਂ૚ֶशͷ֩ͱͳΔΞΠσΞͰ͋Δɽ 11
  8. h (1) = a(1)( W (1) x + b (1))

    h(l) = a(l)(W(l)h(l 1) + b(l 1)) o = a( o )( W ( o ) h ( o ) + b ( o )) શ݁߹ܕχϡʔϥϧωοτϫʔΫ • ӈਤ͸શ݁߹૚ͱ׆ੑԽؔ਺ ͔ΒͳΔχϡʔ ϥϧωοτϫʔΫͷྫ • χϡʔϥϧωοτϫʔΫ͸ɼ֊૚తͳଟ਺ͷม ׵ʹΑͬͯؔ਺Λۙࣅ͢Δͷʹ༻͍ΒΕΔ • ೖྗ૚ͱग़ྗ૚ͷؒʹ͋Δ૚ΛӅΕ૚ ʢhidden layerʣͱݺͼɼӅΕ૚Λ1ͭҎ্΋ ͭχϡʔϥϧωοτϫʔΫ͸೚ҙͷ࿈ଓؔ਺Λ ೚ҙͷਫ਼౓ͰۙࣅͰ͖Δʢීวੑఆཧ1ʣ͜ͱ ͕஌ΒΕ͍ͯΔɽ 1 Kurt Hornik, Maxwell Stinchcombe, Halbert White, "Multilayer feedforward networks are universal approximators", Neural Networks (1989) 13
  9. ਤ͸lA visual proof that neural nets can compute any function”ΑΓʢҰ෦มߋʣ

    ʢhttp://neuralnetworksanddeeplearning.com/chap4.htmlʣ ීวੑఆཧͷ௚ײతཧղ (1) • ͋ΔӈͷΑ͏ͳؔ਺ Λ χϡʔϥϧωοτϫʔΫͰۙࣅ͢Δ͜ ͱΛߟ͑Δ • 1ͭͷӅΕ૚Λ࣋ͭχϡʔϥϧωοτ ϫʔΫΛߟ͑Δɿ ʢͨͩ͠ ͸γάϞΠυؔ਺Ͱ ʣ 14
  10. ਤ͸lA visual proof that neural nets can compute any function”ΑΓʢҰ෦มߋʣ

    ʢhttp://neuralnetworksanddeeplearning.com/chap4.htmlʣ ීวੑఆཧͷ௚ײతཧղ (2) • Լਤ͸ɼӅΕ૚ͷ2ͭͷϊʔυͷ͏্ͪͷํ ͷϊʔυͷग़ྗ஋Λϓϩοτͨ͠΋ͷ • ΛมԽͤ͞Δͱۂઢͷޯ഑͕୅ΘΓɼ Λ มԽͤ͞Δͱۂઢશମ͕Ҡಈ͢Δ 15
  11. lA visual proof that neural nets can compute any function”ΑΓ

    ʢhttp://neuralnetworksanddeeplearning.com/chap4.htmlʣ ීวੑఆཧͷ௚ײతཧղ (3) • Λͱͯ΋େ͖͘͢Δͱɼ΄΅εςοϓؔ ਺ͷΑ͏ʹͳΔ • ஈ͕ࠩੜ͡ΔҐஔ͸ ͱͳΔΑ͏ ͳ ͳͷͰɼ Ͱɼ͜ΕΛ ͱ͓͘ ͱɼ ΑΓɼ ͱͳΔ • ͔͜͜Βৗʹେ͖ͳ ΛҰ૚໨ʹର͠༻͍ Δ͜ͱʹͯ͠ɼεςοϓؔ਺ͷஈࠩͷҐஔ ͚ͩΛӅΕ૚ͷύϥϝʔλͱͯ͠ݟͯΈ ΔʢӅΕ૚ͷ্ͷϊʔυͷஈࠩҐஔΛ ɼ ԼͷϊʔυͷஈࠩͷҐஔΛ ͱ͓͘ʣ 16
  12. ਤ͸lA visual proof that neural nets can compute any function”ΑΓʢҰ෦มߋʣ

    ʢhttp://neuralnetworksanddeeplearning.com/chap4.htmlʣ ීวੑఆཧͷ௚ײతཧղ (4) • ӅΕ૚ͷग़ྗͷॏΈ෇͚࿨Λऔͬͨ࣌఺ʢ࠷ޙͷγ άϞΠυؔ਺Λద༻͢Δ௚લʣͷ஋͸ɼӈԼਤͷΑ ͏ͳύϥϝʔλΛ༩͑ͨͱ͖ӈ্ਤͷΑ͏ͳܗʹͳ Δ • ͞Βʹผͷύϥϝʔλʹͯ͠ΈΔͱҎԼͷΑ͏ʹͳΔ 17
  13. ਤ͸lA visual proof that neural nets can compute any function”ΑΓ

    ʢhttp://neuralnetworksanddeeplearning.com/chap4.htmlʣ ීวੑఆཧͷ௚ײతཧղ (5) • ͱ͍ͬͨදهΛলུ͠ɼ࠷ ޙͷ଍͠߹Θͤͷલʹֻ͚ΔॏΈΛ ͱॻ͘ ʢάϥϑͷ֤ಥىͷߴ͞Λද͢͜ͱ͔Βʣ͜ ͱʹ͢Δ • ֤ϖΞ͸ූ߸Λ൓సͤͨ͞ Λ࣋ͭΑ͏ʹ ͠ɼ Լ͕ͬͨ͋ͱ ্͕ͬͯ ʹ໭Δɼ ͱ͍ͬͨܗͰ ͔࣠Βੜ͑ΔಥىΛ࡞͍ͬͯ Δ • ্࣠ͷ4ͭͷҐஔͱಥىͷߴ͞Λઃఆ͢Δ͜ ͱͰɼۃΊͯߥ͍͕ۂઢͷۙࣅ͕Ͱ͖ͦ͏Ͱ ͋Δ 18
  14. ීวੑఆཧͷ௚ײతཧղ (6) • ΑΓଟ͘ͷϊʔυʢϢχοτͱ΋ݴ͏ʣΛ ༻ҙͯ͠΍Ε͹ɼ޷͖ͳߴ͞Ͱ޷͖ͳ਺ͷ ϐʔΫΛߏ੒Ͱ͖Δʹؔ਺ΛઃܭͰ͖Δ͜ ͱ͕෼͔Δʢӈਤ6ࢀরʣ • ӅΕ૚ͷϊʔυΛ૿΍ͤ͹ɼ ࣠ํ޲ʹೖྗ

    ͷۭؒʹର͢Δ෼ׂ਺Λ૿΍͢͜ͱ͕Ͱ ͖ɼ2૚໨ͷॏΈΛมԽͤ͞Δ͜ͱͰɼ֤෼ ׂ۠ؒͰͷಥىͷߴ͞Λௐ੔͢Δ͜ͱ͕Ͱ ͖Δ 6 ਤ͸“A visual proof that neural nets can compute any function”ΑΓ ʢhttp://neuralnetworksanddeeplearning.com/chap4.htmlʣ 19
  15. ීวੑఆཧͷ௚ײతཧղ (7) • গ͠લʹࡌͤͨؔ਺ʢ࣮ࡍ͸ҎԼͷ΋ ͷͷ ͷൣғͷ΋ͷʣΛखಈͰ ۙࣅͯ͠ΈΔ • ਤ7Ͱ͸γάϞΠυؔ਺Λద༻͢Δલͷ ஋ʢ࿨Λऔͬͨ௚ޙʣͷ஋͕

    ʹͳΔΑ͏2૚໨ͷॏΈΛௐ੔͍ͯ͠Δ 7 ਤ͸“A visual proof that neural nets can compute any function”ΑΓ ʢhttp://neuralnetworksanddeeplearning.com/chap4.htmlʣ 20
  16. so many nodes Replacable? ීวੑఆཧ͕ࣔ͢͜ͱ • ӅΕ૚Λ1͔ͭ͠΋ͨͳ͍ωοτϫʔΫ Ͱ΋ɼ೚ҙͷؔ਺Λۙࣅ͢Δ͜ͱ͕Ͱ ͖Δ •

    ͭ·Γɼݪཧతʹ͸ਂ͍ωοτϫʔΫ ͸ଟ਺ͷϊʔυ͔ΒͳΔӅΕ૚Λ࣋ͭ ઙ͍ωοτϫʔΫͰஔ͖׵͑ΒΕΔ͸ ͣͰ͸ʁ 21
  17. ͳͥਂ͍ߏ଄͕ྑ͍͔ʁ • ਂ͍ߏ଄Λ࢖ͬͯஈ֊తʹෳࡶͳؔ਺Λۙࣅ͢Δํ͕ɼઙ͍ߏ଄Λ༻͍ΔΑΓ΋શମͷϊʔυ਺͸ গͳͯ͘ࡁΉ • ௕͍ϏοτྻͷύϦςΟܭࢉͰ͸ઙ͍ճ࿏Ͱߦ͏ͱࢦ਺ؔ਺తʹଟ͘ͷήʔτ͕ඞཁͱͳΔͨ Ίɼਂ͍ճ࿏ͰϏοτͷ૊ͷύϦςΟΛܭࢉˠϏοτͷ૊ͷ૊ͷύϦςΟΛܭࢉˠ…Λ܁Γฦ͢8 • ۠෼ઢܗؔ਺ʢpiecewise linear

    functionʣΛ׆ੑԽؔ਺ʹ༻͍ͨωοτϫʔΫʹ͓͚Δਂ͍ ωοτϫʔΫͷ༏ҐੑΛࣔͨ͠࿦จ9 9 Razvan Pascanu, Guido Montufar, and Yoshua Bengio, "On the number of response regions of deep feed forward networks with piece-wise linear activations", NIPS (2014) 8 Merrick Furst, James B. Saxe, and Michael Sipser, "Parity, Circuits, and the Polynomial-Time Hierarchy", Mathematical systems theory (1984) 22
  18. χϡʔϥϧωοτϫʔΫͷֶश ڭࢣ͋Γֶश • ೖྗͱͦͷೖྗʹରͯ͠༧ଌ͍ͨ͠ର৅͕෇ ༩͞Εͨਖ਼ղࣄྫͷू߹Λ܇࿅σʔλ ʢtraining dataʣͱ͍͏ • ܇࿅σʔλΛ࢖ͬͯɼೖྗ ʢઆ໌ม਺ʣ͕

    ༩͑ΒΕͨͱ͖ɼग़ྗม਺ ʢ໨తม਺ʣΛ ༧ଌ͢ΔϞσϧΛֶश͢Δ͜ͱΛ໨తͱͨ͠ ΋ͷ͕ڭࢣ͋Γֶश • ΛೖྗʹͱΓରԠ͢Δ Λग़ྗ͢Δؔ਺Λ χϡʔϥϧωοτͰۙࣅ͢Δ͜ͱΛߟ͑Δ 23
  19. ڭࢣ͋Γֶशͷ໨త • Λܾఆ͢Δύϥϝʔλʢ ɼ·ͱΊͯ ͱॻ͘ʣΛͲ͏΍ܾͬͯఆ͢Δ͔ʁ • ڭࢣ͋ΓֶशͰ͸ɼ ݸͷ܇࿅ࣄྫΛ ͱͨ͠ͱ͖ɼҎԼͷΑ͏ʹఆٛ͞ ΕΔଛࣦؔ਺ʢloss

    functionʣͷ܇࿅ࣄྫશମʹΘͨΔฏۉΛ࠷খԽ͢ΔΑ͏ʹϞσϧύϥϝʔ λ Λܾఆ͢Ε͹Α͍ • ଛࣦؔ਺͸ɼʮ༧ଌͱਖ਼ղͷࠩҟʯΛදͨ͠΋ͷͰɼͲ͏ఆٛ͢Δ͔΋χϡʔϥϧωοτΛ༻͍ ͯ໰୊ʹऔΓ૊ΉதͰ͸ॏཁͳઃܭཁૉͰ͋Δ 24
  20. ෼ྨ໰୊ͰΑ͘༻͍ΒΕΔଛࣦؔ਺ • ෼ྨ໰୊ Λղ͘ ΛχϡʔϥϧωοτͰۙࣅ͢Δ৔߹ • ݸ໨ͷσʔλ ʹର͢Δχϡʔϥϧωοτͷग़ྗ ΛιϑτϚοΫεʢsoftmaxʣؔ਺ Λ༻͍ͯ

    ࣍ݩͷ֬཰ϕΫτϧʢཁૉ࿨͕ ʣʹ͢Δ • ਖ਼ղΛone-hotϕΫτϧ ʢਖ਼ղΫϥεͷ࣍ݩ͚ͩ ͱͳ͍ͬͯΔ ࣍ݩͷϕΫτϧʣͱͯ͠දݱ͢Δ • ͱ ͷؒͰҎԼʹఆٛ͞ΕΔΫϩεΤϯτϩϐʔʢcross entropyʣΛܭࢉ͢Δ 25
  21. ޡࠩٯ఻೻๏ ʢbackpropagationʣ • χϡʔϥϧωοτϫʔΫ͸ඍ෼Մೳͳؔ਺Λܨ͛ͯͰ͖Δ ܭࢉάϥϑͩͬͨ • ͭ·Γɼೖྗଆ͔Βॱʹ Λద༻͢Δ΋ͷ ͱߟ͑Δͱɼ ૚໨ͷม׵͕࣋ͭύϥϝʔλ

    ʹΑΔଛࣦ ؔ਺ͷඍ෼͸ɼඍ෼ͷ࿈࠯཯ΑΓҎԼͷΑ͏ʹͯ͠ٻ·Δ • ͜ͷͨΊɼωοτϫʔΫͷग़ྗଆ͔Βॱʹɼ֤૚Ͱͷग़ྗ ʹର͢Δೖྗͷඍ෼Λֻ͚͍͖ͯɼ࠷ޙʹύϥϝʔλʹΑ Δண໨͢Δ૚ͷग़ྗʹର͢Δඍ෼Λֻ͚Ε͹ߋ৽ྔ͕ٻ· Δ 27
  22. SGD without momentum SGD with momentum * ਤ͸"OPWFSWJFXPGHSBEJFOUEFTDFOUPQUJNJ[BUJPOBMHPSJUINTΑΓ Stochastic gradient

    descent (SGD) Momentum SGD15 ߋ৽ํ޲ͷܭࢉͷࡍʹɼաڈͷߋ৽ํ޲ Λ ͷׂ߹͚ͩՃ͑Δ͜ͱͰ࠷ۙͷߋ৽ʹ ͓͍ͯڞ௨ͯ͠ݱΕΔΑ͏ͳߋ৽ํ޲ʹ ਐΈ΍͘͢͢Δ 15 A. Krizhevsky, I. Sutskever, G. E. Hinton, "ImageNet Classification with Deep Convolutional Neural Networks", NIPS (2012) 29
  23. ͦͷଞʹ΋৭ʑͳߋ৽ྔͷܭࢉํ๏͕͋Δ Nesterov accelerated gradient (NAG)16 Momentum SGDʹ͓͚Δ Λ࢖ͬͯٻ ·Δ࣍ͷύϥϝʔλͷۙࣅ஋Λ࢖͏ʢRNN Ͱ༗ޮͰ͋Δ͜ͱ͕͔֬ΊΒΕ͍ͯΔʣ

    AdaGrad17 ύϥϝʔλ͝ͱʹผʑͷߋ৽ྔΛ༻͍Δɽ ߋ৽ྔ͸ݱࡏͷޯ഑ʹൺྫɾաڈͷޯ഑ͷ ೋ৐࿨ͷฏํࠜʹ൓ൺྫ AdaDelta18 AdaGradͷվྑ൛ɽߋ৽ྔࢉग़ʹೋ৐ޯ഑ ͱߋ৽෯ͷҠಈฏۉΛ࢖͏ RMSProp19, Adam20, Eve21ͳͲͳͲ… 30
  24. : sigmoid cross entropy ਂ͍ߏ଄ͷ೉఺ • ɼϩεؔ਺Λ ͱ͢Δ ͱɼ Λ༻͍ͯɼ

    ͱͳΔɽ·ͨɼ֤ؔ਺ͷೖྗΑΔ ग़ྗͷඍ෼͸ɿ ͳͷͰ • Ͱ͋ΔɽΑΓਂ͍ωοτϫʔΫΛߟ͑Δͱɼ ͱͳΔͷͰɼ ૚ ໨ͷύϥϝʔλ ͷߋ৽ྔ͸ ʹൺྫ͢Δ͜ͱ ʹͳΔ 31
  25. : sigmoid cross entropy ޯ഑രൃͱޯ഑ফࣦ • ্૚ͷ ͕େ͖ͳ஋ΛͱΔͱɼͦΕΒֻ͕ ͚߹Θ͞Εͨ஋΋େ͖͘ͳΔͨΊɼ௿૚Ͱ ͷޯ഑͸ඇৗʹେ͖͘ͳΔɽ͜ΕΛޯ഑ര

    ൃʢexploding gradientsʣͱ͍͏ɽʢॏΈ ͕େ͖ͳ஋ʹͳΒͳ͍Α͏ͳਖ਼ଇԽΛߦ͑ ͹ྑ͍ʁ͔͠͠…↓ʣ • ٯʹྫ͑͹্૚ͷ ͕ ະຬͷ஋͹͔Γͩ ͱɼͨ͘͞Μֻ͚߹Θ͞Εͨ΋ͷ͕ͲΜͲ Μ ʹ͍ۙ஋ͱͳͬͯ͠·͍ɼ௿૚Ͱͷޯ഑ ͕΄ͱΜͲফ͑ͯ͠·͏ɽ͜ΕΛޯ഑ফࣦ ʢvanishing gradientʣͱݺͿ 32
  26. Greedy layer-wise pre-training10 • ϨΠϠ͝ͱʹ ͕΋ͱͷೖྗ ʹۙ͘ͳΔΑ͏ Λֶश͢Δɼͱ͍͏ͷ Λશ૚Ͱࣄલʹߦ͓ͬͯ͘͜ͱͰɼྑ ͍ॳظ஋ΛಘΔख๏ˠݱࡏ͸͋·Γ࢖

    ΘΕͳ͍ ਤ͸Yoshua BengioʹΑΔICML 2009Ͱͷνϡʔ τϦΞϧࢿྉΑΓ 10 Y. Bengio, P. Lamblin, D. Popovici, H. Larochelle, "Greedy layer-wise training of deep networks", NIPS (2006) 34
  27. Dropout12 • ϢχοτʹҰఆͷ֬཰ͰϥϯμϜʹ Λ ֻ͚Δ૚ɽϢχοτؒʹ૬ޓґଘ͕ग़ ʹ͘͘ͳΓɼڧྗͳਖ਼ଇԽޮՌ͕͋Δ ਤ͸[13]தͷFigure 1ΑΓ13 13 N.

    Srivastava, G. E. Hinton, A. Krizhevsky, I. Sutskever, and R. Salakhutdinov, "Dropout: A Simple Way to Prevent Neural Networks from Overfitting", Journal of Machine Learning Research (2014) 12 G. E. Hinton, N. Srivastava, A. Krizhevsky, I. Sutskever, and R. Salakhutdinov, "Improving neural networks by preventing co-adaptation of feature detectors", On arxiv (2012) 36
  28. ྆ਤ͸[14]ΑΓ Residual learning 14 • ͋ΔϒϩοΫʢෳ਺ͷϨΠϠͷ·ͱ·Γʣͷग़ྗ ʹɼͦͷϒϩοΫ΁ͷೖྗΛ଍͢ͱ͍͏ߏ଄Λ࣋ͨ ͤΔɿ • ͢Δͱɼޯ഑Λܭࢉ͢Δࡍɼ

    ͱͳΔͨΊɼਂ͍ ωοτϫʔΫΛߏ੒ͨ͠ͱͯ͠΋Լ૚ʢྫ͑͹ୈ ૚ʣͰͷޯ഑͕ ͔Β ͱ ͳΓɼ ͕খ͞ͳ஋ͩͬͨͱͯ͠΋ ͸΄΅ ʹ ͳΔͷͰɼ্૚͔Β߱Γͯ͘Δޯ഑ΛͲΜͲΜখ͞ ͯ͘͠͠·͏ޯ഑ফࣦ͕๷͛Δ 14 K. He, X. Zhang, S. Ren, and J. Sun, "Deep Residual Learning for Image Recognition", CVPR (2016) 37
  29. Define-and-Run Define-by-Run Define-and-Run Define-and-Run Define-by-Run Define-and-Run Chainerͷಛ௃ • χϡʔϥϧωοτϫʔΫ͸ܭࢉάϥϑ ͩͬͨˠਂ૚ֶशϑϨʔϜϫʔΫ͸ɼ

    ܭࢉάϥϑΛ੩తʹѻ͏͔ɾಈతʹѻ ͏͔ͰେผͰ͖Δ • ੩తʹѻ͏ΞϓϩʔνΛDefine-and-Run • ಈతʹѻ͏ΞϓϩʔνΛDefine-by-Run ͱݺͿ • ੈʹଘࡏ͢Δଟ͘ͷϑϨʔϜϫʔΫ͸ Define-and-Runʢ੩తάϥϑʣ 42
  30. Define-by-Runͷར఺ • σʔλͷ಺༰ʹΑͬͯωοτϫʔΫͷ෦෼άϥϑΛ ੾Γସ͑Δͱ͍ͬͨߏ଄͕ॻ͖΍͍͢ • PythonͷߏจΛ࢖ͬͯʮͲ͏͍͏ܭࢉΛߦ͍͍ͨ ͔ʯΛهड़͢Ε͹ɼͦΕ͕ωοτϫʔΫͱͯ͠ఆٛ ͞ΕΔʢܭࢉάϥϑΛσʔλͰ͸ͳ͘ίʔυͱͯ͠ ѻ͏ʣ •

    ੩తάϥϑߏஙΛߦ͏CaffeͰ͸ωοτϫʔΫͷ هड़Λprototxtͱ͍͏ಛघͳܗࣜͰهड़͓ͯ͘͠ • Մม௕ͷೖྗΛऔΔΑ͏ͳߏ଄ʢrecurrent neural network; RNNɼͳͲʣͰ͸forϧʔϓΛ࢖ͬͯ BPTTʢbackpropagation through timeɼޙ΄Ͳઆ ໌ʣΛهड़Ͱ͖Δ 44
  31. Variable Function Function Function Variable Variable Variable Variable Variable Variable

    Variable Variable ܭࢉάϥϑͷಈతߏங (1) VariableͱFunction • 2छྨͷϊʔυΛߟ͑ΔɿVariableϊʔ υͱFunctionϊʔυ • χϡʔϥϧωοτϫʔΫ͸Variableͱ Function͕ަޓʹݱΕΔ༗޲ඇ॥؀άϥ ϑʢdirected asyclic graph; DAGʣͰ͋Δ • ֤VariableͱFunction͸ɼܭࢉάϥϑ΁ ͷग़ݱॱংΛҙຯ͢Δrankͱ͍͏஋Λ࣋ ͭʢτϙϩδΧϧΦʔμʔʣ 46
  32. rank=0 rank=1 rank=2 Variable Function Function Function Variable Variable Variable

    Variable Variable Variable Variable Variable creator creator inputs inputs inputs ܭࢉάϥϑͷಈతߏங (2) ٯ޲͖ࢀরͷอ࣋ • backwardܭࢉ࣌ʹάϥϑΛؔ਺ద༻ॱͱٯॱʹͨ ͲΕΔΑ͏ʹ͢ΔͨΊɼ • ֤Functionʹೖྗ͞ΕͨVariable΁ͷࢀর ʢinputsʣΛ࣋ͨͤΔ • Function͔Βग़ྗ͞ΕΔVariableʹ͸ɼࣗ਎Λग़ ྗͨ͠Function΁ͷࢀরʢcreatorʣΛ࣋ͨͤΔ • Function͸ɼೖྗVariableͱಉ͡rankΛ࣋ͪɼ Function͔Βग़ྗ͞ΕΔVariable͸ɼͦͷFunction ΑΓ1େ͖͍rankΛ࣋ͭ 47
  33. grad_outputs .backward(inputs, grad_outputs) .backward(inputs, grad_outputs) grad Function Function .backward() grad

    Variable .inputs Variable Variable grad_outputs .creator .creator grad_outputs grad grad grad Variable Variable Variable .backward(inputs, grad_outputs) grad_outputs grad grad grad Variable Variable Variable Function .inputs creator .inputs =1 creator ࣗಈඍ෼ͷ࣮૷ (1) • Define-by-Runͷ৔߹ɼޙਐܭࢉ ʢbackwardʣ͸VariableΛى఺ͱͯ࢝͠·Δ • ͋ΔVariableͷbackward()ϝιουΛݺͿ ͱɼ͔ͦ͜Βٯ޲͖ʹḷΕΔશͯͷFunction ͷbackward()ϝιουΛݺͿ • ޯ഑ͷܭࢉʹ͸ɼͦͷؔ਺΁ͷೖྗΛ༻͍ Δʢinputsʣ • Ұ্ͭ૚·Ͱͷޯ഑Λֻ͚Δʢ࿈࠯཯ʣͨ Ίʹ্૚͔ΒྲྀΕͯ͘Δޯ഑΋༻͍Δ ʢgrad_outputsʣ 49
  34. ࣗಈඍ෼ͷ࣮૷ (3) • Functionͷbackward()ϝιουͰ͸ɼೖྗͦ ΕͧΕʹ͍ͭͯͷඍ෼Λܭࢉͯ͠ฦ͍ͯ͠Δ • Functionͷग़ྗʢoutputsʣ͸ऑࢀরͱͯ͠อ ࣋ʢoutputs→creator→outputsͱ͍͏॥؀ࢀ রΛආ͚ΔͨΊʣ •

    Function͸ͦΕࣗମʹύϥϝʔλΛอ࣋͠ͳ͍ ͨΊɼFunctionͷ֎ଆͰ؅ཧ͞Εͨύϥϝʔ λΛܭࢉͷͨͼʹ౉ͯ͠΍Δඞཁ͕͋Γ໘౗ɿ x, W, b = Variable(init_x), Variable(init_W), Variable(init_b) y = LinearFunction()(x, W, b) # Ұ౓໨ͷforward # ...backward, updateͳͲ... y = LinearFunction()(x, W, b) # ೋ౓໨ͷforward 51
  35. ຖΤϙοΫɼσʔλͷॱ൪Λγϟοϑϧ͢Δ ϩεͷ஋ͷมԽΛه࿥͓ͯ͘͠ ΤϙοΫͷֶश͕ऴΘͬͨΒ WBMJEBUJPOσʔληοτΛ࢖ͬͯ ෼ྨਫ਼౓Λܭࢉ͠ɼඪ४ग़ྗʹ USBJOJOHMPTTͱฒ΂ͯग़ྗ ֶशΛߦ͓͏ • MNISTσʔληοτ͸scikit-learnΛ࢖ͬ ͯҎԼͷΑ͏ʹ४උ͓ͯ͘͠

    from sklearn.datasets import fetch_mldata mnist = fetch_mldata('MNIST original', data_home='./') x, t = mnist['data'] / 255, mnist['target'] t = numpy.array([t == i for i in range(10)]).T train_x, train_t = x[:60000], t[:60000] val_x, val_t = x[60000:], t[60000:] • 1ΤϙοΫͱ͸ɼ܇࿅σʔληοτΛҰ प͢Δ·Ͱͷ͜ͱΛݴ͏ • ࠓճ͸150ΤϙοΫ·ͰֶशΛճͨ͠ 58
  36. TrainerΛ࢖Θͳ͍৔߹ (1) ϞσϧɾOptimizerͷఆٛ • ֶशϧʔϓΛந৅Խ͢ΔTrainerػೳΛ࢖ Θͳ͍ྫΛ঺հ͢Δ • ChainerͰ͸Ϟσϧ͸ChainΫϥεΛܧঝ ͯ͠ॻ͘ͷ͕Ұൠత •

    chainer.optimizerҎԼʹ͸༷ʑͳ࠷దԽ ख๏͕༻ҙ͞Ε͍ͯΔʢSGD, MomentumSGD, NesterovAG, RMSprop, RMSpropGraves, AdaGrad, AdaDelta, Adam, etc...ʣ 61
  37. TrainerΛ࢖Θͳ͍৔߹ (2) σʔληοτɾΠςϨʔλͷఆٛ • Chainerʹ͸యܕతͳ͍͔ͭ͘ͷσʔληοτΛμ ΢ϯϩʔυ͔Βల։ɾಡΈࠐΈ·Ͱࣗಈతʹߦ͏ ϢʔςΟϦςΟΫϥε͕͋Δ • ࠓճ͸ͦΕΛ༻͍ͯMNISTσʔληοτΛऔಘ͠ɼ ΠςϨʔλʢࢦఆͨ͠όοναΠζ਺෼͚ͩσʔλ

    ηοτ͔ΒσʔλΛऔΓग़ͯ͠Ұͭͷςϯιϧʹ· ͱΊͯฦ͢ػೳʣʹ౉͢ • Validationσʔλ͸σʔληοτ·Δ͝ͱҰ౓ʹܭ ࢉͯ͠͠·͑͹Α͍ͷͰʢֶशʹ࢖Θͳ͍ͨΊʣɼ όοναΠζʹσʔληοταΠζͱಉ͡਺ ʢlen(val)ʣΛࢦఆ͍ͯ͠Δ 62
  38. TrainerΛ࢖͏ར఺ (1) • Extension͕ศར • ֶशͷ్தܦաอଘɾ࠶։ʢsnapshotʣ • ϩάͷϑΝΠϧ΁ͷอଘɾදࣔʢLogReport, PrintReportʣ •

    ࢦఆͨ͠λΠϛϯάͰͷvalidationʢEvaluatorʣ • ࢦఆͨ͠஋ʢϩε΍ਫ਼౓ͳͲʣͷϓϩοτΛը૾ͰࣗಈอଘʢPlotReportʣ • Ϟσϧͷߏ଄ΛGraphvizͷdotܗࣜͰग़ྗʢdump_graphʣ • Ϟσϧύϥϝʔλͷ౷ܭ৘ใΛه࿥ʢParameterStatisticsʣ • ͳͲͳͲ • ৄ͘͠͸ͪ͜ΒͷҰཡࢀরɿTrainer extensions (https://docs.chainer.org/en/stable/reference/extensions.html) 65
  39. CuPy • CuPy͸NumPyޓ׵ͷ਺஋ܭࢉϥΠϒϥϦͰɼ NVIDIA CUDAΛ࢖ͬͨGPUܭࢉΛαϙʔτ • ଟ͘ͷNumPy APIΛαϙʔτ͠ɼ΄΅ॻ͖׵ ͑ͳ͠ͰNumPyΛ࢖ͬͯॻ͔ΕͨίʔυΛ GPU্Ͱ૸ΒͤΔ͜ͱ͕Ͱ͖Δ

    • ಛҟ஋෼ղͳͲͷઢܗ୅਺ΞϧΰϦζϜ΋༻ ҙɼͦΕΒΛGPUͰ࣮ߦͰ͖Δ • KMeans, Gaussian Mixture ModelͳͲͷ Example΋૿͍͑ͯΔ CuPy: https://github.com/cupy/cupy 68
  40. ը૾෼ྨ horse : 94% dog : 3% pig : 2%

    cat : 1% . . . ༩͑ΒΕͨը૾Λط஌ͷΫϥεͷ͍ͣΕ͔ʹ෼ྨ͢Δ໰୊ ʁ 71
  41. ਤ͸%"4IPJFC FUBM l$PNQVUFS"JEFE.PEFMGPS4LJO%JBHOPTJT6TJOH%FFQ -FBSOJOHzΑΓɽ"MFY/FUࣗମ͸<> ը૾෼ྨͰΑ͘༻͍ΒΕΔߏ଄ • ೖྗʹը૾ΛऔΓɼग़ྗΛΫϥε਺࣍ݩ ͷϕΫτϧʹ͢Δ • ৞ΈࠐΈ૚ʢconvolutional

    layerʣͱݺ ͹ΕΔ૚͕ଟ༻͞ΕΔ • ϓʔϦϯάʢpoolingʣͱݺ͹ΕΔૢ࡞Ͱ ฏߦҠಈීวੑΛ֫ಘ͢Δ͜ͱ͕Ͱ͖Δ ӈਤͷॳग़͸[A. Krizhevsky, 2016]15** 15 A. Krizhevsky, I. Sutskever, G. E. Hinton, "ImageNet Classification with Deep Convolutional Neural Networks", NIPS (2012) 73
  42. ৞ΈࠐΈωοτϫʔΫ • ৞ΈࠐΈωοτϫʔΫʢconvolutional neural network; CNNʣ͸ɼෳ਺ͷϚϧννϟϯωϧ ͷϑΟϧλΛೖྗը૾ʹ৞ΈࠐΈɼըૉͷۭ ؒతͳ૬ؔੑΛར༻ͯ͠શ݁߹ͱൺ΂গͳ͍ ύϥϝʔλ਺Ͱྑ͍ಛ௃நग़͕ߦ͑ΔΑ͏޻ ෉͞Εͨߏ଄Λ࣋ͭωοτϫʔΫ

    • ը૾ΛೖྗʹऔΔ৔߹͸΄΅৞ΈࠐΈωοτ ϫʔΫʹΑΓಛ௃நग़Λߦ͏ͷ͕Ұൠత • ࠷ۙ͸ӈਤͷΑ͏ͳ1࣍ݩ৞ΈࠐΈΛ༻͍ͨࣗ વݴޠॲཧλεΫͷͨΊͷ৞ࠐΈωοτϫʔ Ϋ΋ొ৔͍ͯ͠Δ 74
  43. ৞ΈࠐΈԋࢉ • νϟϯωϧͷಛ௃ϚοϓΛ νϟϯωϧͷ ಛ௃Ϛοϓʹม׵͢Δ৔߹͸ɼ νϟϯωϧͷ ϑΟϧλΛ ຕ༻͍ͯɼ৞ΈࠐΈԋࢉΛߦ͏ • ϑΟϧλͷେ͖͞ΛΧʔωϧαΠζͱ΋ݴ͏

    • ৞ΈࠐΉεςοϓ෯ΛετϥΠυʢstrideʣͱ͍ ͍ɼେ͖͘͢Ε͹ग़ྗಛ௃Ϛοϓ͸খ͘͞ͳΔ • ύοσΟϯάʢpaddingʣ͸ɼೖྗͷपғΛఆ਺Ͱ ຒΊͯαΠζΛ֦େ͢Δ͜ͱͰɼಛ௃Ϛοϓͷେ ͖͞Λอ͍࣋ͨ͠৔߹ͳͲʹ༻͍ΒΕΔ ӈਤ͸CS231n Convolutional Neural Networks for Visual RecognitionΑΓ 75
  44. ϓʔϦϯά • ը૾Λμ΢ϯαϯϓϦϯά͠ɼฒߦҠಈ ීวੑΛ֫ಘ͢ΔޮՌ͕͋Δ • μ΢ϯαϯϓϦϯάʹΑ্ͬͯ૚Ͱͷड༰ ໺ʢreceptive fieldʣΛ޿͛ΔޮՌ΋͋Δ • ड༰໺ʹ͍ͭͯ͸ɼҰͭͷϢχοτ͕

    ೖྗͷը૾ͷͲͷ͘Β͍ͷൣғͷըૉ ͱܨ͕͍ͬͯΔ͔ɼͱଊ͑Ε͹Α͍ ӈਤ͸CS231n Convolutional Neural Networks for Visual RecognitionΑΓ 76
  45. 2012೥ʹTorontoେֶͷGeoffry HintonΒͷνʔϜ͕ਂ͍৞ࠐΈωοτ ϫʔΫΛ༻͍ͯ2ҐҎԼΛ10%Ҏ্Ҿ͖཭͢Τϥʔ཰Λୟ͖ग़͠ਂ૚ֶश ϒʔϜͷՐ෇͚໾ʹͳͬͨ 28.191 25.77 15.315 11.743 6.656 5.1

    3.567 2.991 2.251 ILSVRC Object Classification (Top-5 Error) ImageNet Large Scale Visual Recognition Challenge (ILSVRC) • େن໛ͳը૾σʔληοτʢ1000ສຕɼ1ສΫϥεʣͷαϒ ηοτʢ128ສຕɼ1000ΫϥεʣΛֶशσʔλͱͯ͠ߦΘΕΔ ੈք࠷େن໛ͷը૾ೝࣝͷίϯϖςΟγϣϯ • 2010೥ͷ։࢝࣌͸ը૾෼ྨͷΈͩͬͨ • 2011೥͔Βlocalizationʢର৅෺ମΛғ͏ۣܗΛ༧ଌʣ͕௥ Ճ • 2012೥ʹ͸ݘछΛ෼ྨ͢ΔFine-grained෼ྨλεΫΛ࣮ࢪ • 2013೥ʹ͸ڥքۣܗʢbounding boxʣʹΑΔ෺ମݕग़Λ௥Ճ • 2015೥ʹ͸ಈըத͔Βͷ෺ମݕग़ͱɼγʔϯ෼ྨΛ௥Ճ • 2016೥ʹ͸γʔϯͷηάϝϯςʔγϣϯͷλεΫΛ௥Ճ 78
  46. AlexNet15 • 2012೥ͷILSVRCͰ༏উͨ͠Ϟσϧ • 224x244ݻఆαΠζͷը૾Λೖྗͱ͠ɼ5ͭͷ৞ࠐΈ ૚ɼ3ͭͷશ݁߹૚͔ΒͳΔ • LRN (local response

    normalization)ɼReLUɼmax poolingͳͲ͕༻͍ΒΕͨ • AlexNetͷImageNetσʔληοτͰͷ܇࿅ࡁΈϞσϧ ʢpre-trained modelʣ͸ଟ͘ͷԠ༻Ͱ༻͍ΒΕͨ • AlexNetͷpre-trained modelΛॳظ஋ͱ͠ɼ্૚ͷશ݁ ߹૬͚͚͔ͩͭ͑ͯ৽͍͠σʔληοτͰֶशΛߦ͏ సҠֶशʢtransfer learningʣͷݚڀ΋ଟ͘ొ৔ͨ͠ 15 A. Krizhevsky, I. Sutskever, G. E. Hinton, "ImageNet Classification with Deep Convolutional Neural Networks", NIPS (2012) 79
  47. GoogleNet16 • 2014೥ͷILSVRC༏উϞσϧͰɼޙʹInception ResNetͳͲͷվྑ൛͕ग़͍ͯΔ • InceptionϞδϡʔϧͱ͍͏ෳ਺ͷϒϥϯνΛ࣋ͬ ͨϒϩοΫ͔ΒͳΔ22૚ͷ৞ΈࠐΈωοτϫʔΫ • 1x1, 3x3,

    5x5ͳͲҟͳΔେ͖͞ͷΧʔωϧΛ༻͍ ͨ৞ΈࠐΈͷ݁ՌΛ݁߹ʢconcatʣ͢Δ • 1x1ʢશ݁߹ͱಉ౳ʣ͕ೖ͍ͬͯΔ͜ͱͰɼҰͭ ͷϞδϡʔϧ͕ۭؒํ޲Ͱ͸ͳ͘νϟϯωϧํ޲ ͷ૬ؔΛଊ͑ΒΕΔΑ͏ʹͳΔ 16 C. Szegedy, et. al., "Going Deeper with Convolutions", CVPR (2015) 80
  48. VGG17 • 2014೥ʹGoogLeNetʹ͍ͭͰILSVRC 2ҐͩͬͨϞ σϧ • 3x3ͷখ͞ͳΧʔωϧαΠζͷ৞ΈࠐΈ૚Λε λοΫ͢Δ͜ͱͰɼେ͖ͳΧʔωϧαΠζͷ৞Έ ࠐΈΛ1૚༻͍ΔΑΓ΋গͳ͍ύϥϝʔλ਺Ͱಉ͡ େ͖͞ͷreceptive

    fieldΛ֫ಘͰ͖Δʢ3x3͕2ͭε λοΫ͢Δͱ5x5, 3ͭͰ7x7ͷreceptive fieldΛ࣋ͭ • ֶश͕ൺֱత༰қͰྑ͍ಛ௃ྔ͕औΕΔͨΊ ResNetొ৔·Ͱଟ͘ͷݚڀͰpre-trainedϞσϧͱ ͯ͠༻͍ΒΕͨ 17 K. Simonyan, A. Zisserman "Very Deep Convolutional Networks for Large-Scale Image Recognition" arXiv technical report, (2014) 81
  49. ResNet18 • ILSVRC 2015༏উϞσϧɽલ೥ͷGoogLeNet 22૚Α Γେ෯ʹਂ͍152૚ͷωοτϫʔΫͷ܇࿅ʹ੒ޭ͠ɼ ଟ͘ͷਓͷ౓؊Λൈ͍ͨʢ࿦จதͰ͸CIFARσʔλ ηοτͰ1502૚ͷ܇࿅ʹ΋੒ޭͨ͠ͱ͋Δɽͨͩਫ਼ ౓͸޲্͠ͳ͔ͬͨʣ •

    ͦͷޙଟ͘ͷѥछΛ࢈Μͩɽ͜ΕҎ߱ͷը૾ೝࣝϞ σϧͷجຊܗͱͳͬͨ • ز͔ͭͷ৞ࠐΈ૚ͷմͷલޙʹɼᷖճ࿏Λͭͳ͛Δ Α͏ͳߏ଄Λ࡞Δ͜ͱͰωοτϫʔΫΛਂͯ͘͠΋ ޯ഑͕ফࣦ͢Δ͜ͱͳֶ͘श͕ՄೳʹͳΔ 18 Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun , "Deep Residual Learning for Image Recognition." arXiv:1512.03385 (2015) 82
  50. DenseNet20 • CVPR 2017 ϕετϖʔύɽResidual connectionΛྡ઀͢Δ2ͭͷResBlockͩ ͚Ͱͳ͘શ෦ͷϒϩοΫؒʹ࡞Δ • ΑΓޯ഑ͷ఻ୡΛ͠΍͢͠ɼ·ͨ௿૚ ͷ৘ใΛ্૚Ͱ༻͍ΒΕΔ఺͕ྑ͍

    • ֤৞ΈࠐΈ૚ͷνϟϯωϧ਺Λগͳ͘͠ ͯ΋ਫ਼౓͕อͯΔͨΊɼύϥϝʔλ਺ Λେ͖͘ݮΒ͢͜ͱ͕Ͱ͖Δ 20 Gao Huang, Zhuang Liu, Kilian Q. Weinberger, Laurens van der Maaten, "Densely Connected Convolutional Networks", CVPR (2017) 84
  51. ResNeXt21 • 2016೥ͷILSVRCͷ෼ྨλεΫͰ2Ґ • ಉ͡τϙϩδͷϒϩοΫΛੵΈॏͶΔ͜ͱͰΧʔ ωϧαΠζ΍νϟϯωϧ਺ͳͲͷϋΠύʔύϥ ϝʔλʹ೰·ͣʹ͢ΉΑ͏ʹ޻෉ • cardinalityͱ͍͏৽͍࣍͠ݩΛఏҊͨ͠ɼͱ͍͏ ΋ͷ

    • ಉҰͷܭࢉྔͰൺֱͨ͠৔߹ɼωοτϫʔΫͷਂ ͞΍෯ΑΓ΋cardinalityΛ૿΍͢ํ͕ΑΓੑೳ͕ ্͕Δ͜ͱΛ࣮ݧతʹ֬ೝ 21 Saining Xie, Ross Girshick, Piotr Dollár, Zhuowen Tu, Kaiming He, "Aggregated Residual Transformations for Deep Neural Networks", CVPR (2017) 85
  52. Squeeze-and-Excitation22 • 2017೥ͷILSVRC༏উϞσϧ • Inceptionߏ଄ͳͲ͸ۭؒํ޲ͷ૬ؔੑΛଊ͑Δ ޻෉ʹΑΔվળ͕ͩɼνϟϯωϧؒͷؔ܎ੑΛ ߟྀ͢ΔఏҊΛͨ͠ɼͱ͍͏΋ͷ • άϩʔόϧͳ৘ใΛ࢖ͬͯ༗ӹͳಛ௃Λڧௐ ͠ɼͦ͏Ͱͳ͍ಛ௃Λ཈੍͢Δ

    • νϟϯωϧͷۭؒํ޲ͷ࿨Λऔͬͨ͋ͱ ʢsqueezeʣɼνϟϯωϧ਺࣍ݩͷϕΫτϧͰ ಛ௃ϚοϓΛॏΈ෇͚͢Δʢexcitationʣ 22 Jie Hu, Li Shen, Gang Sun, "Squeeze-and-Excitation Networks", arXiv pre-print: 1709.01507 (2017) 86
  53. ΑΓ೉͍͠σʔληοτ΁ - 2017೥ͷ։࠵Λ࠷ޙʹɼILSVRCͷϗετ͸ Kaggle΁ͱҠߦʢImageNet Object Localization Challenge) - ෺ମݕग़΍ηάϝϯςʔγϣϯɼઆ໌จੜ ੒ͳͲͷΑΓߴ౓ͳλεΫ΁ଟ͘ͷݚڀऀͷ

    Ϧιʔε͕ಈ͍͍ͯ͘ͱࢥΘΕΔ ৽͍͠σʔληοτͷྫ - MSCOCO Dataset - Places Challenge (ADE20K) - YouTube-8M Video Understanding Challenge - Cityscapes Dataset - Mapillary Vistas Datset - VisualGenome 87
  54. Fast R-CNN Faster R-CNN Faster/Fast R-CNN/R-CNN23 • R-CNN: ෺ମީิʢregion proposalsʣΛผख๏ʢselective

    searchʣͰܭࢉ͠ɼͦͷۣܗΛCNNͷಛ௃Ϛοϓ্ʹࣹӨ ͯͦ͠ͷྖҬΛresize্ͨ͠Ͱ·ͨCNNʹ͔͚ɼग़ྗͷಛ ௃ΛSVMͰ෼ྨ͢Δ͜ͱͰۣܗ͝ͱʹΫϥεΛ༩͑Δख๏ • Fast R-CNN: ಛ௃Ϛοϓ্ʹࣹӨ͞Εͨ෺ମީิྖҬͰ ϓʔϦϯάΛߦ͍ݻఆ௕ಛ௃Λ࡞ΔRoI PoolingΛఏҊ͠ɼ ෼ྨͱbounding boxิਖ਼ʢbbox regressionʣΛಉ࣌ʹֶश • Faster R-CNN: Region proposal network (RPN)ͱ࢖ͬͯಛ ௃Ϛοϓ͔ΒީิྖҬͷਪఆ΋CNNͰߦ͏ɽRPN͸༧Ίܾ ΊΒΕͨύλʔϯͷۣܗͰಛ௃ϚοϓΛ੾ΓऔΓɼۣܗ͝ ͱʹ෺ମ/എܠͷ෼ྨͱbboxͷճؼΛߦ͏ 23 Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time object detection with region proposal networks." NIPS (2015) 89
  55. You Only Look Once (YOLO)25 • ը૾Λ͋Β͔͡ΊܾΊͨ਺ͷάϦουʹ෼͚ɼ֤ ηϧ͝ͱʹΫϥεͱbounding boxͷܗΛ༧ଌ͢ Δɽਫ਼౓ΑΓ଎౓Λॏࢹͨ͠ख๏

    • bounding boxͷத৺ɾܗͷ༧ଌɼͲͷΫϥε΁ॴ ଐ͢Δ͔ͷ෼ྨͳͲΛ1ͭͷϩεؔ਺ʹ౷߹͠ɼ end-to-endͰֶश͍ͯ͠Δ • ωοτϫʔΫߏ଄ʹFCNΛ࠾༻͠ɼϚϧνεέʔ ϧͰը૾ΛݟΔͳͲͷվྑͰΑΓߴ଎Խɾߴਫ਼౓ Խͨ͠YOLO9000ͱ͍͏Ϟσϧ͕CVPR2017Ͱൃ ද͞ΕɼϕετϖʔύΛड৆ͨ͠ 25 Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." arXiv preprint arXiv:1506.02640 (2015) 90
  56. Single Shot Multibox Detector (SSD)24 • ॳ୅YOLOΑΓߴ଎ͰFaster R-CNNͱಉ౳ͷਫ਼ ౓Λୡ੒͍ͯ͠Δ •

    ௿૚͔Β͖࣋ͬͯͨಛ௃Ϛοϓ΋࢖͏ͱਫ਼౓ ͕޲্͢Δ • খ͞ͳΧʔωϧαΠζͷ৞ΈࠐΈΛಛ௃Ϛο ϓʹద༻ͯ͠෺ମΧςΰϦͱҐஔΛಉ࣌ʹਪ ఆ • End-to-endͰֶशՄೳ 24 Liu, Wei, et al. "SSD: Single Shot MultiBox Detector." ECCV (2016) 91
  57. Α͘༻͍ΒΕΔߏ੒ཁૉ (2) Multi-scale feature ensemble • ্૚ͷಛ௃Ϛοϓ͸ΑΓߴ࣍ݩͷҙຯ Λද͍ͯ͠Δ͕ɼہॴతͳ৘ใ͸ࣦΘ ΕΔ •

    Ϛϧνεέʔϧͷಛ௃Λ૊Έ߹ΘͤΔ ͜ͱͰύϑΥʔϚϯεͷ޲্͕ݟΒΕ Δ52 52 "Hypercolumns for Object Segmentation and Fine-grained Localization", CVPR 2015 95
  58. Α͘༻͍ΒΕΔߏ੒ཁૉ (3) Conditional random field (CRF) • CNNͷηάϝϯςʔγϣϯ݁ՌΛrefine͢Δޙॲཧ ͷͨΊʹΑ͘༻͍ΒΕΔ(DeepLab53) •

    ͍͔ͭ͘ͷDeepLabޙଓͷख๏͸ɼޙॲཧͰ͸ͳ͘ refine͢Δ෦෼΋End-to-Endʹֶश͢Δํ๏ΛఏҊ͠ ͍ͯΔ(DPN54, CRF as RNN55, Detections and Superpixels56) 56 "Higher order conditional random fields in deep neural networks", ECCV 2016 55 "Conditional random fields as recurrent neural networks", ICCV 2015 54 "Semantic image segmentation via deep parsing network", ICCV 2015 53 "Semantic image segmentation with deep convolutional nets and fully connected crfs", ICLR 2015 96
  59. Α͘༻͍ΒΕΔߏ੒ཁૉ (4) Global average pooling (GAP) • νϟϯωϧ͝ͱʹۭؒ࣍ݩʹΘͨΓ࿨ Λͱͬͯಛ௃ϚοϓΛϕΫτϧԽ͢Δ ํ๏

    • ParseNet57͸ɼGlobal average pooling ΛFCNʹରͯ͠ߦ͏͜ͱͰηάϝϯ ςʔγϣϯͷ݁Ռ͕վળͨ͠ͱใࠂ͠ ͍ͯΔ 57 "Parsenet: Looking wider to see better", ICLR 2016 97
  60. ηάϝϯςʔγϣϯͷओཁͳ՝୊ (1) Mismatched relationship • ڞى͢Δࢹ֮తͳύλʔϯ͸ͳΜΒ͔ͷ ίϯςΩετΛҙຯ͍ͯ͠Δ • ྫ͑͹ɼඈߦػ͸ۭΛඈͿͷͰɼۭ ͱڞى͠΍͍ͩ͢Ζ͏

    • ίϯςΩετͷ৘ใΛ͏·͘ू໿͢Δ͜ ͱ͕Ͱ͖ͳ͍ͱɼޡ෼ྨ͠΍͘͢ͳΔ • ӈਤͰ͸ɼFCN͸ϘʔτΛݟͨ໨͚ͩͰ ʮंʯͱޡ෼ྨ͍ͯ͠Δʢԫ৭͍ۣܗʣ 98
  61. ηάϝϯςʔγϣϯͷओཁͳ՝୊ (2) Confusing Classes • ϝδϟʔͳσʔληοτͷதʹ͸ฆΒΘ͍͠Ϋϥεؚ͕·Ε ͍ͯΔɽྫ͑͹ɼʮ஍໘ʯͱʮ஍ٿʯɼʮࢁʯͱʮٰʯɼ ʮนʯͱʮՈʯɼʮݐ෺ʯͱʮߴ૚ϏϧʯͳͲ • ADE20Kͱ͍͏σʔληοτͷΞϊςʔγϣϯ࡞ۀΛ௨͡

    ͯɼΑ͘܇࿅͞ΕͨਓؒͰ΋17.6%ͷϐΫηϧΛؒҧͬͯ෼ ྨ͢Δͱ͍͏ใࠂ্͕͕͍ͬͯΔ58 • ӈਤͰ͸FCN͸෦෼తʹʮߴ૚Ϗϧʯ෦෼తʹʮݐ෺ʯͱ͍ ͏Ұ؏͠ͳ͍༧ଌΛͯ͠͠·͍ͬͯΔ͕ɼগͳ͘ͱ΋ͲͪΒ ͔ҰํͰ౷Ұ͞ΕΔ΂͖Ͱ͋Δ • Ϋϥεؒͷؔ܎ੑΛ׆༻͢Δ͜ͱ͕ॏཁ 58 "Semantic understanding of scenes through the ADE20K dataset", CVPR 2017 99
  62. ηάϝϯςʔγϣϯͷओཁͳ՝୊ (3) Inconspicuous Classes • খ͘͞෺ମ΍໨ཱͨͳ͍෺ମ͸ݟ͚ͭʹ͍͘ ͕ɼͦΕ͸ॏཁͳ΋ͷͰ͋Δ͔΋͠Εͳ͍ʢަ ௨ඪࣝͳͲʣ • େ͖ͳ෺ମ͸్தͰԿ͔ʹःΒΕͯෆ࿈ଓʹݱ

    ΕΔ͜ͱ͕͋Δ͕ɼӈͷྫͰ͸FCN͸ࣅͨΑ͏ ͳݟͨ໨ͷ·͘ΒͱγʔπΛ۠ผͰ͖͍ͯͳ͍ • খ͞ͳ෺ମ΋͘͠͸ͱͯ΋େ͖ͳ෺ମʹର͢Δ ਫ਼౓Λ޲্͢ΔͨΊʹɼશମͱ෦෼ྖҬʢsub- regionʣͷ྆ํʹ͏·͘஫ҙΛ෷͏͜ͱ͕ඞཁ 100
  63. Fully Convolutional Network26 • ClassificationͷωοτϫʔΫ͸ͱͯ΋ߥ͍ηάϝ ϯςʔγϣϯͱݟΕΔˠ෼ྨ໰୊Ͱpre-training͠ ͨωοτϫʔΫ͕༗ޮ׆༻Ͱ͖Δɿ෼ྨ༻ωοτ ϫʔΫͷ࠷ऴ૚ͷશ݁߹૚͸1x1ΧʔωϧαΠζ ͷ৞ΈࠐΈͱಉ͡ˠ͢΂ͯͷ૚Λ৞ΈࠐΈʹ͢Δ •

    Ͳ͏΍ͬͯີͳ༧ଌΛ࡞Δ͔ɿDeconvolutionʹ ΑΔΞοϓαϯϓϦϯά • Ͳ͏΍ͬͯߥ͍semanticͳ৘ใͱࡉ͔͍͕low levelͳ৘ใΛ౷߹͢Δ͔ɿskip connection 26 Jonathan Long and Evan Shelhamer et al., "Fully Convolutional Networks for Semantic Segmentation", appeared in arxiv on Nov. 14, 2014 102
  64. DeconvolutionϨΠϠ • Deconvolutionͱ͍͏ݺͼํʹ͸ࢍ൱͋Δʢtransposed convolution΍backward convolutionͱ΋ݺ͹ΕΔʣ • ԋࢉࣗମ͸ΧʔωϧΛ৞ΈࠐΉૢ࡞ͳͷͰConvolutionͱಉͩ͡ ͕ɼ 1. ೖྗಛ௃Ϛοϓͷ֤Ґஔͷಛ௃Λඈͼඈͼʹ഑ஔʢstrideʹର

    Ԡʣ͠ɼ 2. पғͷ༨നΛσϑΥϧτͰΧʔωϧαΠζ-1෼͚ͩݟ͓͖ͯɼ 3. paddingͰࢦఆ͞Εͨྔ͚ͩ༨നΛ࡟͔ͬͯΒɼ 4. ConvolutionΛߦ͏ • strideΛେ͖͘͢Ε͹ը૾Λ֦େ͢Δ͜ͱ͕Ͱ͖Δ ਤ͸ Convolution arithmetic https://github.com/vdumoulin/ conv_arithmetic ΑΓ 103
  65. Global Average Pooling (GAP)59 • ֤νϟϯωϧ্ͷશըૉͷฏۉΛܭࢉ͢Δ͜ͱͰ ಛ௃ϚοϓΛҰͭͷϕΫτϧʹ͢Δૢ࡞ • ResNetͷ্૚ͷϢχοτ͕΋ͭreceptive field͸

    ͢Ͱʹೖྗը૾ͷେ͖͞ΑΓ΋େ͖͍ • νϟϯωϧ͝ͱʹฏۉ஋Λܭࢉͯ͠͠·͏GAPૢ ࡞͸ɼը૾શମͷ৘ใΛѻ͏ͷʹྑͦ͞͏Ͱ͋Δ • ͔͠͠ɼը૾தʹ͸͍Ζ͍Ζͳେ͖͞ͷ͍Ζ͍Ζ ͳ෺ମ͕ొ৔͢ΔՄೳੑ͕͋ΔͨΊɼಛ௃Ϛοϓ Λ୯ҰͷϕΫτϧʹͯ͠͠·͏৔߹ɼۭؒతͳؔ ܎ੑͳͲ͸ࣦΘΕͯ͠·͏ 59 "Parsenet: Looking wider to see better", ICLR 2016 104
  66. SegNet27 • શ৞ࠐΈωοτϫʔΫͰɼ௿૚ͷ৘ใΛಛ ௃ϚοϓΛ࣋ͬͯ͘ΔͷͰ͸ͳ͘ϓʔϦϯά ΠϯσοΫεΛ࣋ͬͯ͘Δ͜ͱͰ׆༻͢Δ • ϓʔϦϯάΠϯσοΫεͱ͸ɼMax pooling ͷࡍͷΧʔωϧద༻͝ͱͷ࠷େ஋ͷҐஔ •

    ࠷େ஋ͩͬͨ৔ॴʹ஋Λ͍ΕɼͦͷଞͷҐ ஔʹ͸0ΛೖΕΔ΍ΓํͰΞοϓαϯϓϦϯ άΛߦ͏ 27 Vijay Badrinarayanan, Alex Kendall and Roberto Cipolla "SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation." PAMI, (2017) 105
  67. U-Net28 • ࡉ๔ը૾ͷηάϝϯςʔγϣϯ༻ʹઃܭ͞ ΕͨωοτϫʔΫ • Max poolingͰμ΢ϯαϯϓϦϯά͠ɼ DeconvolutionͰΞοϓαϯϓϦϯά͢Δ • ௿૚ͷಛ௃ϚοϓΛ্૚ͷ৞ΈࠐΈ૚ͷೖ

    ྗʹ࿈݁ʢconcatʣ͢Δ • શମ͕"U"ͷࣈͷΑ͏ͳܗΛ͍ͯ͠ΔͨΊU- Netͱݺ͹ΕΔ 28 “U-Net: Convolutional Networks for Biomedical Image Segmentation”, Olaf Ronneberger, Philipp Fischer, Thomas Brox, 18 May 2015 106
  68. Pose Affinity Field33 • ਓؒͷ࢛ࢶͷ֤ύʔπͷ৴པ౓ϚοϓΛग़ྗ͢Δ CNNΛ༻͍ͨConvolutional Pose Machineͱ͍͏ै དྷख๏ΛϕʔεʹɼPart Affinity

    Fieldͱ͍͏ύʔπ ؒͷ݁߹ੑͷϚοϓ΋ߟྀ͢ΔϒϥϯνΛ௥Ճͨ͠ ߏ଄ͷCNNͰ࢟੎ਪఆΛߦͬͨ • OpenPoseͱ͍͏Φʔϓϯιʔειϑτ΢ΣΞͱ͠ ͯίʔυ͕ެ։͞Ε͍ͯΔ https://github.com/CMU-Perceptual-Computing- Lab/openpose • Geforce GTX 1080Λ࢖͏ͱ9fpsఔ౓Ͱॲཧ͕Ͱ͖Δ 33 Zhe Cao and Tomas Simon and Shih-En Wei and Yaser Sheikh, "Realtime Multi-Person Pose Estimation using Part Affinity Fields", CVPR (2017) 109
  69. ஶऀ࣮૷ repeatability͕อূ͞Ε͍ͯΔ͸ͣ ʢจݙͱಉ͡਺஋͕ग़ྗͰ͖Δίʔυʣ ໺ྑ࣮૷ ໺ྑ࣮૷ ໺ྑ࣮૷ reproducibilityͷอূ͕΄͍͠ʜ ஶऀ࣮૷͕ެ։͞Ε͍ͯͳ͍৔߹ PS ޷͖ͳϑϨʔϜϫʔΫͰ࣮૷͠ͳ͓͍ͨ͠৔߹ʢผͳݚڀͷ౔୆ʹ͍ͨ͠ʣ

    ʁ repeatabilityͱreproducibility repeatability શ͘ಉ͡ίʔυɼಉ͡ཚ਺γʔυɼಉ͡ σʔληοτͰ࣮ݧΛߦ͍ɼ࠶౓ಉ݁͡ Ռ͕ग़Δ͜ͱ reproducibility ຊ࣭తʹಉ࣮͡ݧઃఆʢಉҰ΋͘͠͸ྨࣅͷσʔ ληοτɼҟͳΔཚ਺γʔυɼຊ࣭తʹಉ͡Ξϧ ΰϦζϜʣͰ૝ఆ͞ΕΔ݁Ռ͕ಘΒΕΔ͜ͱ ACMͰ͸RepeatabilityΛ(same team, same experimental setup), Replicability Λ(different team, same experimental setup), ReproducibilityΛ(different team, different experiental setup)ͱఆ͍ٛͯ͠Δ http://www.acm.org/publications/policies/artifact-review-badging 111
  70. ChainerCV https://github.com/chainer/chainercv ChainerCV • ෺ମݕग़ɾηάϝϯςʔγϣϯͳͲͷ࠶ݱੑ֬ ೝΛߦ࣮ͬͨ૷Λఏڙ • ΠϯλʔϑΣʔεΛλεΫ͝ͱʹἧ͑Δ͜ͱͰ ͍Ζ͍ΖͳσʔληοτͰͷֶशɾਪ࿦Λ༰ қʹ

    • ΦϦδφϧͷϞσϧͷ܇࿅Λϙϐϡϥʔͳσʔ ληοτͰߦ͏͜ͱΛ༰қʹ͢ΔͨΊσʔλ ηοτϥούʔ΋౷ҰతͳΠϯλʔϑΣʔεͰ ఏڙ • pre-trainedϞσϧΛ؆୯ʹར༻։࢝Ͱ͖Δػೳ ΋ 112
  71. ݱࡏఏڙ͞Ε͍ͯΔϞσϧɾσʔληοτ ෺ମݕग़ɿ - Faster R-CNN (VGG16-based, ) - SSD300, SSD512

    ηάϝϯςʔγϣϯ: - SegNet - PSPNet (coming soon) σʔληοτ - PASCAL VOC (bounding box, segmentation) - Stanford Online Products (classification) - CamVid (segmentation) - Caltech-UCSD Birds-200 (classification, key-points) - Cityscapes (segmentation) 114
  72. ౷ҰతͳΠϯλʔϑΣʔε: pretrained-model ChainerCV͕ఏڙ͢ΔϞσϧ͸ɼίϯετϥΫλʹpretarined_modelͱ͍͏Ҿ਺Λ࣋ͪɼ ༧໿͞ΕͨจࣈྻΛ༩͑Δͱαʔό͔ΒࣗಈతʹֶशࡁΈॏΈ͕μ΢ϯϩʔυ͞ΕΔ model = FasterRCNNVGG16() # ϥϯμϜʹॳظԽ͢Δ৔߹͸ۭཝͰॳظԽ #

    PASCAL VOC2007σʔληοτͰֶशࡁΈͷϞσϧͰॳظԽ model = FasterRCNNVGG16(pretrained_model='voc07') ͜ͷΠϯλʔϑΣʔε͸ҟͳΔλεΫ޲͚ͷϞσϧʹ΋ڞ௨͍ͯ͠Δɿ model = SSD300(pretrained_model='voc0712') model = SegNet(pretrained_model='camvid') 115
  73. ౷ҰతͳΠϯλʔϑΣʔεɿpredict() ChainerCVͰ༻͍ΔϞσϧΫϥε͸ɼpredict()ϝιουΛ͍࣋ͬͯΔ͜ͱ͕ظ଴͞Ε Δɽ͜Ε͸ը૾ͷϦετΛड͚औͬͯɼग़ྗͷϦετΛฦ͢Α͏ͳϝιουͰ͋Δɽ # ෺ମݕग़༻ͷϞσϧΛ༻͍ͨਪ࿦ bboxes, labels, scores = model.predict(imgs)

    # ηάϝϯςʔγϣϯ༻ͷϞσϧΛ༻͍ͨਪ࿦ labels = model.predict(imgs) λεΫʹΑͬͯฦΓ஋͸ҟͳΔ͕ɼΠϯλʔϑΣʔε͕ಉ͡Ͱ͋Δ͜ͱͰɼλεΫ͝ ͱʹผʑͷه๏Λ֮͑ͳͯ͘Α͍ 116
  74. [37] D. Xu, Y. Zhu, C. B. Choy, L. Fei-Fei,

    “Scene Graph Generation by Iterative Message Passing”, CVPR (2017) طଘख๏Λ΋ͱʹ৽͍͠ ख๏Λ࡞Δ • γʔϯάϥϑੜ੒ͷΑ͏ͳݚڀ͸ɼطଘͷ෺ ମݕग़ثͷҰ෦෼ʢFaster R-CNNͷRegion Proposal network (RPN)ͷΈʣͷग़ྗͷ্ʹ ੒Γཱ͍ͬͯΔ • ·ͣRPNͷ࣮૷ͱ࠶ݱΛ֬ೝ͠ͳ͚Ε͹γʔ ϯάϥϑੜ੒ͷख๏Λݕ౼Ͱ͖ͳ͍… • ͜ͷΑ͏ͳͱ͖ʹதؒग़ྗͷ࢖͍ճ͠ͳͲ ͕༰қʢվ଄͕༰қʣͰɼ͔ͭ࠶ݱੑ͕֬ೝ ͞Ε͍ͯΔίʔυ͕͋Δͱศར 118
  75. ChainerCVͷtransforms • ը૾ೝࣝλεΫͰ͸ɼֶश࣌ʹσʔλʹϥϯ μϜͳม׵Λࢪ͢͜ͱͰσʔλྔΛٖࣅతʹ ૿΍͢data augmentation͕Ұൠతʹͳ͍ͬͯ Δ • ChainerCVͰ͸ҎԼͷΑ͏ͳ༷ʑͳม׵Λ༻ ҙ͓ͯ͘͜͠ͱͰɼdata

    augmentationͷ࣮૷ ͕ඇৗʹ؆୯ʹͰ͖ΔΑ͏ʹͳ͍ͬͯΔ • ݱࡏ༻ҙ͞Ε͍ͯΔม׵ʢͷҰ෦ʣɿ • center_crop, pca_lighting, random_crop, random_expand, random_flip, random_rotate, ten_crop, etc... 120
  76. ChainerCVͷtransformsͷ࢖͍ํ σʔληοτΫϥεΛTransformDatasetʢຊՈChainer͕ఏڙʣͰϥοϓ͢Δࡍʹ౉͢Ϣʔβఆ ٛؔ਺಺Ͱ༻͍Ε͹ྑ͍ɽ from chainercv import transforms def transform(in_data): img,

    bbox, label = in_data img, param = transforms.random_flip(img, x_flip=True, return_param=True) bbox = transforms.flip_bbox(bbox, x_flip=param['x_flip']) return img, bbox, label dataset = TransformDataset(dataset, transform) ্͸ɼϥϯμϜʹࠨӈ൓సΛߦ͍ɼ൓స͕ىͬͨ͜৔߹͸ϥϕϧͷbounding box࠲ඪʹରͯ͠ ΋ࠨӈΛ൓సͤ͞Δม׵Λߦ͏ྫɽ 121
  77. ChainerCVͷධՁπʔϧ ෺ମݕग़ɼηάϝϯςʔγϣϯͳͲ͸ɼܭࢉͷ໘౗ͳධՁࢦඪΛ༻੍͍ͯ౓ݕূͳͲ͕ߦΘ ΕΔ͜ͱ͕ଟ͍ɽ ηάϝϯςʔγϣϯͷ৔߹͸mean Intersection over Union (mIoU)ɼ෺ମݕग़ͷ৔߹͸mean Average Precision

    (mAP)ͱ͍ͬͨࢦඪ͕Α͘༻͍ΒΕΔ ͜ΕΒͷܭࢉΛߦͬͯ͘ΕΔؔ਺͓ΑͼChainerͷTrainerͰ༻͍ΒΕΔExtensionΛఏڙ # mAPΛܭࢉ͢ΔTrainer޲͚Extension evaluator = chainercv.extension.DetectionVOCEvaluator(iterator, model) # μΠϨΫτʹݺͿͱɼධՁ݁Ռ͕ೖͬͨࣙॻΛฦ͢ # e.g., result['main/map']ͷΑ͏ʹΞΫηε result = evaluator() 123
  78. ੜ੒Ϟσϧ • ը૾ೝࣝͳͲ͸ଟ͘ͷ৔߹ࣝผϞσϧͰ͋ͬͨɿσʔλ ͕༩͑ΒΕͨͱ͖ͷΫϥ εͷ෼෍ ΛχϡʔϥϧωοτͰۙࣅ͍ͯͨ͠ • ੜ੒ϞσϧͰ͸ɼσʔλͷ෼෍ ͦͷ΋ͷΛϞσϧԽ͢Δ •

    ਂ૚ֶशΛ༻͍ͨੜ੒Ϟσϧʹ͸RBMʢrestricted boltzmann machineʣ34ɼ Variational Auto-Encoder (VAE)35ͳͲɼ͍Ζ͍Ζͳ΋ͷ͕͋Δ͕ɼ͜͜Ͱ͸࠷ۙ஫ ໨Λཋͼ͍ͯΔGenerative Adversarial Nets (GAN)ʹ͍ͭͯͷ঺հΛߦ͏ 35 Diederik P Kingma and Max Welling, "Auto-Encoding Variational Bayes", ICLR (2014) 34 Smolensky, Paul, "Chapter 6: Information Processing in Dynamical Systems: Foundations of Harmony Theory", Parallel Distributed Processing: Explorations in the Microstructure of Cognition (1986) 126
  79. Generator Discriminator Dataset OR from dataset? Generative Adversarial Nets36 •

    σʔλͷΈ͔ΒֶशΛߦ͏ڭࢣͳֶ͠श ʢunsupervised learningʣͷҰछ • ੜ੒ϞσϧGͱɼࣝผϞσϧDΛಉ࣌ʹ܇࿅ • D͸ɼαϯϓϧ͕Gͷੜ੒෺Ͱ͸ͳֶ͘शσʔλ ͔Βདྷ͍ͯΔ֬཰Λਪఆ͢Δ • G͸ɼϊΠζϕΫτϧ ͔ΒαϯϓϧΛੜ੒͠ɼD ͕ࣝผϛεΛ͢Δ֬཰Λ࠷େԽ͢ΔΑ͏ֶश 36 I. J. Goodfellowm, et. al., "Generative Adversarial Nets", NIPS (2014) 127
  80. DCGAN37 • GANΛ༻͍ͨը૾ੜ੒ܥͷݚڀϒʔϜͷՐ෇͚໾ ʹͳͬͨ࿦จ • GeneratorͰ͸1࣍ݩϊΠζϕΫτϧ͔Β DeconvolutionͰը૾Λੜ੒͢Δ • Discriminator͸Generator͕ੜ੒ͨ͠ը૾Λσʔλ ηοτ಺ͷը૾ͱݟ෼͚Δ

    • ӈԼਤͷΑ͏ʹɼϊΠζϕΫτϧಉ࢜ͷԋࢉ͕Մೳ • ֶश҆ఆԽͷͨΊͷ޻෉Λ͍͔ͭ͘ఏҊ 37 Alec Radford, Luke Metz, Soumith Chintala, "Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks", ICLR (2016) 130
  81. DCGAN37 • GAN͸ֶश͕ඇৗʹෆ҆ఆɽDCGANͰ͸ܦݧతʹൃݟ͞ Ε͍ͨΖ͍Ζͳֶश্ͷ޻෉͕঺հ͞Εͨ • DͰͷμ΢ϯαϯϓϦϯάʹ͸ϓʔϦϯάΛ࢖Θͣɼ stride=2ͷ৞ΈࠐΈΛ༻͍Δ • D͔Βશ݁߹૚Λͳ͘͠ɼGlobal Average

    PoolingΛ༻͍ Δ • DͰ͸׆ੑԽؔ਺ʹLeaky ReLUΛ࢖͍ɼޯ഑ΛͰ͖Δͩ ͚఻͑Δ • GͱDͷ྆ํͰBatch NormalizationΛ࢖͏ʢGͷग़ྗ૚ɼ Dͷೖྗ૚Λআ͘ʣ 37 Alec Radford, Luke Metz, Soumith Chintala, "Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks", ICLR (2016) 131
  82. Improved Techniques for Training GANs38 • GANͷֶशΛ҆ఆԽ͢ΔͨΊͷ͍͔ͭ͘ͷܦݧతͳς ΫχοΫΛ঺հ • Feature

    matching: DʹfakeͱrealΛೖΕͨͱ͖ͷதؒ ૚ͷ஋ͷೋ৐ޡ͕ࠩখ͘͞ͳΔΑ͏ʹ͢Δ • Minibatch discrimination: G͸D͕צҧ͍͢Δσʔλ Λ1ͭੜ੒Ͱ͖Δ͚ͩͰ΋ྑ͍ˠmode cllapseʢಉ͡ Α͏ͳσʔλ͹͔Γੜ੒͢ΔΑ͏ʹͳΔɽʣ͜ΕΛ ๷͙ͨΊʹϛχόον಺ͷଟ༷ੑΛ૿͢޻෉ͱͯ͠ ϛχόον಺ͷσʔλಉ࢜ͷࠩҟΛDͷதؒ૚ͷग़ྗ ʹconcat͢Δ • ͦͷଞʹ΋਺ݸ 38 T. Salimans, I. Goodfellow, et. al., "Improved Techniques for Training GANs", NIPS (2016) 132
  83. Improved Techniques for Training GANs38 • Generator͕ੜ੒ͨ͠σʔλΛσʔληοτʹՃ ͑Δ͜ͱͰগͳ͍ϦΞϧσʔλͱϥϕϧͷ૊ͩ ͚Ͱ෼ྨ໰୊Λֶश͢ΔSemi-supervised learning΋ఏҊ

    • ImageNetΛ༻͍ͨը૾ੜ੒ͰDCGANΑΓ΋վળ • Inception scoreͱ͍͏GANͷੜ੒ը૾ΛධՁ͢ ΔࢦඪΛఏҊɿը૾෼ྨͷpre-trained modelΛ ࢖ͬͯɼΫϥεॴଐ֬཰ϕΫτϧͷΤϯτϩ ϐʔ͕௿͍ʹߴ͍֬৴౓ͰԿ͔ʹ෼ྨɼΛੜ੒ ը૾ͷྑ͞ͱͨ͠ 38 T. Salimans, I. Goodfellow, et. al., "Improved Techniques for Training GANs", NIPS (2016) 133
  84. Wasserstein GAN (WGAN)39 (1) • GAN͸Generatorͷ෼෍ͱσʔλͷ෼෍Λ͚ۙͮΔΑ͏ʹֶश͢Δख๏͕ͩɼ ෼෍ؒͷڑ཭ͷଌΓํͱͯ͠Wassersteinڑ཭ʢEarth Mover's DistanceʣΛ ༻͍Δͷ͕WGAN

    • Generatorͷग़ྗ෼෍Λ ɼۙࣅ͍ͨ͠σʔλͷ෼෍Λ ͱ͢Δͱɼ2ͭͷ෼ ෍ΛϦϓγοπͳؔ਺ʹ௨ͨ͠ͱ͖ͷظ଴஋ͷࠩͷ্ݶɿ ͸Wassersteinڑ཭ͱݺ͹ΕΔ 39 Martin Arjovsky, Soumith Chintala, Léon Bottou, "Wasserstein GAN", arXiv:1701.07875 (2017) 134
  85. Wasserstein GAN (WGAN)39 (2) • WGANͰ͸ɼDiscriminator͸Wassersteinڑ཭ΛΑۙ͘ࣅ͢Δ͜ͱ͕໨తͱ ͳΔ • ͦͷͨΊɼDiscriminator(D)ͷύϥϝʔλ ͕ઈର஋

    Λ௒͑ͳ͍Α͏ ʹ͢Δ͜ͱͰDΛϦϓγοπͱ͠ɼҎԼͷΑ͏ʹWassersteinڑ཭Λۙࣅ͢Δ • ্ݶΛٻΊ͍ͨͷͰɼ͜Ε͕େ͖͘ͳΔΑ͏ʹ Λߋ৽͢Δ 39 Martin Arjovsky, Soumith Chintala, Léon Bottou, "Wasserstein GAN", arXiv:1701.07875 (2017) 135
  86. Wasserstein GAN (WGAN)39 (3) • WGANͰ͸ɼDiscriminator͸࠷ऴతʹWassersteinڑ཭ΛΑۙ͘ࣅ͢ΔΑ͏ʹͳΔ͕ɼ ֶशத͸ਖ਼֬ͳWassersteinڑ཭Λग़ྗ͠ͳ͍ • ͦͷͨΊɼGenerator͸ۙࣅ్தͷWassersteinڑ཭Λ࠷খԽ͢ΔΑ͏ʹֶश͞ΕΔ •

    Generator͸ɼWassersteinڑ཭ͷۙࣅࣜΛ Ͱඍ෼ͨ͠ҎԼͷޯ഑Λ࢖ͬͯߋ৽Λߦ͏ ͨͩ͠ɼ ͸ϛχόοναΠζɽ 39 Martin Arjovsky, Soumith Chintala, Léon Bottou, "Wasserstein GAN", arXiv:1701.07875 (2017) 136
  87. Wasserstein GAN (WGAN)39 (4) ֶशΞϧΰϦζϜ 1. Discriminatorͷύϥϝʔλ Λ Λେ͖͘͢ΔΑ ͏ߋ৽

    2. ͷઈର஋͕ ʢจݙதͰ͸0.01ʣΛ௒͑ͳ͍Α͏ʹΫϦοϓ 3. Generatorͷύϥϝʔλ Λ ͕େ͖͘ͳΔΑ͏ʹߋ৽ 4. ܁Γฦ͢ 39 Martin Arjovsky, Soumith Chintala, Léon Bottou, "Wasserstein GAN", arXiv:1701.07875 (2017) 137
  88. WGAN with Gradient Penalty (WGAN-GP) 40 • WGANͷDiscriminatorʹ͓͚ΔϦϓγοπ੍໿Λύϥϝʔλͷઈ ର஋ΛΫϦοϓ͢ΔͷͰ͸ͳ͘Gradient PenaltyΛ༻͍ͯߦ͏ɽ

    ҎԼΛ࠷খԽ͢Δ • Chainer͸v3ΑΓೋ֊ඍ෼ʹରԠͨͨ͠Ίɼ࣮૷Մೳʹͳ͍ͬͯ Δ 40 Gulrajani, Ishaan, et al. "Improved training of wasserstein gans." arXiv preprint arXiv:1704.00028 (2017). 138
  89. Temporal Generative Adversarial Nets (TGAN)41 • WGANΛϕʔεʹͨ͠ಈըੜ੒ͷख๏ • ಈըΛ࣌ؒํ޲ͱۭؒํ޲ʹ෼ղͯ͠ ߟ͑ɼ֤ϑϨʔϜͷը૾Λੜ੒͢Δ

    γʔυΛੜ੒͢ΔVideo Generatorͱɼ ͦΕΒͷγʔυ͔Β֤ϑϨʔϜͷը૾ Λੜ੒͢ΔImage Generatorͷೋஈߏ͑ ʹͯ͠ಈըΛੜ੒ 41 Masaki Saito, Eiichi Matsumoto, Shunta Saito, "Temporal Generative Adversarial Nets with Singular Value Clipping", ICCV (2017) 139
  90. Temporal Generative Adversarial Nets (TGAN)41 • ·ͨɼෳࡶͳωοτϫʔΫͷֶशʹ͓͚Δ GANͷෆ҆ఆੑΛղফ͢ΔͨΊʹɼWGANʹ ͓͚ΔύϥϝʔλΫϦοϐϯάΛఆ਺Λ༻͍ͯ ߦ͏ํ๏ͷ୅ΘΓʹɼॏΈߦྻͷಛҟ஋͕1Ҏ

    ্ʹͳΒͳ͍Α͏ʹΫϦοϐϯά͢Δsingular value clippingΛఏҊ͠ɼֶशΛ҆ఆԽͤͨ͞ • Inception score౳Ͱ΋ର߅ख๏ΑΓ͖Ε͍ͳಈ ըͷੜ੒ʹ੒ޭͨ͠ 41 Masaki Saito, Eiichi Matsumoto, Shunta Saito, "Temporal Generative Adversarial Nets with Singular Value Clipping", ICCV (2017) 140
  91. SimGAN42 • ໨ͷपΓͷը૾͔Βࢹઢํ޲Λਪఆ͢ΔֶशΛ͢Δࡍ ʹɼCGͰ࡞ΒΕͨσʔλΛRefinerͱݺ͹ΕΔωοτ ϫʔΫͰϦΞϧʹՃ޻͠ɼ܇࿅σʔληοτʹՃ͑Δ͜ ͱͰਫ਼౓޲্͕Ͱ͖ͨͱ͍͏࿩ • Refiner͸DiscriminatorΛٗ͘Α͏ʹը૾ΛϦΞϧΒ͘͠ Ճ޻ͭͭ͠ʢadversarial lossʣɼՃ޻લͱ͋ͱ͕େ͖͘

    ҟͳΒͳ͍Α͏self-regularization΋ߦ͍ͳ͕Βֶश͢Δ • Apple, inc.͔Βग़͖ͯͨ࿦จͰɼCVPR 2017Ͱϕετ ϖʔύʔΛड৆ͨ͠ ӈਤ͸"Improving the Realism of Synthetic Images"ΑΓ 42 A. Shrivastava, et. al. "Learning from Simulated and Unsupervised Images through Adversarial Training", CVPR (2017) 141
  92. Adversarial examples70 • ֶशࡁΈχϡʔϥϧωοτϫʔΫΛ"ٗ͘"Α͏ ʹ࡞ΒΕͨਓ޻తͳσʔλ • ਖ਼͘͠෼ྨ͞Εͨσʔλ ʹɼඍখͳϊΠζ Λ Ճ͑ͨ

    ͕ɼࣝ͝ผ͞ΕΔΑ͏ʹϊΠ ζ ΛٻΊΔ NIPS 2017: Non-targeted Adversarial Attack Google Brainओ࠵ͷίϯϖςΟγϣϯɽ"Non- targeted"ͱ͸ɼޡࣝผઌͷΫϥε͸ਖ਼ղͰͳ͍Ϋ ϥεͳΒͳΜͰ΋Α͍ͱ͢Δ໰୊ઃఆ 70 Ian J. Goodfellow, Jonathon Shlens, Christian Szegedy, "Explaining and Harnessing Adversarial Examples." ICLR (2015) 143
  93. NLPʹ͓͚Δਂ૚ֶश΁ͷظ଴ • ैདྷͷࣗવݴޠॲཧ͸ଟ਺ͷ෦෼໰୊ʹ෼ׂ͞Ε ͯղ͔Ε͍ͯͨ • ඼ࢺλά෇͚ʢpart-of-speech taggingʣ • ୯ޠ෼ׂʢword segmentationʣ

    • ޠٛᐆດੑղফʢword sense disambiguationʣ • ݻ༗දݱநग़ʢnamed entity extractionʣ • ߏจղੳʢsyntactic parsingʣ • ड़ޠ߲ߏ଄ೝࣝʢpredicate-argument recognitionʣ 145
  94. ਤ͸ʰਂ૚ֶशʹΑΔࣗવݴޠॲཧʱਤΑΓ ࠶ؼχϡʔϥϧωοτʢRNNʣ • RNN (recurrent neural networks)͸ɼՄ ม௕ͷೖྗྻΛѻ͏͜ͱʹ༏Εͨߏ଄ • ܥྻ͕༩͑ΒΕͨࡍɼӅΕঢ়ଶͷߋ৽

    Λɼલ࣌ࠁͷӅΕঢ়ଶͱݱ࣌ࠁͷೖྗ Λ༻͍ͯߦ͏͜ͱͰɼ೚ҙͷ௕͞ͷೖ ྗཤྺΛߟྀͰ͖Δʢࣗવݴޠจ͸௕ ͕͞จ͝ͱʹҟͳΔͷͰɼRNNͰѻ͏ ͷ͕ద͍ͯ͠Δʣ 148
  95. ਤ͸ http://qiita.com/t_Signull/items/21b82be280b46f467d1b ΑΓ ௕୹ظهԱʢLSTMʣ • ΑΓ௕͍ґଘؔ܎ΛֶशՄೳʹ͢ΔͨΊ։ൃ͞Εͨ ϝϞϦΛอ࣋͢ΔϞδϡʔϧ • ೖྗ ͱ1εςοϓલͷӅΕঢ়ଶ

    ͸3ͭͷήʔτ ʹ΋౉͞ΕΔ • ͦΕͧΕͷήʔτ͸ॏΈύϥϝʔλΛ͓࣋ͬͯΓɼ ׆ੑԽؔ਺Λ࢖ͬͯ৘ใͷྲྀΕΛ੍ޚ͢Δ: • ೖྗήʔτɿ1εςοϓલͷঢ়ଶΛड͚औΔ͔Ͳ ͏͔Λௐ੔͢Δ • ๨٫ήʔτɿ௕ظهԱΛߦ͍ͬͯΔηϧʢࠇؙʣ ΛθϩʹॳظԽ͢Δ͔Ͳ͏͔ௐ੔͢Δ • ग़ྗήʔτɿϞδϡʔϧͷग़ྗΛ੍ޚ 149
  96. ਤ͸ʰਂ૚ֶशʹΑΔࣗવݴޠॲཧʱਤ2.11ΑΓ Gated recurrent unit (GRU) • LSTMͷΑ͏ʹηϧΛ࢖Θͣʹ௕ظͷ৘ใΛӅ ΕϕΫτϧ ʹू໿͢Δ •

    ࠶ઃఆʢresetʣήʔτ Λ࢖ͬͯ1࣌ࠁલͷӅ Εঢ়ଶϕΫτϧΛݮਰ͔ͤͯ͞Βɼߋ৽෼Λܭ ࢉ͢Δ • ߋ৽ʢupdate)ήʔτ Λ࢖ͬͯ1࣌ࠁલͷӅΕঢ় ଶϕΫτϧ͔Βͷߋ৽཰Λௐ੔͢Δ • GRU͸LSTMΑΓήʔτͷ਺΋গͳ͘ηϧ΋ඞཁ ͳ͍ͨΊɼলϝϞϦͰܭࢉίετ΋ൺֱత௿͍ 150
  97. ݴޠϞσϧධՁ༻σʔληοτ 1. Penn Treebankσʔληοτʢptbʣ ૯୯ޠ਺90ສɼҟͳΓޠ਺1ສఔ౓ɽ Chainerͷެࣜexampleʹ΋ptb example͕ ͋Δɿhttps://github.com/chainer/chainer/ tree/master/examples/ptb 2.

    One Biliion Wordσʔληοτ ૯୯ޠ਺8ԯޠɼҟͳΓޠ਺80ສޠɽ 3. Hutterσʔληοτ จࣈ୯ҐͷධՁʹ༻͍Δɽ90MB/5MB/5MB Ͱtrain/val/testηοτΛ෼͚Δͷ͕Ұൠత 153
  98. ܥྻม׵Ϟσϧͷ໛ࣜਤ ਤ͸ʰਂ૚ֶशʹΑΔࣗવݴޠॲཧʱਤΑΓ ܥྻม׵Ϟσϧ ʢsequence-to-sequenceʣ • ූ߸ԽثຒΊࠐΈ૚ɿೖྗจதͷ֤୯ޠΛϕΫτϧද ݱʹม׵͢Δ • ූ߸Խث࠶ؼ૚ɿຒΊࠐΈϕΫτϧΛड͚औΓɼӅΕ ঢ়ଶϕΫτϧΛग़ྗ͢ΔRNN

    • ෮߸ԽثຒΊࠐΈ૚ɿූ߸Խثग़ྗ૚Ͱબ୒͞Εͨग़ ྗΛड͚ͱΓɼຒΊࠐΈϕΫτϧʹม׵͢Δ • ෮߸Խث࠶ؼ૚ɿຒΊࠐΈϕΫτϧΛड͚औΓɼӅΕ ঢ়ଶϕΫτϧΛग़ྗ͢Δ • ෮߸Խثग़ྗ૚ɿӅΕঢ়ଶϕΫτϧΛड͚औΓɼ֤୯ ޠ͕ੜ੒͞ΕΔ֬཰ϕΫτϧΛग़ྗ͢Δ 154
  99. ܥྻੜ੒ํ๏ɿᩦཉ๏ ֶशࡁΈͷܥྻม׵ϞσϧΛ༻͍ɼ͋Δೖྗจ ʹର͢Δ࠷ྑͷग़ྗจ Λੜ੒͢Δॲཧ ͸ Ͱද͞ΕΔɽͨͩ͠ɼ ͸ೖྗܥྻ ʹରͯ͋͠Γ͏Δશͯͷग़ྗ ͷू߹Ͱ͋Δɽ ܥྻม׵ϞσϧͰ͸ग़ྗͷ௕͞ʹ੍ݶ͸ͳ͍ͷͰ࣮࣭

    ͸ແݶू߹ͱͳͬͯ͠·͏ɽ ͦ͜Ͱɼ෮߸Խث͕֤୯ޠΛग़ྗ͢Δࡍʹ࠷΋֬཰͕େ͖͍୯ޠΛग़ྗ͍ͯ͘͠Α͏ʹ͠ ͯΈΔɽ͜Ε͸෦෼໰୊Λॱʹղ͍͍ͯΔͷͰᩦཉ๏ʢgreedy algorithmʣͱݺ͹ΕΔɽ 156
  100. Attention is all you need65 RNN/CNNΛ࢖ΘͣAttentionͷΈΛ࢖༻ͨ͠Transformer ͱ͍͏ϞσϧͰ຋༁λεΫͷSOTAΛୡ੒ ӈͷಈը͸Transformer: A Novel

    Neural Network Architecture for Language UnderstandingΑΓ 65 Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin, "Attention Is All You Need", (2017) 159
  101. ڧԽֶशͷجຊతͳ࿮૊Έ ʢʰ͜Ε͔ΒͷڧԽֶशʱਤΑΓʣ ڧԽֶशͱ͸ʁ ΤʔδΣϯτͱ؀ڥͷ૬ޓ࡞༻͔ΒΑΓྑ͍ߦಈܾఆ ࢦ਑ʢํࡦʀpolicyʣΛ֫ಘ͢Δ͜ͱΛ໨ࢦֶ͢शํ๏ 1. ΤʔδΣϯτ͸ํࡦؔ਺ ʢ ͸ঢ়ଶʣʹͨ͠ ͕ͬͯߦಈ

    Λબͼɼ؀ڥʹಇ͖͔͚Δ 2. ؀ڥ͸ΤʔδΣϯτͷߦಈΛड͚ͯɼঢ়ଶભҠ֬཰ ʹैͬͯঢ়ଶΛมԽͤ͞Δʢ ʣ 3. ؀ڥ͔ΒΤʔδΣϯτʹ͸ݱࡏͷঢ়ଶ ɼߦಈ ɼ ࣍ͷঢ়ଶ ʹج͍ܾͮͯఆ͞ΕΔใु ͕༩͑ΒΕΔ 4. ͜ͷใुʹج͍ͮͯΤʔδΣϯτ͸ΑΓྑ͍ํࡦΛ ֫ಘ͢ΔͨΊͷॲཧΛߦ͏ 161
  102. ঢ়ଶભҠάϥϑʹΑΔ؀ڥͷྫ ʢਤ͸ʰ͜Ε͔ΒͷڧԽֶशʱਤΑΓʣ ߦಈՁ஋ؔ਺ʢaction value functionʣ ঢ়ଶ͚ͩͰͳ͘ߦಈͰ΋৚݅෇͚ͯΈΔɽ ঢ়ଶ Ͱߦಈ ΛऔΔͱ͖ͷՁ஋Λɼ Ͱද͠ɼ͜ΕΛߦಈՁ஋؍਺ͱݺͿɽ͢

    Δͱಉ༷ʹɼ࠷దͳํࡦ ͸ ͱ΋ॻ͚Δɽ͜ΕΒͷՁ஋ؔ਺͸ɼ֬཰తͳߦಈܾఆ΍֬཰తͳঢ়ଶ ભҠͷ͋ΓಘΔશͯͷيಓʹ౉ͬͯɼͦͷੜى֬཰ͰॏΈ͚ͮͯ࿨Λ औ͍ͬͯΔͱ͍͏͜ͱͰ͋Δɽ 164
  103. Deep Q-Network (DQN)43 • Qؔ਺ͷۙࣅʹਂ͍χϡʔϥϧωοτϫʔΫΛ༻͍ͨ ख๏ • Qؔ਺ΛNNͰۙࣅ͢Δख๏͸ݹ͔͘Βଘࡏ͕ͨ͠ɼ DQNͰ͸ֶशΛ੒ޭͤ͞ΔͨΊͷ༷ʑͳ޻෉Λ͏·͘ ૊Έ߹Θͤͨ

    • Experience replay • Target Q-Network • ใुͷclipping ӈಈը͸DQN SPACE INVADERS (uploaded by DeepMind) 43 Mnih, Volodymyr, et al. "Playing Atari with Deep Reinforcement Learning", NIPS (2013) 169
  104. DQNͷ޻෉ Experience replay - ΤʔδΣϯτ͕ܦݧͨ͠ભҠ Λreplay memory ʹ஝͓͑ͯ͘ - ϩεͷܭࢉͱQωοτϫʔΫͷߋ৽͸ɼ

    ͔ΒϥϯμϜαϯϓϦϯάͨ͠ϛχόονΛ༻͍ͯߦ͏ Target Q-Network - Ձ஋؍਺ͷখ͞ͳߋ৽Ͱ΋େ͖͘ํࡦ͕มߋ͞Εৼಈ͕ى͖Δ͜ͱ͕͋ΔͨΊɼֶशͷ໨ඪ஋ ͷܭࢉʹ༻͍ΔQωοτϫʔΫΛݻఆ͢Δ - ҰఆपظͰֶशதͷQωοτϫʔΫͷύϥϝʔλ$\theta$Ͱݻఆͨ͠ํͷQωοτϫʔΫͷύϥ ϝʔτΛஔ͖׵͑Δ ใुͷclipping - ใुͷεέʔϧ͕ήʔϜʹΑͬͯҟͳΔͨΊɼใुͷ஋Λ ͷൣғʹclip͢Δ 170
  105. ํࡦޯ഑ͷۙࣅ • ͸ɼํࡦޯ഑ఆཧ45ΑΓɼҎԼͷΑ͏ʹॻ͖׵͑Δ͜ͱ͕Ͱ͖Δɽ • ͜Ε͸ղੳతʹٻΊΔ͜ͱ͸Ͱ͖ͳ͍ͷͰ ʹج͍ͯߦಈͯ͠ಘΒΕͨαϯϓϧΛ࢖ͬͯҎԼͷΑ͏ ʹۙࣅ͢Δɽ εςοϓͷߦಈΛ Τϐιʔυ܁Γฦͨ͠ͱͯ͠ɼ ͔͠͠ɼ

    ΋ͦ΋ͦ΋ະ஌Ͱ͋ΔɽͲ͏͢Δ͔ʁ 45 Pierre Andry, et. al., "Learning invariant sensorimotor behaviors: A developmental approach to imitation mechanisms." Adaptive behavior (2004) 173
  106. Asynchronous Advantage Actor-Critic (A3C)44 • ෳ਺ͷΤʔδΣϯτ͕ฒྻʹ࣮ߦ͞Εɼඇಈతతʹύ ϥϝʔλߋ৽Λߦ͏ • ํࡦޯ഑ͷਪఆʹ࢖͏ϕʔεϥΠϯͱͯ͠ઌఔͷΞυ όϯςʔδΛ༻͍ΔActor-Critic

    • ඇಉظͳͷͰExperience replay͕͍Βͣɼ֤ΤʔδΣ ϯτ͕ݱࡏͷܦݧ͔Βֶश͢ΔͨΊRNN͕࢖͍΍͍͢ • ํࡦΛֶश͢ΔͷͰ཭ࢄΞΫγϣϯ΋࿈ଓΞΫγϣϯ ΋ѻ͑Δ 44 V. Mnih, et. al., "Asynchronous Methods for Deep Reinforcement Learning", ICML (2016) 175
  107. DDPG46 • Deep Deterministic Policy Gradient (DDPG)͸ɼActor-CriticͷΞϧΰϦζϜ • Deep Q-Networkͷ੒ޭΛࢀߟʹͯ͠ɼํ

    ࡦΛEnd-to-EndͰֶशͰ͖ΔΑ͏ʹͨ͠ • ͭ·Γɼੜͷೖྗը૾ϐΫηϧ͔Β௚઀ ํࡦΛֶश͢Δ ಈը͸Deep Reinforcement Learning (DDPG) demonstrationΑΓ 46 Lillicrap, Timothy P., et al. "Continuous control with deep reinforcement learning." arXiv preprint arXiv:1509.02971 (2015) 176
  108. ChainerRLͷ࢖͍ํ:؀ڥ • ChainerRLͷ؀ڥͷఆٛͷ࢓ํ͸OpenAI GymͷΠϯλʔϑΣʔεʹै͍ͬͯΔɽGymͷ؀ڥ Ͱಈ͔͕͢Ͱ͖Δ͚ͩͰͳ͘ɼΠϯλʔϑΣʔεΛἧ͑Ε͹ΦϦδφϧͳ؀ڥͰಈ͔͢͜ͱ ΋Մೳ • ؀ڥʹ͸جຊతʹ͸resetͱstep͕࣮૷͞Ε͍ͯΕ͹Α͍ env =

    YourEnv() # reset ͸؀ڥΛϦηοτͯ͠ݱࡏͷ؍ଌΛฦ͢ obs = env.reset() action = 0 # step ͸؀ڥʹΞΫγϣϯΛૹΓɼ # 4ͭͷ஋ʢ࣍ͷ؍ଌɼใुɼΤϐιʔυऴ୺͔Ͳ͏͔ɼ௥Ճ৘ใʣΛฦ͢ obs, r, done, info = env.step(action) 178
  109. ChainerRLͷ࢖͍ํ:Ϟσϧ (1) • ํࡦɼঢ়ଶՁ஋؍਺ɼߦಈՁ஋؍਺ͳͲΛχϡʔϥϧωοτͰදݱ͢Δ͜ͱ͕Ͱ͖Δ • ௨ৗͷChainerͰϞσϧΛఆٛ͢Δͱ͖ͱಉ༷ʹͯ͠Ͱ͖Δ Qؔ਺ɿ class CustomDiscreteQFunction(chainer.Chain): def

    __init__(self): super().__init__(l1=L.Linear(100, 50) l2=L.Linear(50, 4)) def __call__(self, x, test=False): h = F.relu(self.l1(x)) h = self.l2(h) return chainerrl.action_value.DiscreteActionValue(h) 179
  110. ChainerRLͷ࢖͍ํ:Ϟσϧ (2) ํࡦ class CustomGaussianPolicy(chainer.Chain): def __init__(self): super().__init__(l1=L.Linear(100, 50) mean=L.Linear(50,

    4), var=L.Linear(50, 4)) def __call__(self, x, test=False): h = F.relu(self.l1(x)) mean = self.mean(h) var = self.var(h) return chainerrl.distribution.GaussianDistribution(mean, var) 180
  111. ChainerRLͷ࢖͍ํ:ΤʔδΣϯτ χϡʔϥϧωοτͱͯ͠ఆٛͨ͠ํࡦ΍Qؔ਺ɼͦͷ࠷దԽʹ༻͍Δ ChainerͷOptimizerɼ͋ͱ͸ΞϧΰϦζϜ͝ͱʹඞཁͳҾ਺Λ౉ͤ͹ɼ ΤʔδΣϯτΛ࡞੒͢Δ͜ͱ͕Ͱ͖Δ q_func = CustomDiscreteQFunction() optimizer = chainer.Adam()

    optimizer.setup(q_func) agent = chainerrl.agents.DQN(q_func, optimizer, ...) # ࢒ΓͷҾ਺͸লུ ΤʔδΣϯτ͸ɼ؀ڥͱͷΠϯλϥΫγϣϯΛ௨ͯ͡σʔλΛूΊͳ͕ ΒϞσϧͷֶशΛߦ͏ 181
  112. ChainerRLͷ࢖͍ํ:ֶश (1) ϧʔϓΛॻ͘৔߹ obs = env.reset() r = 0 done

    = False for _ in range(10000): while not done: action = agent.act_and_train(obs, r) obs, r, done, info = env.step(action) agent.stop_episode_and_train(obs, r, done) obs = env.reset() r, done = 0, False agent.save('final_agent') 183