損失関数(損失)

3 層ニューラル ネットワークなどの機械学習モデルを定義する場合は、このモデルを提供されたトレーニング データにできるだけ正確に適合させる必要があります。しかし、モデルがデータに十分に適合しているかどうかをどのように評価すればよいでしょうか? 次に、対応する指標を使用して適合度を評価する必要があります。使用される関数は 損失関数と呼ばれます。損失関数の値が減少すると、モデルは適合の道をさらに一歩前進したと考えられます。最終モデルがトレーニング データ セットに最もよく適合するのは、損失関数の値が最小になるとき、つまり、指定されたデータ セット上で損失関数の平均値が最小になるときです。

クロスエントロピー損失関数 (Cross Entropy)

物理学では、「エントロピー」は、熱力学システムによって示される無秩序の程度を説明するために使用されます。シャノンはこの概念を情報理論の分野に導入し、情報の不確実性を対数関数で測定する「情報エントロピー」の概念を提案しました。

クロスエントロピーは情報理論における重要な概念であり、主に 2 つの確率分布間の差異を測定するために使用されます。ppと仮定しますpqqqはデータxxqqによるxの 2 つの確率分布qはppを表しますpのクロスエントロピーは次のように計算できます。 H ( p , q ) = − ∑ xp ( x ) log ⁡ q ( x ) ) H(p,q)=-\displaystyle \sum_x p(x)\log q (x))H ( p ,q )=バツp ( x )ログ_q ( x ))クロスエントロピーは、確率分布qqを表現することを目的として、2 つの確率分布間の距離を特徴付けます。確率分布を表すqpの難易度式から理解するのは難しくありませんが、クロスエントロピーが小さいほど、2 つの確率分布pppqqqのほうが近いです。

ここでも、例として 3 つのカテゴリの分類問題を取り上げます。データxxであると仮定します。x はカテゴリ 1 に属します。データxxxのクラス分布確率はyyですy,显然y = ( 1 , 0 , 0 ) y=(1,0,0)y=( 1 0 0 )データxxxの実際のクラス分布確率y ^ \hat{y}を覚えておいてくださいy^モデルによって予測されたクラス分布確率を表します。

データxxについてはxの場合、その実際のクラス分布確率yyyとモデルが予測したクラス分布確率y ^ \hat yy^クロス エントロピー損失関数は次のように定義されます。
クロス エントロピー = − y × log ⁡ ( y ^ )cross\ entropy=-y\times \log \left( \hat{y} \right)クロスエントロピー_ _ _ _ _ =y×ログ_(y^)

明らかに、優れたニューラル ネットワークでは、各入力データについて、ニューラル ネットワークによって予測されるカテゴリ分布確率と実際のカテゴリ分布確率との間のギャップが可能な限り小さくなるように努める必要があります。つまり、クロス エントロピーが小さいほど、より良い。したがって、クロス エントロピーは、ニューラル ネットワークをトレーニングするための損失関数として使用できます。

ここに画像の説明を挿入します
上図は 3 つのカテゴリ分類の例を示しています。入力データxx以降xはカテゴリ 1 に属しているため、実際のカテゴリ確率分布値はy = ( y 1 , y 2 , y 3 ) = ( 1 , 0 , 0 ) y=(y_1,y_2,y_3)=(1,0,0) となります。 )y=( y1y2y3)=( 1 0 0 )ニューラルネットワークによる変換後、入力データxxが得られます3 つのカテゴリ(z 1 、 z 2 、 z 3 )の予測中央値に対するxの相対値 (z_1,z_2,z_3)( z1z2z3次に、Softmax 関数マッピングを通じて、ニューラル ネットワークによって予測されたxxxのクラス分布確率y ^ = ( y ^ 1 , y ^ 2 , y ^ 3 ) \hat y=(\hat y_1,\hat y_2,\hat y_3)y^=(y^1y^2y^3前の紹介によると、y ^ 1 、 y ^ 2 、 y ^ 3 \hat y_1,\hat y_2,\hat y_3y^1y^2y^3範囲 (0,1) 間の確率値です。サンプルxxのせいでx は最初のカテゴリに属する​​ため、ニューラル ネットワークがy ^ 1 \hat y_1y^1値はy ^ 2 \hat y_2よりもかなり大きくなければなりませんy^2y ^ 3 \hat y_3y^3価値。このようなニューラル ネットワークを取得するには、次のクロス エントロピー損失関数を使用して、トレーニング中にモデル パラメーターを最適化できます。クロス エントロピー = − ( y 1 × log ⁡ ( y ^ 1 ) + y 2 × log ⁡ ( y ^ 2 ) + y 3 × log ⁡ ( y ^ 3 ) )cross\ entropy=-\left( y_1\times \log \left( \hat{y}_1 \right) +y_2\times \log \left( \ hat{y }_2 \right) +y_3\times \log \left( \hat{y}_3 \right) \right)クロスエントロピー_ _ _ _ _ =( y1×ログ_(y^1)+y2×ログ_(y^2)+y3×ログ_(y^3) )上の式では、y 2 y_2y2y 3 y_3y3はすべて 0、y 1 y_1y1は 1 であるため、クロスエントロピー損失関数は次のように単純化されます。− y 1 × log ⁡ ( y ^ 1 ) = − log ⁡ ( y ^ 1 ) -y_1\times \log \left( \hat{y}_1 \ right) = -\log \left( \hat{y}_1 \right)y1×ログ_(y^1)=ログ_(y^1)ニューラル ネットワークのトレーニングでは、モデル パラメーターを最適化するために、入力データの実際のカテゴリ確率分布とモデルによって予測されたカテゴリ確率分布の間の誤差 (つまり、損失) が出力端から入力端に転送されます。以下は、 y ^ 1 \hat y_1からのクロス エントロピーに基づいて計算された誤差の簡単な紹介です。y^1z 1 z_1に渡されるz1 z 2 z_2 z2z3z_3z3とz 2 z_2の導出z2y ^ 1 ∂ z 1 = ∂ ( ez 1 ∑ kezk ) ∂ z 1 = ( ez 1 ) ′ × ∑ kezk − ez 1 × ez 1 ( ∑ kezk ) 2 = ez 1 ∑ kezk − ez 1 ∑ kezk × ez 1 ∑ kezk = y ^ 1 ( 1 − y ^ 1 ) \frac{\partial \hat{y}_1}{\partial z_1}=\frac{\partial \left( \frac{e^ {z_1}}{\sum_k{e^{z_k}}} \right)}{\partial z_1}=\frac{\left( e^{z_1} \right) ^{'}\times \sum_k{e^ {z_k}-e^{z_1}\times e^{z_1}}}{\left( \sum_k{e^{z_k}} \right) ^2}=\frac{e^{z_1}}{\sum_k {e^{z_k}}}-\frac{e^{z_1}}{\sum_k{e^{z_k}}}\times \frac{e^{z_1}}{\sum_k{e^{z_k}} }=\hat{y}_1\left( 1-\hat{y}_1 \right)∂z _1y^1=∂z _1(ezez1)=( ez)2( ez1)×ezez1×ez1=ezez1ezez1×ezez1=y^1( 1y^1)交差エントロピー損失関数による- log ⁡ ( y ^ 1 ) -\log \left( \hat{y}_1 \right)ログ_(y^1)y ^ 1 \hat y_1y^1導出の結果は、− 1 y ^ 1 -\frac{1}{\hat{y}_1} となります。y^11y ^ 1 ( 1 − y ^ 1 ) \hat{y}_1\left( 1-\hat{y}_1 \right)y^1( 1y^1)− 1 y ^ 1 -\frac{1}{\hat{y}_1}y^11乗算の結果はy ^ 1 − 1 \hat{y}_1-1となります。y^11これは、モデル予測出力y ^ 1 \hat y_1y^1、この出力から 1 を引くと、 z 1 z_1に対する相互損失関数になります。z1y ^ 1 ∂ z 2 = ∂ ( ez 1 ∑ kezk ) ∂ z 2 = 0 × ∑ kezk − ez 1 × ez 2 ( ∑ kezk ) 2 = − ez 1 ∑ kezk × ez 2 ∑ kezk = − y ^ 1 y ^ 2 \frac{\partial \hat{y}_1}{\partial z_2}=\frac{\partial \left( \frac{e^{z_1}}{\sum_k{e^{ z_k}}} \right)}{\partial z_2}=\frac{0\times \sum_k{e^{z_k}-e^{z_1}\times e^{z_2}}}{\left( \sum_k{ e^{z_k}} \right) ^2}=-\frac{e^{z_1}}{\sum_k{e^{z_k}}}\time \frac{e^{z_2}}{\sum_k{e ^{z_k}}}=-\hat{y}_1\hat{y}_2∂z _2y^1=∂z _2(ezez1)=( ez)20×ezez1×ez2=ezez1×ezez2=y^1y^2同様に、交差エントロピー損失関数の導関数は、− 1 y ^ 1 -\frac{1}{\hat{y}_1} となります。y^11− y ^ 1 y ^ 2 -\hat{y}_1\hat{y}_2y^1y^2− 1 y ^ 1 -\frac{1}{\hat{y}_1}y^11乗算の結果はy ^ 2 \hat y_2です。y^2これは、最初の出力ノード以外のノードに対して偏導関数が実行されることを意味し、モデル予測出力を取得した後、それが保存されている限り、それは他のノードに対する相互損失関数の偏導関数の結果となります。z 1 z_1z1z2z_2z2 z 3 z_3 z3偏導関数の結果が得られた後、損失誤差は連鎖規則 (後述) を通じて入力端に転送できます。

上記の例では、予測中間値(z 1 , z 2 , z 3 ) (z_1,z_2,z_3) であると仮定します。( z1z2z3)ソフトマックス マッピング後の結果は(0.34, 0.46, 0.20) (0.34,0.46,0.20) に( 0.34 0.46 0.20 入力データxxx は最初のカテゴリに属しますが、明らかにこの出力は理想的ではないため、モデル パラメーターを最適化する必要があります。モデルを最適化するためにクロスエントロピー損失関数が選択された場合、( z 1 , z 2 , z 3 ) (z_1,z_2,z_3)( z1z2z3)この層の偏微分値は( 0.34 − 1 , 0.46 , 0.20 ) = ( − 0.66 , 0.46 , 0.20 ) (0.34−1,0.46,0.20)=(−0.66,0.46,0.20) となります。( 0.341 0.46 0.20 =( 0.66 0.46 0.20

Softmax 関数とクロスエントロピー損失関数を組み合わせると、偏微分計算に大きな利便性がもたらされることがわかります。偏微分計算により損失誤差が出力端から入力端に伝達され、モデルパラメータが最適化されます。ここで、クロスエントロピーはソフトマックス関数と結合されるため、ソフトマックス損失(クロスエントロピー損失を伴うソフトマックス)とも呼ばれます。

平均二乗誤差 (MSE)

平均二乗誤差損失は二次損失および L2 損失とも呼ばれ、回帰予測タスクでよく使用されます。平均二乗誤差関数は、予測値と実際の値の間の距離の二乗 (つまり、誤差) を計算することによってモデルの品質を測定します。つまり、予測値が真の値に近ければ近いほど、2 つの平均二乗誤差は小さくなります。

n個あると仮定しますnトレーニング データxi x_iバツ私は、各トレーニング データxi x_iバツ私は実際の出力はyi y_iですy私は,模型对 x i x_i バツ私は予測値はy ^ i \hat y_iです。y^私はモデルはnnにありますn 個のトレーニング データの下で生成される平均二乗誤差損失は次のように定義できます。 MSE = 1 n ∑ i = 1 n ( yi − y ^ i ) 2 MSE=\frac{1}{n}\sum_{i=1} ^n{\left( y_i-\hat{y}_i \right) ^2}MSE=n1i = 1( y私はy^私は)2真の目標値が 100 で、予測値が -10000 ~ 10000 の間であると仮定します。次の図に示すように MSE 関数曲線を描きます。予測値が100に近いほどMSE損失値が小さいことがわかります。MSE 損失の範囲は 0 ~∞ ∞

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_49346755/article/details/127356376