ゼロから作るDeep learning 4章前半
- 7. 4.2 損失関数
損失関数(Loss function)
→ ニューラルネットワークの学習のための指標
1
x1
x2
a y
h( )
b
w1
w2
tE
これを最小にするように
パラメータを調整する
𝐸 =
1
2
𝑘
( 𝑦 𝑘 − 𝑡 𝑘)2
2乗和誤差
交差エントロピー誤差 𝐸 = −
𝑘
𝑡 𝑘 𝑙𝑜𝑔𝑦 𝑘
- 8. 2乗和誤差と交差エントロピー誤差
k 0 1 2 3 4 5 6 7 8 9
𝒚 𝒌 0.1 0.05 0.6 0.0 0.05 0.1 0.0 0.1 0.0 0.0
𝒕 𝒌 0 0 1 0 0 0 0 0 0 0
𝐸 =
1
2
𝑘
( 𝑦 𝑘 − 𝑡 𝑘)2
2乗和誤差
交差エントロピー誤差 𝐸 = −
𝑘
𝑡 𝑘 𝑙𝑜𝑔𝑦 𝑘
(4.1)
(4.2)
⇐ソフトマックス関数の出力
(合計=1)
⇐one-hot表現の教師データ
(1が正解)
(𝑦 𝑘 −
𝑡 𝑘)2 0.01 0.0025 0.16 0 0.0025 0.01 0 0.01 0.0 0.0
𝑡 𝑘 𝑙𝑜𝑔𝑦 𝑘 0 0 -0.511 0 0 0 0 0 0 0
⇒2乗和誤差 E=0.0975
⇒交差エントロピー誤差
E=0.511
k 0 1 2 3 4 5 6 7 8 9
𝒚 𝒌 0.1 0.05 0.1 0.0 0.05 0.1 0.0 0.6 0.0 0.0
𝒕 𝒌 0 0 1 0 0 0 0 0 0 0
(𝑦 𝑘 −
𝑡 𝑘)2 0.01 0.0025 0.81 0 0.0025 0.01 0 0.36 0.0 0.0
𝑡 𝑘 𝑙𝑜𝑔𝑦 𝑘 0 0 -2.303 0 0 0 0 0 0 0
⇒2乗和誤差 E=0.5975
⇒交差エントロピー誤差
E=2.303
いい感じの状態
良くない状態
⇑交差エントロピー誤差はtが1のところのみ評価
def mean_squared_eror(y, t):
return 0.5 * np.sum((y-t)**2)
def cross_entropy_eror(y, t):
delta = 1e-7
return -np.sum(t * np.log(y + delta))
- 11. 微分
微分の式 𝑑𝑓(𝑥)
𝑑𝑥
= lim
ℎ→0
𝑓 𝑥 + ℎ − 𝑓(𝑥)
ℎ
前方差分
x x+h
真の接線
近似による接線
x x+hx-h
真の接線
近似による接線
def numerical_diff(f, x):
h = 10e-50
return (f(x+h) – f(x)) / h
def numerical_diff(f, x):
h = 1e-4
return (f(x+h) – f(x-h)) / (2+h)
中心差分
hの値は 10e-50とすると精度の問題で0と扱われるため不都合。
10−4が適当とされている
- 12. 偏微分
• 変数が2つ以上ある場合の関数の微分のこと。
• 一つの変数に着目してそれ以外の変数を固定化した微分
• 関数を𝑓 𝑥0, 𝑥1・・・ とすると、各変数の偏微分は、
𝜕𝑓
𝜕𝑥0
、
𝜕𝑓
𝜕𝑥1
、・・・と書く
𝑓 𝑥0, 𝑥1 = 𝑥0
2
+ 𝑥1
2
例
𝑓 𝑥0, 𝑥1 を曲面と考えると曲面上の点(a,b)における𝑓 𝑥0, 𝑥1 の𝑥0の偏微分は、
𝜕𝑓
𝜕𝑥0
=
𝑑𝑓(𝑥0,𝑏)
𝑑𝑥0
= lim
Δ𝑥0→0
𝑓 𝑥0+Δ𝑥0,𝑏 −𝑓(𝑥0,𝑏)
Δ𝑥0
(bは定数値)
で、これは点(a,b)における𝑥0方向の傾きを表す。また、𝑥1の偏微分は、
𝜕𝑓
𝜕𝑥1
=
𝑑𝑓(𝑎,𝑥1)
𝑑𝑥1
= lim
Δ𝑥1→0
𝑓 𝑎,𝑥1+Δ𝑥1 −𝑓(𝑎,𝑥1)
Δ𝑥1
(aは定数値)
で、これは点(a,b)における𝑥1方向の傾きを表す。