プログラマーになりたい。

プログラミングや写真や本や読書会のことや、日常のこと。

で、パーセプトロンとSVMの利点欠点がわかんないんですけど

原文

「(非線形の)パーセプトロンとかしらべてたんだけど、もしかしてそこらへん専門!?」て聞かれちった。

はいはい、そうでした、ミクシに研究テーマのせてたんだったよねー。本人が忘れているところでひとり歩きする情報…。ネットこわいです…><。(自業自得)
白状すると、そのとおりパーセプトロンやってました。休学する前は。
基礎っぽいことばっかだけどね。

いくら実態がこれとは言え、さすがに
「…あ、そんなこともやってたかも。てへっ☆」
って返すのも気が引けるので…とかここに書きはじめたら長くなってしまった。
で、内容的には一般的な話なので、ぼくの書いた部分だけを、少し改変して載せちゃいます。ただ、もともとのきっかけが、某マイミク氏からいただいたメッセージなので、許可とってなくて若干お心苦しいのですが…。

で、「非線形の分離」ったらXORみたいなのとかですよね。XORというのは有名な課題らしい。初期の研究が挫折したポイントとしても、そこを乗り越えたのがバックプロパゲーション(誤差逆伝播法)だった、みたいな意味でも。
なので「非線形の分離」といったら妥当な線だと「多層パーセプトロンバックプロパゲーション学習」とかになるでしょうかね?

分かりやすい例がこちらに:
バックプロパゲーションでニューラルネットの学習 - きしだのはてな

ちなみに教師なしで、適当にそれっぽく分けさせてみる(特徴抽出する)なら、自己組織化マップ(SOM: Self-organizing map)というのもあった気がする。
超うろ覚え。

とぼしい知識をもとに比較することに、意味があるのかわからないけど

ニューラルではない手法で、データを分類するというと、SVMというのを聞きますね。けども、あえてわざわざニューラルでやる利点というのは

  • 3クラス以上にわける場合
  • 間違った(矛盾した)データを教えても、ある程度耐える(SVMは知らん)
  • 多少早いかもね?(SVMも最近高速化ライブラリが…)

とかでしょうか。
(利点さえはっきり主張できないおれ涙目。)

ニューラルの応用ってよくわかんない

ただ、ニューラルに限らず応用全般にいえることですが、データをパーセプトロンとかが食べやすいようにする「前処理」みたいなのが、いろいろノウハウがいるようで、よく知らない。調べるのめんどい。

なので、なかなか手を出しにくい感じがして、ぼくは、ほぼやったことがないです。ある分布に従った乱数喰わせて、性能を評価するだけの簡単なお仕事してましたので。
実際にぼくがやるとなると各事例ごとに、トライアンドエラー。どこまでできるか、よく分かりません。


かってに前処理と呼んだけど、それは

x^2、xy、y^2を新たにデータとして追加してるわけですが、要するにこれは2次元データを5次元データに拡張してることになります。2次元じゃ線形分離は無理だけど5次元だと線形分離できますよ、という話。

みたいなことです。

SVMって

なんかSVM(Support Vector Machine)のが、なんか最近は評判がいいっぽいじゃん?
なんか流行ってるじゃん?
(こっちは完璧に専門外で、まじぜんぜん知らないんですが。)

なんかとってもウィキペディアなレベルですが、比較的、挙動が安定・確実な感じ。
ぼくみたいな素人さんでも扱いやすそう(過去、ニューラルで怪我してSVMに乗り換えたという苦情を少なくとも2件は聞きました)。
さらに非線形でも単に2クラス(グループ)に分けるなら、「カーネルトリックを使用したSVM」というのでOKっぽい。

とはいえ、SVMSVMで、非線形かつ3クラス以上になると、これはこれでむずかしいっぽい。@y_benjo(id:repose)先生とか呼ばないと。もう無理す。
http://www.slideshare.net/guest8ee130/svmr-with-yaruo2-presentation

ところで

SVMはよく知らないんですが、結構定義が広そう。一方、「パーセプトロン」といっても、前処理と出力関数の組み合わせを考えるとかなりバリエーションがあります。
なので、ちょっと思ったのは、ある何らかの構成では、まったく同じことをしてるとかいう可能性もあるのかね。

Creative Commons License ©2007-2021 IIDA Munenori.