SVMとニューラルネットワークの違いは何ですか?線形svmが同じNNであり、非線形分離可能問題の場合、NNは非表示層の追加を使用し、SVMは空間次元の変更を使用するのは本当ですか?
この質問には2つの部分があります。最初の部分は「これらの方法で学習される機能の形式は何ですか?」です。 NNおよびSVMの場合、これは通常同じです。たとえば、単一の隠れ層ニューラルネットワークは、SVMとまったく同じ形式のモデルを使用します。あれは:
入力ベクトルxが与えられると、出力は次のようになります。output(x)= sum_over_all_i weight_i * nonlinearfunction_i(x)
一般に、非線形関数にはいくつかのパラメーターもあります。したがって、これらのメソッドは、使用する非線形関数の数、それらのパラメーター、およびすべてのweight_i重みの値を学習する必要があります。
したがって、SVMとNNの違いは、これらのパラメーターの設定値を決定する方法にあります。通常、誰かがニューラルネットワークを使用していると言うときは、一連のトレーニング例に関する平均二乗予測誤差を最小限に抑えるパラメーターを見つけようとしていることを意味します。また、ほとんどの場合、 確率的勾配降下 最適化アルゴリズムを使用してこれを実行します。一方、SVMは、トレーニングエラーと「仮説の複雑さ」の測定値の両方を最小限に抑えようとします。そのため、データに適合するだけでなく、ある意味で「単純」な一連のパラメーターが見つかります。機械学習用のOccamのかみそりのように考えることができます。 SVMで使用される最も一般的な最適化アルゴリズムは 順次最小最適化 です。
2つの方法のもう1つの大きな違いは、NN実装での使用方法を使用した場合、確率的勾配降下法が最適なパラメーターのセットを見つけることが保証されないことです。ただし、適切なSVM実装は、最適なパラメーターのセットを見つけます。人々は、ニューラルネットワークが局所的な最小値でスタックする一方で、SVMはスタックしないと言うのが好きです。
NNはヒューリスティックですが、SVMは理論的には確立されています。 SVMは、PAC(おそらくほぼ正しい)の意味での最良のソリューションに向かって収束することが保証されています。たとえば、2つの線形分離可能なクラスの場合、SVMは2つのクラスの最も近い点の中間に直接、分離超平面を描画します(これらはsupport vectorsになります)。ニューラルネットワークは、サンプルを分離する任意の線を描画します。これは、トレーニングセットには適していますが、最適化された汎化特性を持たない場合があります。
したがって、線形分離可能な問題であっても、NNとSVMは同じではありません。
線形的に分離できないクラスの場合、SVMとNNの両方が非線形投影を高次元空間に適用します。 NNの場合、これは隠れ層に追加のニューロンを導入することによって達成されます。 SVMの場合、カーネル関数を使用して同じ効果を得ることができます。カーネル関数の優れた特性は、計算の複雑さは次元の数で増加しないことですが、NNの場合はニューロンの数で明らかに増加します。
いくつかの一般的な回帰および分類データセットで単純な サポートベクターマシンとニューラルネットワーク間のすぐに使える比較 (パラメータ選択なしで)を実行すると、実際的な違いがわかります。SVMは非常に遅くなりますニューラルネットワークの予測速度がはるかに速く、モデルサイズがはるかに小さいときに、多くのサポートベクトルが作成されている場合の予測子。一方、SVMの場合、トレーニング時間ははるかに短くなります。精度/損失に関して-ニューラルネットワークの前述の理論的な欠点にもかかわらず-特に回帰問題では、どちらの方法も同等です-ニューラルネットワークは、しばしばサポートベクターマシンよりも優れています。特定の問題によっては、これが適切なモデルの選択に役立つ場合があります。
SVMとNNはパーセプトロンと同じビルディングブロックを持っていますが、SVMはカーネルトリックを使用して、Y =(x1,2、.. ^ 2、y1,2 ... ^ 2などの変換によって次元を2から3dに上げます)直線を使用して直線的に分離できない平野を分離できます。それのようなデモが欲しいと私に尋ねる:)
実際には、ほとんどの仮定はしばしば真実です。詳しく説明します。線形の分離可能なクラスの場合、線形SVMは非常に優れており、トレーニングがはるかに高速です。非線形クラスの場合、カーネルトリックがあります。これは、データをより高い次元の空間に送信することです。ただし、このトリックには、NNと比較して2つの欠点があります。まず、適切なパラメータを検索する必要があります。これは、高次元で2つのセットが線形分離可能である場合にのみ分類子が機能するためです。現在、パラメーターのテストは、CPU時間を消費するグリッド検索によって行われることがよくあります。もう1つの問題は、この手法全体がNNほど一般的ではないことです(たとえば、NLPの場合、分類子が不十分になることがよくあります)。