Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

機械学習を使った趣味サービスにおける工夫紹介

2,197 views

Published on

https://mlm-kansai.connpass.com/event/100525/ でのLT登壇資料です。

Published in: Technology
  • Be the first to comment

機械学習を使った趣味サービスにおける工夫紹介

  1. 1. 趣味の機械学習サイトにおける 工夫紹介 MACHINE LEARNING Meetup Kansai #3 はてな id:syou6162 1
  2. 2. 自己紹介 •  id:syou6162(本名: 吉田康久) •  前職: 自然言語処理や機械学習の研究職 •  2年前にはてなに転職 2
  3. 3. Mackerel: サーバーの異常検知 3 •  ルールを書く必要なし •  約20次元を考慮 •  どのメトリックがおかしいか 根拠も提示 参考: hFps://www.yasuhisay.info/entry/mackerel_meetup_12_anomaly_detecMon
  4. 4. はてなにおける 機械学習の取り組み id:syou6162 MACHINE LEARNING Meetup KANSAI#1 4 •  再現性や属人性、機械学習で 難しいところをはてながどう組 織で取り組んでいるか紹介 参考: hFps://www.slideshare.net/syou6162/ss-93425042
  5. 5. デブサミ2018関西 5 •  機械学習の第一歩をどう踏み出すか •  機械学習におけるアプリケーションエンジニアの強み •  Machine Learning Kansai Meetupの紹介 参考: hFps://www.yasuhisay.info/entry/2018/10/01/090000
  6. 6. ML News •  趣味で運用している機械学習関連のエントリを 集めて見せているサイト –  hFps://www.machine-learning.news –  これ自身も機械学習を使ってる •  作ったモチベーション –  気になった機械学習技術をいきなりプロダクションに 入れるのは大変 –  自分で遊べる砂場が欲しい •  あくまで趣味なので手間をあまりかけたくない –  今日は運用での工夫について話します 6
  7. 7. こんなサイト 7
  8. 8. アジェンダ •  能動学習による効率的なアノテーション •  精度の継続的なトラッキングを簡単に •  多様性を持たせた簡単な推薦方法 •  パイプラインジャングルと戦う 8
  9. 9. アダルト まとめサイト 深層学習 異常検知 分離平面 Python クローラー CoreML iPhone アプリ おすすめ 能動学習による効率的なアノテーション 機械学習 Python アフィリエイトサイト 9
  10. 10. 分離平面 能動学習による効率的なアノテーション この辺ばかりアノテーションしていても -  精度は上がらない -  精神は病むので、つらい -  しかし、ランダムに選ぶとこの辺がたくさん… 10 アダルト まとめサイト Python クローラー iPhone アプリ おすすめ アフィリエイトサイト 深層学習 異常検知 CoreML 機械学習 Python
  11. 11. 分離平面 能動学習による効率的なアノテーション 分離平面に近い(=分類器があまり自信がない) 事例から優先的にアノテーション 11 アダルト まとめサイト Python クローラー iPhone アプリ おすすめ アフィリエイトサイト 深層学習 異常検知 CoreML 機械学習 Python
  12. 12. •  同じ400件をアノテーションするならば、より精度 が高い分類器を作れる400件のほうがよい hFp://www.yasuhisay.info/ entry/2017/05/18/080000 hFps://github.com/syou6162/go- acMve-learning 能動学習による効率的なアノテーション 12
  13. 13. 精度の継続的なモニタリング •  コマンドラインツール(mkr)や各種言 語のライブラリから投稿可能 •  各メトリックに対して閾値を設定して 閾値を割ったらslackに通知 13
  14. 14. 精度の可視化 •  任意の時点にアノテーションを追加 •  Gitのコミットハッシュ値やPull Requestへ のリンクを貼っておくと便利 •  mackerel.io 14
  15. 15. 推薦リストの構築(1) •  スコアが高いものはarXivの論文ばかり… •  データ基盤の話や面白事例のエントリも読み たい! 推薦されたリストに多様性が欲しい! •  文書要約も似たような問題設定 – 文書全体の話題をカバーしつつ重要なところを ピックアップ – ナイーブにやると2^Nの組合せがある 15
  16. 16. 推薦リストの構築(2) •  目的関数が劣モジュラと呼ばれる形式だと貪欲 法で簡単に解ける –  目的関数: td-idfから構成される簡単な関数 –  賢い人が「最悪ケースでもこれ以下にはならない」と 理論保証を与えてくれている •  Golangで約100行 –  hFps://github.com/syou6162/go-acMve-learning- web/blob/master/lib/apply/apply.go –  hFps://www.yasuhisay.info/entry/ 2017/05/27/213200 16
  17. 17. パイプラインジャングル •  機械学習アプリではパイプラインジャングル になりがち •  昔はJenkinsで以下を調整していた – 分類対象候補データのクローリング – 前処理 – 学習 – 予測 – 推薦リストの構築 – Slackへの通知 問題点 •  cronの時間調整アホらしい •  前段の処理で失敗したら後段の 処理は走らないで欲しい •  どこでこけたか調査が面倒 17
  18. 18. 解法: AWS StepFuncMons 推薦対象候補の クローリング 学習/予測および 推薦リストの構築 利点 •  個々のパーツの自由度 が高い(Lambda/ECS task/AWS Batch Job) •  どこでこけたか一目瞭然 •  こけたらexponenMal backoffで再実行 •  管理サーバー必要なし •  設定がJSONで書ける 18 hFps://www.yasuhisay.info/entry/machine_learning_workflow_with_step_funcMons
  19. 19. まとめ •  能動学習による効率的なアノテーション •  精度の継続的なトラッキングを簡単に •  多様性を持たせた簡単な推薦方法 •  パイプラインジャングルと戦う 19 •  詳しい話を聞きたい、うちではこんな感じでやっているという 人、懇親会で話しましょう! •  来月くらいに論文読み会(ACL/KDD/WWW/SIGIR/ICMLなど など)をはてなで企画。興味ある人ははてな社員に話しかけ てください!

×