私は大規模なデータベースでニューラル ネットワークを実行し、それをテストして素晴らしい答えを得ました (非常に小さなエラー - ほぼ 4%)。ここで、重みとバイアスを使用して方程式を導出し、出力を直接取得したいと考えています (そのネットワークを再度使用する必要はありません)。出力を取得するための方程式をどのように導き出すことができますか?
1 に答える
それは、使用しているニューラル ネットワークの種類によって異なります。単純なフィードフォワード ネットワークの場合、数式を導出するために必要なことは、活性化関数を介して重み行列とバイアス ベクトルを使用して入力を伝播することだけです。
SLFN (Single Layer Feedforward Network) があるとします。これは基本的に、入力層、非表示層、および出力層があることを意味します。
以下を示しましょう:
- 入力ベクトルX
- 入力と非表示のW_ihの間の重み行列
- 隠れ層bのバイアス ベクトル
- 隠しノードfの活性化関数
- 隠れ層Y_hの出力
- 非表示の W_hoと出力のW_hoの間の重み行列
- 出力ベクトルY
出力を計算する手順は次のとおりです。
1-隠れ層への接続を介して入力ベクトルを伝播し、バイアス項を追加します。これにより、非表示層に「入る」総入力Zが得られます(「ロジット」と呼ばれることもあります)。
Z = X * W_ih + B
ここで、Bは、すべての行がベクトルbに等しく、入力ケースと同じ数の行を持つ行列です。
2-このロジットにアクティベーション関数を適用します。
Y_h = f(Z) = f(X * W_ih + B)
3-このベクトルを接続を介して出力レイヤーにもう一度伝播すると、出力ベクトルYは次のようになります。
Y = Y_h * W_ho = f(X * W_ih + B) * W_ho
さらに非表示レイヤーがある場合は、追加の非表示レイヤーごとに手順 1 と 2 を繰り返し、出力レイヤーの手順 3 で終了するだけです。