38

少し前にニューラル ネットワークについて読んだことがあり、ANN (特にバックプロパゲーションによって学習する多層パーセプトロン) がイベントを真または偽として分類する方法を学習できることを理解しています。

2つの方法があると思います:

1) 1 つの出力ニューロンを取得します。値が > 0.5 の場合、イベントは true である可能性が高く、値が <=0.5 の場合、イベントは false である可能性があります。

2) 2 つの出力ニューロンが得られます。最初の値が 2 番目の値よりも大きい場合、イベントは真である可能性が高く、その逆の場合もあります。

このような場合、ANN は、イベントが真である可能性が高いか、偽である可能性が高いかを示します。どのくらいの可能性があるかはわかりません。

この値をオッズに変換する方法や、ANN からオッズを直接取得する方法はありますか。「イベントが真である確率は 84% です」のような出力を得たいと思います。

4

7 に答える 7

22

NNがトレーニングされたら、たとえば。質問で述べたようにバックプロゲーションを使用すると(バックプロゲーションロジックはエラー関数を最小化する方法で重みを「微調整」します)、すべての個々の入力(「外部」入力またはNN内入力)に関連付けられた重みは固定されます。NNは、分類の目的で使用できます。

これにより、学習フェーズ中の数学(および「オプション」)は少し厚くなる可能性がありますが、分類子として操作する場合は比較的単純で簡単です。主なアルゴリズムは、各ニューロンのアクティブ化値を、そのニューロンの入力x重みの合計として計算することです。次に、この値は、正規化してブール値に変換することを目的とした活性化関数に送られます(通常、一部のネットワークには、一部のレイヤーにオールオアナッシングルールがないため)。活性化関数は、指定したよりも複雑になる可能性があります。特に線形である必要はありませんが、その形状(通常はシグモイド)が何であれ、同じように動作します。つまり、活性化が曲線のどこに収まるかを把握し、該当する場合は上記を参照してください。またはしきい値を下回っています。

これを念頭に置いて、パーセプトロンの推測(または実際には推測-複数形)をパーセンテージ値で修飾する機能を使用するという質問は、簡単な答えを見つけます。正規化が必要な場合)、質問で説明されているアクティブ化関数としきい値/比較方法を使用して、離散値(ブール値または複数のカテゴリの場合はカテゴリID)に変換する前に。

だから...どのようにそしてどこで「私のパーセンテージ」を取得するのですか?...すべてはNNの実装に依存し、さらに重要なことに、実装は0-1のアクティベーション値をもたらすために使用できる正規化関数のタイプを指示します範囲、すべてのパーセンテージの合計が1になるように「合計」します。最も単純な形式では、アクティブ化関数を使用して値を正規化し、出力層への入力の重みを要素として使用して、次のことを確認できます。 1つの質問に「合計」します(これらの重みが実際に正規化されている場合)。

Etvoilà!

明確化:(マシューのメモに従う)
ニューラルネットワーク自体の動作方法を変更する必要はありません。必要なのは、出力ニューロンのロジックに何らかの形で「フック」して、計算した[実数値]の活性化値にアクセスするか、ブール変換の前に、活性化関数の実数値出力にアクセスすることだけです。 (これは通常、しきい値または確率関数に基づいています)。

言い換えると、NNは以前と同じように機能し、トレーニングや認識ロジックは変更されず、NNへの入力は同じままで、さまざまなレイヤー間の接続なども同様です。実際の値のアクティベーションのコピーのみを取得します。出力層のニューロン。これを使用してパーセンテージを計算します。パーセンテージ計算の実際の式は、活性化値の性質とそれに関連する機能(そのスケール、他のニューロンの出力との相対的な範囲など)によって異なります。
ここにいくつかの簡単なケースがあります(質問の提案された出力ルールから取られました)1)単一の出力ニューロンがある場合:その関数の範囲に対する活性化関数によって提供される値の比率が行う必要があります。2)たとえば分類器のように2つ(またはそれ以上の出力ニューロン)がある場合:すべての出力ニューロンが同じ活性化関数を持っている場合、特定のニューロンのパーセンテージは、その活性化関数値をすべての活性化関数の合計で割ったものです。値。活性化関数が変化する場合、個別の活性化関数は一部のニューロンにより多くの重みを与えたいという意図的な欲求を示している可能性があるため、ケースバイケースの状況になり、パーセンテージはこれを尊重する必要があります。

于 2009-10-06T05:05:31.100 に答える
18

できることは、出力層ノードでシグモイド伝達関数を使用することです(データ範囲 (-inf,inf) を受け入れ、[-1,1] の値を出力します)。
次に、1-of-n 出力エンコーディング(クラスごとに 1 つのノード) を使用することで、範囲 [-1,1] を [0,1] にマップし、それを各クラス値の確率として使用できます (これが機能することに注意してください)。当然、2 クラス以上の場合)。

于 2009-10-06T21:49:00.513 に答える
10

単一の出力ニューロンの活性化値は線形に重み付けされた合計であり、ネットワークが0から1の範囲の出力を与えるようにトレーニングされている場合、おおよその確率として直接解釈できます。これは、伝達関数(または出力関数)前のステージと最終出力の提供の両方で、0から1の範囲にもあります(通常はシグモイドロジスティック関数)。ただし、保証はありませんが、修理は可能です。さらに、シグモイドがロジスティックであり、重みが正で合計が1になるように制約されていない限り、それはありそうにありません。一般に、ニューラルネットワークは、tanhシグモイドと、正と負の範囲の重みとアクティブ化を使用して、よりバランスの取れた方法でトレーニングします(このモデルの対称性のため)。もう1つの要因は、クラスの普及率です。50%の場合は0です。5のしきい値はロジスティックに有効であり、0.0のしきい値はtanhに有効である可能性があります。シグモイドは、物事を範囲の中心に向かって(バックプロパゲーションで)押し、範囲外に出ないように(フィードフォワードで)制限するように設計されています。(ベルヌーイ分布に関する)パフォーマンスの重要性は、ニューロンが推測ではなく実際の予測を行っている確率として解釈することもできます。理想的には、予測因子のポジティブへのバイアスは、現実の世界でのポジティブの有病率と一致する必要があります(これは、さまざまな時間と場所で変化する可能性があります。たとえば、強気市場と弱気市場、たとえば、ローンを申請する人とローンの支払いを怠る人の信用力)-確率に合わせて調整することには、任意のバイアスを簡単に設定できるという利点があります。tanhのしきい値は0です。シグモイドは、物事を範囲の中心に向かって(バックプロパゲーションで)押し、範囲外に出ないように(フィードフォワードで)制限するように設計されています。(ベルヌーイ分布に関する)パフォーマンスの重要性は、ニューロンが推測ではなく実際の予測を行っている確率として解釈することもできます。理想的には、予測因子のポジティブへのバイアスは、現実の世界でのポジティブの有病率と一致する必要があります(これは、さまざまな時間と場所で変化する可能性があります。たとえば、強気市場と弱気市場、たとえば、ローンを申請する人とローンの支払いを怠る人の信用力)-確率に合わせて調整することには、任意のバイアスを簡単に設定できるという利点があります。tanhのしきい値は0です。シグモイドは、物事を範囲の中心に向かって(バックプロパゲーションで)押し、範囲外に出ないように(フィードフォワードで)制限するように設計されています。(ベルヌーイ分布に関する)パフォーマンスの重要性は、ニューロンが推測ではなく実際の予測を行っている確率として解釈することもできます。理想的には、予測因子のポジティブへのバイアスは、現実の世界でのポジティブの有病率と一致する必要があります(これは、さまざまな時間と場所で変化する可能性があります。たとえば、強気市場と弱気市場、たとえば、ローンを申請する人とローンの支払いを怠る人の信用力)-確率に合わせて調整することには、任意のバイアスを簡単に設定できるという利点があります。シグモイドは、物事を範囲の中心に向かって(バックプロパゲーションで)押し、範囲外に出ないように(フィードフォワードで)制限するように設計されています。(ベルヌーイ分布に関する)パフォーマンスの重要性は、ニューロンが推測ではなく実際の予測を行っている確率として解釈することもできます。理想的には、予測因子のポジティブへのバイアスは、現実の世界でのポジティブの有病率と一致する必要があります(これは、さまざまな時間と場所で変化する可能性があります。たとえば、強気市場と弱気市場、たとえば、ローンを申請する人とローンの支払いを怠る人の信用力)-確率に合わせて調整することには、任意のバイアスを簡単に設定できるという利点があります。シグモイドは、物事を範囲の中心に向かって(バックプロパゲーションで)押し、範囲外に出ないように(フィードフォワードで)制限するように設計されています。(ベルヌーイ分布に関する)パフォーマンスの重要性は、ニューロンが推測ではなく実際の予測を行っている確率として解釈することもできます。理想的には、予測因子のポジティブへのバイアスは、現実の世界でのポジティブの有病率と一致する必要があります(これは、さまざまな時間と場所で変化する可能性があります。たとえば、強気市場と弱気市場、たとえば、ローンを申請する人とローンの支払いを怠る人の信用力)-確率に合わせて調整することには、任意のバイアスを簡単に設定できるという利点があります。(ベルヌーイ分布に関する)パフォーマンスの重要性は、ニューロンが推測ではなく実際の予測を行っている確率として解釈することもできます。理想的には、予測因子のポジティブへのバイアスは、現実の世界でのポジティブの有病率と一致する必要があります(これは、さまざまな時間と場所で変化する可能性があります。たとえば、強気市場と弱気市場、たとえば、ローンを申請する人とローンの支払いを怠る人の信用力)-確率に合わせて調整することには、任意のバイアスを簡単に設定できるという利点があります。(ベルヌーイ分布に関する)パフォーマンスの重要性は、ニューロンが推測ではなく実際の予測を行っている確率として解釈することもできます。理想的には、予測因子のポジティブへのバイアスは、現実の世界でのポジティブの有病率と一致する必要があります(これは、さまざまな時間と場所で変化する可能性があります。たとえば、強気市場と弱気市場、たとえば、ローンを申請する人とローンの支払いを怠る人の信用力)-確率に合わせて調整することには、任意のバイアスを簡単に設定できるという利点があります。

2つのクラスに2つのニューロンがある場合、それぞれを上記のように独立して解釈でき、それらの間の差も半分になります。これは、負のクラスのニューロンを反転して平均化するようなものです。この違いにより、有意性の推定の確率も生じる可能性があります(T検定を使用)。

ブライアスコアとそのマーフィー分解は、平均的な答えが正しい確率のより直接的な推定を提供します。一方、情報は、分類者が推測ではなく情報に基づいた決定を行う確率を提供し、ROC AUCは、正のクラスがランク付けされる確率を提供します。 (正の予測子による)負のクラスよりも高く、有病率=バイアスの場合、カッパは情報に一致する同様の数値を示します。

通常必要なのは、分類子全体の有意確率(ゲストの架空のフレームワークではなく、実際のフィールドでプレイしていることを確認するため)と、特定の例の確率推定の両方です。回帰(線形または非線形)対確率を実行し、その逆関数を使用してより正確な確率推定に再マッピングするなど、さまざまなキャリブレーション方法があります。これは、ブライアスコアが向上し、キャリブレーションコンポーネントが0に向かって減少することで確認できますが、ROC AUCおよびインフォームドネス(カッパはバイアスの影響を受けやすく、悪化する可能性があります)と同様に、識別コンポーネントは同じままです。

確率を較正するための単純な非線形の方法は、ROC曲線を使用することです-単一のニューロンの出力または2つの競合するニューロン間の差のしきい値が変化すると、ROC曲線に結果の真陽性率と偽陽性率をプロットします(実際には正ではないものは負であるため、偽および真の負の率は当然補数です)。次に、ROC曲線(ポリライン)をポイントごとに(勾配が変化するたびに)サンプルごとにスキャンし、正のサンプルの比率から、そのポイントを生成した神経しきい値に対応する正の確率推定値が得られます。曲線上のポイント間の値は、キャリブレーションセットで表される値の間で線形補間できます。実際、ROC曲線内の不良ポイントは、デコンベクシティ(へこみ)で表されるものは、凸包によって平滑化できます。これは、船体セグメントの端点間を確率的に補間します。FlachとWuは、実際にセグメントを反転する手法を提案していますが、これは情報が間違った方法で使用されているかどうかに依存し、キャリブレーションセットの任意の改善に繰り返し使用できますが、テスト状況に一般化する可能性はますます低くなります。

(私はこれらのROCベースのアプローチについて何年も前に見た論文を探してここに来ました-したがって、これは記憶からのものであり、これらの失われた参照はありません。)

于 2011-11-27T01:46:42.803 に答える
10

ニューラル ネットワーク (実際にはあらゆる機械学習分類器) の出力を確率として解釈する際には、非常に慎重になります。マシンは、確率密度を推定するためではなく、クラスを識別するようにトレーニングされています。実際、この情報はデータに含まれていないため、推測する必要があります。私の経験では、出力を確率として直接解釈することは誰にも勧めません。

于 2013-12-10T10:01:52.433 に答える
7

教授を試しましたか。ソフトマックスアクティベーション関数とクロスエントロピーエラーでネットワークをトレーニングするというヒントンの提案は?

例として、次のように 3 層ネットワークを作成します。

linear neurons   [ number of features ]
sigmoid neurons [ 3 x number of features ]
linear neurons   [ number of classes ]

次に、お気に入りのオプティマイザ確率的降下/iprop プラス/勾配降下を使用してクロス エントロピー エラー ソフトマックス転送でそれらをトレーニングします。トレーニング後、出力ニューロンは合計 1 に正規化する必要があります。

詳細については、 http://en.wikipedia.org/wiki/Softmax_activation_functionを参照してください。Shark Machine Learning フレームワークは、2 つのモデルを組み合わせることで Softmax 機能を提供します。そして教授。詳細については、優れたオンライン コース @ http://coursera.comをヒントにしてください。

于 2013-07-22T23:55:50.473 に答える
4

2クラス分類にANNを使用し、ロジスティックシグモイド活性化関数が出力層で使用されている場合、出力値は確率として解釈される可能性があります。

したがって、2 つのクラスから選択する場合は、1-of-C エンコーディングを使用してトレーニングします。この場合、2 つの ANN 出力には、各クラスのトレーニング値 (1,0) と (0,1) がそれぞれ含まれます。

最初のクラスの確率をパーセントで取得するには、最初の ANN 出力を 100 に掛けるだけです。他のクラスの確率を取得するには、2 番目の出力を使用します。

これは、softmax 活性化関数を使用してマルチクラス分類に一般化できます。

ここで確率的解釈の証明を含む詳細を読むことができます:

[1] Bishop、Christopher M. パターン認識のためのニューラル ネットワーク。オックスフォード大学出版局、1995 年。

于 2013-10-01T23:21:57.017 に答える
4

イントロダクション・トゥ・ザ・セオリー・オブ・ニューラル・コンピュテーション(ヘルツ・クロー・パーマー)の本で、結果の確率を概算するために逆伝播でトレーニングされたニューラル・ネットワークの例を見たことを覚えています。この例の鍵は、ユニットの出力を確率に変換する必要がなく、代わりに確率を出力として自動的に取得するための特別な学習ルールだったと思います。
機会があれば、その本をチェックしてみてください。

(ちなみに、「ボルツマン マシン」は、あまり有名ではありませんが、確率分布を学習するために特別に設計されたニューラル ネットワークです。それらも確認することをお勧めします)

于 2009-10-06T07:33:37.433 に答える