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

イラストからのコメント生成チュートリアル

 イラストからのコメント生成チュートリアル

nico-illustデータセット( https://dmv.nico/ja/nico-opendata/ )を用いて、イラストを入力すると適切なコメントを生成するモデルを学習する。

niconico超コメント生成ハッカソン
( https://chokaigi2016-dmv.connpass.com/event/28524/ )のチュートリアル資料です。

Keisuke OGAKI

March 21, 2016
Tweet

More Decks by Keisuke OGAKI

Other Decks in Research

Transcript

  1. イラストからのコメント生成チュートリアル
    コメント生成ハッカソン
    גࣜձࣾυϫϯΰ
    େ֞ܚհ

    View Slide

  2. Ipython ϋϯζΦϯ
    https://github.com/
    nico-opendata/
    illust_comment_search
    2

    View Slide

  3. લฤը૾ಛ௃ྔͷ࿩

    View Slide

  4. Nico-illustλάೝࣝ
    4

    View Slide

  5. Nico-illustλάೝࣝ
    •  ࢖ͬͯΔϞσϧ͸ɺVGGͷ
    Ұ൪খ͍͞Ϟσϧ
    •  λά͸ෳ਺͚ͭΒΕΔ΋ͷ
    Ͱ͋ΓɺϚϧνϥϕϧ໰୊
    •  ग़ݱස౓্Ґͷ͏ͪɺΩϟ
    ϥΫλ໊ɾ࡞඼໊Λද͢΋
    ͷΛ400λά༻ҙ
    •  (ద੾ͳύϥϝλΛબ΂
    ͹)GPUΛར༻ͯ͠1िؒ͘
    Β͍Ͱऩଋ͢ΔɻτϨʔχ
    ϯάσʔλͰ༧ଌਫ਼౓5ׂ
    ͘Β͍
    5
    ΞϦγΞɾιϦου χίχཱମͪΌΜ
    イラスト
    CNN
    タグ
    マルチラベル
    Sigmoid cross entropy

    View Slide

  6. Nico-illustಛ௃ྔநग़
    •  ΩϟϥΫλ໊ͷࣝผث͸
    Կ͕خ͍͠ͷ͔ʁ
    –  Πϥετʹ͓͚Δ
    ”ΩϟϥΫλੑͷྨࣅ౓”
    ͕ܭࢉͰ͖ΔΑ͏ʹ
    •  λάͷग़ྗϨΠϠͰ͸ͳ
    ͘ɺͦͷલͷϨΠϠΛϕ
    Ϋτϧͱͯ͠ѻ͍ɺۙ๣
    ୳ࡧ͢Δɻ
    6
    今回用いる特徴量

    View Slide

  7. ྨࣅը૾ݕࡧ
    •  ྨࣅը૾ΛͲΜͲΜ
    ୧ͬͯɺٻΊΔը૾ʹ
    ͨͲΓண͚ΔUI
    •  ൅ܕɾ෰૷ͳͲͷΩϟ
    ϥΫλੑ͕ྨࣅ͍ͯ͠
    Δը૾͕ީิʹग़ͯ͘
    Δ
    –  ͜͜Ͱ͸ΩϟϥΫλͷྫ
    ͸ग़͞ͳ͍ͷͰɺͥͻ
    webσϞͰࢼͯ͠Έͯ͘
    ͍ͩ͞
    –  https://nico-opendata.jp/
    ja/demo/similar/
    7

    View Slide

  8. ϞʔϑΟϯά
    8
    •  ಛ௃ΛϕΫτϧͱ͠
    ͯѻ͍ͬͯΔͷͰɺ2
    ͭɺ3ͭͷϕΫτϧͷ
    ฏۉΛऔΔ͜ͱ΋Ͱ
    ͖Δɻ
    •  ˠനࠇೣࣖը૾͔Β
    Χϥʔೣࣖը૾Λܦ
    ͯࠇ൅ϩϯάը૾ʹ
    ભҠ͢Δྫ

    View Slide

  9. ίϝϯτಛ௃

    View Slide

  10. ྨࣅίϝϯτݕࡧ
    10

    View Slide

  11. ίϝϯτಛ௃ͷநग़
    •  ৄ͍͠࿩͸લճͷChainer meetup vol.1Ͱ঺հࡁ
    ΈͳͷͰɺ͜͜Ͱ͸ඞཁ࠷௿ݶ͚ͩ࿩͠·͢ɻ
    •  લճొஃऀͷ @ixixi ͷҎԼͷهࣄΛࢀরͯ͘͠
    ͍ͩ͞ɻ
    11

    View Slide

  12. ίϝϯτಛ௃ͷநग़
    \n ͖ ΌΘ ͨ Μ ͖ Ό Θ ͨ Μ
    12
    LSTM
    LSTM
    Linear
    •  ίϝϯτղੳͷϙΠϯ
    τ͸ɺܗଶૉղੳ্͕
    ख͘ߦ͔ͳ͍ͱ͍͏͜
    ͱɻ
    –  ৽ޠ͕ଟͯࣙ͘ॻ͕ରԠ
    Ͱ͖ͳ͍
    –  ࣙॻΛڧԽͯ͠΋ɺݴ͍
    ׵͑΍่͕͠ଟ͍
    •  ࠓͷͱ͜Ζɺจࣈ୯Ґ
    LSTM͕΋ͬͱ΋্ख͘
    ͍͘ɻ

    View Slide

  13. ྨࣅίϝϯτݕࡧ
    •  ΧςΰϦೝࣝͷ໰
    ୊Λ༻͍ͯLSTMΛ
    τϨʔχϯά
    13
    \n ͔ Θ ͑ ͑
    LSTM
    LSTM
    Linear
    動物
    シングルラベル
    Softmax cross entropy

    View Slide

  14. ྨࣅίϝϯτݕࡧ
    •  ΧςΰϦೝࣝͷ໰
    ୊Λ༻͍ͯLSTMΛ
    τϨʔχϯά
    14
    \n ͔ Θ ͑ ͑
    LSTM
    LSTM
    Linear
    類似検索用特徴量

    View Slide

  15. コメント生成

    View Slide

  16. એ఻: niconico௒ίϝϯτੜ੒
    Πϥετը૾(+λά)͔ΒίϝϯτΛੜ੒͢Δϓϩ
    άϥϜΛڝ͏ίϯςετΛχίχί௒ձٞ2016Ͱ
    ։࠵!!
    ࢀՃํ๏͸2ͭɻੋඇࢀՃ͍ͯͩ͘͠͞
    •  3/21(໌ޙ೔)ʹߦΘΕΔϋοΧιϯʹࢀՃ͠ɺ
    γʔυݖΛউͪऔΔ
    •  4݄ʹ࣮ࢪ͢ΔެืʹԠืͯ͠ɺॻྨ৹ࠪΛ௨Δ

    View Slide

  17. ը૾ಛ௃ͱίϝϯτಛ௃ͷରԠͷֶश
    •  Πϥετɾίϝϯτͷ̎
    छྨͷղੳʹ͍ͭͯड़΂
    ͨͷͰɺ͜ͷ̎ͭΛ݁ͼ
    ͚ͭΔ࿩Λ͢Δɻ
    •  ໨ඪ͸ɺΠϥετʹద੾
    ͳίϝϯτΛ͚ͭΔ͜ͱ
    •  ·ͣ͸ɺੜ੒Ͱ͸ͳ͘ݕ
    ࡧʹ͍ͭͯड़΂Δ
    17
    イラスト
    コメント
    Πϥετ
    CNN
    ίϝϯτ
    LSTM
    イラスト特徴
    コメント特徴

    View Slide

  18. 18
    \n ͔ Θ ͑ ͑
    LSTM
    LSTM
    Linear
    ベクトル同士の比較
    Mean Squared Error
    画像と、そこについているコメントのペアデータ

    View Slide

  19. 19
    \n ͔ Θ ͑ ͑
    LSTM
    LSTM
    Linear
    ベクトル同士の比較
    Mean Squared Error
    画像と、そこについているコメントのペアデータ
    ロスの伝搬
    画像とコメントの特徴空間をマージする

    View Slide

  20. ը૾ಛ௃ͷ෼෍
    20

    View Slide

  21. ίϝϯτಛ௃ͷ෼෍
    21

    View Slide

  22. ྨࣅίϝϯτ܈
    •  ؋͜Είϝϯτ
    22

    View Slide

  23. ྨࣅίϝϯτ܈
    23
    幼女
    うーにゃー
    かわいい

    View Slide

  24. ը૾ -> ίϝϯτͷ࠷ۙ๣୳ࡧ
    ˞͔͜͜Βઌ͸ඇৗʹϋΠίϯςΫετͳ࿩Λ͠
    ·͢ɻχίਥͳχϡʔϥϧωοτϫʔΫͷؾ࣋ͪ
    ʹͳ͍ͬͯͩ͘͞ɻ
    24

    View Slide

  25. ౦ํͷνϧϊ͞Μʹ͍ͭͯ
    25
    •  数値は、画像ベクトルとコメントベクトルの距離
    •  画像ベクトルの近傍からコメントを幾つか拾う

    View Slide

  26. ౦ํͷϨϛϦΞ͞Μʹ͍ͭͯ
    26

    View Slide

  27. ؋͜Εͷۚ߶ܕ࢞ຓͷը૾ʹ͍ͭͯ
    27

    View Slide

  28. ৺ͷ؟Ͱݟଓ͚Δͷ΋ͭΒ͍ͷͰɺը૾༗ΓͰ࿩
    Λ͠·͢
    ˞΍ͬͺΓϋΠίϯςΫετͰ͢ɻ
    28

    View Slide

  29. ༮ஓԂੜͷঁͷࢠͷΠϥετʢਫ৭ͷ੍෰ʣ
    29

    View Slide

  30. ༮ஓԂੜͷঁͷࢠͷΠϥετʢਫ৭ͷ੍෰ʣ
    30

    View Slide

  31. ༮ஓԂੜͷঁͷࢠͷΠϥετʢਫ৭ͷ੍෰ʣ
    31
    έϩϩ܉૤ͱ͍͏࡞඼ʹɺԫ৭͍ɺϔϧϝο
    τΛඃͬͨɺΧΤϧͷ૤௕͕͍ΔͷͰ͢ɻɻɻ

    View Slide

  32. ೖֶࣜͷΠϥετʮ΢αΪʯ
    32

    View Slide

  33. ೖֶࣜͷΠϥετʮ΢αΪʯ
    33

    View Slide

  34. ೖֶࣜͷΠϥετʮ΢αΪʯ
    34
    ౦ํProjectʹɺ͏ͲΜ͛ͪΌΜͱ͍͏ɺ͏͞
    ΈΈͷঁͷࢠ͕͍ΔͷͰ͢

    View Slide

  35. ΤΞΨϯͰԐͱઓ͏ओ්ͷΠϥετ
    35

    View Slide

  36. ΤΞΨϯͰԐͱઓ͏ओ්ͷΠϥετ
    36

    View Slide

  37. ΤΞΨϯͰԐͱઓ͏ओ්ͷΠϥετ
    37
    連邦の主婦は化け物か

    View Slide

  38. ఆྔධՁ
    •  1000ݸͷΠϥετ-ίϝϯτϖΞΛ༻ҙ
    •  ը૾ಛ௃͔Βۙ๣ίϝϯτ୳ࡧΛߦ͍ɺରʹͳΔίϝϯτ͕ԿҐ͔
    Λௐ΂Δ
    •  ্Ґ5%ج४Ͱ23%͕ਖ਼ղ
    38

    View Slide

  39. TODO1: Contrastive Loss
    39
    \n ͔ Θ ͑ ͑
    LSTM
    LSTM
    Linear
    ベクトル同士の比較
    Mean Squared Error
    画像と、そこについているコメントのペアデータ
    ロスの伝搬
    画像とコメントの特徴空間をマージする

    View Slide

  40. TODO1: Contrastive Loss
    40
    \n ͔ Θ ͑ ͑
    LSTM
    LSTM
    Linear
    正例なら近づける、負例なら離す
    Contrastive Loss
    画像とコメントのペアデータ
    負例として他の画像に付いているコメントも
    ロスの伝搬
    画像とコメントの特徴空間をマージする
    ロスの伝搬

    View Slide

  41. TODO1: Contrastive Loss
    •  ϩεΛ্ख͘Լ͛ΒΕͳ͔ͬͨ
    •  ϚʔδϯΛͲΕ͘Β͍ʹऔΔ͔ɺਖ਼ྫͱෛྫΛ
    Ͳ͏͍͏ׂ߹Ͱֶशͤ͞Δ͔ɺ͕γϏΞͳΑ͏
    ʹײͨ͡ɻ
    •  ͦ΋ͦ΋SiameseωοτϫʔΫ(ೖྗ1ͱ2͕ωοτ
    ϫʔΫ͔Βग़ྗ͞ΕΔ΋ͷ)Ͱͷద༻͕ओ?
    41

    View Slide

  42. TODO2: Encoder-decoder
    •  ࠓճ࿩ͨ͠ͷ͸ɺը૾ͷ
    encoderͱίϝϯτͷ
    encoderΛಉ࣌ʹτϨʔχ
    ϯά͢Δ࿩ͱ͍͑Δ
    •  Ұൠʹɺը૾->ίϝϯτͷ
    (ͱ͍͏͔ࣗવݴޠॲཧͷ)
    ࠓͷτϨϯυ͸encoder-
    decoder
    •  ը૾ΛCNNͰΤϯίʔυ
    ͯ͠ɺͦΕΛLSTMͷ0จ
    ࣈ໨ͷೖྗͱͯ͠ɺ1จࣈ
    ໨ʙΛ༧ଌ͍ͯ͘͠Ϟσϧ
    42
    LS
    T
    M
    LS
    T
    M
    Linear
    \n ͖ Ό Θ ͨ Μ ͖ Ό Θ ͨ Μ
    Encoder-CNN
    Decoder-LSTM

    View Slide

  43. TODO2: Encoder-decoder
    ੜ੒ྫ
    λά༧ଌ: ϥϒϥΠϒʂ, ໼ᖒʹ͜
    >͡Ό͋Latͷ͠खͱฦ౴ͯ͠΋Β͓͏
    λά༧ଌ: Steins;Gate
    >ത࢜!!!!!!!!!!!!!!!!
    λά༧ଌ: ౦ํ, খ໺௩খொ, ෩ݟ༓߳
    >ਆʑ͍͠ͳ͊
    λά༧ଌ: ਐܸͷڊਓ
    >ද৘Ά͍ͳ͊
    •  ౰ͨΓোΓͷແ͍ίϝϯτ͔ɺΠϚΠν೔ຊޠͱͯ͠ඍົͳίϝϯτ͕ੜ੒͞Εͯ͠·͏
    •  ೔ຊޠΛจࣈ୯ҐͰѻ͍ͬͯΔͱ͍͏ͷ͕ɺdecoderͱ͸૬ੑ͕ѱ͍ͷ͔ͳɺͱ΋ߟ͑ΒΕΔɻࢀߟʹͯ͠Δ࿦จ
    ͸ӳޠ΍ϑϥϯεޠͳͲͰɺ୯ޠ୯ҐͰग़ྗ͢ΔϞσϧͳͷͰɻ

    43

    View Slide

  44. niconico௒ίϝϯτੜ੒
    Πϥετը૾(+λά)͔ΒίϝϯτΛੜ੒͢Δϓϩ
    άϥϜΛڝ͏ίϯςετΛχίχί௒ձٞ2016Ͱ
    ։࠵!!
    ࢀՃํ๏͸2ͭɻੋඇࢀՃ͍ͯͩ͘͠͞
    •  3/21(໌ޙ೔)ʹߦΘΕΔϋοΧιϯʹࢀՃ͠ɺ
    γʔυݖΛউͪऔΔ
    –  “௒ίϝϯτੜ੒ϋοΧιϯ”Ͱݕࡧ
    –  http://chokaigi2016-dmv.connpass.com/event/28524/
    •  4݄ʹ࣮ࢪ͢ΔެืʹԠืͯ͠ɺॻྨ৹ࠪΛ௨Δ

    View Slide

  45. ίϝϯτੜ੒ϋοΧιϯ

    View Slide

  46. Ipython ϋϯζΦϯ
    https://github.com/
    nico-opendata/
    illust_comment_search
    46

    View Slide

  47. ͦͷଞͷํ๏1: ྨࣅը૾ݕࡧ
    •  ྨࣅը૾ݕࡧͷipython΋༻ҙ͓͖ͯ͠·ͨ͠ɻ
    47

    View Slide

  48. ͦͷଞͷํ๏1: ྨࣅը૾ݕࡧ
    1.  ྨࣅը૾ݕࡧͰը૾͔
    Βྨࣅը૾ͷIDΛͻ͘
    2.  ίϝϯτσʔληοτ
    ͔Βɺྨࣅը૾IDͷί
    ϝϯτΛऔͬͯ͘Δ
    48
    •  ࣮ࡍɺίϝϯτΛ௚઀ݕࡧ͢Δͷͱɺ΍͍ͬͯΔ͜ͱ͸ͦΜ
    ͳʹมΘΒͳ͍͔΋͠Εͳ͍

    View Slide

  49. ͦͷଞͷํ๏2: タグݕࡧ
    1.  ίϯςετͰ͸λά
    ͕ิॿ৘ใͱͯ͠༩
    ͑ΒΕΔͷͰɺ͜Ε
    Ͱίϝϯτͷଟ͍ॱ
    ݕࡧΛ͢Δɻ
    2.  ίϝϯτσʔληο
    τ͔Βɺը૾IDʹ
    ରԠ͢ΔίϝϯτΛ
    ͱͬͯ͘Δ
    49

    View Slide

  50. ͦͷଞͷํ๏2: タグݕࡧ
    •  ͨͩ͠ɺλά͕े෼ʹ෇͍͍ͯΔը૾͕ଟ͍Θ
    ͚Ͱ͸ͳ͍
    •  λά͕͍͍ͭͯͯ΋ɺ”ঁͷࢠ””ΦϦδφϧ”ͷΑ
    ͏ͳɺҰൠతͳλά͕ඇৗʹଟ͍
    –  ͲͷλάͰݕࡧ͢Δ͔ͷ໰୊
    50

    View Slide

  51. ͦͷଞ: χίχί֎ͷࢿݯΛར༻
    •  ಛʹݴޠͷํ͸ɺχίχίͷ֎ʹ΋ͨ͘͞Μ
    σʔλ͕༗Δɻ
    –  ୹ՎʹಛԽֶͨ͠शΛ͢Δ
    –  খઆʹಛԽֶͨ͠शΛ͢Δ
    •  ը૾ͱݴޠͷϖΞσʔλ΋ɺ೔ຊޠͰͳ͚Ε͹
    ͍͔ͭ͋͘Δ
    –  MS COCOσʔληοτͳͲ
    51

    View Slide