cross entropy(交叉熵)
bp神经网络以交叉熵作为损失函数
公式解释
先换一下公式版本(适用于手写数字识别 0-9):
-
l
i
l_i
li:one-hot编码的样本结果矩阵(
10
×
n
10×n
10×n,
n
n
n为样本数)
若现有3个样本: ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , ( x ( 3 ) , y ( 3 ) ) (x^{(1)},y^{(1)}), (x^{(2)},y^{(2)}),(x^{(3)}, y^{(3)}) (x(1),y(1)),(x(2),y(2)),(x(3),y(3))
其中,
y ( 1 ) = 2 y^{(1)}=2 y(1)=2,表示输入 x ( 1 ) x^{(1)} x(1)的结果为2
y ( 2 ) = 6 y^{(2)}=6 y(2)=6,表示输入 x ( 2 ) x^{(2)} x(2)的结果为6
y ( 3 ) = 1 y^{(3)}=1 y(3)=1,表示输入 x ( 3 ) x^{(3)} x(3)的结果为1
则,
l i = ( 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 ) l_i= \begin{pmatrix} 0 & 0 & 0\\ 0 & 0 & 1\\ 1 & 0 & 0\\ 0 & 0 & 0\\ 0 & 0 & 0\\ 0 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 0\\ 0 & 0 & 0\\ 0 & 0 & 0\\ \end{pmatrix} li=⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎛001000000000000010000100000000⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎞ - y i y_i yi:神经网络的输出结果列向量( 10 × 1 10×1 10×1)
-
l
i
l
n
(
y
i
)
l_iln(y_i)
liln(yi):matlab中使用
.*
, ( 1 − l i ) l n ( 1 − y i ) (1-l_i)ln(1-y_i) (1−li)ln(1−yi)同理 - ∑ i = 1 10 \sum_{i=1}^{10} ∑i=110:矩阵每一列的各行相加,得行向量( n × 1 n×1 n×1)
- ∑ x n \sum_{x}^{n} ∑xn:行向量各列相加,得一个数,即为 C = J ( θ ) C=J(\theta) C=J(θ)
L2正则化项
- 解释:
把各层的 Θ \Theta Θ每个元素平方(matlab中的.^2
),然后全部加起来