狠狠撸

狠狠撸Share a Scribd company logo
線形分類器で非線形分離
+文章生成してみた
押川令
線形分類器(概要)
f(x)=w?x+b (w:重みベクトル、b:バイアス項)で表される分離
超平面のどちら側にあるのかで判断
このパラメーターwを最適化する
今回はオンライン学習なので、
このパラメーターを与えられたデータ
一つごとにパラメーターを微妙に更新していく
線形分類器(概要)
目的関数L(w)= ? ?(? ? , ? ? , ?) →誤差的なもの
この値を最小化すればいい
○勾配降下法
全てのデータについて、
L(w) をwの各要素で
偏微分して勾配を求め
下りの方向にwを動かす
→すべてのデータに関して誤差が減っ
ていく
○確率勾配降下法
一つのデータに対してそれのみ
の勾配を求める
→そのデータに対して誤差が減るL w が凸関数なら
最後には一番最小となる点にたどり着く
線形分類器(概要)
? (単純)パーセプトロン
目的関数: ? max(?????(?)
, 0)
分離に失敗したら分離超平面までの距離を返す
偏微分すると勾配は????
→下がっているほうに更新するので +y?xで更新
ここを減らしていく
線形分類器(概要)
? ハードマージンSVM(サポートベクトルマシン)
データの境界のできるだけ中央に境界を引きたい
全て超平面で分類可能であるとして
分離超平面と最も距離の近いデータ点の距離
|???+?|
||?||
が最大に
なるようにする
→wはいくらでも大きくなるのでサポートベクトルについて|? ?
? + ?|=1としてよい
つまりすべてのデータにおいて ? ? ? + ? ≥1の時、
||?||を最小化したい
線形分類器(概要)
? ハードマージンSVM(サポートベクトルマシン)
データの境界のできるだけ中央に境界を引きたい
全て超平面で分類可能であるとして
分離超平面と最も距離の近いデータ点の距離
|???+?|
||?||
が最
大になるようにする
ここを
1
||?||
と置いて、それを最大化する
線形分類器(概要)
? ソフトマージンSVM(サポートベクトルマシン)
目的関数: ? max 1 ? ???? ?
, 0 + ?||?||2
→分離不可能なデータについては制約を満たさない
制約の代わりにペナルティ≥ 1 ? ???? ?
を組み込む
?||?||2は極端なデータが与えられたとき
パラメータが無限に発散してしまうのを防ぐ
同様に偏微分して勾配は 1 ? ?? ? ? ≥ 0 の時???? +
2??
線形分類器(概要)
? ロジスティック回帰
目的関数: - ? ???
1
1+exp(?? ? ??? ?)
+ ?||?||2
標準シグモイド関数
1
1+exp(?)
は(0,1)の範囲で動く
→xに対しyと出力される確率を表している
これをできるだけ大きくしたい
←みんな100%近く正しい
方に分類されるとよい
確率が半々
線形分類器(概要)
? ロジスティック回帰
目的関数: - ? ???
1
1+exp(?? ? ??? ?)
+ ?||?||2
標準シグモイド関数
1
1+exp(?)
は(0,1)の範囲で動く
→xに対しyと出力される確率を表している
これをできるだけ大きくしたい
対数をとって求めやすくしている
微分不可能な点がないので、偏微分して勾配は常に
(1-
1
1+exp ?? ? ??? ? ) ??? + 2??
:完全に線形分離できる問題
? ある平面で分離できる
例:
C++で実装してみた
パーセプトロン SVM ロジスティック回帰
99.98 98.82 95.68
※精度はあまり気にせず、収束判定ではなく
読み込む回数を同じにして行っています
→学習できてることがわかる(当たり前)
,そうでもない問題
? 円データ
? n次関数っぽい
パーセプトロン SVM ロジスティック回帰
49.44 50.48 49.36
パーセプトロン SVM ロジスティック回帰
57.22 56.7 52.22
,そうでもない問題
? 円データ
? n次関数っぽい
パーセプトロン SVM ロジスティック回帰
49.44 50.48 49.36
パーセプトロン SVM ロジスティック回帰
57.22 56.7 52.22
ほぼ乱択
? 円データ
? n次関数っぽい
線形分離できない分類問題
? 高次元の特徴空間に変換してみる
元の特徴空間におけるベクトルを,別の次元特徴空間に
変換する適切な関数を考える
(例えばX^2,y^2,xyなどを特徴とする→多項式写像
他にもいろいろな非線形関数を使って写像する)
線形分離できるようになる
線形分離できない分類問題
? 高次元の特徴空間に変換する
(?2
, ?2
, ??)
実装
パーセプトロン SVM ロジスティック回帰
49.44 50.48 49.36
99.00 98.10 94.36
実装
パーセプトロン SVM ロジスティック回帰
57.22 56.7 52.22
81.20 82.56 93.72
? 問題点
変換した特徴空間は無限に高次元になりやすくデータに
対するメモリの消費量が増えてしまう
例えば二次式で写像するとn(n+1)/2
→オンライン学習でなければカーネルトリックを使って、特
徴空間自体を参照しなくても、そこでの内積を求められる
どんな非線形関数を使うかは自分で決めなければならな
い(探索もできる)
? 非線形関数
ほかにも排他的論理和とかtanhとか
非線形分離問題が解けるもの
例:ニューラルネットワーク
線形変換をした後に非線形関数を適用することによって
非線形分離を可能にしている(活性化関数)
文章生成してみた
(多クラス分類)
多クラス分類
? 二値分類を組み合わせたりすることで可能
例:
一対一
全てのクラスの組み合わせについてどちらかを二値分類
し投票数が最も多かったクラス
K*(K-1)/2個の2値分類器が必要
一対他
それぞれのクラスについてそのクラスかどうかの二値分類
器を作り、スコアが最も大きいものを分類結果とする
K個の2値分類器が必要
いろいろ分類してみた
例:iris(アヤメの種類の分類)
4次元の情報をもとに3種類に分割する
→精度:93.4%
例:Handwritten Digits(手書き文字認識)
白黒の手書き文字を10種類(0~9)に分割する
→精度:92%
※一対他
割と線形分離できる
文章?生成
? せっかくなのでなんか活用したものを作ってみただけ
(突貫工事)
? Mecabで単語ごとに分けてから近くの単語同士につい
て、その二つの特徴の関係を調べる。
? 特徴は品詞?活用など
? クラス分類はほぼ品詞
? 主語をランダムに選びそこから次の単語がどんなものに
なるかを多クラス分類で求めてつなげていく
文章?生成
? 適当な文章(単語数10000くらい)を教師として実行
? 前の単語とのセットだけだと無限に同じものが出た
ので何個か前まで評価する
×個人情報の保護について、
○個人情報の保護について、
学習による出力結果を同じ品詞が続かないように調整
文章?生成
? 実行結果例(まあまあましなの)
匿名について建物が寒い
人間からさまざまに挟む
? 品詞の続き方とかだけ文っぽい
? あんまりきれいにはならなかったです…
意味も評価したいところです。(がんばります)
ありがとうございました

More Related Content

线形分类器で非线形分离+文章生成