Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

どんな対応ができるか

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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