什么是深度学习?

简单来说,深度学习就是样本研究。

从最基本的概念上看,深度学习就是机器学习的一种方法,教计算机筛选输入的信息,进而对信息进行预测和分类。其观察结果可以通过图片、文字或声音的方式呈现。

深度学习的灵感来源于人脑过滤信息的方式。其初衷是通过模拟人脑运行模式来做些不一样的事情。

这是正儿八经/真实的人工神经网络。

人脑中有大约1亿个神经元。每个神经元都与另外约10万个同类相连,人类现在正试图将类似的工作原理应用到机器上。

人脑中的神经元分为胞体(body),树突(dendrites)和轴突(axon)。神经元发出的信号经由轴突和传送到下一个神经元的树突。这种信号连接被称作神经元突触(synapse)。

单个的神经元其实没多大用。但如果有很多神经元互相合作就能发挥奇效。这就是深度学习算法背后的理念!从观察中获得输入数据,再将输入数据进行筛选。这类筛选产生的输出数据就是下一层筛选的输入数据,这个过程不断进行,直到获得最后的输出信号!

神经元(结点)会收到一个或多个数据(输入值),经神经元继续传播。该神经元传递的信号就是输出信号。

读者可以将输入信号的筛选看作是自己的感官:比如说你看到、闻到或是感觉到的东西。这些是一个信号观察中独立的变量。该信息会被拆分成数字,变成电脑可以读取的二进制数据。最好给这些变量设置统一标准或格式,确保都在同一范围内。
程序员会使用很多非线性处理单位来提取、转换数据特征。每道筛选步骤都会使用上一步的输出数据作为输入数据。其获取的数据所支撑的概念分为三六九等。在这一个等级上,每层都需要学习如何将输入数据转换成更加抽象、内容更丰富的表达形式。

对图片来说,这就意味着输入数据可能是一个像素矩阵。第一层筛选可能为边界加密,并形成一些像素。第二层筛选可能会再加上鼻子眼睛。下一层筛选可能捕捉到图像中有人脸,如此往复。

神经元内部在发生着什么?

输入结点会按数字排序输入信息。该信息表现为激活值,其中每个神经元结点都会被赋予一个数字。数字越大,激活的程度就越深。

根据连接强度(权重)和转换函数,激活值会被传送到下一个结点。每次接收一个激活值,每个结点都会计算激活值的总和(权重总和),再根据转换函数进行编辑。接着,结点会使用激活函数。激活函数是应用于某一特定神经元的。这一步之后,神经元就知道它要不要再继续传播这个信号。

每个神经元突触都会被赋予一定的权重,这一步对人工神经网络(ANNs, Artificial Neural Networks)至关重要。人工神经网络通过调整权重来决定信号传播的程度。程序员在调试自己的网络时,如何调整权重这一决定权就握在自己手里。
整个激活过程贯穿整个网络,直到它突破输出结点。输出结点会以人类可理解的方式给出信息。程序员的设计的网络会使用成本函数对输出值和预计输出值进行对比,并对模型的表现进行评估,表示为真实值和预测值之间的差异。针对各自网络的具体错误,有不同类型的成本函数可供选择。程序员要尽量减少使用损失函数。从本质上讲,损失函数得出的值越低,得到的结果就越接近预期值。获得信息反馈后,神经网络会通过调整权重的方式学习尽可能少使用损失函数的方法。这个过程叫做反向传播。

在前向传播中,信息进入输入层,通过网络传播以获取输出值,将这个值和预期结果进行对比。接着计算错误,再使信息反向传播。这样做既能训练网络,又能更新权重。得益于算法设计,程序员可以通过反向传播的方式实现同时调整所有权重。这样如果出现任何错误,就能找到是网络的哪部分在负责。

将权重调整到最优级别,我们进入下一步测试阶段。

人工神经网络是如何学习的呢?

想让程序按你的意愿行事,有两种方法。第一种是硬植程序(hard-programmed)。直接告诉程序你想让它为你做什么。第二种就是神经网络。给它输入信息以及期待的输出信息,让它自己去学习。

让网络自己学习就省去了输入规则这个步骤。一旦网络训练成熟,给它一张图片就能轻松区分输出信息。

前馈和反馈网络

前馈网络包括输入数据、输出数据以及隐藏的筛选层。信号只能单向传播(向前)。输入数据经过不断进行计算的筛选层,每个处理元素都根据输入数据的权重总和来进行运算,其结果就变为新的输入数据进入到下一个筛选层(前馈)。前馈网络常用于数据挖掘中。

如循环神经网络之类的反馈网络有反馈通道。这意味着信号能通过循环进行双向传播。所有神经元都可以随意进行连接。因为循环的参与,这种类型的神经网络变为一种非线性的动态系统,不断变化直到达到一种平衡。网络为互相连接的各个元素寻找最佳安排方案时,通常用反馈网络来找到问题的最优解。

什么是加权和?

神经元的输入数据可以是一组数据特征,也可以是上一个筛选层里神经元的输出数据。每两个神经元之间有一种特殊的突触,并有其特殊的权重。若数据要从一个神经元传输到另一个神经元,必须要经过突触,给“过路费”(权重)。对于突触传来的输入数据,神经元会应用激活函数到加权和,并将计算结果传输到下一层的神经元。在谈论在一个网络中更新权重时,通常是指在突触环节调整权重。

神经元的输入数据是上一个筛选层所有神经元产出的调整权重后的输出数据。与当前神经元相连接的突触会有权重,每个输入数据会与之相乘。如果上一个神经元有三个输入数据或神经元,当前筛选层的每一个神经元就会有三个不同的权重:每个突触都有不一样的权重。

长话短说,一个结点的激活函数决定该结点的输出数据。

激活函数(或转换函数)将输入数据转换成输出数据,在一定范围内映射输出数据,比如0到1或者-1到1。在细胞里,激活函数通常被看作动作电位发放率的抽象形式。其数字代表了神经元发射的可能性。简而言之,这个函数是二元的,只有是(神经元会发射),或否(神经元不会发射)两种情况。输出数据要么是0或者1(代表开或关,是或否),要么是范围内的任何值。如果图像中的物体是一只猫,定义在0到1之间,比如说,输出数据是0.9就代表有90%的几率证明图像中的物体是一只猫。

如何选择?有很多激活函数,下文列举三个常用例子:

阀函数(Threshold Function)

这是一个阶梯函数。如果输入数据的总和达到阀值,该函数结果为0。如果总和大于等于0,那么函数结果为1。阀函数的结果非常客观,只有是非之分。

双弯曲函数(Sigmoid Function)

该方程通常应用于逻辑回归。与阀函数不同的是,它是从0到1的缓慢发展。双弯曲函数在输出数据的筛选层非常实用,也广泛用于线性回归。

双曲线正切函数(Hyperbolic Tangent Function)

双曲线正切函数和双弯曲函数非常相似。但其不同点在于,双弯曲函数的范围是从0到1,它的值可以小于0,也就是说它的范围在-1到1之间。虽然这和人脑的工作方式不太一样,但使用双曲线正切函数来训练神经网络可以得到更好的效果。在使用双曲线函数时,神经网络有时候会突然卡住,特别是输入数据中有很多负数,输出数据接近0的时候,会扰乱网络的学习进程。

从上述例子,你可以使用阀函数或双弯曲函数。阀函数会给出“是”或“否”的反馈(对应1或0)。双曲线函数会给出“是”的可能性。

如果使用双曲线函数来决定图像是一只猫的概率,比如说,输出数据0.9就表示有90%的概率证明图像上就是一只猫。

如何调整权重?

硬刚也不是不可以,但即便是只有5个值的输入数据和一个隐藏的筛选层,也有10⁷⁵种可能的组合方式。

世界上运算最快的超级计算机的计算时间也会超过宇宙存在的时间。

梯度下降闪亮登场

如果使用梯度下降算法,可以查看权重斜率的角度,找出正负,再顺藤摸瓜找到最佳权重,以达到全局最小值。

梯度下降算法能算出一个函数的最小值。就好比困在山顶的人试着下山(找到最小值),路上迷雾重重,根本看不见道,这种情况下梯度下降就能派上用场。看着陡峭的山坡,沿着坡度最大的方向继续走,可以假设这样的陡坡也不是立马就能看清楚的。幸好,有梯度下降这个工具可以帮助测量!

然而,使用这个工具时间太久了。

她想在天黑之前下山,尽可能少使用这个办法。真正的挑战是多久使用一次梯度下降函数来确保不会迷路。

在这个例子中,主人公就是算法。山坡的倾斜度就是该点所在平面的错误值。小人前进的方向就是平面错误的倾斜度。她使用了微分法来帮助自己解决问题,平面的坡度可以通过该点错误函数平方的衍生结果来进行计算。小人使用另一种测量方法之前的速度就是这个算法的学习速度。虽然这个比方不是完全恰当的,但它能让读者对梯度下降算法有一个大概了解。机器也在学习这个梯度下降算法(方向),或许模型可以采用这种方法来降低错误率。

一般来说,梯度下降算法会限于本地最小值而不是全局最小值,导致最终的网络低于平均值。这种情况下,通常将每一行的数据输入到同样的神经网络,先看一眼权重是多少,再进行调整。这个过程叫做批量梯度下降。在随机梯度下降法中,需要逐行检查,输入进神经网络,调整权重,再换到下一行。也就是说你要一行一行地调整权重。

随机梯度下降法波动更大,这样能帮助定位全局最小值。顾名思义,样本顺序是随机的,而不是一个数据集中单独的数据组。虽然看起来可能会很慢,但实际操作起来速度很快,因为不需要把所有数据都导入内存再等所有数据一起运行。这个方法最大的优势就在于它是确定性算法。也就是说如果每次初始权重都一样,每次运行网络得到的结果都是一样的。随机梯度下降法永远都是在随机的状态下运作,也可以用体量较小的数据用梯度下降的方式来计算,在同一时间运行很多行数据,再更新权重。

程序员们提出并使用了很多改进随机梯度下降法的算法,包括隐式更新(ISDG)、动量算法、平均随机梯度下降法、自适应梯度算法(AdaGrad),均方根传播算法(RMSProp),自适应动量法(Adam),等等。

什么是深度学习?其工作原理是什么?相关推荐

  1. 0基础怎样理解深度学习的工作原理?做个票价预测工具就懂了

    原作:Radu Raice 安妮 编译自 Medium 量子位 出品 | 公众号 QbitAI 这篇文章颇!具!人!气! 软件工程专业的学生Radu Raice近日发表了文章<Want to k ...

  2. 深度学习的工作原理学习方式

    14天学习训练营导师课程: 李立宗<讲给入门者的深度学习> 工作原理 以培育水稻为例,影响水稻生长的因素包括:施肥量.灌溉量.施肥时间.插秧密度等. 想要获得影响生长因素的各项参数的最优值 ...

  3. 一文带你深入了解,什么是深度学习及其工作原理

    作者 | CraigStedman 编译 | CDA数据科学研究院 ​深度学习是机器学习(ML)和人工智能(AI)的一种,它模仿人类获取某些类型的知识的方式.深度学习是数据科学的重要元素,其中包括统计 ...

  4. 深度学习Spring5底层原理(黑马学习随笔)

    学习随笔简介 跟随着黑马满老师的<黑马程序员Spring视频教程,全面深度讲解spring5底层原理>学习,视频教程地址:黑马程序员Spring视频教程,全面深度讲解spring5底层原理 ...

  5. 深度学习Anchor Boxes原理与实战技术

    深度学习Anchor Boxes原理与实战技术 目标检测算法通常对输入图像中的大量区域进行采样,判断这些区域是否包含感兴趣的目标,并调整这些区域的边缘,以便更准确地预测目标的地面真实边界框.不同的模型 ...

  6. 方法 | 机器学习(深度学习)通用工作流程

    机器学习(深度学习)通用工作流程 Deep Learning with Python 4.5节 1. 定义问题并装载数据集(Defining the problem and assembling a ...

  7. 深度学习attention原理_深度学习Anchor Boxes原理与实战技术

    深度学习Anchor Boxes原理与实战技术 目标检测算法通常对输入图像中的大量区域进行采样,判断这些区域是否包含感兴趣的目标,并调整这些区域的边缘,以便更准确地预测目标的地面真实边界框.不同的模型 ...

  8. 机器学习(深度学习)通用工作流程

    机器学习(深度学习)通用工作流程 翻译 Deep Learning with Python 4.5节 1. 定义问题并装载数据集(Defining the problem and assembling ...

  9. 深度学习 | BN层原理浅谈

    深度学习 | BN层原理浅谈 文章目录 深度学习 | BN层原理浅谈 一. 背景 二. BN层作用 三. 计算原理 四. 注意事项 为什么BN层一般用在线性层和卷积层的后面,而不是放在激活函数后 为什 ...

  10. 【深度学习】VGGNet原理解析及实现

    [深度学习]VGGNet原理解析及实现 VGGNet由牛津大学的视觉几何组(Visual Geometry Group)和Google DeepMind公司的研究员共同提出,是ILSVRC-2014中 ...

最新文章

  1. remote: 此仓库的限制大小为: 2048 MB, 您的使用已经超出限额
  2. 云计算的优势有这6点
  3. KVM中四种网络模型(三)
  4. 自定义控件-侧边菜单SlidingMenu(滑动菜单)
  5. 经典:区间dp-合并石子
  6. CCS中的cmd命令文件
  7. FileMessageSet分析
  8. 免费开源:人人必备的数据分析技能
  9. 支持千万人次毫秒级交易,360金融的系统性能如何做到?
  10. iOS限制文本输入长度进阶之 一
  11. 想活得开心,请放下这7样:烦恼、自卑、懒惰、消极、抱怨、犹豫、狭隘
  12. NAGA-Ⅱ与QPSO算法求解下层为非合作博弈模型的双层规划组合优化模型(铁路开行方案)
  13. GMSSL双证书认证C/S(Linux版)
  14. Excel工作表保护在哪里撤销?
  15. 教你如何购买阿里云香港服务器(教程)
  16. OpenCV——图像细化算法
  17. mac下chrome插件安装位置
  18. HTML+CSS第十课:常见的3种网页布局方式:表格布局、DIV+CSS布局、框架布局
  19. 液晶显示器测试软件的使用经验分享(资源有下载链接)
  20. mac terminal终端打开指定文件夹 当前文件夹打开terminal

热门文章

  1. NBU计算机大三学年下期末考试记录
  2. 劝大家趁早摆脱低水平努力
  3. 关于 linux 的一些发音
  4. linux服务器清理内存,释放Linux服务器内存
  5. Deep Temporal Linear Encoding Networks
  6. linux 内核 nice,进程调度 – Linux内核API set_user_nice
  7. Linux内核中红黑树的使用方法
  8. 常见的文件头格式解析
  9. 2022年06月数据库排行榜
  10. 滤波算法——赫尔移动平均