搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > 西电浪潮俱乐部 > 学长侃技术——监督学习之神经网络算法

学长侃技术——监督学习之神经网络算法

西电浪潮俱乐部 2019-04-05
举报

什么叫神经网络算法

神经网络算法先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理,简单来说就是根据逻辑规则进行推理的过程,并且这一过程可以写成串行的指令,让计算机执行。


背景

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算法的三个条件。若没有,则继续用其余数据集重复训练该网络,直到满足终止的条件为止。

    训练完模型之后,就可以预测新的数据的类别或者回归预测。

学长侃技术——监督学习之神经网络算法

结语

学长侃技术——监督学习之神经网络算法

 听学长介绍技术是不是有了很大的收获呢?

学长侃技术——监督学习之神经网络算法

排版:张博闻 蔡一辰

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《学长侃技术——监督学习之神经网络算法》的版权归原作者「西电浪潮俱乐部」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注西电浪潮俱乐部微信公众号

西电浪潮俱乐部微信公众号:gh_e4bc15463e1e

西电浪潮俱乐部

手机扫描上方二维码即可关注西电浪潮俱乐部微信公众号

西电浪潮俱乐部最新文章

精品公众号随机推荐

举报