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,039 views

Published on

第一回SIL勉強会 自然言語処理編での発表資料です。

https://sansan.connpass.com/event/116853/

Published in: Technology
  • Be the first to comment

機械学習を活用したサービスにおける工夫紹介

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

×