オンライン機械学習 豊橋技術科学大学 梅村オンライン機械学習...

62
オンライン機械学習 豊橋技術科学大学 梅村

Upload: others

Post on 29-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

  • オンライン機械学習

    豊橋技術科学大学 梅村

  • 前処理理:対象をモデル化•  ⼊入⼒力力された⽣生データをキーとバリューで表現

    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* = argminw

    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* = argminw

    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 

  • パーセプトロンアルゴリズム⼊入⼒力力:  {(xi,  yi)|  i  =  1…N,  yi∈{+1,-‐1}  }  w  =  (0,0,….0)  //  初期化

    repeat  for  i  in  [1,…,N]      //  訓練データを取ってくるs  :=  yiwTxi          //  wTxi  の符号が現在の予測          //  yiwTxi  の符号が現在の予測の正/誤if  (s  

  • 詳細の説明の前のパーセプトロンのデモ

  • パーセプトロンの動作(1)

    2次元平⾯面上の問題:      原点を通る直線で領領域を分ける。  (a,  b)のラベルが1と分かったとき、  ax+by=0  の  直線でわけ    ax+by>0なら1,  ax+by

  • パーセプトロンの動作(2)

    2次元平⾯面上の問題:      原点を通る直線で領領域を分ける。  ⼤大きさ1のベクトル(a,  b)のラベルが1,  ⼤大きさ1のベクトル(c,  d)のラベルが-‐1,  (a-‐c)x+(b-‐d)y=0  の  直線でわけ  ax+by>0なら1,  ax+by

  • パーセプトロンの動作(3)

    2次元平⾯面上の問題:      原点を通る直線で領領域を分ける。  (a,  b)のラベルが1の場合、  (c,  d)のラベルが-‐1の場合  (a-‐c)x+(b-‐d)y=0  の  直線でわけ  ax+by>0なら1,  ax+by

  • パーセプトロンの動作(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  

  • 下記入力に対するパーセプトロン学習ステップ

    入力:{  ((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,0max( xwTy−

    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  

  • 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  

  • 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  

  • Passive  Aggressive最大マージン識別関数  のデモ

  • 過学習の問題  L1正則化

  • 大きな値の重み 〜 過学習の問題

    •  訓練例を正しく分類するために、大きな値の重みとなるケースがある。(過学習)  

     •  ひとつのWi  大きな重み   

    〜 対応する特徴i一つで識別がほぼ決まることになる。特徴がまれだと正当性に疑問がある。(モロッコ出身だと女性?)  

    w* = argminw

    l(xi, yi;w)i=1

    n

    ボーイッシュなモロッコ出身の女性の訓練例があるとする。 正しく識別するため、モロッコ出身という特徴の重みが増える。

  • 過学習を防ぐ最適化による学習

    •  訓練例{(xi,  yi)|  (i=1…N)}を利用し、分類器を特徴付けるパラメータwを学習  

    w* = argminw

    l(xi, yi;w)i=1

    n

    ∑ + R(w)損失関数:どれだけ訓練例に 合致しないものがある程度

    正則化項: wの形が 事前知識と 違っている程度

  • 正則化項のある凸最適化問題

    •  F(w)を最小にするようなwを求める  よく使われる正則化項  L:ノルム 〜 wの大きさ–  L1ノルム :  要素の絶対値の合計–  L2ノルム :  要素の自乗の合計– 両方とも凸関数

    F(w) = l(xi, yi;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  

  • L1正則化によるモデルの  コンパクト化

    L1正則化を学習に使うと  学習時に特徴選択も同時に行うことになる。    重みの小さい特徴は、学習時に重みを0とすること

    によって、無視されることになる。  

  • L1正則化による学習結果の特徴  

    •  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」のキーで画像ファイルができる。