NNがトレーニングされたら、たとえば。質問で述べたようにバックプロゲーションを使用すると(バックプロゲーションロジックはエラー関数を最小化する方法で重みを「微調整」します)、すべての個々の入力(「外部」入力またはNN内入力)に関連付けられた重みは固定されます。NNは、分類の目的で使用できます。
これにより、学習フェーズ中の数学(および「オプション」)は少し厚くなる可能性がありますが、分類子として操作する場合は比較的単純で簡単です。主なアルゴリズムは、各ニューロンのアクティブ化値を、そのニューロンの入力x重みの合計として計算することです。次に、この値は、正規化してブール値に変換することを目的とした活性化関数に送られます(通常、一部のネットワークには、一部のレイヤーにオールオアナッシングルールがないため)。活性化関数は、指定したよりも複雑になる可能性があります。特に線形である必要はありませんが、その形状(通常はシグモイド)が何であれ、同じように動作します。つまり、活性化が曲線のどこに収まるかを把握し、該当する場合は上記を参照してください。またはしきい値を下回っています。
これを念頭に置いて、パーセプトロンの推測(または実際には推測-複数形)をパーセンテージ値で修飾する機能を使用するという質問は、簡単な答えを見つけます。正規化が必要な場合)、質問で説明されているアクティブ化関数としきい値/比較方法を使用して、離散値(ブール値または複数のカテゴリの場合はカテゴリID)に変換する前に。
だから...どのようにそしてどこで「私のパーセンテージ」を取得するのですか?...すべてはNNの実装に依存し、さらに重要なことに、実装は0-1のアクティベーション値をもたらすために使用できる正規化関数のタイプを指示します範囲と、すべてのパーセンテージの合計が1になるように「合計」します。最も単純な形式では、アクティブ化関数を使用して値を正規化し、出力層への入力の重みを要素として使用して、次のことを確認できます。 1つの質問に「合計」します(これらの重みが実際に正規化されている場合)。
Etvoilà!
明確化:(マシューのメモに従う)
ニューラルネットワーク自体の動作方法を変更する必要はありません。必要なのは、出力ニューロンのロジックに何らかの形で「フック」して、計算した[実数値]の活性化値にアクセスするか、ブール変換の前に、活性化関数の実数値出力にアクセスすることだけです。 (これは通常、しきい値または確率関数に基づいています)。
言い換えると、NNは以前と同じように機能し、トレーニングや認識ロジックは変更されず、NNへの入力は同じままで、さまざまなレイヤー間の接続なども同様です。実際の値のアクティベーションのコピーのみを取得します。出力層のニューロン。これを使用してパーセンテージを計算します。パーセンテージ計算の実際の式は、活性化値の性質とそれに関連する機能(そのスケール、他のニューロンの出力との相対的な範囲など)によって異なります。
ここにいくつかの簡単なケースがあります(質問の提案された出力ルールから取られました)1)単一の出力ニューロンがある場合:その関数の範囲に対する活性化関数によって提供される値の比率が行う必要があります。2)たとえば分類器のように2つ(またはそれ以上の出力ニューロン)がある場合:すべての出力ニューロンが同じ活性化関数を持っている場合、特定のニューロンのパーセンテージは、その活性化関数値をすべての活性化関数の合計で割ったものです。値。活性化関数が変化する場合、個別の活性化関数は一部のニューロンにより多くの重みを与えたいという意図的な欲求を示している可能性があるため、ケースバイケースの状況になり、パーセンテージはこれを尊重する必要があります。