5

単層パーセプトロンを使用すると、トレーニング後にパーセプトロンの重みに基づいて2種類のポイントを分離する線である「分離線」(専門用語はわかりません)の方程式を簡単に見つけることができます。多層パーセプトロンで、2種類の点を分離する曲線の方程式(直線ではない)を同様の方法で見つけるにはどうすればよいですか?

ありがとう。

4

1 に答える 1

8

これは、分離境界または曲線の近似を得ようとする試みにすぎません。

データセット

以下に、例のデータセットの 2 つのタイプの間の分離曲線をプロットしました。データセットは、コーセラ (Andrew Ng の機械学習コース) から借用しています。Ex6また、以下のコード スニペットは、Andrew の ML コースのアイデアを借用しています。

ここに画像の説明を入力

境界プロット

分離曲線をプロットするには、

  • まず、トレーニング データに対してニューラル ネットワークをトレーニングします。
  • 必要な粒度を使用してデータの 2D グリッドを生成しますMatlab。これは次のようになります。
    x1plot = linspace(min(X(:,1)), max(X(:,1)), 100)';
    x2plot = linspace(min(X(:,2)), max(X(:,2)), 100)';
    [X1, X2] = meshgrid(x1plot, x2plot);
  • グリッド内の各データ ポイントについて、ニューラル ネットワークを使用して予測ラベルを計算します。
  • グリッドの結果ラベルのクトゥール グラフを描画する
    vals = zeros(サイズ(X1));
    i = 1 の場合:サイズ(X1, 2)
       this_X = [X1(:, i), X2(:, i)];
       % mlpPredict() は、トレーニング済みのニューラル ネットワーク モデルを使用する関数です
       % 予測されたラベルを取得します。
       vals(:, i) = mlpPredict(モデル, this_X);
    終わり

    % 境界をプロットする
    持続する
    [C, Lev] = 輪郭(X1, X2, vals, [0 0], 'Color', 'b');
    待ってください。

境界曲線の正確な数学的表現を得ることのみが目的の場合、この方法は機能しません。この方法では、グリッドで設定した粒度までの曲線の近似しか得られません。

境界の正確な記述が必要な場合は、サポート ベクターのセット全体が境界の記述として機能する可能性があるため、SVM が適切な代替手段になる可能性があります。

輪郭点を使用して境界を近似する

octaveに関する のドキュメントを調べましたcontour。基本的に、同じ引数からによって計算されcontourた等高線行列を使用します。の署名は次のとおりです。Ccontourccontourc

[C, LEV] = contourc (X, Y, Z, VN)

この関数は、行列の等高線を計算しZます。パラメータXYおよびVNはオプションです。

 The return value LEV is a vector of the contour levels.  The
 return value C is a 2 by N matrix containing the contour lines in
 the following format

      C = [lev1, x1, x2, ..., levn, x1, x2, ...
           len1, y1, y2, ..., lenn, y1, y2, ...]

 in which contour line N has a level (height) of LEVN and length of
 LENN.

したがって、曲線の分析的な説明を取得したい場合は、マトリックスCに十分な情報が含まれている必要があります。私のサンプル プロットでは、 を解析した後、C30 レベルになります。第 1 レベルの最初の 6 点の座標を以下に示します。

x: 2.3677e-01   2.3764e-01   2.4640e-01   2.4640e-01   2.4640e-01   2.4640e-01 ...
y: 4.0263e-01   4.0855e-01   4.0909e-01   4.1447e-01   4.2039e-01   4.2631e-01 ...

(0.23677, 0.40263) から始まる等高線上のポイントであることに注意してください。これらの輪郭点を使用すると、複数の線分を使用して曲線を簡単に近似できます (各線分は 2 つの端点によって決定できるため)。

それが役に立てば幸い。

于 2013-01-21T23:30:49.733 に答える