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

俺のNETFLIX season2 AmazonPersonalize

h-fkn
July 02, 2020

俺のNETFLIX season2 AmazonPersonalize

【オンライン】ゆるふわマシンラーニング vol.4 - connpass
https://enebular.connpass.com/event/178062/

h-fkn

July 02, 2020
Tweet

More Decks by h-fkn

Other Decks in Technology

Transcript

  1. 俺の
    ゆるふわマシーンラーニングとは
    昨今、Google AutoMLやAzureML、AWS Sagemakerな
    ど、クラウド上のMLサービスが一般的になりつつありま
    す。 そういったクラウドMLサービスをゆるふわに学べる・
    共有できる勉強会です。

    View Slide

  2. 俺の
    質問はTwitterで受付中!
    ● 質問やコメントはTwitterで!
    YouTubeではないので注意
    ● ハッシュタグ は #yurufuwaml

    View Slide

  3. 俺の
    本日の流れ
    19:30〜19:35 オープニング
    19:35〜20:50 LT(1名15分程度)* 5名
    20:50〜21:00 パネルディスカッション
    21:00〜21:10 アンケート&今後のご案内

    View Slide

  4. 俺の
    発表者一覧
    1. 俺のNETFLIX〜今度こそクラウドでレコメンド実装する〜
    (hidefさん)
    2. Web Speech APIとGoogle Cloud Speech to Textを比較した話(仮)
    (masakazu_kawazuさん)
    3. ラズパイは俺の嫁!GoogleAutoMLで作る音声アシスタント
    (ringoさん)
    4. 映像を掛け合わせて新しい映像を生み出したい!
    (notitle420さん)
    5. enebular x Teachable Machine x LINE Bot (仮)
    (がおまるさん)

    View Slide

  5. 俺の
    LT登壇者の皆さまへ
    ● 【REC】に近い場所に移動してLT!
    ● スライドはステージ側に大きく投影!
    ● 上記の準備含めて15分だとちょうどいいかも
    ● 音声ONで他の登壇者のLTにリアクションしてくれ
    ると嬉しみが深い

    View Slide

  6. 俺の
    2020-07-02 Thu ゆるふわマシーンラーニング#4
    @hidefkn

    View Slide

  7. 俺の
    自己紹介
    • Twitter @hidefkn
    • Facebook hidefkn
    ▼おすすめのネトフリ視聴コンテンツ
    『かぐや様は告らせたい』
    いまいちって言っちゃったけど、きちんと見始めたら普通にハマった
    『梨泰院クラス』もいいけど、『人間レッスン』
    韓流ナメてた。ただし長いので、仕事をサボる覚悟が必要()
    7

    View Slide

  8. 俺の
    2020 ?シーズン
    シーズン1-1を再生
    他のエピソード
    類似する作品
    音声および字幕
    マイリストに追加
    俺の
    マッチ度: 96%
    ゆるふわマシーンラーニングの登壇することになった!しかし、
    登壇テーマが決まらない。この機会に、ネットフリックスに使われ
    ている機械学習の技術をゆるふわに学んでいくが悪戦苦闘!
    出演: 深野嗣
    ゆるふわな機械学習、ティーン向け、パワポだけ無駄にこだわる
    8

    View Slide

  9. 俺の
    ネトフリをつくるという壮大な趣味
    • 映画視聴評価のオープンデータを使って
    レコメンドシステムをつくる
    • クラウドMLを使う
    • ゆるく開発する
    9

    View Slide

  10. 俺の
    Google Recommendations AI(β)を
    使いこなせなくてオワコンした
    Season1までの『俺のNETFLIX』
    10

    View Slide

  11. 俺の
    Googleに別れを告げて、AWSに向き合った話
    1. Amazon Personalize とは
    2. Amazon Personalize を使ってレコメンドを作ってみた
    3. Amazon Personalize で推薦結果を取得してみた
    Season2のあらすじ
    11

    View Slide

  12. ゆるふわマシーンラーニング #4
    2020-07-02 Thu
    俺の
    NETFLIXに使われてい
    る機械学習技術
    (再掲)

    View Slide

  13. 俺の
    NETFLIXには、推薦システムに機械学習が使われている
    あなたの視聴履歴とコンテンツ評価のデータをもとに、機械が「あなたにイチオシ !」の作品を推薦(推奨)するシステム
    13
    推薦システム

    View Slide

  14. 俺の
    推薦のアウトプットはマッチ度と呼ばれる “確率”で出力される
    あなたの視聴履歴とコンテンツ評価のデータをもとに、機械が「あなたにイチオシ !」の作品を推薦(推奨)するシステム
    14

    View Slide

  15. 俺の
    推薦システムは一生かけても見きれない映画作品を絞込んでくれる
    Film Exhibition Yearbook |2018 から抜粋
    15
    • 年間1,200件の映画作品が公開されている
    • 一方、日本人は年間1.4回しか映画を鑑賞しない
    • もしも、作品を全部鑑賞するのであれば、1日に3.3作品以上見る必要がある
    • 1作品2時間だと仮定すると、6時間以上も必要!
    • 絶対ムリ! 映画を全部見るのは絶対ムリ!
    • 「あなたにイチオシ!」とオススメしてくれる推薦システムは…
    • わざわざ、自分に合った作品を探さなくて済む!
    • つまり、ユーザーの貴重な時間を無駄にしない神テクノロジー!

    View Slide

  16. ゆるふわマシーンラーニング #4
    2020-07-02 Thu
    俺の
    Amazon Personalize とは

    View Slide

  17. 俺の
    Amazon Personalizeとは
    17
    引用: Amazon Personalize

    View Slide

  18. 俺の
    Amazon Personalizeとは
    18
    機械学習の経験がほとんどない開発者が
    パーソナライゼーションとレコメンデーションを
    作れるフルマネージドサービス
    つまり、非常にゆるくMLできる

    View Slide

  19. 俺の
    Amazon Personalize の仕組み
    19
    引用: Amazon Personalize

    View Slide

  20. 俺の
    STEP1 S3か専用のAPIを使ってデータを取り込む
    20
    引用: Amazon Personalize
    データ
    準備

    View Slide

  21. 俺の
    STEP2 いい感じにモデル構築してくれる(AutoML)
    21
    引用: Amazon Personalize
    モデル構築

    View Slide

  22. 俺の
    STEP3 モデルをAPIにして自分のサービスに組み込める
    22
    引用: Amazon Personalize
    API

    View Slide

  23. 俺の
    ゆるく試す分には、無料でいけると思う
    23
    引用: Amazon Personalize
    ● 期間 初回利用から2ヶ月間
    ● データ処理およびストレージ 毎月最大 20GB
    ● トレーニング 毎月最大 100 トレーニング時間
    ● レコメンデーション 最大 50 TPS 時間 即時推薦/月

    View Slide

  24. ゆるふわマシーンラーニング #4
    2020-07-02 Thu
    俺の
    Amazon Personalize でレコメン
    ドシステムを作ってみた

    View Slide

  25. 俺の
    もちろん AWSに登録する
    25

    View Slide

  26. 俺の
    Amazon Personalize を使う方法は3つある
    1. Amazon Personalize 専用コンソールから使う
    2. AWS CLI から使う
    3. AWS SDK から使う
    今回は、専用コンソール(1)でやってみた
    26

    View Slide

  27. 俺の
    権限のセットアップ
    27
    • S3バケットにアップロードしたデータを使っ
    て、学習をおこなう
    • そのためS3やPersonalizeへのアクセスを許
    可する設定作業が必要
    • クラウドいじったことある人なら難しくないけ
    ど、初学者ならちょっとだけハマるかも

    View Slide

  28. 俺の
    Personalize用のロールをつくる
    28

    View Slide

  29. 俺の
    この3つの許可があればおk
    29

    View Slide

  30. 俺の
    データの準備
    30
    非常にゆるくMLできるサービスの罠
    そのままインポートできるレベルの
    高品質データじゃないと
    マジで使い始められない

    View Slide

  31. 俺の
    俺のNETFLIXに使用するデータセットは、 MovieLensと呼ばれる映画に関するオープンデータ
    31
    • MovieLensは米国ミネソタ大学の研
    究室GroupLensによって提供されて
    いるオープンデータセット
    • 天才NETFLIXデータサイエンティス
    トの機械学習を学ぶために、 天才た
    ちが提供するデータセットを使う
    https://movielens.org/

    View Slide

  32. 俺の
    今回は2018年9月9日に更新された 1MBの一番軽いデータセットを使うことにした
    32
    ml-latest-small.zip
    ratings.csv
    movies.csv
    tags.csv
    links.csv
    • 600人のユーザーが
    • 9,000本の映画作品の中から
    • 視聴した作品を評価したデータ
    • 作品に対してハッシュタグもつけている
    • 評価件数は100,000件
    ふ〜ん(?)

    View Slide

  33. 俺の
    評価ってこうやって保存しているのが雰囲気でわかってきた
    ratings.csv
    33
    このファイルだけで
    • 誰が(userId)
    • いつ(timestamp)
    • どんな映画作品(movieId)を
    • どのように評価(rating)したのかがわかる!

    View Slide

  34. 俺の
    何をレコメンドするの?を考える
    ユーザーが高評価しそうな作品をレコメンドしたい

    ● 高評価って具体的にいくつよ?
    ● 学習しすぎたら請求額やばいよ?
    ● 評価された時期どうするの?
    ● データが規則正しすぎたら学習に支障でるよ?
    34

    View Slide

  35. 俺の
    ゆるくMLするので、ご容赦ください
    ユーザーが高評価しそうな作品をレコメンドしたい

    ● 高評価って具体的にいくつよ? 食べログパクる(rating<3.6〜
    ● 学習しすぎたら請求額やばいよ? 10,000行未満
    ● 評価された時期どうするの? 今回は考慮しない
    ● データが規則正しすぎたら学習に支障でるよ? シャッフルする
    35

    View Slide

  36. 俺の
    GogoleColabで前処理した(まずシャッフル)
    36
    • DeepLearningの学習でもよくつ
    かう、PythonのMLライブラリの
    Scikit-learnから
    • shuffleメソッドを拝借

    View Slide

  37. 俺の
    3.6より大きい評価のデータだけを残す
    37

    View Slide

  38. 俺の
    10,000行までに抑えておく
    38

    View Slide

  39. 俺の
    boto3(AWS SDK for python)使えるけど、csv出力した
    39

    View Slide

  40. 俺の
    よしなにS3に加工済みデータをうp
    40

    View Slide

  41. 俺の
    前準備完了
    ここからやっとPersonalize

    View Slide

  42. 俺の
    Amazon Personalizeにもどる
    42

    View Slide

  43. 俺の
    データセットグループをつくる

    43

    View Slide

  44. 俺の
    スキーマを設定する
    44
    • ここで少しハマったので、データ準備のと
    きに列名変換を事前に行った
    • データ型は問題なかった

    View Slide

  45. 俺の
    さっきつくったロールとS3バケットを紐付ける
    45
    • 事前に作らなくてもここまでいける
    • でも結局ここで作る羽目になる

    View Slide

  46. 俺の
    正しくデータセットグループを作れた
    46

    View Slide

  47. 俺の
    モデル構築にうつる(ソリューションと呼んでる)
    47

    View Slide

  48. 俺の
    モデルの種類を選ぶ
    • 事前に複数種類選べる
    • なぜかレシピと呼ばれている
    • 今回は、HRNN(階層的再帰型ニュー
    ラルネットワーク )を選択。
    • ユーザーが選ぶであろう作品IDを推論
    するイメージ
    48

    View Slide

  49. 俺の
    手動調整もできるけど、今回はおまかせモード
    • 作ってみて微調整したい
    なって思ったときに、再学習
    させることができるのは便

    49

    View Slide

  50. 俺の
    あつ森やってる間に、モデルできてた
    50

    View Slide

  51. ゆるふわマシーンラーニング #4
    2020-07-02 Thu
    俺の
    Amazon Personalize で
    推薦結果を取得してみる

    View Slide

  52. 俺の
    キャンペーンを作成する
    • 学習済みモデルでテストを
    したり
    • 作ったモデルを何かしらに
    アウトプットするプロセス
    52

    View Slide

  53. 俺の
    さっき作った学習済みモデルを選ぶ
    • キャンペーン名
    • ソリューション(モデルのこ
    と)
    53

    View Slide

  54. 俺の
    キャンペーンできた
    54

    View Slide

  55. 俺の
    予測したいユーザーIDを入力して、レコメンド開始!
    55

    View Slide

  56. 俺の
    movieIdがどんな映画作品を指しているのかも、わかってきた
    movies.csv
    56

    View Slide

  57. 俺の
    作品IDとスコアが返される(スコア低すぎる気がしてるがご容赦ください)
    57
    Shawshank Redemption, The (1994)
    Pulp Fiction (1994)Picture Perfect (1997)
    Picture Perfect (1997)
    • 318 ドラマ,クライムフィクション
    • 296 コメディ, クライム
    • 593 ロマンス, コメディ
    クライム、コメディ系的なのを薦めるって感じだ
    と思われる
    IDで返されるので、検証はしづらい

    View Slide

  58. ゆるふわマシーンラーニング #4
    2020-07-02 Thu
    俺の
    使ってみて思ったこと

    View Slide

  59. 俺の
    やってみて思ったこと
    59
    • シーズン1の借りを返した
    • 権限周りの設定に少しハマった
    • レシピ(Recipe)がめちゃくちゃ便利
    • 学習からモデル構築まで3時間もかからなかった
    • 検証環境は別で作ったほうが良いと思った
    • Google(GC)よりAmazon(AWS)派になったかも
    • なお実務ではMS(Azure)の模様

    View Slide

  60. 俺の
    Season2 完

    View Slide