这是一篇来自于旧站的重置文章。
更加重制版:[人工智能] 神经网络基础 —— Regression(回归) 和 Classification (分类) 的forward (前向) 和 backward (后向) 计算
前言
写论文时候顺便写的
B站可能也会发个视频?
具体实现在:Github
正文
1. 概述
其实这篇博文主要讲的是Back-propagation (BP),也就是反向传播算法,然后Excel写的二层神经网络只是用来作为介绍反向传播算法BP的一个例子罢了。
神经元模型感觉不用再赘述了,但是为了文章完整性这里还是放一个
然后是一个二层的神经网络,每层有2个神经元节点,最后为一个输出层,输出为[0/1]的category index。
接下来我们要引入我们的公式了:
公式分为2.1和2.2,其中2.1为Feed forward过程,而2.2主要阐述的是Back propagation的这一过程。具体的分别会在Section 2和 Section 3描述。
2. Feedforward propagation (正向传播过程)
正向传播过程字如其名,就是正向,从input输入到output输出的过程。
我们先由x_1 和x_2 通过 weights (w_{1,1}, w_{1,2}, w_{2,1}, w_{2,2})算到了h_1 和 h_1
然后通过h_1 和h_2 算到了 最后的output 也就是y
这便是我们全部的正向传播过程。
3. Back-propagation (反向传播算法)
反向传播过程,也就是由output推向input的过程,其主要目的是为了通过改变weights,来将loss减到最小,所以很自然的,我们会想到通过求导来实现,求weights对loss的导数。由于loss 里面包含很多的weights,所以每个weights对loss自然求的是一个偏导数。其具体公式为:\delta w_{ij} = -\eta \frac{\partial{E}}{\partial w_{ij}}其中\eta为 learning rate,为学习速度,通常而言刚开始训练的时候学习速度会很大,然后会慢慢降低。(也就是所谓的 schedule learning rate)
然后back propagation 其实也就是这个weights 从 output到input逐渐反推的过程罢了,至于为什么叫back propagation呢(我个人理解只是因为单纯和feedforward这个过程做个对比罢了,因为在我们把每一个w 变化的偏导数算出来之后,会发现这东西算前一层weights的时候,根本没有需要后一层weights的任何东西,甚至可以跳过前面所有层的weights去算第一层的weights,唯一有影响的只是feedfoward时候的值x_1 、x_2 、h_1 、h_2 、y 这类。)仅个人理解,未必正确!
然后我们可以把每个weights对loss的偏导求出来:
最后写到Excel里面就完事儿了!
4. Excel版二层神经网络
整个Excel版本其实很简单:
第1、2行为4个不变量,x_1 和x_2 分别为x在dimension1和dimension2的值,t 为true value也就是真实值,\eta 为learning rate此处learning rate为常数。
第3行为weights的表头,然后为在当前weights下计算出来的h_1 、h_2 和y
从第4行开始,A列为第几次迭代,我们所有的input data 和label 都是 相同的 [1,1] - 4也就是x_1 = 1, x_2 = 1, t = 4。
所以最后理所应当的,训练出来的神经网络 y会无限接近于4,也就是我们的真实值。可以看出来这里跟我本来预想的神经网络weights其实是很不一样的,我本来想的是可能会训练出一个什么 w_{1,1} = w_{1,2} = w_{2,1} = w_{2,2} = 1 这样一个东西出来,因为这样刚好[1,1]出来的结果就是4((1 \cdot 1 + 1 \cdot 1) \cdot 1 + (1 \cdot 1 + 1 \cdot 1) \cdot 1 = 4 ),结果这东西可能本来就与initial weights和learning rate有关。(掉到了某一个local minimal里面,或者也许我的才是local minima(笑。))
总结
可以看出来最后的weights的结果和我本身预想的完全不一样。看来
initial weights
learning rate
确实很重要啊!不同hyper parameters 确实会得到不同的结果的喵~ 0.0!
参考
[1] L. Guesmi, H. Fathallah, and M. Menif. Modulation format recognition using artificial neural networks for the next generation optical networks. In Advanced Applications for Artificial Neural Networks, page 11. IntechOpen, 2018.
[2] Back Propagation(梯度反向传播)实例讲解