1. 发展历史
通过调研,简单总结神经网络的发展及其应用场景,结果见下图:
2.神经网络
2.1 神经网络模型
神经网络的结构主要包含三层:输入层、隐含层以及输出层,当隐含层的层数非常大的时候即为深度学习,整个网络可以看成函数:
O u t p u t = f ( i n p u t ) Output=f\left( input \right) Output=f(input)
2.1.1 节点数值的传递
传递过程
假设 x x x从Input层到Layer 1变成了 a 1 a_1 a1, a 1 a_1 a1从Layer 1层到Layer 2变成了 a 2 a_2 a2,…,以此类推得到 a L a_L aL,最后通过Softmax得到输出 y y y
传递方法
设从Input层到Layer 1间的权重矩阵为 W 1 W_1 W1,其表达式为:
W 1 = [ w 1 , 1 w 1 , 2 . . . w 1 , n w 2 , 1 w 2 , 2 . . . w 2 , n . . . . . . . . . . . . w n , 1 w n , 2 . . . w n , n ] W_1=\left[ \begin{matrix} w_{1,1}& w_{1,2}& ...& w_{1,n}\\ w_{2,1}& w_{2,2}& ...& w_{2,n}\\ ...& ...& ...& ...\\ w_{n,1}& w_{n,2}& ...& w_{n,n}\\ \end{matrix} \right] W1=⎣⎢⎢⎡w1,1w2,1...wn,1w1,2w2,2...wn,2............w1,nw2,n...wn,n⎦⎥⎥⎤
其中, w 12 w_{12} w12表示Input层的 x 1 x_1 x1到Layer 1的 a 1 2 a_{1_2} a12,以此类推, L L L层共L个权重矩阵。
那么 a 1 a_1 a1的具体计算方法为:
a 1 = σ ( W 1 x + b 1 ) a_1=\sigma \left( W_1x+b_1 \right) a1=σ(W1x+b1)
依此类推(最近get一个知识点:递推又称套娃,^ __ ^):
a 2 = σ ( W 2 a 1 + b 2 ) a_2=\sigma \left( W_2a_1+b_2 \right) a2=σ(W2a1+b2)
…
a i = σ ( W i a i − 1 + b i ) a_i=\sigma \left( W_ia_{i-1}+b_i \right) ai=σ(Wiai−1+bi)
最终得:
a L = σ ( W L ( σ ( W L − 1 . . . σ ( W 2 σ ( W 1 x + b 1 ) + b 2 ) . . . + b L − 1 ) ) + b L ) a_L=\sigma \left( W_L\left( \sigma \left( W_{L-1}...\sigma \left( W_2\sigma \left( W_1x+b_1 \right) +b_2 \right) ...+b_{L-1} \right) \right) +b_L \right) aL=σ(WL(σ(WL−1...σ(W2σ(W1x+b1)+b2)...+bL−1))+bL)
2.2 神经网络损失函数
以手写数字识别为例子:
输出层得到 y y y,对比真实值 y ^ \hat{y} y^,得到两者的误差,具体方法是通过交叉熵得到:
l ( y , y ^ ) = − ∑ i = 1 10 y ^ i ln y i l\left( y,\hat{y} \right) =-\sum_{i=1}^{10}{\hat{y}_i\ln y_i} l(y,y^)=−i=1∑10y^ilnyi
最后把 N N N组训练集上的数据输入,计算总的误差:
L = ∑ i = 1 N l ( i ) L=\sum_{i=1}^N{l^{\left( i \right)}} L=i=1