0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

神经网络面临的问题和挑战

wFVr_Hardware_1 来源:硬件十万个为什么 作者:硬件十万个为什么 2022-11-01 11:54 次阅读

1、多层神经网络复杂化,提升效率成为新挑战

神经网络从感知机发展到多层前馈神经网络,网络变得越来越复杂。如上一篇 机器学习中的函数(2)- 多层前馈网络巧解“异或”问题,损失函数上场优化网络性能 讨论针对前馈神经网络我们的目标是要让损失函数达到最小值,这样实际输出和预期输出的差值最小,利用最小化损失函数提升分类的精度。显然,采用“穷举”找优参数的方法不是聪明的选择,费时费力。我们现在面临的问题和挑战变成,如何找到一个高效的方法从众多网络参数(神经元之间的连接权值和偏置)中选择最佳的参数?这就是我们即将一起学习讨论的话题

在研究复杂问题之前,我们先要弄清楚几个基础概念,包括“凸函数”,“梯度”,“梯度下降”。

2、基础概念:凸函数和凸曲面、梯度和梯度下降

讨论这些概念前必须向伟大的牛顿致敬,当科学发展到伽利略和开普勒那个年代,人们就在物理学和天文学中遇到很多求一个函数的最大值或最小值,即最优化问题,比如计算行星运动的近日点和远日点距离等。如何系统地解决最优化问题?牛顿创造性的给出了答案,他的伟大之处在于,他不像前人那样,将最优化问题看成是若干数量比较大小的问题,而看成是研究函数动态变化趋势的问题 。如下图,牛顿对比抛物线和它的导数(虚的直线),发现曲线达到最高点的位置,就是切线变成水平的位置,或者说导数变为0的位置呢。他把比较数大小的问题,变成了寻找函数变化拐点的问题,同时发明导数这种工具将这两个问题等同起来,利用导数这个工具求最大值问题就变成了解方程的问题,你看微积分这种强大的数学工具在神经网络中多重要啊。

f9cf45c0-5915-11ed-a3b6-dac502259ad0.png

(1)凸函数和凸曲面

凸函数的直观认识:下图中上述[图a]是凸函数图像,[图b]是非凸函数图像,“任意两点连接而成的线段与函数没有交点”即为凸函数。

f9fd8d5e-5915-11ed-a3b6-dac502259ad0.png

从凸曲面与非凸曲面理解最小值和局部最小值:凸函数的局部极小值就是全局最小值,如下图中【图a】凸曲面中无论弹珠起始位置在何处,弹珠最终都会落在曲面的最低点,而这个极小值恰好是全局最小值。而非凸函数求导获得的极小值不能保证是全局最小值,如【图b】非凸曲面中弹珠仍然会落在曲面的某个低点,但有可能不是全局的最低点。

fa34bc34-5915-11ed-a3b6-dac502259ad0.png

(2)梯度和梯度下降法

梯度(gradient)的本质是一个向量(有大小和方向两个要素),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着此梯度的方向变化最快,变化率最大。为求得这个梯度值会用到“偏导”的概念,“偏导”的英文是“partial derivatives”,若译成“局部导数”更易理解,对于多维变量函数而言,当求某个变量的导数时,就是把其他变量视为常量,然后对整个函数求其导数,由于这里只求一个变量,即为“局部”。接着把这个对“一个变量”求导的过程对余下的其他变量都求一遍导数,再放到向量场中,就得到了这个函数的梯度。

梯度下降法(Gradient descent)是最常见的一种最优化问题求解方法。打个比方,假设一个高度近视的人在山的某个位置上(定义为起始点),他计划从从山上走下来,也就是走到山的最低点。这个时候,他可以以起始点为基准,寻找这个位置点附近最陡峭的地方,然后朝着山的高度下降的方向走,如此循环迭代,最后就可以到达山谷位置。梯度下降过程示意如下图所示,当我们沿着负梯度方向进行迭代的时候“每次走多大的距离”是需要算法工程师去调试的,即算法工程师就是要调试合适的“学习率”,从而找到“最佳”参数。如果碰到极大值问题,则可以将目标函数加上负号,从而将其转换成极小值问题来求解。

fa5b75cc-5915-11ed-a3b6-dac502259ad0.png

3、BP算法提升效率,让人工智能再次进

如本文开头提到的,上世纪70年代多层神经网络出现后,面临重大的挑战是增加神经网络的层数虽然可为其提供更大的灵活性,让网络能解决更多的问题,但随之而来的数量庞大的网络参数的训练,这是制约多层神经网络发展的一个重要瓶颈。这时误差逆传播(error BackPropagation, 简称BP)算法出现了。现在提及BP算法时,常常把保罗·沃伯斯(PaulWerbos)称作BP算法的提出者,杰弗里•辛顿(Geoffrey Hinton)称作BP算法的推动者。

1974年,沃伯斯(图a)在哈佛大学取得博士学位,在他的博士论文里首次提出了通过误差的反向传播来训练人工神经网络,沃伯斯的研究工作,为多层神经网络的学习、训练与实现,提供了一种切实可行的解决途径。

1986年,辛顿教授(图b)和他的团队优化了BP算法,吻醒了沉睡多年的“人工智能”公主,让人工智能研究再次进入繁荣期。

BP算法其实并不仅仅是一个反向算法,而是一个双向算法,它其实是分两步走①正向传播信号,输出分类信息;②反向传播误差,调整网络权值 。

BP 算法基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行调整,采用“链式法则”(链式法则用于求解复合函数的导数,复合函数导数是构成复合的函数在相应点的乘积,就像锁链一环扣一环,所以称为链式法则)。

BP算法的工作流程拆解开如下,对于每个训练样例BP算法执行的顺序是

先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果。

然后计算输出层的误差,再将误差逆向传播至隐层神经元。

最后根据隐层神经元的误差来对连接权和阈值进行调整。

该迭代过程循环进行,直到达到某些停止条件为止,例如训练误差已达到一个很小的值。实际应用中BP算法把网络权值纠错的运算量,从原来的与神经元数目的平方成正比,下降到只和神经元数目本身成正比,效率和可行性大大提升,而这个得益于这个反向模式微分方法节省的计算冗余。

4、BP算法的缺陷

BP算法在很多场合都很适用,集“BP算法”之大成者当属Yann LeCun(杨立昆),纽约大学教授2018年还拿过图灵奖,担任过Facebook首席人工智能科学家。1989年,LeCun就用BP算法在手写邮政编码识别上有着非常成功的应用,训练好的系统,手写数字错误率只有5%。LeCun借此还申请了专利,开了公司,发了笔小财。但如前所述,BP算法的缺点也很明显,在神经网络的层数增多时,很容易陷入局部最优解,亦容易过拟合。20世纪90年代,VladimirVapnik(万普尼克)提出了著名的支持向量机(Support Vector Machine,SVM),虽然SVM是一个特殊的两层神经网络,但因该算法性能卓越,具有可解释性,且没有局部最优的问题,在图像和语音识别等领域获得了广泛而成功的应用。在手写邮政编码的识别问题上,LeCun利用BP算法把错误率降到5%左右,而SVM在1998年就把错误率降低至0.8%,这远超越同期的传统神经网络算法。这使得很多神经网络的研究者转向SVM的研究,从而导致多层前馈神经网络的研究逐渐受到冷落,在某种程度上万普尼克又把神经网络研究送到了一个新的低潮期。

神经网络又是如何度过这个低谷期,快速进入到下一个繁荣时代的呢?

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4574

    浏览量

    98749
  • 人工智能
    +关注

    关注

    1776

    文章

    43865

    浏览量

    230617
  • 函数
    +关注

    关注

    3

    文章

    3880

    浏览量

    61310

原文标题:机器学习中的函数(3) - "梯度下降"走捷径,"BP算法"提效率

文章出处:【微信号:Hardware_10W,微信公众号:硬件十万个为什么】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    神经网络教程(李亚非)

      第1章 概述  1.1 人工神经网络研究与发展  1.2 生物神经元  1.3 人工神经网络的构成  第2章人工神经网络基本模型  2.1 MP模型  2.2 感知器模型  2.3
    发表于 03-20 11:32

    神经网络简介

    神经网络简介
    发表于 08-05 21:01

    MATLAB神经网络

    MATLAB神经网络
    发表于 07-08 15:17

    神经网络基本介绍

    神经网络基本介绍
    发表于 01-04 13:41

    神经网络资料

    基于深度学习的神经网络算法
    发表于 05-16 17:25

    全连接神经网络和卷积神经网络有什么区别

    全连接神经网络和卷积神经网络的区别
    发表于 06-06 14:21

    卷积神经网络如何使用

    卷积神经网络(CNN)究竟是什么,鉴于神经网络在工程上经历了曲折的历史,您为什么还会在意它呢? 对于这些非常中肯的问题,我们似乎可以给出相对简明的答案。
    发表于 07-17 07:21

    【案例分享】基于BP算法的前馈神经网络

    `BP神经网络首先给出只包含一个隐层的BP神经网络模型(两层神经网络): BP神经网络其实由两部分组成:前馈神经网络
    发表于 07-21 04:00

    【案例分享】ART神经网络与SOM神经网络

    今天学习了两个神经网络,分别是自适应谐振(ART)神经网络与自组织映射(SOM)神经网络。整体感觉不是很难,只不过一些最基础的概念容易理解不清。首先ART神经网络是竞争学习的一个代表,
    发表于 07-21 04:30

    人工神经网络实现方法有哪些?

    人工神经网络(Artificial Neural Network,ANN)是一种类似生物神经网络的信息处理结构,它的提出是为了解决一些非线性,非平稳,复杂的实际问题。那有哪些办法能实现人工神经网络呢?
    发表于 08-01 08:06

    什么是LSTM神经网络

    简单理解LSTM神经网络
    发表于 01-28 07:16

    如何构建神经网络

    原文链接:http://tecdat.cn/?p=5725 神经网络是一种基于现有数据创建预测的计算系统。如何构建神经网络神经网络包括:输入层:根据现有数据获取输入的层隐藏层:使用反向传播优化输入变量权重的层,以提高模型的预测
    发表于 07-12 08:02

    基于BP神经网络的PID控制

    最近在学习电机的智能控制,上周学习了基于单神经元的PID控制,这周研究基于BP神经网络的PID控制。神经网络具有任意非线性表达能力,可以通过对系统性能的学习来实现具有最佳组合的PID控制。利用BP
    发表于 09-07 07:43

    轻量化神经网络的相关资料下载

    视觉任务中,并取得了巨大成功。然而,由于存储空间和功耗的限制,神经网络模型在嵌入式设备上的存储与计算仍然是一个巨大的挑战。前面几篇介绍了如何在嵌入式AI芯片上部署神经网络:【嵌入式AI开发】篇五|实战篇一:STM32cubeID
    发表于 12-14 07:35

    神经网络移植到STM32的方法

    神经网络移植到STM32最近在做的一个项目需要用到网络进行拟合,并且将拟合得到的结果用作控制,就在想能不能直接在单片机上做神经网络计算,这样就可以实时计算,不依赖于上位机。所以要解决的主要是两个
    发表于 01-11 06:20