18

カーネルトリックは、非線形問題を線形問題にマッピングします。線形問題と非線形問題の違いは?ドットプロダクトとカーネルトリックの本質

私の質問は次のとおりです。
1.線形問題と非線形問題の主な違いは何ですか?これら2つのクラスの違いの背後にある直感は何ですか?そして、カーネルトリックは、線形分類器を非線形問題でどのように使用するのに役立ちますか?
2.ドットプロダクトはなぜこの2つのケースで非常に重要なのですか?

ありがとうございました。

答えて

33

線形Support Vector Machine (SVM)の多くの分類器は、線形分離可能な問題、すなわち、クラス1に属する点を超平面によってクラス2に属する点から分離することができる問題のみを解決することができる。

多くの場合、直線的に分離できない問題は、データポイントに変換phi()を適用することで解決できます。この変換は、点をフィーチャ空間に変換すると言われています。フィーチャ空間では、ポイントは線形に分離可能であることが期待されます。 (注:これはまだカーネルのトリックではありません...チューニングしておいてください。)

特徴空間の次元が大きいほど、その空間で線形に分離可能な問題の数が多いことが分かります。したがって、理想的には、特徴空間を可能な限り高次元にしたいと考えています。

残念なことに、特徴空間の次元が増加するにつれて、必要とされる計算量も増加する。これはカーネルトリックが入る場所です。多くの機械学習アルゴリズム(その中でもSVM)は、データポイントで実行する唯一の演算が2つのデータポイント間のスカラー積であるように定式化できます。 (私は<x1, x2>によってX1とX2の間のスカラー積を表します。)

を我々はスペースを備えていますし、私たちのポイントを変換する場合は、スカラー積は次のようになります。

<phi(x1), phi(x2)>

キー洞察はということですこのスカラ積の計算を最適化するために使用できるカーネルと呼ばれる一連の関数が存在します。カーネルは)いくつかの機能ファイ(用

K(x1, x2) = <phi(x1), phi(x2)>

という性質を持つ関数K(x1, x2)です。言い換えれば、高次元のフィーチャ空間(ここで、phi(x1)とphi(x2))が "live"になることなく、低次元データ空間(x1とx2が "live" ") - しかし、我々はまだ高次元のフィーチャ空間に変換することの利点を得る。これは、カーネルトリックと呼ばれています。

Gaussian kernelのような多くの一般的なカーネルは、実際にのフィーチャスペースに変換されるトランスフォームのphi()に対応します。カーネルトリックでは、この空間内の点を明示的に表現することなく、この空間内のスカラ積を計算することができます(有限量のメモリを持つコンピュータでは不可能です)。

+1

+1、素敵な説明。 –

+0

+1 - 本当に素敵です。 – duffymo

2
  1. 線形方程式は均質であり、重畳が適用されます。他の既知のソリューションを組み合わせてソリューションを作成できます。これがフーリエ変換がうまく機能する理由の1つです。非線形方程式は均質ではなく、重畳は適用されません。非線形方程式は、通常、反復的なインクリメンタル手法を使用して数値的に解かなければならない。
  2. ドットプロダクトの重要性を表現する方法はわかりませんが、2つのベクトルを取り、スカラーを返します。確かにスカラー方程式の解は、扱う成分が少ないため、ベクトル方程式や高次テンソル方程式を解くことよりも簡単です。

私の直感は物理学に基づいているので、私はAIに翻訳するのが苦労しています。

+0

あなたはカーネルトリックを別のを変換する方法を説明してもらえますか? – unj2

+3

すばやく説明するのは難しいですが、考え方は、ログや半ロググラフ紙にプロットするときに、特定のタイプのデータを直線のように見せるというアイデアと同じだと思います。 (彼らは最近、どのようなログと半ロググラフ紙が何かを子供に示しているのだろうか?) – duffymo

4

主な相違点は、実用的な目的です。線形問題には解決策があります(簡単に見つけられる)か、まったく解決策がないという明確な答えが得られます。問題が分かっていなくても、あなたはこれを多く知っています。線形である限り、答えが得られます。早く。

直感は、ある空間に2本の直線がある場合、それらが交差するかどうかを簡単に確認できます。

問題が線形でない場合は、何でもかまいません。あなたは何も知りません。

2つのベクトルの内積は、以下を意味します。対応する要素の積の合計。あなたの問題は

c1 * x1 + c2 * x2 + c3 * x3 = 0 

であれば(あなたは通常、係数cを知っている、とあなたは変数を探しているのx)、左側はベクトル(c1,c2,c3)(x1,x2,x3)の内積です。

上記の式は線形問題の定義であるため、ドット積と線形問題の間に関連があります。

+0

+1。なぜこれが-1edだったのか分かりません - それは質問の第1部の最初の部分を扱い、他の投稿は対処しませんでした。 –

40

人々が分類問題に関して線形問題を言うとき、それらは通常線形分離可能問題を意味します。 線形分離可能は、入力変数の線形結合である2つのクラスを分離できる関数があることを意味します。たとえば、2つの入力変数x1x2がある場合は、theta1theta2という数字があり、出力を予測するには関数theta1.x1 + theta2.x2で十分です。二次元ではこれは直線に対応し、3Dでは平面になり、高次元空間では超平面になります。

2D/3Dの点と線について考えることで、これらの概念に関する何らかの直感を得ることができます。ここでは例の非常に不自然なペアだ...

2D scatter plot

これは直線的に切り離せない問題のプロットです。赤と青の点を分離できる直線はありません。

3D scatter plot

我々は各ポイントを与える場合は、余分な(特に1 - sqrt(x*x + y*y)座標...私はそれが工夫されていると言いました)、赤と青の点は、z=0を通る2次元平面で分けることができるので、問題は線形に分離可能になります。

うまくいけば、これらの例はカーネルトリックの背後にある考え方の一部を示しています

は次元数の多い空間に問題のマッピングは、より可能性の高い問題は、線形分離可能になるだろうということになります。

カーネルトリックの第2のアイデア(およびそれが非常に難しい理由)は、非常に高次元の空間で作業するのは通常非常に扱いにくく、計算上高価です。しかし、アルゴリズムがポイント間の点積(距離と考えることができる)のみを使用する場合は、スカラーの行列を扱うだけで済みます。実際にマッピングを実行したり、高次のデータを処理したりすることなく、高次の空間で暗黙的に計算を実行できます。

+7

+1、それらのプロットは非常に直感的です。 –

1
+2

[リンクのみの回答](http://meta.stackoverflow.com/tags/link-only-answers/info)はお勧めできませんので、SOの回答は解決策の検索の終点でなければなりません。時間の経過とともに古くなる傾向がある参照の途中降機)。リンクを参考にして、ここにスタンドアロンの概要を追加することを検討してください。 – kleopatra

関連する問題