• 人工智能知识全面讲解:多层神经网络与误差逆传播算法


    7.3.1 从单层到多层神经网络

    明斯基教授曾表示,单层神经网络无法解决异或问题,但是当增加一个计
    算层以后,两层神经网络不仅可以解决异或问题,而且具有非常好的非线性分
    类效果。只是两层神经网络的计算量过于庞大,没有一个较好的解法。
    直到1986年,戴维·鲁梅尔哈特(Rumelhar)教授与杰弗里·欣顿
    (Geo??rey Hinton)教授等人提出了误差逆传播(Back Propagation,BP)
    算法,彻?解决了两层神经网络计算量问题,从而带动了业界研究多层神经网
    络的热潮。由于神经网络在解决复杂问题时,提供了一种相对简单的方法,因
    此近年来越来越受到人们的关注。目前,神经网络已经广泛应用于人工智能、
    自动控制、机器人、统计学等领域。
    什么是多层神经网络?如图7-9所示,通常多层神经网络具有三层或三层
    以上的结构,每一层都由若干个神经元组成,它的?、右层之间的各个神经元
    实现全连接,即?层的每一个神经元与右层的每个神经元都连接,而同一层中
    上?各神经元之间无连接。为了方便应用,我们把神经网络划分为三个层次。

    (1)输入层:在输入阶段,将来自外部的信息提供给网络的部分,统称
    为“输入层”。输入层对于输入的元素不做任何处理,所有的输入节点都不执
    行计算,只负责将信息传递至隐藏层。
    (2)隐藏层:隐藏层的节点与外界没有直接联系,就像一个黑盒,因此
    得名“隐藏层”。隐藏层的神经元负责执行运算并将信息从输入节点传输到输
    出节点。神经网络只有一个输入层和输出层,但是可以拥有多个隐藏层。
    (3)输出层:输出节点统称为“输出层”,负责计算并将信息从网络输
    出到外部。在正常情况?,一个多层神经网络的计算流程是从数据进入输入层
    开始,输入层将其传递到第一层隐藏层,然后经过第一层神经元运算(乘上权
    值,加上偏置,激活函数运算一次),得到输出,再把第一层的输出作为第二
    层的输入,重复进行运算,得到第二层的输出,直到所有隐藏层计算完?,最
    后数据被输出至输出层运算,得到输出结果。
    如图 7-10 所示,这个过程也称为神经网络的正向传播过程。也就是说,
    从输入层到隐藏层、从隐藏层到输出层,将网络从头到尾运算一遍,计算每个
    节点对其?一层节点的影响。从这个过程也可以看出,对于多层神经网络,我
    们的首要任务是求出各个神经元的权值和偏置参数值,使得输出结果达到我
    们的要求 。

     

    7.3.2 巧用BP算法解决计算问题
    如果我们用正向传播的思路去求各个神经元的权值和偏置参数值,面对的
    是庞大的计算量,好在BP算法帮我们解决了这个问题。
    BP算法主要包含两个过程:第一步是正向传播,即输入信号从输入层经隐
    藏层,传至输出层。如果最后的输出结果与预期不相符,则需要启动第二步。
    将误差从输出层反向传至输入层,并通过梯度?降算法来调节连接权值与偏置
    值,修正各层单元的权值,直到误差减小到可接受程度。此过程的关键点在于
    利用输出后的误差来估计输出层前一层的误差,再用这层误差来估计更前一层
    误差,通过这种方式获取各层误差。这里的误差估计可以理解为某种偏导数,
    根据这种偏导数来调整各层的连接权值,再用调整后的连接权值重新计算输出
    误差。这种信号正向传播与误差反向传播的权值调整过程周而复始地进行,
    直到网络输出的误差减小到我们可接受的程度,或模型进 行到预先设定的学
    习次数为止 。
    这个过程其实很容易理解。就像在职场里领导交给我们一份工作,做完
    后,需要自?而上逐层汇报,根据领导心里的预期与实际的效果不断修改,直
    到领导满意为止。领导层级到最??的执行层级之间可能横跨了几个管理层
    级,于是需要从上至?逆向一个层级一个层级地?达命令修改,直到最初的执
    行者改正后再逐层提交。
    如图7-11所示,BP算法的主要执行步骤为:
    (1)初始化参数。根据问题计算规模手工为神经网络设置层数,并且为
    每个神经元赋予随机的初始参数。
    (2)输入训练样本,计算各层输出,并且计算最后输出结果与实际结果
    的误差。
    (3)从输出层反向逆推,计算各隐藏层的误差。
    (4)根据数据,使用梯度?降法等学习方法调整各层的权值与参数。
    (5)检查网络总误差是否达到精度要求。

     

    在机器学习领域有一种说法,即“神经网络是一种万能算法”。可能很多
    读者都会好奇,多层神经网络为什么被称为万能算法呢?原因在于神经网络强
    大的表达能力。理论上,三层神经网络可以无限?近任意连续函数。接着又有
    读者会问,既然增加一层隐藏层神经网络就已经能够取得这么好的效果,为什
    么还要设置这么多的隐藏层?因为如此简单的结构,在实际使用时难以面对复
    杂问题。通过长期的实践发现,越深层的神经网络结构越灵活,表达效果越
    好,特别是对于卷积神经网络(Convolutional Neural Network,CNN),后
    面章节我们再展开?述。
    综上,多层神经网络有如?优点。
    (1)非线性映射能力:BP神经网络实现了一个从输入到输出的映射功
    能,从数学上可证明三层的神经网络就能够以任意精度?近任何非线性连续函
    数。因此其特别适合于求解内部机制复杂的问题,也就是说BP神经网络具有较
    强的非线性映射能力。
    为了让读者更好地理解神经网络的特点,我们用一张图说明随着网络层数
    的增加以及激活函数的调整,神经网络分类能力的提升。从图 7-12 中可以看
    出,随着层数的增加,其非线性分界拟合能力不断增强。

     

    (2)自学习和自适应能力:BP神经网络能够通过学习自动提取输出数据
    间的“合理规则”,并将学习内容记?于网络的权值中。这说明 BP 神经网络
    具有高度自学习与自适应的能力。
    (3)泛化能力:所谓泛化能力是指在设计分类器时,既要考虑网络在保
    证对所需分类对象进行正确分类的情况?,还要关心网络在经过训练后,能否
    对未见过的数据或有噪声污染的数据进行正确的分类。BP神经网络具有将学习
    成果应用于新数据的能力。
    (4)容错能力:BP神经网络在部分神经元受到破坏后,对全局的训练结
    果不会造成很大的影响。也就是说即使系统受到局部损伤它还是可以正常工作
    的,BP神经网络具有一定的容错能力。
    但同时,多层神经网络也不是万能的。随着应用范围的逐步扩大,BP神经
    网络也暴露出了越来越多的缺点和不足,主要有以?两个方面。
    (1)黑盒性:BP神经网络最为人广知的缺点就是黑盒子性质。由于隐藏
    层复杂的神经元网络,我们不知道网络是如何运行的,以及为什么会产生这样
    的输出。当我们输入一张鼠标的图片到模型中时,模型识别出这是一个键盘,
    我们很难解释模型为什么会有这样的判断。
    神经网络不像贝叶斯或决策树算法,具有很强的解释性。在很多场景下,
    模型的可解释性是非常重要的 。例如券商在分析某支股票?一年的趋势时,
    若模型只给出“上涨”“?跌”的结果,则难以帮助券商做出决策;银行给某
    个客户提供贷款额度时,也只能靠模型得出的结论说服客户。
    (2)在实际项目里使用神经网络的成本较高:成本主要体现在两方面,
    一方面是耗费人力。与传统的机器学习算法相比,神经网络通常需要更多的训
    练数据,至少需要数千甚至数百万个标记样本。面对如此庞大的数据,人为提
    取原始数据的特征作为输入是一件很困难的事情。
    原因在于人为提取特征是一个很难把握尺度的事情,必须在挑选出不相关
    的变量的同时保留有效信息。如果挑选的特征精度太高,神经网络会把同一个
    人戴着帽子和不戴帽子的两张照片识别为两个人;如果挑选的特征精度太低,
    又会导致将双胞胎兄弟的照片识别为同一个人,前者是对不相关变量过于敏
    感,后者则是无法提取有实际意?的特征。
    另一方面是耗费计算资源。神经网络的计算速度普遍较慢,所需的计算能
    力在很大程度上取决于数据的大小以及网络的深度、复杂程度。相比具有1000
    棵子树的随机森林算法,隐藏层只有1层的神经网络的运算速度要快得多。但
    是如果一个神经网络有50层隐藏层,它与仅有10棵子树的随机森林相比,运算
    速度要慢很多。还有一个更严重的问题,神经网络的隐藏层数越多,越容易产
    生梯度?降现象,即增加了层数但模型的精度?没有太大的变化,也就是说即
    使耗费了大量的运算资源,但计算精度依旧没有太大变化。
    讲到这里,相信大多数产品经理对神经网络已经有了新的认识。其实多层
    神经网络在结构上并不复杂,三层结构能够模拟各种非线性函数,并将每个神
    经元的计算能力发挥到极致,因此它能够适用于广泛的应用场景。如上所述,
    虽然训练神经网络的过程更多的还是根据训练效果进行参数调整,但是神经网
    络对于数据的质量要求相当高。人为挑选的特征越准确,越能够帮助模型做出
    正确的判断。因此产品经理需要理解神经网络的工作原理,并且在具体项目中
    运用自身的业务经验,和工程师一起使神经网络发挥出最大威力。
    除了BP神经网络,后人在此基础上研究出了很多改良版的神经网络。因篇
    幅所限,在此我们只介绍最常用的RBF神经网络。 

  • 相关阅读:
    高德德图进去不显示地图或者刷新页面地图丢失解决方法
    wireshark 抓包工俱使用一
    类和对象(8):explicit,static成员,友元,内部类
    【过期策略和内存淘汰机制】三种过期策略、八种淘汰机制、手写lru算法_Redis04
    c++语言基础:常量指针和指针常量的区别
    线上验证真的就是点点点吗?
    MySQL 8.0.18 重新初始化
    【单片机入门】(三)应用层软件开发的单片机学习之路-----UART串口通讯和c#交互
    【动态规划】独立任务最优调度问题
    Ubuntu Minkowski Engine安装
  • 原文地址:https://blog.csdn.net/tysonchiu/article/details/125485995