学长侃技术——监督学习之神经网络算法
Posted 西电浪潮俱乐部
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学长侃技术——监督学习之神经网络算法相关的知识,希望对你有一定的参考价值。
什么叫神经网络算法
神经网络算法先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理,简单来说就是根据逻辑规则进行推理的过程,并且这一过程可以写成串行的指令,让计算机执行。
背景
1.1 以人脑中的神经网络为启发,历史上出现过很多不同版本
1.2 最著名的算法是1980年的 backpropagation
多层向前神经网络
2.1 Backpropagation被使用在多层向前神经网络上2.2 多层向前神经网络由以下部分组成:
输入层(input layers)
隐藏层 (hidden layers)
输出层 (output layers)
2.3 每层由单元(units)组成
2.4 输入层(input layer)是由训练集的实例特征向量传入
2.5 经过连接结点的权重(weight)传入下一层,一层的输出是下一层的输入
2.6 隐藏层的个数可以是任意的,输入层有一层,输出层有一层
2.7 每个单元(unit)也可以被称作神经结点,根据生物学来源定义
2.8 以上成为2层的神经网络(输入层不算)
2.8.1 一层中加权的求和,然后根据非线性方程转化输出
2.9 作为多层向前神经网络,理论上,如果有足够多的隐藏层(hidden layers) 和足够大的训练集, 可以模拟出任何方程。
设计神经网络结构
3.4 神经网络即可以用来做分类(classification)问题,也可以解决回归(regression)问题
3.4.1 对于分类问题,如果是2类,可以用一个输出单元表示(0和1分别代表2类),如果多于2类,每一个类别用一个输出单元表示。所以输出层的单元数量通常等于类别的数量。
3.4.2 没有明确的规则来设计最好有多少个隐藏层
,我们要根据实验测试和误差,以及准确度来实验并改进。比如先设置两个hidden layer,然后根据实验准确度验证并改进。(设置训练集与测试集或者交叉验证。)
交叉验证方法(Cross-Validation)
K-fold cross validation
比如将数据分为k份,用第一份当测试集,其余k-1份当训练集,经过一系列过程算出一个准确度。然后用第二份当测试集,其余k-1份当训练集,重复计算出准确度......以此类推,我们求出k种准度,再计算出平均准确度。如上图。
Backpropagation算法
5.1 通过迭代性的来处理训练集中的实例(喂数据给网络)
5.2 对比经过神经网络后输入层预测值(predicted value)与真实值(target value)之间的差距(输入数据,通过若干次加权求和、非线性转化之后,计算出预测值。再与实际模型得出的真实值做比较,得出误差)
5.3 反方向(从输出层=>隐藏层=>输入层)来以最小化误差(error)来更新每个连接的权重(weight)
5.4 算法详细介绍
输入:D:数据集,l:学习率(learning rate), 一个多层前向神经网络
输出:一个训练好的神经网络(a trained neural network)
5.4.1 初始化权重(weights)和偏向(bias): 随机初始化在-1到1之间,或者-0.5到0.5之间,每个单元有一个偏向。
5.4.2 对于每一个训练实例X,执行以下步骤:
5.4.2.1: 由输入层向前传送
将lj通过这个Sigmoid激活函数(非线性变换):
得到下一层的输入值。
5.4.2.2 根据误差(error)反向传送
对于输出层算误差
Oj是预测值,Tj是实际值
其中Errk为后面的层的错误。
权重(weight)更新:
前一层的误差*当前层的值为Δw
其中l是我们自己设置的步长(学习率),多大或者过小都不好,大了怕一下就超过最小值,小了进度又太慢。于是我们开始设置大步长,后面设置小步长。即随着进度,l越来越小。
5.4.3 终止条件
5.4.3.1 权重的更新低于某个阈值(基本上快到误差的最小值了)
5.4.3.2 预测的错误率低于某个阈值(错误率很低了)
5.4.3.3 达到预设一定的循环次数
6. Backpropagation 算法举例
对于输出层:
对于隐藏层
权重更新:
偏向更新:
假设我们已知输出层的结果是1。即6的实际输出为1。
一来一回的一轮结束以后,我们看是否满足终止BP算法的三个条件。若没有,则继续用其余数据集重复训练该网络,直到满足终止的条件为止。
训练完模型之后,就可以预测新的数据的类别或者回归预测。
结语
听学长介绍技术是不是有了很大的收获呢?
排版:张博闻 蔡一辰
以上是关于学长侃技术——监督学习之神经网络算法的主要内容,如果未能解决你的问题,请参考以下文章