Python数据分析与挖掘实战学习12

一、深度学习

1.BP算法

BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是一种使用比较广泛的参数学习算法。

如图所示,它的基本思想是学习过程由信号的正向传播(求损失)与误差的反向传播(误差回传)两个过程组成。

(1)BP算法的一般流程

1)正向传播FP(求损失)

在这个过程中,我们根据输入的样本,给定的初始化权重值W和偏置项的值b,计算最终输出值以及输出值与实际值时间的损失值。如果损失值不在给定范围内则进行反向传播过程;否则停止W,b的更新。

2)反向传播BP(回传误差)

将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。

由于BP算法是通过传递误差值δ进行更新求解权重值W和偏置项的值b, 所以BP算法也常常被叫做δ算法。如下图所示,以三层感知器结构为例,说明BP算法的一般计算方法。

(2)BP算法的各层误差计算

各部分输入输出如下图所示,各层误差的计算主要包括三部分。

1)输出层的误差

2)展开至隐层的误差

3)展开至隐层的误差

    观察上式,只有上式和输入x有关。E有了,那么就很简单可以看出使用常用的随即梯度下降法(SGD)求解,也就是求解式子中的W和V,使得误差E最小。

2.卷积神经网络

卷积神经网络(Convolutional Neural Networks)是一种深度学习模型或类似于人工神经网络的多层感知器,常用来分析视觉图像。卷积神经网络的创始人是有着的计算机科学家Yann LeCun,他是第一个通过卷积神经网络在MNIST数据集上解决手写数字问题的人。架构如下所示:

卷积神经网络架构与常规人工神经网络架构非常相似,特别是在网络的最后一层,即全连接。此外,卷积神经网络能够接受多个特征图作为输入,而不是向量。卷积圣经网络的层级结构主要包括数据输入层、卷积计算层、ReLU激励层、池化层和全连接层。

(1)数据输入层

该层要做的处理主要是对原始数据进行预处理,其中包括:

1)去均值:把输入数据各个纬度都中心化为0,其目的就是把样本的中心拉回到坐标系原点上。

2)归一化:幅度归一化到同样的范围,即减少各维度数据取值范围的差异而带来的干扰,比如,我们有两个维度的特征A和B,A范围是0到10,而B范围是0到10000,如果直接使用这两个特征是有问题的,好的做法就是归一化,即A合B的数据都变为0到1的范围。

3)PCA/白化:用PCA降维;白化是对数据各个特征轴上的幅度归一化。

(2)卷积计算层

这一层就是卷积神经网络最终的一个层次,也是“卷积神经网络”的名字来源。在这个卷积层,有两个关键操作:局部关联,每个神经元看做一个滤波器(filter);窗口(receptive field)滑动,filter对局部数据计算。

(3)激励层

把卷积层输出结果做非线性映射。

CNN采用的激励函数一般为ReLU(The Rectified Linear Unit/修正线性单元),特德特点是收敛快,求梯度简单,但叫脆弱,图像如下所示。

(4)池化层

池化层夹在连续的卷积层中间,用于压缩数据和参数的量,减小过拟合。如果输入是图像的话,那么池化层的最主要作用就是压缩图像。

1)特征不变性。也就是在图像处理中经常提到的特征的尺度不变性,池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最终的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。

2)特征降维。一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用。

3)在一定程度上防止过拟合,更方便优化。

池化层用的方法有max pooling和average pooling,而实际上用的较多的是max pooling,其方法如下图所示,对于每个2×2的窗口选出最大的数作为输出矩阵的相应元素的值。

(5)全连接层

两层之间所有的神经元都有权重连接,通常全连接层在卷积神经网络尾部。也就是跟传统的网络神经元的连接方式是一样的:

(6)卷积神经网络优缺点

1)优点:共享卷积核,对高维数据处理无压力;无需手动选取特征,训练好权重,即得特征分类效果好。

2)缺点:需要调参,需要大样本量,训练最好要GPU;物理含义不明确,即其本身就是一种难以解释的“黑箱模型”。

(7)卷积神经网络常用框架

1)Caffe:源于Berkeley的主流CV工具包,支持C++、Python和matlab;Model Zoo中有大量预训练好的模型供使用。

2)Torch:Facebook用的卷积神经网络工具包;通过时域卷积的本地接口,使用非常直观;定义新网络层结构。

3)TensorFlow:Google的深度学习框架;TensorBoard可视化非常方便;数据和模型并行化好,速度快。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值