オンライン機械学習
豊橋技術科学大学 梅村
前処理理:対象をモデル化
• ⼊入⼒力力された⽣生データをキーとバリューで表現
2
自律移動ロボット自体の設計、
開発、評価など が総合的に 書かれた文献、または、自律 移動ロ ボットにおける部分的 なシステム(経路制御、 物体 認識など)の設計について書 かれた文献
キー/バリュー
自律移動 2 ロボット 1
設計 1
文献 1
情報工学分野
情報工学分野 1
モデルのベクトル表現解釈
• ⼊入⼒力力された⽣生データのラベルもベクトルで表す
次元のラベル(キー)/次元の値(バリュー)
3
自律移動ロボット自体の設計、
開発、評価など が総合的に 書かれた文献、または、自律 移動ロ ボットにおける部分的 なシステム(経路制御、 物体 認識など)の設計について書 かれた文献
語ベクトル
x1 = (0…0,2,0…0,1,…,0,1,0, …0,1,0...)
3
“自律移動”’に対応する次元
“ロボット”’に対応する次元
他の要素は0とする。
自律移動 2 ロボット 1
設計 1
文献 1
情報工学分野 ラベル
情報工学分野 Yes/No
y1 = 1 または y1 = -‐1
モデルからの判定
• ⼊入⼒力力された⽣生データのラベルもベクトルで表す
次元のラベル(キー)/次元の値(バリュー)
4
自律移動ロボット自体の設計、
開発、評価など が総合的に 書かれた文献、または、自律 移動ロ ボットにおける部分的 なシステム(経路制御、 物体 認識など)の設計について書 かれた文献
語ベクトル
x1 = (0…0,2,0…0,1,…,0,1,0, …0,1,0...)
4
他の要素は0とする。
自律移動 2 ロボット 1
設計 1
文献 1
情報工学分野 ラベル
情報工学分野 ?
y1 ← if (w'Tx < 0 ) then -‐1 else 1
ベクトル w:判定のためのパラメータ
妥当な重みベクトルの例例
• キー/バリューごとに,ラベルのyes/noに貢献する程度度がある。
• その値がベクトルwのキーの次元の値
• 判定⽅方法を決めたので,ベクトルwの求め⽅方が次の問題になる。
5
自律移動ロボット自体の設計、
開発、評価など が総合的に 書かれた文献、または、自律 移動ロ ボットにおける部分的 なシステム(経路制御、 物体 認識など)の設計について書 かれた文献
語ベクトル
x1 = (0…0,2,0…0,1,…,0,1,0, …0,1,0...) w = (?…?, 5,?…?, 9,…,?,1,?, …? ,-‐1,?...)
5
他の要素は0とする。
自律移動 2 ロボット 1
設計 1
文献 1
情報工学分野 ラベル
情報工学分野 ?
y1 ← if (w'Tx < 0 ) then -‐1 else 1
パラメータ(重み)の学習
準備
• wをいろいろ変えて,f(w)の最小値を与えるw*を 探す。数式ではargminという記号を使う。
• xの関数fが,aという変数で変化するときに,aは関 数の定義域として考えな事を明示するために";"で
xとaを区切る
• ベクトルwとベクトルxの内積はwTxと記述する
w* = argmin
w
f (w)
f (x;a) = ax2
機械学習→重みの学習
• 問題:
– モデル化したデータのベクトルによる
2値分類線形識別関数の決定 → wの決定
• 訓練例{(xi, yi)| i=1…N} を利用し、分類器を特
徴付けるパラメータwを学習する。
• 分類器 y= f(x) は y= if (w'Tx < 0 ) then -‐1 else 1
yi= f(xi) (i=1…Nの大部分)となるのが目標
注:「全部」となる重みwがあるとは限らない
重みの学習
• 訓練例{(xi, yi)| i=1…N}を利用し、分類器を特徴付
けるパラメータwをコストを最小化する枠組みで学 習
• 分類器 y= f(x) = if (wTx < 0 ) then -‐1 else 1
yi= f(xi) (i=1…N) が最小解となるようなコスト関数
• その一つパーセプトロンのコスト関数
yi≠ f(xi) ということは、-‐yi wTxi > 0 でコスト:-‐yi wTxi yi= f(xi) ということは -‐yi wTxi < 0 でコスト:0
w* = arg min
w
l(xi, yi;w)
i=1 n
∑
l(x, y;w) = max(0,−ywTx)
パーセプトロンのコスト関数による重みの学習
• パーセプトロンのコスト関数
yi≠ f(xi) ということは、-‐yi wTxi > 0 でコスト:-‐yi wTxi yi= f(xi) ということは -‐yi wTxi < 0 でコスト:0
• 山登り(山下り)法による更新
• パーセプトロンのコスト関数の重みの更新 yi≠ f(xi) のときw’=w+yi xiとするとコスト減少 Δコスト:-‐yi (w’-‐w)Txi= -‐yi (yi xi)Txi = -‐yi2 xiTxi <0
yi= f(xi) のときw'=wのままで、コスト不変
w* = arg min
w
l(xi, yi;w)
i=1 n
∑
l(x, y;w) = max(0,−ywTx)パーセプトロンアルゴリズム
⼊入⼒力力: {(xi, yi)| i = 1…N, yi∈{+1,-‐1} } w = (0,0,….0) // 初期化
repeat for i in [1,…,N] // 訓練データを取ってくる
s := yiwTxi // wTxi の符号が現在の予測
// yiwTxi の符号が現在の予測の正/誤
if (s <= 0) // 現在の予測が外れた: コストがある。
w := w + yixi // 現在のデータが正しく判定される // ⽅方向へ、重みを調整
endif endfor
unRl (訓練データが全部正解)
l(x, y;w) = max(0,−ywTx)
詳細の説明の前のパーセプトロンのデモ
パーセプトロンの動作(1)
2次元平⾯面上の問題:
原点を通る直線で領領域を分ける。
(a, b)のラベルが1と分かったとき、
ax+by=0 の 直線でわけ
ax+by>0なら1,
ax+by<0なら0と推定する。
つまりw=(a, b)
⾼高次元ベクトルでも同様
(a,b)
w
パーセプトロンの動作(2)
2次元平⾯面上の問題:
原点を通る直線で領領域を分ける。
⼤大きさ1のベクトル(a, b)のラベルが1,
⼤大きさ1のベクトル(c, d)のラベルが-‐1,
(a-‐c)x+(b-‐d)y=0 の 直線でわけ
ax+by>0なら1,
ax+by<0なら0と推定する。
つまり、w=(a,b) – (c, d)とする 妥当
(a,b)
(c, d) w
パーセプトロンの動作(3)
2次元平⾯面上の問題:
原点を通る直線で領領域を分ける。
(a, b)のラベルが1の場合、
(c, d)のラベルが-‐1の場合
(a-‐c)x+(b-‐d)y=0 の 直線でわけ
ax+by>0なら1,
ax+by<0なら0と推定する。
つまり、w=(a,b) – (c, d)
⾚赤い点が正しく分離離できる⽅方向へ回転
(コストが下がる)
(a,b)
(c, d)
パーセプトロンの動作(4)
2次元平⾯面上の問題:
原点を通る直線で領領域を分ける。
(a, b)のラベルが1の場合
(c, d)のラベルが-‐1の場合
学習が進むと分離離できる ところまでか回転が続く つまり、w=(a,b) –3(c, d)
⾚赤い点が正しく分離離できる
ところで、学習が停⽌止する。(コストが0)
(a,b)
(c, d)
w
実行例
パーセプトロンアルゴリズム
⼊入⼒力力: {(xi, yi)| i = 1…N,yi∈{+1,-‐1} } w = (0,0,….0)// 初期化
repeat for i in [1,…,N] // 訓練データを取ってくる
s := yiwTxi // wTxi の符号が現在の予測
// yiwTxi の符号が現在の予測の正/誤
if (s <= 0) // 現在の予測が外れた: コストがある。
w := w + yixi // 現在のデータが正しく判定される // ⽅方向へ、重みを調整
endif endfor
unRl (訓練データが全部正解)
l(x, y;w) = max(0,−ywTx) 学習結果のwはxiの線形結合
下記入力に対するパーセプトロン学習ステップ
入力:{ ((1, 1), 1), ((1, -‐1), -‐1) } 初期値: (0, 0)
ywtx w
i=1, _, (_, _) i=2, _, (_, _) i=1, _, (_, _) i=2, _, (_, _)
(1,1)
(1, −1)
同じ大きさの2つの入力の パーセプトロンのデモ
下記入力に対するパーセプトロン学習ステップ 最初のywtxと最後のwを示す
入力:{ ((1, 1), 1), ((1, -‐1), -‐1) } 初期値: (0, 0)
ywtx w i=1, 0, (1, 1) i=2, 0, (0, 2) i=1, 2, (0, 2) i=2, 2, (0, 2)
xは無視して,yで判定すればよいと学習した。
(1,1)
(1, −1) w
演習: 下記入力に対するパーセプトロン学習 ステップ最初のywtxと最後のwを示せ
入力:{ ((1, 2), 1), ((1, 0), -‐1) } 初期値: (0, 0)
ywtx w
i=1, __, (__, __) i=2, __, (__, __) i=1, __, (__, __) i=2, __, (__, __) i=1, __, (__, __) i=2, __, (__, __)
(1,2)
(1, 0)
異なる大きさの2つの入力の パーセプトロンのデモ
線形識別関数の制限の回避
モデルから特徴ベクトルへの写像
線形識別関数の制限
2次元平⾯面上の問題:
原点を通る直線で領領域を分ける。
識識別できる問題の制限が⼤大きい
線形識別関数の制限
2次元平⾯面上の問題:
原点を通る直線で領領域を分ける。
識識別できないときは,重みが求まらない
下記入力に対するパーセプトロン学習ステップ 6回までの最初のywtxと最後のwを示せ 入力:{ ((2, 2), 1), ((1, 1), -‐1) }
初期値: (0, 0)
i=1, __, (__, __)
i=2, __, (__, __) i=1, __, (__, __)
i=2, __, (__, __) i=1, __, (__, __) i=2, __, (__, __)
(2,2)
(1, 1)
分離できないの2つの入力の パーセプトロンのデモ
下記入力に対するパーセプトロン学習ステップ 6回までの最初のywtxと最後のwを示せ 入力:{ ((2, 2), 1), ((1, 1), -‐1) }
初期値: (0, 0) i=1, 0, (2, 2) i=2, -‐4, (1, 1) i=1, 4, (1, 1) i=2, -‐2, (0, 0) i=1, 0, (2, 2) i=2, -‐4, (1, 1) 停止しない
(2,2)
(1, 1)
3次元空間への変換
2次元平⾯面上の問題を3次元の空間で解く。
2次元平⾯面上の(x, y)を
3次元空間上の(x, y, 1)に対応つける。
パーセプトロン学習結果の
w1x+w2y+w3z = 0の平⾯面は、
2次元空間では、
w1x+w2y+w3=0の直線に対応
⼀一般の直線での分割の学習に対応
具体例
下記入力に対するパーセプトロン学習ステップ 8回までの最初のywtxと最後のwを示せ 入力:{ ((1.0, 1.0, 1.0), 1), ((0.4, 0.4, 1.0), -‐1) } 初期値: (0.0, 0.0, 0.0)
i=1, __, (__, __, __) i=2, __, (__, __, __) i=1, __, (__, __, __) i=2, __, (__, __, __) i=1, __, (__, __, __) i=2, __, (__, __, __) i=1, __, (__, __, __) i=2, __, (__, __, __)
下記入力に対するパーセプトロン学習ステップ 8回までの最初のywtxと最後のwを示せ 入力:{ ((1.0, 1.0, 1.0), 1), ((0.4, 0.4, 1.0), -‐1) } 初期値: (0.0, 0.0, 0.0)
i=1, 0.0, (1.0, 1.0, 1.0) i=2, -‐1.8, (0.6, 0.6, 0.0) i=1, 1.2, (0.6, 0.6, 0.0)
i=2, -‐0.48, (0.2, 0.2, -‐1.0) i=1, -‐0.6, (1.2, 1.2, 0.0) i=2, -‐0.96, (0.8, 0.8, -‐1.0) i=1, 0.6, (0.8, 0.8, -‐1.0) i=2, 0.36, (0.8, 0.8, -‐1.0)
6次元空間への変換
2次元平⾯面上の問題を6次元の空間で解く。
2次元平⾯面上の(x, y)を (x, y, x2, y2, xy, 1)に対 応つける。
パーセプトロン学習結果のの超平⾯面は、
w1x+w2y+w3x2+w4y2+w5xy+w6=0の曲線に対応
2次曲線での分割の学習に対応
線形識別関数の制限の回避のデモ
線形識別関数の制限の回避のデモ
最大マージン識別関数
パーセプトロンの結果の問題点
分離離すれば、停⽌止する。
識識別境界と学習データが近い可能性が⾼高い 遠いほうが良良いが、実現できない。
パーセプトロンのコスト関数
学習サンプルが間違っていれば、識識別⾯面を 間違わない⽅方向に移動する。
l(x, y;w) = max(0,−ywTx)
ywtx L
最大マージン識別関数のコスト関数
学習サンプルが⼗十分に⾃自信をもって判定されて いなければ、識識別⾯面を⾃自信をもって判定する
⽅方向に移動する。
(境界上で正しく判定されても満⾜足しない。)
l(x, y;w) =
ywtx
) 1
, 0
max( − ywTx
ywtx
L L
単純な
最大マージン識別関数の学習
⼊入⼒力力: {(xi, yi)| i = 1…N, yi∈{+1,-‐1} } w = (0,0,….0) // 初期化
repeat for i in [1,…,N] // 訓練データを取ってくる
s := yiwTxi // wTxi の符号が現在の予測の正誤指標
if (s <=1) // 誤り(負)or⾃自信がない(⼩小さな正)
w := w + αyixi // 特徴ベクトルを⾜足す
endif endfor
unRl (訓練データが全部正解)
ただしαは、⼗十分⼩小さな正の数, ⼤大きいと マージンが⼗十分にとれなくなる。
l(x, y;w) = max(0,1− ywTx)
Passive Aggressive最大マージン識別関数
単純なアルゴリズムの問題点
更更新を⼩小さくするとマージンがとれるが、
⼩小さくすると学習速度度が遅い
単純な最大マージン識別関数の 学習の問題
⼊入⼒力力: {(xi, yi)| i = 1…N, yi∈{+1,-‐1} } w = (0,0,….0)// 初期化
repeat for i in [1,…,N] // 訓練データを取ってくる
s := yiwTxi // wTxi の符号が現在の予測の正誤指標
if (s <=1) // 誤り(負)or⾃自信がない(⼩小さな正)
w := w + αyixi // 特徴ベクトルを⾜足す
endif endfor
unRl (訓練データが全部正解)
αの上⼿手な決め⽅方が必要
l(x, y;w) = max(0,1− ywTx)
Passive Aggressive Algorithm
[Crammer, JMLR 06]
• 直感的には
現在の訓練例はコストをぴったり0にする。
or 現在の訓練例の場所を,自信のあるなかでは,
いちばん自信の程度が小さい場所にする。
ti = l(xi , yi; w) / xi Txi w := w + tiyixi
passive aggressive
最大マージン識別関数学習
⼊入⼒力力: {(xi, yi)| i = 1…N, yi∈{+1,-‐1} } w = (0,0,….0)// 初期化
repeat for i in [1,…,N] // 訓練データを取ってくる
s := yiwTxi // wTxi の符号が現在の予測の正誤指標
if (s <=1) // 誤り(負)or⾃自信がない(⼩小さな正)
ti = l(xi , yi; w) / xi Txi// 適切切な刻み幅を計算し
w := w + tiyixi // 特徴ベクトルを⾜足す
endif endfor
unRl (訓練データが全部正解)
) =
; ,
(x y w
l max(0,1− ywTx)
Passive Aggressive最大マージン識別関数 のデモ
過学習の問題
L1正則化
大きな値の重み 〜 過学習の問題
• 訓練例を正しく分類するために、大きな値の 重みとなるケースがある。(過学習)
• ひとつのWi 大きな重み
〜 対応する特徴i一つで識別がほぼ決まることに なる。特徴がまれだと正当性に疑問がある。(モ ロッコ出身だと女性?)
w
*= arg min
w
l ( x
i, y
i; w )
i=1 n
∑
ボーイッシュなモロッコ出身の女性の訓練例があるとする。
正しく識別するため、モロッコ出身という特徴の重みが増える。
過学習を防ぐ最適化による学習
• 訓練例{(xi, yi)| (i=1…N)}を利用し、分類器を特
徴付けるパラメータwを学習
w
*= arg min
w
l ( x
i, y
i; w )
i=1 n
∑ + R( w )
損失関数:どれだけ訓練例に 合致しないものがある程度
正則化項:
wの形が 事前知識と
違っている程度
正則化項のある凸最適化問題
• F(w)を最小にするようなwを求める
よく使われる正則化項 L:ノルム 〜 wの大きさ
– L1ノルム : 要素の絶対値の合計 – L2ノルム : 要素の自乗の合計 – 両方とも凸関数
F ( w) = l ( x
i, y
i; w )
i=1 n
∑ + R(w )
Wの形の事前知識
R(W) = Σ |Wi |
これを最小化する山下りの更新方法は、
w'i = sign(wi)max(|wi |– θ, 0) ただし、sign(α)は
αの同じ符号の1または-‐1
θは正の小さな定数
wi w'i
L1 正則化つき
最大マージン識別関数学習
⼊入⼒力力: {(xi, yi)| i = 1…N, yi∈{+1,-‐1} } w = (0,0,….0) // 初期化
repeat for i in [1,…,N] // 訓練データを取ってくる
s := yiwTxi // wTxi の符号が現在の予測の正誤指標
if (s <=1) // 誤り(負)or⾃自信がない(⼩小さな正)
ti = l(xi , yi; w) / xi txi// 適切切な刻み幅を計算し
w := w + tiyixi // 特徴ベクトルを⾜足す
elsefor(j ) { wj = sign(wj)max(|wj |– θ, 0) ; } endif endfor
unRl (適切切な回数まで)
l(x, y;w) = max(0,1− ywTx)
L1正則化によるモデルの コンパクト化
L1正則化を学習に使うと
学習時に特徴選択も同時に行うことになる。
重みの小さい特徴は、学習時に重みを0とすること によって、無視されることになる。
L
1正則化による学習結果の特徴
• L1正則化の場合、重みwkの多くが0になる
– 特徴選択が実現できる
– 学習結果の解釈が易易しくなる。
– 識識別関数の実⾏行行が⾼高速でメモリも少なくて済 む
L1正則化のデモ
オンライン学習アルゴリズム まとめ
オンライン学習
• 訓練例例を1つずつ⾒見見てwを更更新する
メモリ上に学習データが全部乗らなくても実⾏行行 できる。
• 最近の巨⼤大なデータを対象に機械学習す るために必要な性質
オンライン学習
• 実装は簡単/更更新⽅方法の解析は難しい 更新のさじ加減が性能を左右する。
学習の結果の重みは尊重する。
新しい学習結果と矛盾したデータを無視しな い。
オンライン学習 実装は簡単だが、
最大マージン識別関数学習アルゴリズム
は、Support Vector Machineの近似である。
実際上は Support Vector Machineとして使える。
サンプル(デモプログラム)情報
processingで実装
ダウンロードurl:
hpp://www.ss.cs.tut.ac.jp/umemura/lecture-‐ML-‐2012/
MLOnLine.tazをtar –xvzfで展開後、processingで実行
サンプルデータの作成は、java MLControllerでSAMPLEで始まる ファイルを作成。
やってみませんか?
デモプログラムをダウンロードし、実行する。
ファイル、"SAMPLE.dat"を書き換えて、自分の 作った学習サンプルを用意し、それの学習結 果を観察する。
なお、「p」のキーで画像ファイルができる。