《机器学习实践应用》学习笔记(7):深度学习

一、深度学习概述

1.深度学习的发展

深度学习(Deep Learning)算法起源于人类对大脑神经元的模仿,生物在识别某些个体的时候,大脑内部是做了层层抽象的,这些抽象就像通过神经元把每种事物拆分成颗粒,然后通过对这些颗粒的理解来做出一些反应;这种抽象工作不是一蹴而就的,而是通过神经元的逐层抽象来实现的,这就构成了神经网络的一个基础架构,深度学习也继承了这种架构。

在仿生物脑神经的架构基础上诞生了人工神经网络,深度学习算法就是继承了这样的架构,并且最终由机器学习界泰斗Hinton做出了算法层面的变革,将深度学习推向新高度。

2.深度学习算法与传统算法的比较

深度学习从算法网络深度角度来看可以分成浅层学习算法和深度学习算法。

(1)浅层学习算法

浅层学习(Shallow Learning)就是隐藏层比较少的神经网络,可以把支持向量机(SVM)和逻辑回归(LR)这样的算法都看作浅层学习,也可以叫作常规的机器学习算法,因为这些学习方法并没有涉及多层次的不断抽象特征的过程。

现在提到的浅层学习都是监督学习,之所以能生成模型并且对预测集进行预测,它的核心思想是最优化代价函数;浅层的算法计算中,通过求解梯度, 找到函数最优化搜索的方向。

另一点浅层算法与深度学习算法不同的地方在于对特征的处理方面,浅层算法在处理一些分类场景时,都要通过特征抽象或者是特征衍生这些方式来人为地构造特征,这些特征的好坏不单考验工程师的业务经验,同时也对模型训练有至关重要的影响。

(2)深度学习算法

深度学习是由输入层、隐藏层和输出层 3 部分组成,隐藏层可以包含很多层,可以是7层、8层,甚至更多;在模型训练方面,深度学习采用了反向传播算法。

反向传播算法又称BP算法(backpropagation algorithm),是一种监督学习算法,该算法的核心思想是求导的链式法则;链式计算可以理解为当通过BP算法进行模型优化的时候,在求解梯度时可以考虑整个从后到前的全部链路的偏导,然后对每一层的权重进行更新;BP算法的目标值对前方隐藏层的影响一定是逐层衰减的,这种衰减会造成模型的极大不准确,所以在深度学习的模型优化过程中需要通过很多辅助手段来优化BP算法。

深度学习训练模型的过程是双向训练的,从输入到输出作为第一条链路,从输出到输入是第二条链路;第一条链路是深度学习自下而上的训练,每一次只针对一层网络进行训练,训练结果作为下一层的输入;第二条链路也就是自上而下的这条链路,主要是借助反向传播方式对每一层的参数进行调优。

深度学习和浅层学习另一个特别大的区别体现在对特征的处理上,浅层学习的特征都是通过人的手工加工和提取生成的,对图形数据这种特征复杂的场景扩展性很差;深度学习可以通过算法自动构建特征,将特征映射到不同的维度空间中。

自动编码(AutoEncoder)的核心思想就是通过训练生成一个函数F,使F(x)约等于x,也就是得到一个函数使输入和输出尽可能相等;就是说可以利用输入数据之间的相关性,通过自动的特征提取,利用低维的特征来还原高维数据;如果应用到图像模型的识别中,就相当于找到了一种方法可以通过点、边及线条还原出一幅图像,这些点、边及线条就是通过自动编码挖掘出来的特征。

浅层学习和深度学习区别总结:

第一,目标场景。目前浅层学习还是机器学习的主流应用,主要用于解决一些日志类的数据分析,特别是结构化数值类数据的一些预测场景;深度学习主要解决复杂特征场景,如图像识别、文本分析和语音识别这样的场景。

第二,特征抽象。浅层学习主要是通过人工手动构建特征,需要具备大量的业务背景知识,而且依赖于手工的特征抽取方式的扩展性不会特别好;深度学习采用了自动编码的方式,逐层抽象特征,对复杂的特征抽取场景有比较好的效果。

第三,模型训练。浅层学习因为架构的层次较少,通过单层梯度下降的方法就可以有监督地对模型进行训练和优化;在深度学习中往往要通过从前到后 和从后到前两条链路来对模型进行训练和优化,而且在模型训练的过程中要考虑不同层次之间函数的偏导关系。

二、深度学习的常见结构

1.深度神经网络

深度神经网络(Deep Neural Network,DNN),特指层次比较深的神经网络;它泛指多层次的神经网络,这些模型的隐藏层之间彼此相连。

2.卷积神经网络

卷积神经网络(Convolutional Neural Network,CNN),是一种比较特殊的深度学习结构,主要是通过卷积来解决空间上一些复杂特征的问题。

在非结构化数据的数制转换过程中,图片数据会按照像素和大小被转换成矩阵状的二进制数据。

CNN架构包含卷积(Convolutions)、下采样(Subsampling)和全连接(Full Connection)几个关键元素;卷积核可以理解成一个比图像尺寸更小的小方 块,然后通过卷积核对输入数据矩阵进行扫描;实际上在执行卷积计算的时候,卷积核需要对输入数据进行一遍扫描;每层都通过一次卷积核处理,那么就可以把图片这种复杂参数的训练流程简化,通过卷积核也能学习出对输入数据的特征描述,整个CNN学习的过程就是在确定卷积核的具体数值。

下采样层的作用就是对图像进行自抽样,减少数据的处理量,使有效的信息得到尽可能的保留;下采样层在深度学习中也被表示为池化层(Pooling Layer);其中一种比较简单的方法是最大池化(Maxpooling),其原理是在每个小区域中选择最大值作为输出值。

全连接(Full Connection)以及高斯连接会做一个分类结果的判断,把特征图谱(Feature Map)信息进行汇总并且综合判断,返回需要的结果。

3.循环神经网络

循环神经网络(Recurrent Neural Network,RNN)是一种环状的深度神经网络,常用来解决时序行为的问题;CNN架构的每层参数是直接向下传导的,不会回流而且同层参数间没有传导,而RNN在隐藏层的输出可以作为自身的输入,参数可以环状传导。

RNN中的每一个隐藏层在做计算的时候都会考虑到前一层的隐藏层参数以及当前时间序列的输入;相比于CNN的隐藏层间参数不传导,RNN的这种架构更适合对时间序列的数据进行预测。

三、总结

深度学习是目前非常热门的机器学习研究方向,这是因为目前社会上积累了很多的非结构化数据,对这类数据的应用场景非常迫切。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181118G0GYTR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券