人工智能实验
反向传播神经网络BPNN
目录
人工智能实验
反向传播神经网络BPNN
1. 算法原理
2. 流程图和伪代码
3. 代码展示
4. 采用的优化建议
5. 实验结果及分析
6. 思考题
1. 算法原理
一般的反向传播神经网络如上图所示,由一个输入层、若干个隐藏层和一个输出层组成。每层有若干个节点,称为神经元。除了输入层外,每层的节点连接着上一层的每个神经元。每个神经元由两部分组成:一个线性变化和一个激活部分。
1.1 前向传播
1.1.1 加权计算(线性变化)
每个神经元的线性变化部分类似于之前实验中的感知机算法。每个神经元连接上一层的全部节点,上一层的每个节点作为该神经元的输入数据。该节点保存着一个权重向量$\bold w=[w_1,w_2,...,w_n,w_0]$,其中$n$表示上一层的节点数,$w_0$代表偏置,对应的输入值恒为1。对于上一层的输入$\bold x = [x_1,x_2,...,x_n,x_0]$,其中$x_0=1$,加权计算的值为两个向量的点乘,即:
1.1.2 激活函数(非线性变化)
考虑到数据集的分布不一定是线性的,而加权求和的计算结果必然是线性结果,因此需要在神经网络中加入非线性变化的部分,从而更好地拟合数据分布。激活函数就是神经网络中的非线性部分。激活函数是一个非线性函数,将之前加权计算得到的结果作为输入,通过激活函数将得到的结果进行输出,从而产生非线性变化。常用的激活函数有: