博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
人工神经网络——反向传播算法(BackPropagation)
阅读量:4090 次
发布时间:2019-05-25

本文共 1119 字,大约阅读时间需要 3 分钟。

一、背景

所谓神经网络的训练或者是学习,其主要目的在于通过学习算法得到神经网络解决指定问题所需的参数。这里的参数包括各层神经元之间的连接权重以及偏置等。

因为作为算法的设计者(我们),我们通常是根据实际问题来构造出网络结构,参数的确定则需要神经网络通过训练样本和学习算法来迭代找到最优参数组。说起神经网络的学习算法,不得不提其中最杰出、最成功的代表——误差反向传播(error BackPropagation,简称BP)算法。BP学习算法通常用在最为广泛使用的多层前馈神经网络中。

二、流程

 

 

 

 

二。深度学习

深度学习指的是深度神经网络模型,一般指网络层数在三层或者三层以上的神经网络结构。

理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。就像前面多层感知机带给我们的启示一样,神经网络的层数直接决定了它对现实的刻画能力。但是在一般情况下,复杂模型的训练效率低,易陷入过拟合,因此难以受到人们的青睐。具体来讲就是,随着神经网络层数的加深,优化函数越来越容易陷入局部最优解(即过拟合,在训练样本上有很好的拟合效果,但是在测试集上效果很差)。同时,不可忽略的一个问题是随着网络层数增加,“梯度消失”(或者说是梯度发散diverge)现象更加严重。我们经常使用sigmoid函数作为隐含层的功能神经元,对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本接收不到有效的训练信号。

为了解决深层神经网络的训练问题,一种有效的手段是采取无监督逐层训练(unsupervised layer-wise training),其基本思想是每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,这被称之为“预训练”(pre-training);在预训练完成后,再对整个网络进行“微调”(fine-tunning)训练。比如Hinton在深度信念网络(Deep Belief Networks,简称DBN)中,每层都是一个RBM,即整个网络可以被视为是若干个RBM堆叠而成。在使用无监督训练时,首先训练第一层,这是关于训练样本的RBM模型,可按标准的RBM进行训练;然后,将第一层预训练号的隐节点视为第二层的输入节点,对第二层进行预训练;... 各层预训练完成后,再利用BP算法对整个网络进行训练。

事实上,“预训练+微调”的训练方式可被视为是将大量参数分组,对每组先找到局部看起来较好的设置,然后再基于这些局部较优的结果联合起来进行全局寻优。这样就在利用了模型大量参数所提供的自由度的同时,有效地节省了训练开销。

转载地址:http://iziii.baihongyu.com/

你可能感兴趣的文章
揭秘“撩”大数据的正确姿势:生动示例解说大数据“三驾马车”
查看>>
单例模式,你会写几种?
查看>>
数据分析 第六篇:同期群分析
查看>>
Liquibase 使用(全)
查看>>
一篇长文说 git 基础
查看>>
rest_framework框架之认证功能的使用和源码实现流程分析
查看>>
JAVA8 之初识函数式编程与函数式接口(一)
查看>>
【测话杂谈】我的2019—年度总结
查看>>
利用Redis实现集群或开发环境下SnowFlake自动配置机器号
查看>>
MYSQL调优实战
查看>>
TypeScript躬行记(8)——装饰器
查看>>
利用Redis实现集群或开发环境下SnowFlake自动配置机器号
查看>>
node多进程的创建与守护
查看>>
react-native-swiper使用的坑
查看>>
BeetleX之XRPC使用详解
查看>>
Kerrigan:配置中心管理UI的实现思路和技术细节
查看>>
Python综合应用:教你用字符打印一张怀旧风格的照片
查看>>
Cocos Creator | 飞刀大乱斗开发教程系列(一)
查看>>
abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之七(三十三)
查看>>
做为一个菜鸡的2019年总结
查看>>