学长侃技术——监督学习之神经网络算法
Posted 西电浪潮俱乐部
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学长侃技术——监督学习之神经网络算法相关的知识,希望对你有一定的参考价值。
什么叫神经网络算法
神经网络算法先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理,简单来说就是根据逻辑规则进行推理的过程,并且这一过程可以写成串行的指令,让计算机执行。
背景
1.1 以人脑中的神经网络为启发,历史上出现过很多不同版本
1.2 最著名的算法是1980年的 backpropagation
多层向前神经网络
2.1 Backpropagation被使用在多层向前神经网络上2.2 多层向前神经网络由以下部分组成:
输入层(input layers)
隐藏层 (hidden layers)
输出层 (output layers)
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/5bd724d49c104f0587f826ba8914655f.jpg)
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)
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/60c71372c5a649ac90be8b6f234be4de.jpg)
K-fold cross validation
比如将数据分为k份,用第一份当测试集,其余k-1份当训练集,经过一系列过程算出一个准确度。然后用第二份当测试集,其余k-1份当训练集,重复计算出准确度......以此类推,我们求出k种准度,再计算出平均准确度。如上图。
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/359a955612ce4d7bbfb889959a9b4ef7.jpg)
Backpropagation算法
5.1 通过迭代性的来处理训练集中的实例(喂数据给网络)
5.2 对比经过神经网络后输入层预测值(predicted value)与真实值(target value)之间的差距(输入数据,通过若干次加权求和、非线性转化之后,计算出预测值。再与实际模型得出的真实值做比较,得出误差)
5.3 反方向(从输出层=>隐藏层=>输入层)来以最小化误差(error)来更新每个连接的权重(weight)
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/b8255bb0d0f843f08aa544e641696564.jpg)
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: 由输入层向前传送
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/5bd724d49c104f0587f826ba8914655f.jpg)
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/0c3ae2f7dc804872bcf2a626a6cc52a3.jpg)
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/11d8fd03b1f94b92813625f9d477e1a2.jpg)
将lj通过这个Sigmoid激活函数(非线性变换):
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/faf00a37bf9049ff8b5275e08dee74d4.jpg)
得到下一层的输入值。
5.4.2.2 根据误差(error)反向传送
对于输出层算误差
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/c26822c72d234e51b5baa2b8ff5bac04.jpg)
Oj是预测值,Tj是实际值
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/dd1c591ace0f48759f151cdf41a4cf0d.jpg)
其中Errk为后面的层的错误。
权重(weight)更新:
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/1f41571224f64ffca500e504f427428c.jpg)
前一层的误差*当前层的值为Δw
其中l是我们自己设置的步长(学习率),多大或者过小都不好,大了怕一下就超过最小值,小了进度又太慢。于是我们开始设置大步长,后面设置小步长。即随着进度,l越来越小。
5.4.3 终止条件
5.4.3.1 权重的更新低于某个阈值(基本上快到误差的最小值了)
5.4.3.2 预测的错误率低于某个阈值(错误率很低了)
5.4.3.3 达到预设一定的循环次数
6. Backpropagation 算法举例
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/45650bd826af40c69d06bb84732c57ec.jpg)
对于输出层:
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/c26822c72d234e51b5baa2b8ff5bac04.jpg)
对于隐藏层
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/dd1c591ace0f48759f151cdf41a4cf0d.jpg)
权重更新:
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/1f41571224f64ffca500e504f427428c.jpg)
偏向更新:
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/26be9ef003b7417c9a0663c5637b0b02.jpg)
假设我们已知输出层的结果是1。即6的实际输出为1。
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/a3bdee51e84b44ac97989b1f4d55579a.jpg)
一来一回的一轮结束以后,我们看是否满足终止BP算法的三个条件。若没有,则继续用其余数据集重复训练该网络,直到满足终止的条件为止。
训练完模型之后,就可以预测新的数据的类别或者回归预测。
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/6e4e813192a34316a80d42079f901b39.jpg)
结语
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/e58b7a554c5740d4b340403e98bcbd88.jpg)
听学长介绍技术是不是有了很大的收获呢?
![学长侃技术——监督学习之神经网络算法](https://image.cha138.com/20210424/ed4fbcc4b21b4c85b09221f91a1a969e.jpg)
排版:张博闻 蔡一辰
以上是关于学长侃技术——监督学习之神经网络算法的主要内容,如果未能解决你的问题,请参考以下文章