本文是硕士期间涉及到神经网络的一些知识的整理。
神经网络模型的作用就是拟合函数。
1.感知机:两层神经元,输入层和输出层,输出层为M-P神经元,就是神经元为阶跃函数。整个计算是对输入求加权和与输出神经元上的阈值比较,得到0或者1的值。
图1:感知机,输入的加权和与神经元上的阈值比较(图来源网络)
感知机的局限在于只能处理线性可分问题。为了解决非线性可分问题,采用多层功能神经元,例如异或问题是非线性的,一层感知机无法解决它,所以用三个感知机拼成两层神经网络解决。
图2:一条线无法分割异或问题
(图来源网络)
图3:三层神经网络解决异或问题
(图来源网络)
多层神经网络的第一层叫做输入层,最后一层叫做输出层,中间的都称为隐层。
2.多层前馈神经网络:每层神经元与下一层神经元全互连,神经元之间不存在同层链接,也不存在跨层链接。
图4:多层前馈神经网络
(图来源网络)
神经网络模型的未知量就是权值和阈值(可以看做1的权值)。
3.bp算法
bp算法的解释:bp算法翻译过来就是误差逆传播算法,用来求解神经网络模型中的未知量,即权值和阈值,原理就是找到误差和权值的函数关系,从而用结果估计误差对权值进行修正,修正方式是权值向误差梯度方向进行移动。所以bp不是神经网络的一种类型,而是一种求系数的算法。
bp算法其实和求拟合公式中系数的迭代法是一样的,而且这种沿梯度方向变步长迭代的思想在涉及随机变量的问题中真是屡见不爽!
bp算法的过程:每一轮迭代的过程,首先从输出开始,对输出层的阈值和权值进行修正,同时得到上一层的输出修正值,然后再对上一层的阈值和权值进行修正,同时得到上上一层的输出修正值,……,一直往上反推,最后把所有权值和阈值的值都修正一遍。
bp算法的收敛条件:输出均方误差均值小于某个设定值,就是(Δy1^2+Δy2^2+...+Δyn^2)/n
一般教材上会举一个推导bp算法的公式的例子:采用多层前馈神经网络,每个神经元都是M-P神经元,就是隐层和输出层的每一个神经元是对上一层神经元输出值各分量的加权和的函数。
5.神经网络的使用
神经网络使用分为两个阶段训练和测试。
首先需要获取两个数据集合,一个是训练集,另外一个是测试集。如果你只有一个数据集,你可以把它分成两个来使用。
训练集用来修正神经网络中的参数,也就是刚才的加权和权值和比较阈值,测试集是为了测试模型误差是否在范围之内。
为了获得数据集,需要进行试验设计,我比较喜欢用最优超拉丁方生成训练集,然后用正交试验设计来生成测试集。我的原因在于,正交试验设计可以用来出论文上的线图,好用,最优超拉丁方感觉随机一点,所以拿来训练。
6.RBF网络
RBF网络不用M-P神经元,不用加权和,也不用做比较。
RBF是一种单隐层前馈神经网络(也就说有三层,层与层神经元之间完全链接,同层神经元不互连),从输入层到隐层用的是径向基函数,输出层是对隐层的加权和(线性组合)。
式中,ρ为径向基函数,c为中心和权重,径向基函数式某种沿径向对称的标量函数,这里定义成样本x到数据中心c之间的欧氏距离的函数,β为径向基函数引入的系数;w为神经网络第二层加权和的权重值,q为隐层神经元个数,i为第i个隐层神经元。
RBF的未知量:w、c、β。c为二阶q乘d维张量,w和β为q维矢量,d为x的维数,q为隐层神经元个数。
RBF的训练过程:首先通过随机采样、聚类等确定c,然后利用bp算法确定w和β。
7.神经网络拟合的精确度:Hornik等在1989年的论文证明,只需一个包含足够多神经元的隐层,多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数。
Park and Sandberg在1991年证明,具有足够多隐层神经元的RBF网络能以任意进度逼近任意连续函数。
8.神经网络与优化:神经网络可以获取输入变量和输出变量之间的关系,但是因为没有完整的数学关系表达式,所以梯度等优化算法就不能再用了,你可以在这个关系上利用遗传算法、粒子群算法、免疫算法等这样的智能优化算法。
领取专属 10元无门槛券
私享最新 技术干货