それっぽく感じる機械学習
-
Upload
yuki-igarashi -
Category
Technology
-
view
6.609 -
download
0
Transcript of それっぽく感じる機械学習
~第5回サトヤ勉強会~
それっぽく感じる機械学習
五十嵐祐貴(いがらしゆうき) @bonprosoft
Microsoft MVPサトヤ仙台
自己紹介
• 五十嵐祐貴( @bonprosoft )
• Microsoft MVP for Visual Studio and Development Technologies
• Microsoft Student Partners Fellow
• サトヤ仙台代表
• 他o 東北大学工学部電気情報工学科 4年(4月から)
近況
• 本を書きましたo .NET開発テクノロジ入門2016年版Visual Studio 2015対応版
近況
• この本を読むと…
o NEETが理解できてNEET生活が楽しくなる
o 便秘に効く
…らしい
恐縮です
(#^ω^)ピキピキ
5
本日のお題
機械学習
6
3月22日時点での状況
7
このセッションの目的
「機械学習がやってることをそれっぽく感じてほしい」
• 以下のことをなるべく分かりやすく説明しますo 機械学習全般に関する超基本的な知識o 各分野でよく使われている機械学習手法の基本
• このセッションのゴール
「Azure MLなどの便利なプラットフォームが
それっぽく使えるようになること」
第1章
それっぽくわかる機械学習
9
この章では…
• 各分野で用いられている機械学習手法をよりすっきり理解するために説明します
• 雰囲気を半分くらい押さえておけば十分です!
• なるべく分かりやすいように具体的に説明します
分かりにくかったり、早口だったり、再度説明が欲しい場合は、お気軽に挙手してください!
そもそも機械学習 is 何
“コンピュータプログラムが、ある種のタスクTと評価尺度𝑃において、経験𝐸から学習するとは、タスク𝑇におけるその性能を𝑃によって評価した際に、経験𝐸によってそれが改善されている場合である”
Machine Learning, Tom Mitchell, McGraw Hill, 1997.
10
そもそも機械学習 is 何(意訳)
“コンピュータプログラムが学習するとは、ある評価尺度によって性能評価した際に、経験によって改善されている場合である”
11
そもそも機械学習 is 何(超意訳)
“学習とは経験により改善する行為”
12
そもそも機械学習 is 何(超意訳)
“学習とは経験により改善する行為”事例既知のデータ
反省一般化
13
そもそも機械学習 is 何(超意訳)
既知データから一般化することで…
未知のデータに対する有用な予測を行う機械学習の目的
Wikipediaからの受け売りなのは内緒です14
シシトウ分類問題
• 例:分類問題
「シシトウが辛いか辛くないか」
15画像は http://www.kochi-marugoto.pref.kochi.lg.jp/kensanpin/shishito/より
シシトウ分類問題
事例から「辛い」「辛くない」を判別したい…
• 種:110個 匂い:中 正解:辛くない
• 種:120個 匂い:弱 正解:辛くない
• 種: 70個 匂い:弱 正解:辛くない
• 種: 90個 匂い:強 正解:辛い
• 種: 20個 匂い:弱 正解:辛い
• 種: 40個 匂い:中 正解:辛い
16
シシトウ分類問題
事例から「辛い」「辛くない」を判別したい…
• 種:120個 匂い:強 正解:???
• 種: 60個 匂い:中 正解:???
17
シシトウ分類問題
0 40 80 120 160
辛さ
種の数
分離平面
18
シシトウ分類問題
0 40 80 120 160
辛さ
種の数
分離平面
19
シシトウ分類問題
0 40 80 120 160
辛さ
種の数
分離平面
20
シシトウ分類問題
事例から「辛い」「辛くない」を判別したい…
• 種:120個 匂い:強 正解:???
• 種: 60個 匂い:中 正解:???
21
シシトウ分類問題
事例から「辛い」「辛くない」を判別したい…
• 種:120個 匂い:強 予測:辛くない
• 種: 60個 匂い:中 予測:辛い
22ちなみにデータは根拠のない値なので注意
23
ちょっとまって!
「それ、ルールで分類出来るよね?」
24
頑張ればルールで書ける
• 単純な現象であれば人手で書いたほうが早い・正確
• 機械学習はしばしば意図しない学習も多い
しかし、機械学習を用いると…
• 再学習を行うことで入力に適応したモデルを再構築
• 人手では捉えきれない特徴や相関も自動で獲得
25
シシトウ分類問題
例えばこんな問題
シシトウ分類問題
実際のデータは…
• 種:120個 匂い:強 予測:辛くない 不正解
• 種: 60個 匂い:中 予測:辛い 正解
再度学習を行う
26
シシトウ分類問題
0 40 80 120 160
辛さ
種の数
(90, 3)
(40, 2) (60, 2)
(20, 1) (70, 1)
(100, 2)
(120, 1)
(120, 3)
27
右側は修正方法が気になる人向け
分離平面の修正方法①
・問題定義線形識別関数の一般系を定義・入力 𝑥 = (𝑥1, 𝑥2, … , 𝑥𝑛)・関数
・出力 y = +1 (𝐹 𝑥 > 0)
−1 (𝐹 𝑥 < 0)
重みベクトル𝒘 = (𝒘𝟎, 𝒘𝟏, … , 𝒘𝒏)
を求めたい!
𝐹 𝑥 = 𝑤0 + 𝒘 ⋅ 𝒙
= 𝑤0 + 𝑤1𝑥1 +⋯+ 𝑤𝑛𝑥𝑛
シシトウ分類問題
0 40 80 120 160
辛さ
種の数
(90, 3)
(40, 2) (60, 2)
(20, 1) (70, 1)
(100, 2)
(120, 1)
(120, 3)
28
右側は修正方法が気になる人向け
分離平面の修正方法②
・方針すべての訓練データについて出力と正解が一致するようにする
・アルゴリズム
ランダムに訓練データ𝑥𝑖を取得正解が正、予測が負の場合:
𝑤 ≔ 𝑤 + 𝑥𝑖 で更新正解が負、予測が正の場合:
𝑤 ≔ 𝑤 − 𝑥𝑖 で更新𝑤の値が収束するまで繰り返す
シシトウ分類問題
0 40 80 120 160
辛さ
種の数
(90, 3)
(40, 2) (60, 2)
(20, 1) (70, 1)
(100, 2)
(120, 1)
(120, 3)
29
右側は修正方法が気になる人向け
分離平面の修正方法③
・なぜ学習可能か例えば正例の場合は
のように重みを更新できるため。
単純パーセプトロン[ローゼンブラッド, 1957]
𝑤′ ⋅ 𝑥𝑖 = 𝑤 + 𝑥𝑖 ⋅ 𝑥𝑖
= 𝑤 ⋅ 𝑥𝑖 + 𝑥𝑖 ⋅ 𝑥𝑖 > 𝑤 ⋅ 𝑥𝑖
シシトウ分類問題
実際のデータは…
• 種:120個 匂い:強 予測:辛い 正解
• 種: 60個 匂い:中 予測:辛い 正解
分類できるように改善された!
30
そもそも機械学習 is 何(超意訳)
“学習とは経験により改善する行為”
(再掲)
31
32
さまざまな機械学習
• データセットとやりたいことによって選択o 教師あり学習
与えられるもの:入力と対応する出力の組
入力から出力を導くためのモデル(パターン)を学習する
o 教師なし学習 与えられるもの:入力のみ
入力からパターンを見つける
o 強化学習など…
33
さまざまな機械学習
• 教師あり学習o 分類問題: 入力から対応するラベルを求める
o 回帰問題: 入力から対応する値を求める
など…
• 教師なし学習o クラスタリング:入力から共通の特徴を持つような部分集合を出力する
o 異常検出: データ中の特徴的な点を検出する
など…
34
教師あり学習
35
線形分類
「入力ベクトルに対応する出力ラベルを学習」o シシトウ問題:(種の数, 匂い)⇒(辛いか否か)
例: (90, 3)→ +1, (110, 2)→ -1
• 評価尺度:損失関数(小さいほうが良い)
o しきい値関数 r 𝑥𝑖 , 𝑦𝑖 = 0 𝑦𝑖𝑥𝑖 > 01 𝑦𝑖𝑥𝑖 < 0
単純パーセプトロン
o ヒンジ関数 r 𝑥𝑖 , 𝑦𝑖 = max(0, 1 − 𝑦𝑖𝑥𝑖) SVM
など、様々な関数を用いて損失関数を構築
36
SVMのメリットと評価尺度のイメージ
• 評価尺度のイメージo しきい値関数: 不正解の数
o ヒンジ関数: 不正解・正解の信頼度
SVMと とは何も関係がないです
0 40 80 120 160
しきい値関数:分類できればおk0 40 80 120 160
ヒンジ関数:なるべく安定して分類できるよう分離平面を調整
マージン最大化
SVM
検出器がミス
画像は https://en.wikipedia.org/wiki/Hinge_loss より
37
線形回帰
「入力ベクトルに対応する出力(連続値)を学習」o シシトウ問題:(種の数, 匂い)⇒(辛さ値)
例: (90, 3)→ 8.2, (110, 2)→ 0.5
• 評価尺度:損失関数(小さいほうが良い)o 最小二乗法 r 𝑥𝑖 , 𝑦𝑖 = 𝑦𝑖 − 𝑓(𝑥𝑖)
2 線形回帰
o 対数損失 r 𝑥𝑖 , 𝑦𝑖 = log(1 + exp(−𝑚))ロジスティック回帰
など、様々な関数を用いて損失関数を構築
38
線形回帰とロジスティック回帰
• 線形回帰o 値は無制限 ⇒数量予測などに利用
• ロジスティック回帰o 値が0~1に収束 ⇒確率予測などに利用
最小二乗法 ロジスティック回帰(sigmoid関数)
ロジスティック回帰の出力にしきい値を設定して、しきい値関数を適用すれば分類問題とも言えるね!
画像は http://www2.my-pharm.ac.jp/~info1/info_p07/kadai4/kadaix/exe_x_leastsq.htmより 画像は http://tikalon.com/blog/blog.php?article=2011/sigmoidより
39
線形分類・線形回帰
• この問題は学習可能か?
0
1
0 1
40
線形分離可能
n次元空間上のふたつの点の集合をn-1次元の超平面で分離できることを線形分離可能と呼ぶ
定義
ちなみにこれはたぶん別の意味
41
線形分離可能(わかりやすく)
ふたつの点の集合をある面から見たときに、直線で分離できることを線形分離可能と呼ぶ
定義
42
線形分類・線形回帰
• この問題は学習可能か?
0
1
0 1
実は線形モデルでは線形分離可能な問題しか解けない!
43
非線形分離問題の解決策
• 学習に向けたアプローチ
o カーネルを使う
o 非線形なモデルを使う
44
非線形分離問題の解決策
• 学習に向けたアプローチ
o カーネルを使う
既存の値と相関のある新しい次元を作り出す
例:多変数関数の適用、組み合わせなど
𝑧 = 𝑥 ⋅ 𝑦を導入すると…
o 非線形なモデルを使う画像出典: https://github.com/levelfour/machine-learning-2014/wiki/%E7%AC%AC3%E5%9B%9E---%E5%A4%9A%E5%B1%A4%E3%83%91%E3%83%BC%E3%82%BB%E3%83%97%E3%83%88%E3%83%AD%E3%83%B3
45
非線形分離問題の解決策
• 学習に向けたアプローチ
o カーネルを使う
既存の値と相関のある新しい次元を作り出す
例:多変数関数の適用、組み合わせなど
𝑧 = 𝑥 ⋅ 𝑦を導入すると…
o 非線形なモデルを使う画像出典: https://github.com/levelfour/machine-learning-2014/wiki/%E7%AC%AC3%E5%9B%9E---%E5%A4%9A%E5%B1%A4%E3%83%91%E3%83%BC%E3%82%BB%E3%83%97%E3%83%88%E3%83%AD%E3%83%B3
46
非線形分離問題の解決策
• 学習に向けたアプローチ
o カーネルを使う
既存の値と相関のある新しい次元を作り出す
例:多変数関数の適用、組み合わせなど
𝑧 = 𝑥 ⋅ 𝑦を導入すると…
o 非線形なモデルを使う画像出典: https://github.com/levelfour/machine-learning-2014/wiki/%E7%AC%AC3%E5%9B%9E---%E5%A4%9A%E5%B1%A4%E3%83%91%E3%83%BC%E3%82%BB%E3%83%97%E3%83%88%E3%83%AD%E3%83%B3
47
非線形分離問題の解決策
• 学習に向けたアプローチ
o カーネルを使う
o 非線形なモデルを使う
48
非線形分離問題の解決策
• 学習に向けたアプローチ
o カーネルを使う
o 非線形なモデルを使う
ニューラルネットワーク
決定木
ランダムフォレスト
など…
最近特にとてもアツいやつ
49
ニューラルネットワーク
• フィードフォワードニューラルネットo 特に有名なニューラルネットワークモデル
o 単純パーセプトロンと多層パーセプトロンの2種類
𝑋𝑖+1 = 𝑓 𝐴𝑖𝑋𝑖 + 𝐵𝑖
活性化関数
重みパラメータ
バイアスパラメータ
多層パーセプトロンの学習に用いる誤差逆伝播法はニューラルネット第1次氷河期のブレイクスルーです
…
50
(余談)Deep Learningとは
• 最近すごく話題のやつ
• 定義o 「3層以上の多層なニューラルネットワーク」
https://ja.wikipedia.org/wiki/ディープラーニング
個人的には「”多層”になっていくことで、より機械の学習に対する負担が増える。そして”Deep”に(深く)学習ができる」的なニュアンスで捉えています
51
教師なし学習
52
クラスタリング
「入力ベクトルを外部基準なしに自動で分類」o 例
入力: {7, 75, 3, 90, 68, 5, 92}, K=3
出力: {{3, 5, 7}, {68, 75}, {90, 92}}
• 主な手法o 階層的クラスタリング
クラスタ間の類似度をもってマージ
結果が階層構造(トーナメントグラフのような感じ)
o 非階層的クラスタリング
割と大ざっぱに指定された個数に分割
結果は階層構造にはならない
53
k平均法(k-means clustering)
• 非階層的クラスタリングアルゴリズムの一種
• 例えば、次のデータをクラスタ数 k=3で処理する例
54
k平均法(k-means clustering)
1.まず入力データをランダムにk個の色に塗る
55
k平均法(k-means clustering)
2.同じ色ごとに各クラスタの中心を計算
56
k平均法(k-means clustering)
3.各点について最も近い中心のクラスタに割り当てなおす
57
k平均法(k-means clustering)
3.各点について最も近い中心のクラスタに割り当てなおす
58
k平均法(k-means clustering)
(2に戻る)再度クラスタの中心を計算しなおす
59
k平均法(k-means clustering)
4.変更がなければ or 変化量が一定以下となれば終了
第2章
それっぽく知っとくML事情
60
61
この章では…
• 各分野でよく用いられている機械学習手法を紹介o 自分が3年間のラボ活で得た知見も合わせてご紹介
o 最先端な手法ではないが、ここ数年の成果を支えている重要で有用な技術
o 各プラットフォームでも比較的簡単に実装できます
• ここから先のスライドは、アップロードできない内容も含まれているので、一部削除されています
62
自然言語処理Natural Language Processing
1
63
Twitter ProfilingDemo
• ユーザーのツイートから性別・職業を分析
64
職業分析・性別分析
65
職業分析・性別分析
• 入力: ユーザーのツイート素性(BoW)
• 出力: 性別・各職業である確率値
• モデル:ロジスティック回帰
C# デスマ コンサート ラボ バイト … 夫 子育て 正解ラベル
10 20 0 1 2 … 0 1 ???
5 5 0 20 20 … 0 0 ???
0 0 3 0 2 … 10 9 ???
66
職業分析・性別分析における入力
• 入力に用いる素性(特徴)は非常に重要o Bag of Words 単語をそのまま入れる
o Polarity classifier ポジティブ・ネガティブなどの分析結果
など…
• その重み(特徴量)も重要o 含まれていた数(各要素の値は1)
o Tf-Idf(トピック依存度)やPMI(共起頻度)を考慮したスコア
• ↑を自動で獲得する仕組みとしてword2vecが提案o 業界全体がかなり注目
67
word2vecDemo
68
word2vec
• 何ができるのかo 単語をベクトル化して表現
o ベクトル化によって単語の加算・減算なども可能 言葉の”意味”って、いったい…?
• 何をうれしいかo 単語の潜在的意味のようなものを捉えた、かなり強力な素性として機械学習に使える
69
(おまけ)word2vecが何をやっているのか
• 大前提(仮説)
「同じ文脈で利用される単語は、同じ意味を持つ」
• やってることo ある[単語|単語集合]が与えられたとき、その[前後に出る単語|中に最も出現しそうな単語]を学習する
中間層において「より少ない次元で単語を表そう」と学習するので、いい感じに文脈を考慮したベクトルが学習される感じです
画像は http://www.fisproject.jp/2014/10/word2vec/より
70
音声信号処理Audio Signal Processing
2
71
声質変換Demo
72
画像情報処理Image Processing
3
CNN (Convolutional Neural Network)
73
重み(フィルタ)𝑤を学習 特徴のあるものだけを残す
画像は http://systemdesign.altera.com/can-you-see-using-convolutional-neural-networks/より
74
特徴抽出
• 自然言語処理o 形態素解析:「笑う」「ご飯」など意味を持つ最小単位
• 画像処理o 1画素は0~255を取りうる離散値
o 画素ごとではなく一定領域をまとめて考える
ヒストグラム– SIFT、LBPなど
フィルタ– 微分フィルタ、ラプラシアンフィルタなど
75
フィルタ
• この行列、何をするものかわかりますか?
−1 0 1−1 0 1−1 0 1
• [0,2]で40km進んだ
• [0,1]で20km進んだ
• [0, 0.5]で10km進んだ
76
微分の直感的説明
0
10
20
30
40
0 0.5 1 1.5 2
距離
[km
]
時間 [h]
20km/h
20km/h
20km/h
• [0,2]で40km進んだ
• [0,1]で30km進んだ
• [0, 0.5]で20km進んだ
0
10
20
30
40
0 0.5 1 1.5 2
距離
[km
]
時間 [h]
20km/h
30km/h
40km/h
• [0,2]で40km進んだ
• [0,1]で20km進んだ
• [0, 0.5]で10km進んだ
77
微分の直感的説明
0
10
20
30
40
0 0.5 1 1.5 2
距離
[km
]
時間 [h]
20km/h
20km/h
20km/h
• [0,2]で40km進んだ
• [0,1]で30km進んだ
• [0, 0.5]で20km進んだ
0
10
20
30
40
0 0.5 1 1.5 2
距離
[km
]
時間 [h]
20km/h
30km/h
40km/h
𝑣 =𝑓 𝑥 + ℎ − 𝑓(𝑥)
ℎ
• [0,2]で40km進んだ
• [0,1]で20km進んだ
• [0, 0.5]で10km進んだ
78
微分の直感的説明
0
10
20
30
40
0 0.5 1 1.5 2
距離
[km
]
時間 [h]
20km/h
20km/h
20km/h
• [0,2]で40km進んだ
• [0,1]で30km進んだ
• [0, 0.5]で20km進んだ
0
10
20
30
40
0 0.5 1 1.5 2
距離
[km
]
時間 [h]
20km/h
30km/h
40km/h
𝑣 = limℎ→0
𝑓 𝑥 + ℎ − 𝑓(𝑥)
ℎ
79
微分の直感的説明
0
10
20
30
40
0 0.5 1 1.5 2
速度
[km
/h]
時間 [h]
0
10
20
30
40
0 0.5 1 1.5 2
速度
[km
/h]
時間 [h]
𝑣 = limℎ→0
𝑓 𝑥 + ℎ − 𝑓(𝑥)
ℎ
80
微分の直感的説明
0
10
20
30
40
0 0.5 1 1.5 2
速度
[km
/h]
時間 [h]
0
10
20
30
40
0 0.5 1 1.5 2
速度
[km
/h]
時間 [h]
𝑓′(𝑥) = limℎ→0
𝑓 𝑥 + ℎ − 𝑓(𝑥)
ℎ
変化量(直線の傾き)の推移を求める
81
微分の直感的説明
0
10
20
30
40
0 0.5 1 1.5 2輝度の変化
[km
/h]
時間 [h]
0
10
20
30
40
0 0.5 1 1.5 2輝度の変化
[km
/h]
時間 [h]
𝑓′ 𝑥 =𝑓 𝑥 + 1 − 𝑓 𝑥
1
変化量(直線の傾き)の推移を求める
20 40 60 80 20 60 60 80
82
微分の直感的説明
0
10
20
30
40
0 0.5 1 1.5 2輝度の変化
[km
/h]
時間 [h]
0
10
20
30
40
0 0.5 1 1.5 2輝度の変化
[km
/h]
時間 [h]
𝑟 𝑥 =𝑓 𝑥 + 1 − 𝑓 𝑥
1+𝑓 𝑥 − 𝑓(𝑥 − 1)
1= 𝑓 𝑥 + 1 − 𝑓(𝑥 − 1)
変化量(直線の傾き)の推移を求める
20 40 60 80 20 60 60 80-1 0 1
83
微分の直感的説明
𝑟 𝑥 =𝑓 𝑥 + 1 − 𝑓 𝑥
1+𝑓 𝑥 − 𝑓(𝑥 − 1)
1= 𝑓 𝑥 + 1 − 𝑓(𝑥 − 1)
変化量(直線の傾き)の推移を求める
0 20 40 60 80 0 20 60 60 80
20 40 40 40 20 20 60 40 20 20
-1 0 1
84
微分の直感的説明
𝑟 𝑥, 𝑦 = 𝑓 𝑥 + 1, 𝑦 + 1 + 𝑓 𝑥 + 1, 𝑦 + 𝑓 𝑥 + 1, 𝑦 − 1−𝑓 𝑥 − 1, 𝑦 + 1 − 𝑓 𝑥 − 1, 𝑦 − 𝑓(𝑥 − 1, 𝑦 − 1)
変化量(直線の傾き)の推移を求める
0 20 40 60 80 0 20 60 60 80
-1 0 1
-1 0 1
-1 0 120 40 40 40 20 20 60 40 20 20
85
Prewittフィルタ
• この行列、何をするものかわかりますか?
(再掲)
−1 0 1−1 0 1−1 0 1
• 元画像 • 処理後
86
Prewittフィルタ
画像は http://www.mis.med.akita-u.ac.jp/~kata/image/sobelprew.htmlより
CNN (Convolutional Neural Network)
87
重み(フィルタ)𝑤を学習
分類を学習特徴抽出を学習
特徴のあるものだけを残す
画像は http://systemdesign.altera.com/can-you-see-using-convolutional-neural-networks/より
88
重みを可視化した例
画像は https://devblogs.nvidia.com/parallelforall/deep-learning-nutshell-core-concepts/より
89
絵師判定Demo
おわりに
90
91
機械学習分野にかける期待
• (現状では)機械学習は、人間が機械にとって学習しやすいような環境(入力や学習モデルなど)がなければ学習できない
• つまり人間自身がある程度解決できる問題でないと、機械にとっても学習は難しい
まずは人手で問題を解こうとして見ることが
機械学習への第一歩
92
機械学習分野にかける期待
• (そのうえで)機械学習はしばしば人間の思考を凌駕するo データマイニングなどはそこが重要
• 頭のいい人たちによって日々優れた枠組みが提案
• 学習がDeepになるにつれて、人間が負担すべきタスクが少なくなっていくo CNNなどは特徴抽出までも機械に任せている
93
おわりに
「よくわからないけど、機械学習なら
できるでしょ」(思考放棄)
「お、そうか(?)」
94
おわりに
「機械学習ならどうやって解けるかな?」
「そうだね、どこを学習してもらおうか」