神经网络机构如图:
x为N*m的矩阵,N为样本的个数(即Batch Size,每次送给神经网络的样本个数),m为特征维度。
第一层:
设
w
1
w_1
w1为
m
×
m
1
m\times m_1
m×m1的矩阵,则:
h 1 = x N m w 1 , m m 1 = h 1 , N m 1 h_1=x_{Nm}w_{1,mm_1}=h_{1,Nm_1} h1=xNmw1,mm1=h1,Nm1
乘法后,样本个数没变,单数维度成
w
1
w_1
w1的维度
再给每个维度加上偏置项:
b
1
∈
R
m
1
b_1\in R^{m_1}
b1∈Rm1
设
b
1
=
[
1
2
3
]
b_1=\left[\begin{matrix}1&2&3\end{matrix}\right]
b1=[123]
则最后把
b
1
b_1
b1扩展为:
[
1
2
3
1
2
3
⋯
⋯
⋯
]
\left[\begin{matrix}1&2&3\\1&2&3\\\cdots&\cdots&\cdots\end{matrix}\right]
⎣⎡11⋯22⋯33⋯⎦⎤,即每一个样本的每一维特征都要加上偏置项,进入下一层,公式:
h 1 = x w 1 + b ~ 1 h_1=xw_1+\tilde b_1 h1=xw1+b~1, b ~ 1 \tilde b_1 b~1为 b 1 T b_1^T b1T后沿行方向拓展到N行(样本数)。
Z 1 = f 1 ( h 1 ) Z_1=f_1(h_1) Z1=f1(h1),此处从 h 1 h_1 h1到 Z 1 Z_1 Z1并非矩阵变换,函数f作用于矩阵的每一个元素,所以 Z 1 Z_1 Z1和 h 1 h_1 h1结构一致,为 N × m 1 N\times m_1 N×m1。
第二层:
h
2
=
x
w
2
+
b
~
2
h_2=xw_2+\tilde b_2
h2=xw2+b~2,
Z
1
=
f
2
(
h
1
)
Z_1=f_2(h_1)
Z1=f2(h1)
直到第L层:
h
L
=
x
w
L
+
b
~
L
h_L=xw_L+\tilde b_L
hL=xwL+b~L,
Z
L
=
f
L
(
h
L
)
Z_L=f_L(h_L)
ZL=fL(hL)
最后一层输出OUT:
O
U
T
=
Z
L
w
L
+
1
+
b
~
L
+
1
OUT=Z_Lw_{L+1}+\tilde b_{L+1}
OUT=ZLwL+1+b~L+1
w L + 1 w_{L+1} wL+1矩阵大小 N × n N\times n N×n, n n n为所期望输出的特征维度的大小。
总结:
以上从x到OUT的部分,不管是分类问题(损失函数一般为Cross Entropy)还是回归问题(损失函数一般为MSE)都要用到的。区别在于,上述过程是回归的过程,而分类问题还要在OUT后面接softmax。对损失函数的求导过程,其实是对
O
U
T
=
Z
L
w
L
+
1
+
b
~
L
+
1
OUT=Z_Lw_{L+1}+\tilde b_{L+1}
OUT=ZLwL+1+b~L+1的结果求导,
求导过程:
∂
J
∂
O
U
T
\frac{\partial J}{\partial OUT}
∂OUT∂J (
J
J
J为损失函数)
详见MSE求导及CE求导公式推导。