単一パーセプトロン-非線形評価関数

Source algorithm machine-learning neural-network

単一のパーセプトロンの場合-文献によると、XOR関数のような非線形判別ケースを分離するために使用することはできません。ラインのVC次元(2次元)は3であり、単一の2次元ラインではXORのような出力を区別できないため、これは理解できます。

しかし、私の質問は、なぜ単一パーセプトロンの評価関数が線形ステップ関数である必要があるのか​​ということです。明らかに、シグモイドのような非線形評価関数がある場合、このパーセプトロンはXORの1と0を区別できます。だから、私はここで何かが欠けていますか?
推奨答え
シグモイドのような非線形評価関数がある場合、このパーセプトロンはXORの1と0を区別できます。

それはまったく真実ではありません。識別の基準は、線の形状(または高次元の超平面)ではなく、関数が linear separabilityを許可するかどうかです。

XOR関数の点を分離できる超平面を生成する単一の関数はありません。画像の曲線は点を分離していますが、それは関数ではありません。

XORのポイントを分離するには、少なくとも2本の線(またはその他の形状の関数)を使用する必要があります。これには、2つの別々のパーセプトロンが必要になります。次に、3番目のパーセプトロンを使用して、符号に基づいて中間結果を分離できます。
その他答え #1
シグモイドとは、実際にはシグモイドを意味するのではなく、極大値を持つものを意味すると思います。通常のパーセプトロン二項分類器の形式は次のとおりです。
f(x) = (1 if w.x+b>0 else 0)

あなたは機能を持つことができます:
f(x) = (1 if |w.x+b|<0.5 else 0)

これは確かに機能しますが、データセットに合わせてモデルを効果的に調整しているという点でかなり人工的です。これは悪いことです。

通常のパーセプトロンアルゴリズムが収束するかどうかは、私が間違っているかもしれませんが、ほぼ間違いなく問題外です。 http://en.wikipedia.org/wiki/Perceptron#Separability_and_convergence関数に合わせるためのまったく新しい方法を考え出す必要があるかもしれません。これは、目的を損なうようなものです。

または、パーセプトロンに似たsupport vector machineを使用することもできますが、kernel trickを使用することでより複雑なケースを処理できます。
その他答え #2
古い質問ですが、私は自分の考えを残したいと思います(私が間違っている場合は誰でも私を訂正します)。
linear modellossまたはerror関数の概念が混在していると思います。
パーセプトロンは定義上線形モデルであるため、クラスを分離するために使用できる線/平面/超平面を定義します。

標準のパーセプトロンアルゴリズムは、出力の信号を抽出し、-1または1を与えます。
yhat = signal(w * X + w0)

これは問題なく、データがlinearly separableの場合は最終的に収束します。

これを改善するには、sigmoidを使用して、[-1、1]の範囲の損失関数を平滑化します。
yhat = -1 + 2*sigmoid(w * X + w0)
mean_squared_error = (Y - yhat)^2

次に、最急降下法などの数値オプティマイザーを使用して、データセット全体のエラーを最小限に抑えます。ここで、w0、w1、w2、...、wnは変数です。

これで、元のデータがlinearly separableでない場合は、線形分離可能になるように変換してから、任意の線形モデルを適用できます。モデルがlinear on the weightsであるため、これは当てはまります。

これは基本的に、SVMのようなモデルが非線形データを分類するために内部で行うことです。
PS: I'm learning this stuff too, so experts don't be mad at me if i said some crap.

関連記事

JavaScriptで要素が別の要素の上にあることを検出する方法は?
perlコマンドラインパラメータのエラーを回避し、strictを使用する方法
ワーンズドルフのルールでナイトツアーを改善するにはどうすればよいですか?
hashcode()実装が定数値を返すのに、なぜハッシュテーブルがリンクリストに縮退するのですか?
重複する日付範囲の計算で問題が発生する