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

Machine Learning and Feedback

Agata Naomichi
September 26, 2018

Machine Learning and Feedback

Agata Naomichi

September 26, 2018
Tweet

More Decks by Agata Naomichi

Other Decks in Programming

Transcript

  1. ユーザフィードバックと機械学習
    Machine Learning Casual Talks #6

    View Slide

  2. Naomichi Agata
    Software engineer at Wantedly, Inc.
    Server side + Machine learning @ Wantedly People
    GitHub
    Twitter
    @agatan
    @agatan_

    View Slide

  3. サービスにおける機械学習システムには
    ユーザフィードバックが重要

    View Slide

  4. フィードバック
    ● ユーザからのフィードバック
    ○ レビューやお問い合わせだけではなく、
    「ふつうにサービスを使うなかでの行動」から得られる
    ○ e.g. 「検索結果をクリックした」「購入せずに戻った」「誤情報を訂正した」
    ● ユーザへのフィードバック
    ○ より良いサービスを提供する
    ○ e.g. 「あなたへのおすすめ」「全体の精度が向上する」

    View Slide

  5. 何を持ってそのモデルを「良い」と判断するか
    機械学習をサービスに活用するためには
    1. モデル自体の精度(オフラインで測れる精度)
    2. KPI / ユーザ体験への影響(オンラインでしか測れない精度)
    の 2 面から「良さ」を判断する必要がある
    ユーザ体験への影響は「ユーザからのフィードバック」でしか測れない

    View Slide

  6. サービスの成長とモデルの成長
    ● サービスが大きくなるにつれてできることは増えていくはず
    ○ e.g. パーソナライズ
    ● フィードバックループを繰り返して改善していきたい 、というのは機械学習も一緒
    良い機械学習によってサービスの成長を加速する
    → データが増える
    → 精度があがる and/or できることが増える
    → 成長を加速
    → …

    View Slide

  7. 理想
    良い体験を実現するほど、使ってもらえる
    ↑↓
    使ってもらうほど、改善がすすむ
    使う
    改善
    より良い体験の提供

    View Slide

  8. 現実
    ● どの程度フィードバックを得られるかは、問題とサービスの性質に依存する
    ○ たとえば、推薦はフィードバックを得やすい
    ● 「サービスの拡大とともに使える情報が増える」ことは期待できない場合もある
    ○ 学習データにするには壁がある
    ■ より高度な annotation 作業が必要, ノイズが多い, …
    ● 機械学習システムだけ成長に置いていかれるわけにはいかない

    View Slide

  9. どんな対応ができるか

    View Slide

  10. 前提...
    ● フィードバックを逃さないログ基盤などはとても重要
    ○ 「なにかがおかしい」を察知できないと改善の余地がない
    ○ 継続的に評価できないと新しいことに挑戦できなくなる
    ● フィードバックを受けやすい UX 設計も重要になってくる(?)
    ○ 予測が間違っているときにそれを伝えられる
    ○ 予測が正しかったときにそれを伝えられる
    ○ 機械学習エンジニアも UX 設計に参加する必要がある

    View Slide

  11. 半教師あり学習として解く
    ● 「少量の教師ありデータ + 大量の教師なしデータ」
    ● 教師なしでもできることを組み合わせたシステムにするのが一番うまくいった
    ○ たとえば、word embedding layer を教師なしデータで事前学習しておく

    View Slide

  12. データの分布に注目する
    ● annotate されていないデータでも、現実のデータの分布を反映している
    ● 活用できていなかったデータも、細かく分析することで使えるようになる(こともある)
    ● 分布さえわかればできることもある
    ○ たとえば、bi-gram の出現頻度を見ながら sequence 全体での尤度が最大になるように
    decode する
    ○ たとえば、出現頻度の多いパターンにはアドホックにルールベースで対処する
    ■ e.g. 高い頻度・確率で「m」が「nn」に訂正されている
    ● より現実に近い data augmentation ができる
    ○ データの分布から教師データを作る

    View Slide

  13. ノイズを許容する
    ● ノイズを許容してでも大きなデータで学習したほうが良い場合もある
    ○ とはいえ単純につっこんでもうまくいかない(はず)
    ● 地道に分析してノイズを取り除くのが(可能なら)一番よさそう
    ● 教師データのノイズに耐性を持つようなモデルも提案されている

    View Slide

  14. まとめ
    ● サービスの成長にあわせてモデルも改善したい
    ○ モデル改善 → サービス向上 → 使ってもらえる → 改善 → … のループが回せると幸せ
    ○ 問題・領域によっては、モデルの改善に直接使えるデータは集まらない
    ● どうやってモデルの改善を進めるか
    ○ そもそも UX としてユーザフィードバックが得られる構造になっているか?
    ○ 半教師あり的に扱う
    ○ ひたすら分析 + パターンを見出して改善する

    View Slide