MLP综述

MLP综述MLP整体思路反向传播算法梯度下降算法

大家好,又见面了,我是你们的朋友全栈君。

   看了CSDN上介绍MLP的文章,有介绍原理,有介绍公式的,这篇文章是基于当时看很多篇别人的博整理的笔记(未标注原文出处,原文作者有意见请联系晴嫣,保证添加到参考链接中),MLP整体思路。


    单层感知器是最简单的神经网络。它包含输入层和输出层,输入层和输出层直接相连。

    单个感知器无法解决非线性问题,由多个感知器组合可以来实现非线性分类面

    但是简单的组合,得到的依旧是线性分类器,为了解决这个问题,有了MLP,MLP是单层感知机的推广,与单层感知机的本质区别是增加了隐含层。

    隐藏层的神经元与输入层是全连接的,假设输入层用向量X表示,则隐藏层的输出就是f(W1X+b1),W1是权重(也叫连接系数),b1是偏置,函数f可以是常用的sigmoid函数或者tanh函数,特点是连续可微。

   最后就是输出层,其实隐藏层到输出层可以看成是一个多类别的逻辑回归,也即softmax回归,所以输出层的输出就是softmax(W2X1+b2),X1表示隐藏层的输出f(W1X+b1)。

   因此,MLP所有的参数就是各个层之间的连接权重以及偏置,包括W1、b1、W2、b2。对于一个具体的问题,如何确定这些参数。求解最佳的参数是一个最优化问题,解决最优化问题,最简单的就是梯度下降法了(SGD):首先随机初始化所有参数,然后迭代地训练,不断地计算梯度和更新参数,直到满足某个条件为止(比如误差足够小、迭代次数足够多时)。这个过程涉及到代价函数、规则化(Regularization)、学习速率(learning rate)、梯度计算等。

    

    因为这种联接图没有闭环或回路。我们可以用反向传播法(back propagation)来训练上述这个神经网络。

    反向传播算法分二步进行,即信号的正向传播和误差的反向传播。这两个过程的工作简述如下。

1.正向传播

    在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态产生影响。在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。

2.反向传播

    反向传播时,把误差信号按原来正向传播的通路反向传回,并对每个隐层的各个神经元的权系数进行修改,以望误差信号趋向最小。


BP算法具体流程如下:

①前向传播:给各连接权值分别赋一个区间(-1,1)内的随机数,选择一个数据输入,从第一层开始,计算每一层输出MLP综述并保存各层输出。

②反向传播:计算最后一层输出和目标输出的差e=t-a,并根据公式MLP综述计算最后一层的敏感性MLP综述,其中为网络第M层输出函数对净输入n求导,最后一层为线性函数,求导为1。按照公式计算前一层的敏感性,直到第一层,其中MLP综述为第m层到m-1层的权值。

③调权值:可以从第一层开始,也可以从最后一层开始进行调权。

MLP综述

④选择下一个输入,继续上面的过程,直到网络收敛为止。


BP算法存在的问题:

(1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小;

(2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生);

(3)一般,我们只能用有标签的数据来训练:但大部分的数据是没标签的,而大脑可以从没有标签的的数据中学习。

    

由此提出改进算法:

基于动量的BP学习算法

    由于BP算法的收敛速度比较慢,可能有多个局部极小点,有不稳定性,故提出基于动量的BP算法。它能平滑振荡提高收敛性能。故引入一个动量系数 ,当动量系数增加时,振荡减小,从而有利于减少振荡数目,保持平均值。

MLP综述

动量可以维持算法稳定的前提下使用更高的学习速度。动量法降低了网络对于误差曲面局部细节的敏感性,有效的抑制网络陷入局部最小。

可变学习速度的BP算法

    它试图在较平坦的曲面提高学习速度,而在斜率增大时减小学习速度。它的规则如下:

1)如果误差平方(在整个训练集上)在权值更新后增加了百分数z (典型值为1%至5%),则取消权值更新,学习速度乘上一个因子 (1 > r > 0),并且动量系数 g 置为 0。

2)如果误差平方在权值更新后减少,则接受权值更新,并且学习速度乘上一个因子 h>1,如果动量系数 g 先前被置为0,则恢复到先前的值。

3)如果误差平方的增加少于z,则接受权值更新,但是学习速度和动量系数不变。

    改进的BP算法也有些缺点:需要设置一些额外的参数,并且算法性能对参数变化很敏感,参数的选择还和问题有关。容易使一些能收敛的数据变得不可收敛。目前还有许多的改进算法,这些方法中应用最广的是增加了冲量(动量)项的改进BP算法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150157.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 查看idea是否激活成功[最新免费获取]

    (查看idea是否激活成功)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~2…

    2022年3月29日
    916
  • android移动点餐系统内容和要求,基于Android云计算的移动点餐系统

    android移动点餐系统内容和要求,基于Android云计算的移动点餐系统摘要:系统发挥Android富有创造力和想象力的云应用开发,实现一套Android客户端软件和完善的后台服务功能来完成点餐功能。该系统主要包括后台数据库服务器、WEB服务器、无线网络、Android前端等部分。客户端Android系统智能手机具有前端处理与计算能力,而且通过无线网络访问WEB服务器,如果需要数据访问,则访问后台数据库。介绍了系统架构的设计与搭建、技术选型、后台数据库的…

    2022年6月20日
    35
  • Scrapy 爬虫完整案例—从小白到大神(银行网点信息为例)

    Scrapy 爬虫完整案例—从小白到大神(银行网点信息为例)采用selenium界面抓取信息,需要渲染界面,并且也是单线程操作,效率极低,一晚上只爬去了一个工行的数据。突然想到了分布式爬虫安装Scrapypip版本过于老旧不能使用,需要升级pip版本,输入python-mpipinstall–upgradepip,升级成功安装scrapy命令:pipinstallScrapy因为scrapy框架基于Twisted,所以先要下载其whl包安装地址:http://www.lfd.uci.edu/~gohlke/pythonl..

    2022年6月26日
    27
  • 连“霍金”都想学习的“人工智能”—【自己动手写神经网络】小白入门连载開始了(1)

    连“霍金”都想学习的“人工智能”—【自己动手写神经网络】小白入门连载開始了(1)

    2022年2月5日
    42
  • autoconf产生Makefile流程

    autoconf产生Makefile流程生成Makefile的流程。参考http://www.ibm.com/developerworks/cn/linux/l-makefile/首先进入project目录,在该目录下运行一系列命令,创建和修改几个文件,就可以生成符合该平台的Makefile文件,操作过程如下:1)运行autoscan命令2)将configure.scan文件重命名为configure.

    2022年6月3日
    38
  • forkjoin并发分页查数据_java fork join

    forkjoin并发分页查数据_java fork join分治,顾名思义,即分而治之,是一种解决复杂问题的思维方法和模式;具体来讲,指的是把一个复杂的问题分解成多个相似的子问题,然后再把子问题分解成更小的子问题,直到子问题简单到可以直接求解。Java并发包里提供了一种叫做Fork/Join的并行计算框架,就是用来支持分治这种任务模型的。如何用Fork/Join并行计算框架计算斐波那契数列f(n)=f(n-1)+f(n-…

    2025年12月8日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号