1

torch チュートリアルで教師あり学習を理解しようとしました。

http://code.madbits.com/wiki/doku.php?id=tutorial_supervised

そして逆伝播:

http://home.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html

私が知っているように、このトーチ チュートリアルのパラメーターの更新は、ステップ 4 のトレーニング手順にあります。

output = model:forward(inputs[i])
df_do = criterion:backward(output, targets[i])
model:backward(inputs[i], df_do)

たとえば、これを手に入れました

output = -2.2799
         -2.3638
         -2.3183
         -2.1955
         -2.3377
         -2.3434
         -2.3740
         -2.2641
         -2.3449
         -2.2214
         [torch.DoubleTensor of size 10]

targets[i] = 9

df_doはこれですか?

0
0
0
0
0
0
0
0
-1
0
[torch.DoubleTensor of size 10]

この例では、ターゲットが 9 で出力が 4 であることはわかっているため、結果が正しくなく、df_do の 9 番目の要素に「-1」を指定します。

しかし、なぜ ?

http://home.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.htmlによると、

df_do は [ターゲット (目的の出力) - 出力] です。

4

1 に答える 1

4

Torch では、backprop は数学とまったく同じように機能します。df_do損失 wrt 予測の導関数であるため、損失関数によって完全に定義されますnn.Criterion。最も有名なのは平均二乗誤差 ( nn.MSECriterion) です。 ここに画像の説明を入力

MSE 基準では、ターゲットが予測と同じサイズであることが想定されていることに注意してください (分類用のワンホット ベクトル)。MSE を選択すると、微分ベクトルdf_doは次のように計算されます。

ここに画像の説明を入力

ただし、MSE 基準は通常、分類にはあまり適していません。より適切なものは、確率ベクトルを予測として、真のクラスのスカラー インデックスをターゲットとして取る尤度基準です。目的は、真のクラスの確率を単純に最大化することです。これは、その負の最小化に等しくなります。

ここに画像の説明を入力

対数確率ベクトル qua 予測 (単調変換であるため、最適化の結果には影響しませんが、計算上はより安定しています) を与えると、負の対数尤度損失関数 ( nn.ClassNLLCriterion)が得られます。

ここに画像の説明を入力

その場合df_doは、次のとおりです。

ここに画像の説明を入力

torch チュートリアルでは、デフォルトで NLL 基準が使用されます

于 2015-09-15T15:05:36.557 に答える