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.

予測型戦略を知るための機械学習チュートリアル

16,988 views

Published on

BigData Conference 2017 Springにて行ったセミナーの資料です

Published in: Technology
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

予測型戦略を知るための機械学習チュートリアル

  1. 1. 予測型戦略を知るための 機械学習チュートリアル 株式会社Preferred Networks 海野 裕也 2017/04/18 BigData Conference 2017 Spring
  2. 2. ⾃⼰紹介 海野 裕也 l -2008 東⼤情報理⼯修⼠,⾃然⾔語処理 l 2008-2011 ⽇本アイ・ビー・エム(株)東京基礎研 l 2011-2016 (株)プリファードインフラストラク チャー l 2016- (株)プリファードネットワークス l ⾃然⾔語処理、機械学習、テキストマイニング l ChainerなどのOSS開発 l 機械とのコミュニケーションの研究開発 NLP若⼿の会顧問(2016-) 「オンライン機械学習」(2015, 講談社) 「深層学習による⾃然⾔語処理」(2017, 講談社) 2
  3. 3. 概要 本チュートリアルではデータを解析して判断に活かすため の技術、機械学習を説明します l 第1部:機械学習とは? l 第2部:機械学習の各種⼿法 l 第3部:機械学習の課題解決フロー 3
  4. 4. 第1部:機械学習とは? 4
  5. 5. 機械学習とは l 経験(データ)によって賢くなるアルゴリズムの研究 l データから知識・ルールを⾃動獲得する l データの適切な表現⽅法も獲得する l ⼈⼯知能の中で、⼈が知識やルールを 明⽰的に与える⽅法の限界から⽣まれてきた 5 学習データ 分類モデル
  6. 6. 例1:スパム判定 l メールがスパムが否かを⾃動判定する l GoogleのGmailでもスパム判定は機械学習が使われてい る 6 スパム 通常 新着メール
  7. 7. 例2:商品推薦 l 過去の購買履歴から類似ユーザーを探して、未購⼊の商 品を推薦する 7 購買履歴
  8. 8. 例3:コンピュータ将棋・囲碁・チェス 8 http://blog.livedoor.jp/yss_fpga/archives/53897129.html 詳細は鶴岡慶雅先生のチュートリアル 「自然言語処理とAI」 l ゲームごとに機械学習の応⽤⼿法が次々に進歩 l 機械の性能改善以上に⼿法の改善が⽬覚ましい 強い 弱い
  9. 9. 様々な分野に適⽤可能 l データから有⽤な規則、ルール、知識、判断基準を抽出 l データがあるところならば、どこでも使える l 様々な分野の問題に利⽤可能 9 レコメンデー ション 分類、識別 市場予測 評判分析 情報抽出 ⽂字認識 ロボット 画像解析 遺伝⼦分析 検索ランキン グ ⾦融 医療診断 適用分野
  10. 10. l 強化学習による⾃動運転 l https://www.youtube.com/watch?v=7A9UwxvgcV0 l 教師あり学習によるロボットの認識 10
  11. 11. ⼈に⽐べて機械学習のここがいい! l ⼤量 l ⼤量に処理できる l 機械を並べればいくらでもスケールする l ⾼速 l ⼈間の反応速度を超えることができる l ⾼精度 l 場合によっては⼈間を凌駕するようになってきた l ⼈と違って判断がブレない、疲れない 11
  12. 12. 機械学習を活かすポイント 量と速度が圧倒的なポイント l 量 l ⼤量のデータが有って⼈⼿で処理できない l 情報源が多様すぎて⼈間では⼿に負えない l 速度 l ⼈間よりも圧倒的に⾼速に反応できる l 反応速度が重要な領域で価値が出る 12 いずれも⼀般的に機械が ⼈間より優っているポイント
  13. 13. 機械学習が失敗するパターン l できない精度を求める l サイコロの次の⽬を当てることはできない l 同じように、精度の限界がある l ⼈にとって簡単なタスクをやろうとする l 少ない情報から推論するのは⼈間が得意 l 逆に⼤量の情報から判断する必要がある時は機械が得意 l ボトルネックが別にある l アクションを取るのが⼈だったり、⼈が途中に介在する l 量と速度のメリットをいかに活かすか 13
  14. 14. 「機械にやらせるなら、ルールを書けばいいんじゃ ないの?」 l 俗にルールベースと呼ばれる⽅法 l 最初は精度が悪いが頑張れば意外とどこまでも良くなる 14 「ゴルフ」 à スポーツ 「インテル」 à コンピュータ 「選挙」 à 政治
  15. 15. ルールに基づく判断の限界 l ⼈⼿で書いたルールはすぐ複雑、膨⼤になる l 1万⾏のperlスクリプト l どこを変えたらいいかわからない l 条件を追加したら何が起こるか・・・ l 複雑化したルールは引き継げなくなる 15 「ゴルフ」and「VW」 à ⾞ 「インテル」and「⻑友」 à サッカー 「選挙」and「AKB」 à 芸能
  16. 16. 規則 機械学習はデータに基づくアプローチ 16 アルゴリズム アルゴリズム 規則 データ ルールベース 機械学習 ⾃動獲得 ⼈が⽤意 ⼈が⽤意
  17. 17. ビジネス応⽤事例 いくつかのビジネス応⽤を、 量と速度の観点で⾒ていく 17
  18. 18. ビジネス応⽤事例:不正検知、スパム検知 不正な⾏動をするユーザーや、スパムメールを過 去のデータから発⾒する l 量:全てのユーザーやメールに対して適⽤でき る l 速度:利⽤者の利便性を損なわない速度が必要 18
  19. 19. ビジネス応⽤事例:商品レコメンド 過去の購買履歴から、次に買いそうな商品を予測 して推薦する l 量:個別のユーザーに合わせて推薦できる l 速度:サイト訪問のたびに出し分けられる 19
  20. 20. ビジネス応⽤事例:広告配信 どの広告を誰に出すべきかを、過去のクリック履 歴から⾃動判定する l 量:個別の広告毎に出し分けられる l 速度:広告表⽰のたびに出し分けられる 20
  21. 21. 分析型データ活⽤から予測型データ活⽤へ 21 収集 集計 分析 ⾏動 Hadoopなどによる集計 分析者によるデータ分析 機械学習エンジンと連携したシステム化 分析結果の利⽤までシステム化することで 量と速度のメリットを受けられる
  22. 22. まとめ:機械学習 vs ⼈間 vs ルール 機械学習は速度、量、精度、メンテナンス性のバ ランスがとれている l ⼈間に⽐べて・・ l 量と速度に優る l 疲れない、ぶれない、スケールする l ルールに⽐べて l 精度に優る l メンテナンスできる、引き継げる、データの変化に 強い 22
  23. 23. 第2部:機械学習⼿法 23
  24. 24. l 機械学習導⼊ l 教師あり学習 l 教師なし学習 l 強化学習 l 深層学習
  25. 25. l 機械学習導⼊ l 教師あり学習 l 教師なし学習 l 強化学習 l 深層学習
  26. 26. タスク固有の問題と⼿法の分離 26 ⽂ 書 (0, 1, 0, 2.5, -1, …) (1, 0.5, 0.1, -2, 3, …) (0, 1, 0, 1.5, 2, …) 特徴ベクトル グラフィカルモデル 分類/回帰:SVM, LogReg, PA, CW, AROW, Naïve Bayes CNB, DT, RF, ANN, … クラスタリング:K-means, Spectral Clustering, MMC, LSI, LDA, GM, … 構造分析:HMM, MRF, CRF, … 画像 センサ情報 ⾏動履歴 分野に依存しない 特徴を捉えた抽象化されたデータ 様々な⼿法・理論を 適⽤可能 特徴抽出 特徴分析 狭義の機械学習
  27. 27. 特徴抽出 l ⼊⼒された⽣データの特徴をキーとバリューで表す l 変換の⽅法はデータの種類によって様々 27 周囲が黄色 1 中心が茶 1 花びらの割合 0.7 ⾼さ 150 世の中ではビッグデータ というキーワードが注⽬ されていますが,⼀⼝に ビッグデータといっても ⽴場や観点によって定義 は様々です. 他の要素は0とする ビッグデータ 2 世の中 1 キーワード 1 定義 1 IT関連 ひまわり 特徴ベクトル 分析結果
  28. 28. l 本⽇は後段の「狭義の機械学習」について詳し くお話します l ⼊⼒情報は、全て特徴ベクトルになっているも のとします 28
  29. 29. 機械学習の世界の分類 l 問題設定に基づく分類 l 教師あり学習 / 教師なし学習 / 半教師あり学習 / 強化学習 .. l 戦うドメインの違い l 特徴設計屋(各ドメイン毎に, NLP, Image, Bio, Music) l 学習アルゴリズム屋(SVM, xx Bayes, CW, …) l 理論屋(統計的学習理論、経験過程、Regret最⼩化) l 最適化実装屋 l 好みの違い l Bayesian / Frequentist / Connectionist / DeepLearning l [Non-|Semi-]Parametric 29 太字について話します
  30. 30. 教師あり学習 l ⼊⼒ x に対して期待される出⼒ y を教える l 分析時には未知の x に対応する y を予測する l 分類 l y がカテゴリの場合 l スパム判定、記事分類、属性推定、etc. l 回帰 l y が実数値の場合 l 電⼒消費予測、年収予測、株価予測、etc. 30 x y
  31. 31. 教師なし学習 l ⼊⼒ x をたくさん与えると、⼊⼒情報⾃体の性質に関し て何かしらの結果を返す l クラスタリング l 与えられたデータをまとめあげる l 異常検知 l ⼊⼒データが異常かどうかを判定する 31 x
  32. 32. 教師あり学習と教師なし学習は⽬的が違う 教師あり学習 l ⼊出⼒の対応関係を学ん で、未知の⼊⼒に対して 判断する l ⼊⼒と出⼒を教える必要 がある l ⼀番シンプルな問題設定 で汎⽤性が⾼い 教師なし学習 l データ集合⾃体の特徴を 学習する l データを⼊れれば、すぐ 動く l 制御が難しい l 教師あり学習の前処理と しても使われる 32
  33. 33. 強化学習 l 事前にデータは与えられず、⼊⼒ x に対して⾏動を取る と初めて報酬 y が得られる l データの取得⾃体に試⾏錯誤が必要 l 多腕バンディット問題 l 未知の⾏動と、既知の⾏動の選択を⾏う 33 x y 行動
  34. 34. 強化学習は試⾏錯誤で学習する⼿法 どうすればいいか(教師データ)を教えるのではなく,試 ⾏錯誤して正しい⽅法を探す学習⽅法 教師あり学習:いつペダルを踏むかを教える 強化学習:倒れずに前に進む⽅法を試⾏錯誤
  35. 35. 教師あり学習と強化学習は設定が違う 強化学習 l 教師データはない l 新規データの取得できる 環境がある l データがまだなく、デー タ取得まで⾃動化する場 合に向く 教師あり学習問題 l 教師データがある l 新規データの取得は不可 能 l 既知のラベル付きデータ が⼗分にある場合に向く 35
  36. 36. 機械学習の仕組みを知る必要はあるのか? l 必ずしも必要ない l うまく機能していれば、中⾝を知る必要は特にない と思う l うまくいかないときが問題 l ⼿法⾃体を知っていると、限界がある程度わかる l そのため、知っているとチューニングしやすい 36
  37. 37. ここから個別の 機械学習技術のお話をします 37
  38. 38. その前に・・・ l ⼊⼒ x は全てベクトルだとします l 特徴抽出は終わっているということ l ベクトル以外の系列や⽣のデータを扱う⼿法もあり ますが、今回は対象外 l 直感的な2次元ベクトルの絵を出しますが、⼀般 的にはより⾼次元のベクトルとなるので直感と あわないことがあります 38
  39. 39. l 機械学習導⼊ l 教師あり学習 l 教師なし学習 l 強化学習 l 深層学習
  40. 40. 教師あり学習(再掲) l ⼊⼒ x に対して期待される出⼒ y を教える l 分析時には未知の x に対応する y を予測する l 分類 l y がカテゴリの場合 l スパム判定、記事分類、属性推定、etc. l 回帰 l y が実数値の場合 l 電⼒消費予測、年収予測、株価予測、etc. 40 x y
  41. 41. 教師あり学習のユースケース例 ⾃動分類結果をシステムとつなぎあわせやすい l 重要情報のフィルタリング l コールセンターログを重要度やタイプ別に分類 l 分類結果から、深刻な問題を詳細に分析したり、問い合わせの トレンドを⾒ることができる l 顧客セグメントの予測 l 購買履歴などのログ情報から、顧客の詳細なセグメント(年代 性別のみならず、家族構成、趣味嗜好など)を予測 l 予測結果を、例えば広告やキャンペーン対象として利⽤する 41
  42. 42. 教師あり学習には推定と学習のフェーズが有る 推定するとき 学習するとき 42 短髪 Tシャツ チノパン 予想:男性 ⻑髪 Tシャツ チノパン 学習データ 男性 次は当てよう 推定対象
  43. 43. ⼀般的な教師あり学習の学習プロセス l 内部パラメータを持っていて、学習データをうまく再現 するようにパラメータを更新する l パラメータの種類、更新⽅法は⼿法によってまちまち 43 学習データ:{ (x1, y1), (x2, y2), … } 内部パラメータ
  44. 44. 教師あり分類の種別 l 線形分類器 l 特徴ベクトルとパラメータの内積の⼤⼩で分類 l 決定⽊ l ツリー状の分類条件を獲得する l ニューラルネットワーク l 内積と⾮線形関数の組合せを何度も⾏う l カーネル法(カーネル分類器) l 内積の代わりにカーネル関数を使う l アンサンブル学習 l 複数の分類器を組み合わせることで精度をあげる 44 これらは必ずしも 並列関係ではない
  45. 45. 線形分類器とは ⼊⼒ベクトルとパラメータベクトルの内積の⼤⼩(⼆値分 類なら正負)で判定する⼿法 l 内部パラメータはベクトル w l ⼊⼒ x と パラメータ w の内積の正負で分類する 45 x・w = x1w1 + x2w2 + … xnwn
  46. 46. 線形分類器は重み付き多数決 l 容姿の特徴から男性か⼥性か当てるとする l w は男性の特徴に正の重み、⼥性の特徴に負の重み l 判定対象の x に該当する重みの総和で予測が決定する 46 特徴 x ⻑髪 0 短髪 1 Tシャツ 1 ブラウス 0 ジーンズ 1 スカート 0 チノパン 0 w -3 +2 +1 -2 +2 -5 +3 +5 予想:男性 内部に表がある
  47. 47. 補⾜:線形分類器を図で理解する l パラメータ w との内積が正の領域というのは、w を法 線ベクトルとするような直線(3次元なら平⾯)で分割 された領域 l 特徴空間をまっすぐ2つに分割しているイメージ 47 x・w = 0 の直線
  48. 48. 学習のステップ 1/3 l どれが重要かわからないので、全ての重みを更新する l 結果的に、このデータは正しく予想できるようになる 48 特徴 w ⻑髪 0 à +1 短髪 Tシャツ 0 à +1 ブラウス ジーンズ スカート チノパン 0 à +1 ⻑髪 Tシャツ チノパン 学習データ 男性 初期値は全部0
  49. 49. 学習のステップ 2/4 l 間違えるたびに正しく分類できるように更新 49 特徴 w ⻑髪 +1 à 0 短髪 Tシャツ +1 ブラウス 0 à -1 ジーンズ スカート 0 à -1 チノパン +1 ⻑髪 ブラウス スカート 学習データ ⼥性
  50. 50. 学習のステップ 3/4 l 何度も更新する 50 特徴 w ⻑髪 0 à -1 短髪 Tシャツ +1 à 0 ブラウス -1 ジーンズ スカート -1 à -2 チノパン +1 ⻑髪 Tシャツ スカート 学習データ ⼥性
  51. 51. 学習のステップ 4/4 l 最終的にうまく分類できるところで落ち着く l 縦が数万〜数百万になり、⼈が全部調整するのは不可能 51 特徴 w ⻑髪 -3 短髪 +2 Tシャツ +1 ブラウス -2 ジーンズ +2 スカート -5 チノパン +3 できた!
  52. 52. 線形分類器の代表的な学習⼿法 l パーセプトロン(Perceptron) l 誤分類したら特徴ベクトルを重みに⾜し引きする l 単純ベイズ分類器(Naïve Bayes classifier) l 各特徴次元が独⽴だという仮定のもと、それぞれの重みを独⽴ に決定する l ロジスティック回帰(Logistic regression) l 各クラスに所属する確率の対数が、重みとベクトルの内積に⽐ 例すると仮定する l サポートベクトルマシン(SVM) l 分離平⾯からの最短距離(マージン)を最⼤化させる重みを選 択する 52 それぞれ基準が異なる
  53. 53. 線形分類器の限界 l 直線で分けられないと分類できない l ただし、⾃然⾔語データなどの超⾼次元空間では多くの 場合線形で⼗分なことが多い 53
  54. 54. 教師あり分類の種別(再掲) l 線形分類器 l 特徴ベクトルとパラメータの内積の⼤⼩で分類 l 決定⽊ l ツリー状の分類条件を獲得する l ニューラルネットワーク l 内積と⾮線形関数の組合せを何度も⾏う l カーネル法(カーネル分類器) l 内積の代わりにカーネル関数を使う l アンサンブル学習 l 複数の分類器を組み合わせることで精度をあげる 54 ⾮線形分類
  55. 55. アンサンブル学習 l 複数の分類器を組み合わせる(イメージ的には多数決) と性能が上がることが知られている l バギング、ブースティング、ランダムフォレスト 55 x y
  56. 56. ランダムフォレスト l 複数の決定⽊を組み合わせる l 学習データをランダムに間引いたものをn個⽤意 l 特徴情報もランダムに間引いてn個の決定⽊を学習 l 推定時にはn個の決定⽊の判定を多数決する 56 学習データ サンプルデータ サンプルデータ サンプルデータ 多数決
  57. 57. 複雑な⼿法と単純な⼿法のトレードオフ l 単純な⼿法 l 分類の根拠がわかりやすい l うまくいかない時に直すべき理由に気づきやすい l ⼀般的に分類速度、学習速度が速い l 実装が簡単なので、バグを埋め込みにくい l 例:線形分類器、決定⽊ l 複雑な⼿法 l ⼀般的に精度が⾼い l 例:アンサンブル学習、カーネル法、ニューラル ネット 57
  58. 58. 教師あり学習まとめ l ⼊⼒と出⼒の対応関係を学習するのが教師あり 学習 l 学習には⼊⼒と出⼒のペア(教師データ)がた くさん必要 l 線形分類器は重み付き多数決のイメージ l アンサンブル学習は、複数の学習器を組み合わ せる 58
  59. 59. l 機械学習導⼊ l 教師あり学習 l 教師なし学習 l 強化学習 l 深層学習
  60. 60. 教師なし学習(再掲) l ⼊⼒ x をたくさん与えると、⼊⼒情報⾃体の性質に関し て何かしらの結果を返す l クラスタリング l 与えられたデータをまとめあげる l 異常検知 l ⼊⼒データが異常かどうかを判定する 60 x
  61. 61. 教師あり学習と教師なし学習は⽬的が違う 教師あり学習 l ⼊出⼒の対応関係を学ん で、未知の⼊⼒に対して 判断する l ⼊⼒と出⼒を教える必要 がある l ⼀番シンプルな問題設定 で汎⽤性が⾼い 教師なし学習 l データ集合⾃体の特徴を 学習する l データを⼊れれば、すぐ 動く l 制御が難しい l 教師あり学習の前処理と しても使われる 61
  62. 62. 教師なし学習のユースケース例 発⾒的な利⽤ケースが多い l 顧客セグメントの⾃動分類 l 顧客の購買履歴や⾏動ログから、複数セグメントに分割する l 各セグメントの傾向から、施策の⽅針を選定する l 機械の異常状態の報告 l 機械の内部状態(センサーやログなどの)が、通常状態から著 しく乖離していることを発⾒ l 詳細な精密検査の候補に 62
  63. 63. クラスタリング l 与えられたデータをまとまり(クラスタ)に分 割する l データではなく類似の特徴をまとめるタイプも ある l 細かな設定の違いはある l データは複数のクラスタに属するか属さないか l クラスタ数は固定か可変か l クラスタ間に関係(階層)はあるか、フラットか 63
  64. 64. クラスタリングの代表的な⼿法 l K平均法(K-means) l 各クラスタに割り当てられたデータの平均(中⼼)の算出と、 ⼀番近いクラスタ中⼼への割り当てを交互に⾏う l 混合ガウスモデル(Gaussian Mixture Model) l 複数の正規分布の重ね合わせからデータが⽣成されたと仮定し て、各データがどの正規分布から⽣成されたのかを推定する l LDA(Latent Dirichlet Allocation) l 各特徴がトピックにもとづいて⽣成されると仮定して、⽂書と 特徴のトピックを推定する l ⾏列分解 l データ・特徴⾏列を低次元⾏列の積で近似する 64 下2つは⼀般的にはクラスタリングと呼ばれない
  65. 65. クラスタリングの具体例:K平均法 1. 各データをランダムなクラスタに割り当てる 2. 各クラスタの平均を求める(クラスタ中⼼) 3. 各データを最も近いクラスタ中⼼に割り当て直す 4. 2に戻って繰り返し 65
  66. 66. K平均法の特徴 l 最も基本的なクラスタリング⼿法 l 1ステップ毎に全データを⾛査する必要がある l ステップ数 x クラスタ数 x データ数、位の時間がか かる l 全データがメモリ上にある必要がある 66
  67. 67. 安易に教師なし学習に⾶びつかない! l どのような分類基準になるか予測できない l 結果の意味を解釈するのが難しい 67 問:下の図形を2つのクラスタに分けなさい
  68. 68. クラスタリングの本質的な難しさ l ⼿法の何処かに必ずまとめる基準があり、意図 通りの基準かどうかわからない l K平均法であれば、平均の求め⽅と近さの尺度 l GMMであれば、正規分布の仮定 l それぞれのクラスタの意味付けは分からない l まずクラスタリングして、あとから意味付けを⼈⼿ で与えるようなアプローチはあり l ただし、必ずしも⼈間が意味付けできるクラスタが 出来る保証はない 68
  69. 69. クラスタリングはどうやって使うべき? l データ全体の傾向を確認するのに使う l クラスタリングの結果がうまく分割できているならば、特徴ベ クトルの設計はうまく出来ている l 半教師あり学習として使う l クラスタリングの結果(クラスタ番号)を特徴として、普通の 教師あり学習を⾏うことで精度が上がる l 教師データ不⼗分で、ラベルなしデータが沢⼭あるときに有効 l クラスタリング結果に対して⼈⼿で意味付けを⾏う l 対象データに対する分類基準がよく定まっていないのであれば、 先に分割してから基準を決める 69
  70. 70. l 機械学習導⼊ l 教師あり学習 l 教師なし学習 l 強化学習 l 深層学習
  71. 71. 強化学習 l 事前にデータは与えられず、⼊⼒ x に対して⾏動を取る と報酬 y が得られる l トータルでの報酬が多くなる⾏動戦略を学習する l 多腕バンディット問題 l 未知の⾏動と、既知の⾏動の選択を⾏う 71 x y 行動
  72. 72. 教師あり学習と強化学習は設定が違う 強化学習 l ラベルは未知 l 新規データの取得が可能 l データがまだなく、デー タ取得まで⾃動化する場 合に向く 教師あり学習問題 l ラベルは既知 l 新規データの取得は不可 能 l 既知のラベル付きデータ が⼗分にある場合に向く 72
  73. 73. 強化学習のユースケース例 仮説の勝ち抜きを⾃動化させられる l 広告バナー選定を⾃動化 l 複数の広告候補があった時に、クリック率などの効 果の⾼そうな広告を⾃動的に選択しながら出し分け る l 検索結果画⾯の⾃動チューニング l 複数の検索対象(動画や記事、商品など)があった ときに、どのコンテンツを優先的に出すかなどを⾃ 動選択する 73
  74. 74. 多腕バンディット問題とは? l N個のスロットマシンがあるが、当たり確率はわからな い中で儲けを最⼤化したい l データが全くない状態から、試⾏錯誤をどうやって効率 的に⾏うか 74
  75. 75. 問題1:どちらのスロットマシンに賭けますか? 75 100回中、10回当たり 100回中、50回当たり
  76. 76. 問題2:どちらのスロットマシンに賭けますか? 76 1000回中、0回当たり 10回中、0回当たり
  77. 77. 問題3:どちらのスロットマシンに賭けますか? 77 100回中、20回当たり 10回中、1回当たり
  78. 78. Exploration vs Exploitation 問題 探索:未知の情報を探索する(Exploration) 活⽤:今ある情報で⾏動する(Exploitation) l 両者のバランスをどのようにとるかの戦略で、 儲けが変わってくる l この戦略の取り⽅が、多腕バンディット問題の 本質 78
  79. 79. ε-Greedy法 最も単純な戦略 l εの確率で探索:ランダムに選択する l 1 – εの確率で活⽤:今までで⼀番成功確率の⾼ い選択肢を選ぶ 79 確率ε 確率 1 – ε 5/10 1/15 1/8 7/8
  80. 80. その他のバンディットアルゴリズム l UCB(Upper Confidence Bound) l 試した回数が少ないものほど優先的に探索するよう なスコアを利⽤する l Thompson Sampling l 事後確率分布に従って、⾏動をサンプリングする 80
  81. 81. 多腕バンディットの広告配信への応⽤ l 複数の広告バナー案があるときに、どれを出し たら良いか? l ある程度広告を出し分けてクリック率を測定す れば、良いバナーと悪いバナーがわかる l もっと直接的にバンディットアルゴリズムでバ ナーの出し分けも含めて⾃動化したい 81
  82. 82. Googleアナリティクスでも使われている https://support.google.com/analytics/answer/2844870?hl=ja 82
  83. 83. 多腕バンディットが、教師あり学習より向く l 教師データがない l 教師データはログの中に⾃動的に貯まる l 例:新規の広告 l ⾏動と評価を⾃動化できる l ⾏動が良し悪しにもとづいて、次の⾏動を決める l 例:広告の配信と、クリックしたか l 状況変化が⼤きくデータを貯めづらい l 限られた時間の中での利得を最適にしようとする 83
  84. 84. 教師あり学習のほうが、多腕バンディットより向く l すでに教師データが沢⼭ある l 教師あり学習の⽅がじっくり精度を確認できる l 教師データを作るコストが低い l きれいな教師データを作った⽅が効率は良い l ログのデータはノイズが混ざりやすい l 実験的な⾏動を起こせない l 多腕バンディットは最初は⾏動を誤りやすい 84
  85. 85. l 機械学習導⼊ l 教師あり学習 l 教師なし学習 l 強化学習 l 深層学習
  86. 86. 深層学習 86
  87. 87. 深層学習とは何か? l 教科書的にいうと、以前は学習が困難と思われた、段数 の深いニューラルネットワーク⼿法全般 l 歴史的にいうと、ニューラルネットワークが下⽕となっ た90年台後半以降も研究を続けた北⽶の研究グループが、 2010年台に⼊って劇的な成果をあげた⼀連の研究 l 社会的にいうと、これらの成果に⽬をつけた⽶⼤⼿企業 の買収合戦・⼈材獲得合戦と、それらを⼤々的に報じた ⼀連の社会現象 87
  88. 88. 代表的な深層学習の⼿法いくつか l Feed Forward Neural Network l 最も基本形の、いわゆるニューラルネットワーク l 重みとの内積と、⾮線形関数の組合せを繰り返す l Convolutional Neural Network (CNN) l 特に画像解析で⼤成功して有名になった⼿法 l convolution層とpooling層を組み合わせる l Recurrent Neural Network (RNN) l ⾃然⾔語処理などシーケンスデータを扱う⼿法 l Long Short-Term Memory (LSTM)などの亜種が流⾏ している 88
  89. 89. 流⾏の理由(?):ニューラルネットワークの抱え る⼤きな2つの問題が解消されたのでは? l 学習の遅さ l 計算効率の良い関数の採⽤、機械学習技術の進歩に よる効率の向上、マシンスペックの向上、GPUなど の新しい計算機の出現によって解消された l 過学習のしやすさ l Dropoutという⼿法により、過学習を抑えられること が発⾒された l CNNやLSTMなど、対象の問題にあったネットワーク 構造の⼯夫がなされた 89
  90. 90. l 個別の詳しい技術に関しては触れません l 成果の出ている領域、そうでない領域、今後の 展望(私⾒)などに付いてお話します 90
  91. 91. 成果が顕著な領域 l ⾳声認識 l 認識精度が劇的に向上 l すでに多くの⾳声認識エンジンで利⽤されているのではと⾔わ れている l 画像認識 l 画像に映った物体の判定結果が劇的に向上 l エラー率が3年で25% à 7%に l ゲームプレイ l 昔のゲーム(インベーダーなど)を、ルールを教えずに画⾯と スコアだけで学習 l ⼀部のゲームで⼈間よりも強くなった 91
  92. 92. 例:画像認識の結果 2011年にエラー率26%だったのが、⼀気に16%に(今は 5%以下) 92 http://image-net.org/challenges/LSVRC/2012/ilsvrc2012.pdf
  93. 93. 例:画像認識の結果 93 http://www.image-net.org/challenges/LSVRC/2012/supervision.pdf データの⽅が 間違っている 確かに携帯電 話っぽい・・
  94. 94. ⼀番成功しているのはセンシング(認識)の部分 l 画像系 l 単⼀ではピクセルのRGBデータで、ほぼ意味が無い l 従来はエッジ検出なり、特徴点抽出なりの⼿法を組 み合わせるのが⼀般的だった l ⾳声系 l 単⼀では⾳圧のデータで、ほぼ意味が無い l 従来はスペクトラムや、ケプストラムの解析を⾏っ て特徴を抽出するのが⼀般的だった 94
  95. 95. より⾼次の機能はこれから l 意図やプランニング l 強化学習を応⽤した⼿法が成果を出し始めている l しかし、まだ汎⽤的に使えるわけではない l 意識や記憶 l 記憶のモデル化の研究はあるが、簡単なタスクしか とけていない l ⾔語や推論 l ⾔語処理では徐々に既存⼿法を追い抜いている領域 はあるが、劇的な変化という印象はない 95
  96. 96. 深層学習は冷静に⾒る必要がある l うまく⾏っているところ切り出しても、⽣物の 知能としてみると原始的な機能 l ぶつからないように移動すること、⾳を聞いて反応 すること、ものを認識してつかむこと、いずれも昆 ⾍でもできること l ただし、これらの能⼒でもインパクトのある領 域はある l ⾃動運転、⾳声認識、ロボット制御になると、いず れも影響⼒は⼤きい l 知能=⼈間と考えると失敗する 96
  97. 97. 深層学習を試すには? l すでに成果のでている結果を使うのが⼀番楽 l 画像認識なら、Caffeの学習済みモデルを利⽤できる l ⾃然⾔語処理なら、word2vecを使えば単語ベクトル の学習が簡単に⾏える l ⾃分で作るならツールキットを使うのが良い l Caffe/torch/theano l Chainerというライブラリを作りました l いずれも仕組みを理解する必要がある 97
  98. 98. Chainer l Powerful(⾼速) l NVIDIA GPUに対応 l Flexible(柔軟) l ループや再帰のあるネットワークも簡単にかける l Intuitive(直感的) l 通常のPythonコードがネットワーク定義になる 98
  99. 99. まとめ:機械学習の仕組み l ⼀⼝に機械学習といっても⾊々 l ⼊出⼒、設定、⽬標、好き嫌い、様々 l 機械学習3種類 l 教師あり学習:⼊出⼒関係を学習する l 教師なし学習:データの性質を学習する l 強化学習:試⾏錯誤による⾏動ポリシーの学習 l 深層学習はこれから? l ⽬⽴っているのは画像と⾳声 l ⾔語などの知能に関わる成果が期待される 99
  100. 100. 第3部 機械学習の課題解決フロー 100
  101. 101. l データを⼊⼿してから各種分析⽅法の設計、実 験を繰り返し、最終的にシステムに組み込むま での具体的な⼿順を紹介します l あくまで例ですので、ケースバイケースで変 わってきます
  102. 102. l 機械学習の問題への落とし込み l 特徴量の設計 l 実験 l 組み込み 102
  103. 103. l 機械学習の問題への落とし込み l 特徴量の設計 l 実験 l 組み込み 103
  104. 104. 機械学習で解くべき問題と、それ以外で解くべき問 題を切り分ける l 機械学習以外の⽅が適合する場合 l URLの検出など、ほぼ⾃明なルールが有る l スペル⾃動修正の代わりに、再⼊⼒させる l そのまま機械学習が適⽤できそうな場合 l 記事を⾃動で分類したい l 記事をユーザーに推薦したい l 少し⼯夫して機械学習の設定に落とす場合 l 好評か不評か判定する代わりに、好評・不評表現の辞書を機械 学習で作成する l 商品を買いそうか当てる代わりに、ユーザーの属性を機械学習 で当てて、狙った層に広告を出す 104
  105. 105. どの問題に落としこむべきか? l ⼿堅い問題の⽅が正直おすすめ l 教師あり分類の⽅がお薦め、正解情報はクラウド ソーシングを利⽤する⼿もある l 教師なしの場合でも、レコメンドなどの⼿堅い⼿法 が良い l 多腕バンディットは整備が必要 l 報酬(広告ならクリックされたか否か)の情報を、 学習エンジンに⼊⼒できるようにする必要がある 105
  106. 106. l 機械学習の問題への落とし込み l 特徴量の設計 l 実験 l 組み込み 106
  107. 107. 特徴量の設計 l 典型的な⽅法をまず試す l 数値の⼤⼩に意味があるならそのまま利⽤ l テキストなら出現する単語集号 l 男⼥などのカテゴリ情報なら0/1の変数 l 数値がIDなら、カテゴリ情報として扱う l データ整備に時間が掛かる l 空⽂字列、NULL、“なし” などが混在していること がある l 当てたい変数が紛れていることがある 107
  108. 108. 特徴設計の例 108 ID 239475 髪 ⻑髪 服 Tシャツ 会社ID 34 ⾝⻑ 162 プロフィール 千葉出⾝のエン ジニアです! 髪-⻑髪 1 服-Tシャツ 1 会社ID-34 1 ⾝⻑ 162 千葉 1 エンジニア 1 明らかに関係ない カテゴリ変数 数値の⼤⼩に意味 は無い 数値に意味があるテキスト情報
  109. 109. 特徴設計、ここに気をつける l 意味のない情報を使わない l ユーザーIDなど、予測に使えないと予め分かる情報は使わない l IDは数値とは違う l IDは整数になっているが、⼤⼩に意味は無い l カテゴリ情報として使う l テキスト系データは扱いを特別に l テキストをカテゴリの⽤に扱うと、ほぼ全てのデータが別の意 味になってしまう l 意味のあるキーワードを抽出してカテゴリ変数として扱う l マルチメディアデータは特殊な処理が必要 109
  110. 110. データの特質から難易度のあたりをつける l おおよそできそう l 明らかに相関がありそうな変数がある l 例:記事の内容からカテゴリを当てる l できるかも l 隠れた相関があるかもしれない l 例:購買情報から家族構成を当てる l 絶対にできなさそう l ⼈間がじっくり⾒てもわからない l 例:何も買ってない⼈が次に買いそうなものを当て る 110 優先度⾼
  111. 111. データに対する誤解 l データさえあれば何でもわかるんですよね? l NO! データから分かることだけがわかります l データが沢⼭あれば確実にわかるんですよね? l NO! 単調増加でも、100%に達するとは限りません l ⼈間にわからないことがわかるんですよね? l NO! ⼀般的には⼈間のほうが⾼性能です 111
  112. 112. 余談:機械学習は⼿段 l 機械学習は⼿段だと思って割り切る l うまくいくかどうかは、⾼度な⼿法よりもデー タの特性の⽅が強く影響する l どこまで出来るかは試さないと分からない 112
  113. 113. l 機械学習の問題への落とし込み l 特徴量の設計 l 実験 l 組み込み 113
  114. 114. 実際に実験を⾏ってみる l 仮想的にデータを設定して、想定した分析がで きるか試す l 実験設定を間違えると、実データで全く効果が 出ない l 特に、過学習に注意する 114
  115. 115. 過学習(Overfit)とは? l 星と⽉を分類する線を引く時どちらが良いでしょう? l 右の引き⽅は、ノイズのように⾒えるデータに引っ張ら れすぎていないか? 115 ?
  116. 116. ⼀番極端な例 116 if ⼊⼒=x1 then return y1 if ⼊⼒=x2 then return y2 if ⼊⼒=x3 then return y3 … else return “other” 学習データを全て正しく分類できたぞ! 学習データ:{ (x1, y1), (x2, y2), … }
  117. 117. 過学習とは l 既知データ(学習データ)に対する性能は、極めて⾼い l 未知データに対する性能が下がらなければ、学習データ に対する性能が⾼すぎても問題ない l ⼀般に、モデルの複雑さ(パラメータの数)に⽐べて、 学習データが少なすぎるときに起こる 117 学習データだけを過剰に正確に分類できる 反⾯、未知のデータに対する性能が下がっ てしまうこと
  118. 118. 過学習を防ぐには? l データと特徴のバランスを正す l より多くのデータを⽤意するか、パラメータの数 (特徴の数)を意図的に制限する l バランスを図る尺度はある(⾚池情報基準など) l 正則化を⼊れる l 正則化とはパラメータに対して制約を与えること l 過学習が起こっている場合、特定の特徴だけを過剰 に信⽤する(パラメータの値が巨⼤になる)ことが 多いため、⼤きくなり過ぎないように調整する 118
  119. 119. 過学習が起こっていないか確認するには? l 過学習とは未知データに対して性能が落ちるこ となので、仮想的に未知データ相当の状況を 作って実験を⾏う l ⼀般的には学習⽤データとテスト⽤データを分 ける l より効率的に交差検定を⽤いる 119
  120. 120. 交差検定(cross validation) l 仮想的に「未知データ」を作り出す⽅法 l 教師つきデータを n (=5くらい)にランダムに分割 l 1つ以外で学習1つでテスト、を n 回繰り返して、平均 の精度を求める 120 学習⽤ 学習⽤ テスト⽤ 学習⽤ テスト⽤ 学習⽤ テスト⽤ 学習⽤ 学習⽤ 1回目 2回目 3回目
  121. 121. 交差検定をする際に気をつけること l 様々な要因で「仮想的な未知データ」になって いないことがある l うまく実験できていないと不当に精度が⾼く⾒ えて、本番データで失敗する 121
  122. 122. ケース1:重複データが混ざっている場合 l 重複データがあると、ランダムに混ぜても学習⽤とテス ト⽤に同じデータが混⼊してしまう l ⼀般的に学習時に利⽤したデータは極めて⾼い精度が出 るため、不当に性能が出ていると勘違いする 122 学習⽤ テスト⽤学習⽤ テスト⽤ 偶発的に同じデータが混ざる
  123. 123. ケース2:本番⽤ータと学習データの傾向が違う l 原因は様々 l 学習⽤データにしかない特徴で学習してしまった l 学習データが古すぎて、傾向が変わっている l なるべく本番データから学習データを作るか、意図的に 特徴情報を制限する必要がある 123 学習 本番
  124. 124. 最後は⼼の問題(?) l 想定外に性能が出ないことはよくある l 実験時に極めて⾼い性能が出たら、喜ぶ前に実 験設定を⾒なおして⽅がいい l 経験的には、⾼い性能が出た時はほとんど何かを間 違えている l 最終的には製品・サービス内で効果を計測する 気を抜かない 124
  125. 125. 実験を⾏ったら・・・ l 精度が良いとき l おめでとうございます! l 精度が悪いとき l 頑張りましょう l 精度が良すぎるとき l 疑いましょう 125
  126. 126. 精度が悪いとき l 簡単にできることから試す l 複数の学習⼿法を試す l ハイパーパラメータ(学習前に設定するパラメー タ)を変えてみる l 難しすぎる問題設定になっていないか確認する l 正解データ内でも基準が曖昧だと、難しい l 不必要に難しい設定になっていないか再検討する l ⼿法を改善するのはそれから 126
  127. 127. 難しすぎるケース:データに⼀貫性がない l データ作成時に⼀貫性がないと機械も迷う l 例:スポーツ選⼿の結婚記事は「芸能」? 「ス ポーツ」? l データ作成中に基準を決めて、⽂書等で共有する l 曖昧でも、データ上はどちらかになっているた め実験精度⾃体は落ちる l 実⽤上は問題ないかもしれない l 最終的には、個別の結果を⾒て判断を 127
  128. 128. 難しすぎるケース:ラベルが多すぎる l 各ラベルごとの正解データが極端に少なくなるので、学 習効率が悪化する l 例:データが1件もないラベルは当てられない l データを増やすか、必要な分類基準を精査する(ビジネ ス要件との調整が必要) l 例:細分類ではなく、⼤分類が出来るだけでも効果がある場合 もある 128
  129. 129. それでも精度が出ない l 要件を再検討 l 誤検知が問題なら、確信度の⾼い上位を利⽤する l 検知漏れが問題なら、確信度のしきい値を下げる l 間違い事例を精査 l 必要な特徴が取れていないことが多い l より⾼度な⽅法を検討 l ラベルなしデータを利⽤する(半教師あり学習) l 外部リソースを利⽤した特徴を利⽤する l 実装コスト、運⽤コスト、処理性能の劣化などの苦 労の割には性能向上は限定的 129
  130. 130. 精度が出すぎたら疑う l 学習データとテストデータが同じになっていた l 実験のプログラムを間違えていた l 重複データが⼊っていた l 想定外のわかりやすい特徴を学習していた l 不均衡データになっていた 130
  131. 131. 不均衡データになっている l 全てのデータを「通常」と判断した場合、正解率⾃体は 99%になるが、全く役に⽴たない l 正解率ではなくて、異常を発⾒できたかどうかの尺度で 評価する必要がある l 適合率:発⾒した「異常」が、本当に「異常」である割合 l 再現率:全体の「異常」の内、実際に発⾒できた割合 131 通常:99% 異常:1%
  132. 132. 最終的には実験をどれだけ回せるかの勝負 l 1回の実験でうまくいくことは殆どない l 特徴設計やデータ整形を⼯夫して何度も実験を 回す必要がある l なるべく、間違えないように、効率よく実験と データ収集ができるように整備することがもっ とも⼤事 132
  133. 133. データ作成⽀援 133
  134. 134. デモ 134
  135. 135. l 機械学習の問題への落とし込み l 特徴量の設計 l 実験 l 組み込み 135
  136. 136. 実システムに組み込む l 実システム上で成果が出るかが⼀番⼤事 l 成果をどう設定するかはケースバイケース l クリック率が実際に向上するか? l データ整理に要する時間が短縮されたか? l ユーザーの平均滞在時間が向上したか? l 効果を測定できる仕組みが必要 136
  137. 137. 実データで試すと新たな問題が出てくる l 想定したデータとずれてくる l 例:スイカ=「野菜」が、ある⽇「交通」になった l システム全体として効果が出ない l 例:スパムと思って消したら、クリック率が下がっ た l 対象がシステムに対抗してくる l 例:検索エンジン業者とSEO業者の攻防 137
  138. 138. 改善のループを継続させる 138 実験 設計 システム上での評価 システム全体 の改善 機械学習単体 の改善
  139. 139. まとめ l まず⽬標を明確に l ⽬標をうまく機械学習の問題に落とす l 機械学習の実験を繰り返す l 環境整備が⼤事 l システムに組み込んで改善のループを回す 139
  140. 140. 全体のおさらい l 機械学習はどこでも使える l データを利⽤して賢くなる⼿法全般 l データのある様々な領域で適⽤可能 l ⼿法は沢⼭ l 教師あり学習は⼊出⼒関係を学習 l 教師なし学習はデータの傾向を学習 l 強化学習は⾃動で試⾏錯誤する l 深層学習は多段のニューラルネット l 検証を繰り返す l 実験は交差検定で l システムに組み込んで効果をしっかり試す 140
  141. 141. ご清聴ありがとうございました 141

×