AI - 深度学习之美十四章-概念摘要(8~14)

原文链接:https://yq.aliyun.com/topic/111


08

反向传播(Back Propagation,简称BP) 算法

在神经网络(甚至深度学习)参数训练中,BP算法占据举足轻重的地位。
实际上BP算法是一个典型的双向算法,但通常强调的是反向传播。
工作流程分两大步:

  1. 正向传播输入信号,输出分类信息(对于有监督学习而言,基本上都可归属于分类算法)。简单说来,就是把信号通过激活函数的加工,一层一层的向前“蔓延”,直到抵达输出层。
  2. 反向传播误差信息,调整全网权值。如果没有达到预期目的,重走回头路(1)和(2),也就是通过微调网络参数让下一轮的输出更加准确。

反向传播演示

反向传播演示:https://google-developers.appspot.com/machine-learning/crash-course/backprop-scroll/

BP算法的不足

会存在“梯度扩散(Gradient Diffusion)”现象,其根源在于对于非凸函数,梯度一旦消失,就没有指导意义,导致它可能限于局部最优。
而且“梯度扩散”现象会随着网络层数增加而愈发严重,也就是说,随着梯度的逐层消减,导致它对调整网络权值的调整效益,作用越来越小。
故此BP算法多用于浅层网络结构(通常小于等于3),这就限制了BP算法的数据表征能力,从而也就限制了BP的性能上限。


09

在本质上,BP算法是一种全连接神经网络,虽然有很多成功的应用,但只能适用于“浅层”网络。
因为“肤浅”,所以也就限制了它的特征表征能力,进而也就局限了它的应用范围。

卷积神经网络(Convolutional Neural Network,简称CNN)

当前适用在图像、语音识别等众多任务。
CNN能够直接从原始图像出发,经过非常少的预处理,就能从图像中找出视觉规律,进而完成识别分类任务,其实这就是端到端(end-end)的含义。
避免了对图像进行复杂的前期处理(即大量的人工图像特征提取工作)
当前主流的卷积神经网络结构,其精华大致体现在3个核心操作和3个概念。

  • 3个核心是指:卷积(Convolution)、池化(Poling)和非线性处理(ReLU)。
  • 3个概念是指:局部感受域(Local receptive filed)、权值共享(Weight sharing)和亚采样(Subsampling)。

10

卷积操作的数学意义:一个函数和另一个函数在某个维度上的加权“叠加”作用。

通常把函数f称为输入函数, g 称为滤波器(filter,也称为特征检测器,feature detector)或卷积核(kernel),这两个函数的叠加结果称为特征图或特征图谱(feature map)
特征图谱也被称呼为做卷积特征(convolved feature)或激活图(activation map)。

在本质上,离散卷积就是一个线性运算,因此离散卷积操作也被称为线性滤波。

常用于图像处理的卷积核

  1. 同一化核(Identity)
    卷积后得到的图像和原图一样。
    只有中心点的值是1,邻域点的权值都是0,所以对滤波后的取值没有任何影响。
  2. 边缘检测核(Edge Detection)
    也称为高斯-拉普拉斯算子。
    矩阵的元素总和为0(即中间元素为8,而周围8个元素之和为-8),所以滤波后的图像会很暗,而只有边缘位置是有亮度的。
  3. 图像锐化核(Sharpness Filter)
    图像的锐化和边缘检测比较相似。
    首先找到边缘,然后再把边缘加到原来的图像上面,强化了图像的边缘,使得图像看起来更加锐利。
  4. 均值模糊(Box Blur /Averaging)
    每个元素值都是1,它将当前像素和它的四邻域的像素一起取平均,然后再除以9。
    均值模糊比较简单,但图像处理得不够平滑。因此,还可以采用高斯模糊核(Gaussian Blur),这个核被广泛用在图像降噪上。


11

相比于全连接的前馈网络,卷积神经网络的结构要简洁,但并不简单。

典型卷积神经网络的结构

在不考虑输入层的情况下,一个典型的卷积神经网络通常由若干个卷积层、激活层、池化层及全连接层组成。

卷积层(Convolutional Layer)

- 是卷积神经网络的核心所在。
- 在卷积层,通过实现“局部感知”和“权值共享”等系列的设计理念,可达到两个重要的目的:对高维输入数据实施降维处理和实现自动提取原始数据的核心特征。

激活层(Activation Layer)

- 作用是将前一层的线性输出,通过非线性激活函数处理,从而可模拟任意函数,进而增强网络的表征能力。
- 在深度学习领域,ReLU(Rectified-Linear Unit,修正线性单元)是目前使用较多的激活函数,原因是它收敛更快,且不会产生梯度消失问题。

池化层(Pooling Layer)

- 也称为亚采样层(Subsampling Layer)。
- 简单来说,利用局部相关性,“采样”在较少数据规模的同时保留了有用信息。
- 巧妙的采样还具备局部线性转换不变性,从而增强卷积神经网络的泛化处理能力。

全连接层(Fully Connected Layer)

相当于传统的多层感知机(Multi-Layer Perceptron,简称MLP)。
通常来说,“卷积-激活-池化”是一个基本的处理栈,通过多个前栈处理之后,待处理的数据特性已有了显著变化:
一方面,输入数据的维度已下降到可用“全连接”网络来处理了;另一方面,此时全连接层的输入数据已不再是“泥沙俱下、鱼龙混杂”,而是经过反复提纯过的结果,因此最后输出的结果要可控得高。

常见架构模式

可以根据不同的业务需求,构建出不同拓扑结构的卷积神经网络

例如,可以先由m个卷积层和激活层叠加,然后(可选)进行一次池化操作,重复这个结构n次,最后叠加k个全连接层(m, n, k ≥ 1)。

总体来讲,卷积神经网络通过多层处理,逐渐将初始的“低层”特征表示,转化为“高层”特征表示,之后再用“简单模型”即可完成复杂的分类等学习任务。
因此在本质上,深度学习就是一个“特征学习(feature learning)”或“表示学习(representation learning)”。

卷积层的3个核心概念

卷积层的三个核心概念:局部连接、空间位置排列及权值共享。

局部连接(Local Connectivity)

全连接的前馈神经网络有个非常致命的缺点,那就是可扩展性(Scalability)非常差。
原因非常简单,网络规模一大,需要调参的个数以神经元数的平方倍增,导致它难以承受参数太多之痛。
局部连接(Local Connectivity)在能某种程度上缓解这个“参数之痛”。
局部连接也被称为“稀疏连接(Sparse Connectivity)”。

对于卷积神经网络而言,隐藏层的神经元仅仅需要与前一层的部分区域相连接。
这个局部连接区域有个特别的名称叫“感知域(receptive field)”,其大小等同于卷积核的大小
。
相比于原来的全连接,连接的数量自然是稀疏得多,因此,局部连接也被称为“稀疏连接(Sparse Connectivity)”。

但需要注意的是,这里的稀疏连接,仅仅是指卷积核的感知域相对于原始图像的高度和宽度而言的。
卷积核的深度(depth,在这里卷积核的深度实际上就是卷积核的个数。)则需要与原始数据保持一致,不能缩减。

空间排列(Spatial arrangement)

在构造卷积层时,对于给定的输入数据,如果确定了卷积核的大小,卷积核的深度(个数)、步幅以及补零个数,那么卷积层的空间安排就能确定下来。
也就是说固定4个参数:卷积核的大小、深度、步幅及补零。

卷积核的深度(depth)
    卷积核的深度对应的是卷积核的个数。每个卷积核只能提取输入数据的部分特征。
    每一个卷积核与原始输入数据执行卷积操作,会得到一个卷积特征,这样的多个特征汇集在一起,称为特征图谱。
    事实上,每个卷积核提取的特征都有各自的侧重点。
    因此,通常说来,多个卷积核的叠加效果要比单个卷积核的分类效果要好得多。

步幅(stride)
    即滤波矩阵在输入矩阵上滑动跨越的单元个数。
    设步幅大小为S,当S为1时,滤波器每次移动一个像素的位置。
    当S为2时,每次移动滤波器会跳过2个像素。S越大,卷积得到特征图就越小。

补零(zero-padding)
    补零操作通常用于边界处理。
    在有些场景下,卷积核的大小并不一定刚好就被输入数据矩阵的维度大小整除,就会出现卷积核不能完全覆盖边界元素的情况。
    这时,就需要在输入矩阵的边缘使用零值进行填充,使得在输入矩阵的边界处的大小刚好和卷积核大小匹配。
    这样做的结果,相当于对输入图像矩阵的边缘进行了一次滤波。
    零填充的好处在于,它可以控制特征图的大小。
    使用零填充的卷积叫做泛卷积(wide convolution),不适用零填充的叫做严格卷积(narrow convolution)。

权值共享(Shared Weights)

权值实际上就是不同神经元之间的连接参数,也称为参数共享(Parameter Sharing)。
局部连接虽然降低了连接的个数,但整体幅度并不大,需要调节的参数个数依然非常庞大,因此还是无法满足高效训练参数的需求。
而权值共享能显著降低参数的数量。

对于同一个卷积核,它在一个区域提取到的特征,也能适用于于其他区域。
基于权值共享策略,将卷积层神经元与输入数据相连,同属于一个特征图谱的神经元,将共用一个权值参数矩阵。

权值共享保证了在卷积时只需要学习一个参数集合即可,而不是对每个位置都再学习一个单独的参数集合。
因此参数共享也被称为绑定的权值(tied weights)。

小结

空间位置排列确定了神经网络的结构参数,而局部连接和权值共享等策略显著降低了神经元之间的连接数。

示例:全连接(不包括偏置的权值连接)的参数为15个,局部连接为7个,而权值共享的参数为3个(即红绿蓝线分别共用一个参数)


12

欠拟合与过拟合

欠拟合(underfitting)
样本不够,或学习算法不精,连已有数据中的特征都没有学习好,自然当面对新样本做预测时,效果肯定也好不到哪里去。
欠拟合比较容易克服,比如在神经网络中增加训练的轮数,从而可以更加“细腻”地学习样本种的特征。

过拟合(overfitting)
构建的模型一丝不苟地反映已知的所有数据,但这样一来,它对未知数据(新样本)的预测能力就会比较差。

卷积神经网络如何泛化(即防过拟合)

采样(sampling)
采样的本质就是力图以合理的方式“以偏概全”。
在卷积神经网络中,采样是针对若干个相邻的神经元而言的,因此也称为“亚采样(Subsampling)”,也就是“池化(Pooling)”。

激活层

激活层存在的最大目的,莫过于引入非线性因素(选取合适的“激活函数”),以增加整个网络的表征能力。

Sigmoid激活函数的缺点

导数值很小。比如说,Sigmoid的导数取值范围仅为[0, 1/4],且当输入数据很大或者很小的时候,其导数趋都近于0。
这就意味着,很容易产生所谓的梯度消失(vanishing gradient)现象。

激活函数修正线性单元(Rectified Linear Unit,简称ReLU)

标准的ReLU函数为f(x)=max(x,0),即当x>0时,输出x; 当x<=0时,输出0。

相比于Sigmoid类激活函数,ReLU激活函数的优点
- 单侧抑制。当输入小于0时,神经元处于抑制状态。反之,当输入大于0,神经元处于激活状态。
- 相对宽阔的兴奋边界。Sigmoid的激活态(即f(x)的取值)集中在中间的狭小空间,而ReLU这不同,只要输入大于0,神经元一直都处于激活状态。
- 稀疏激活性。ReLU直接把抑制态的神经元“简单粗暴”地设置为0,就使得这些神经元不再参与后续的计算,从而造成网络的稀疏性,

ReLU激活函数除了减少了计算量,还减少了参数的相互依存关系(网络瘦身了不少),使其收敛速度远远快于其他激活函数,最后还在一定程度上缓解了过拟合问题的发生。

LeRU的这种简单直接的处理方式,也带来一些副作用。
最突出的问题就是,会导致网络在训练后期表现得非常脆弱,以至于这时的ReLU也被戏称为“死掉的ReLU(dying ReLU)”。

池化层

原文地址:https://www.cnblogs.com/anliven/p/6285378.html

时间: 2024-10-10 17:07:19

AI - 深度学习之美十四章-概念摘要(8~14)的相关文章

【WPF学习】第十四章 事件路由

原文:[WPF学习]第十四章 事件路由 由上一章可知,WPF中的许多控件都是内容控件,而内容控件可包含任何类型以及大量的嵌套内容.例如,可构建包含图形的按钮,创建混合了文本和图片内容的标签,或者为了实现滚动或折叠的显示效果而在特定容器中放置内容.设置可以多次重复嵌套,直至达到你所希望的层次深度.如下所示: <Window x:Class="RouteEvent.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2

【WPF学习】第二十四章 基于范围的控件

原文:[WPF学习]第二十四章 基于范围的控件 WPF提供了三个使用范围概念的控件.这些控件使用在特定最小值和最大值之间的数值.这些控件--ScrollBar.ProgressBar以及Slider--都继承自RangeBase类(该类又继承自Control类).尽管它们使用相同的抽象概念(范围),但工作方式却又很大的区别. 下表显示了RangeBase类定义的属性: 表 RangeBase类的属性 通常不比直接使用ScrollBar控件.更高级的ScrollViewer控件(封装了两个Scro

ECMAScript5学习笔记--第十四章 程序

语法: Program : SourceElementsopt SourceElements : SourceElement SourceElements SourceElement SourceElement : Statement FunctionDeclaration 语义: 产生式 Program : SourceElementsopt 依照下面的步骤来解释执行 : 若 SourceElements 的指令序言 ( 参考 14.1 章 ) 中 , 包含严格模式指令 , 或者满足 10.1

深度学习(五十四)图片翻译WGAN实验测试

图片翻译WGAN实验测试 博客:http://blog.csdn.net/hjimce/article/details/51761865 微博:黄锦池-hjimce WGAN相比于GAN的优点在于:具有更高的稳定性.在原始的WGAN中,作者通过一堆的理论,提出了WGAN,理论证明n多页,不过代码实现就两行: (1)去掉了判别网络的判别的概念,在原始的GAN中,判别网络的损失函数为最大化交叉熵损失函数: 也就是说判别网络的输出是一个0~1的概率值,用于表示图片真伪的概率. 然而在WGANs中,fw

《JAVA编程思想》学习笔记——第十四章 类型信息

运行时类型信息使得你可以在程序运行时发现和使用类型信息. 主要有两种方式:一种是"传统的"RTTI, 它假定我们在编译时已经知道了所有的类型;另一种是"反射"机制,它允许我们在运行时发现和使用类的信息. Class对象 类是程序的一部分,每个类都有一个Class对象.换言之,每当编写并且编译一个新类,就会产生一个Class对象(更恰当的说,是被保存在一个同名的.class文件中).为了生成这个类的对象,运行这个程序的Java虚拟机(JVM)将使用被称为"类

JavaScript高级程序设计学习笔记第十四章--表单

1.在 HTML 中,表单是由<form>元素来表示的,而在 JavaScript 中,表单对应的则是 HTMLFormElement 类型. HTMLFormElement 继承了 HTMLElement,因而与其他 HTML 元素具有相同的默认属性. 2.HTMLFormElement的独特属性和方法: acceptCharset:服务器能够处理的字符集:等价于 HTML 中的 accept-charset 特性. action:接受请求的 URL:等价于 HTML 中的 action 特

WP8.1学习系列(第二十四章)——Json解析

.net已经集成了json解析,类名叫DataContractJsonSerializer DataContractJsonSerializer 类型公开以下成员. 构造函数   名称 说明 DataContractJsonSerializer(Type) 初始化 DataContractJsonSerializer 类的新实例,以便序列化或反序列化指定类型的对象. DataContractJsonSerializer(Type, IEnumerable<Type>) 初始化 DataCont

机器学习实战-学习笔记-第十四章

1.将代码拷贝到F:\studio\MachineLearningInAction\ch14下 2.启动ipython 3.在ipython中改变工作目录到F:\studio\MachineLearningInAction\ch14 In [17]: cd F:\\studio\\MachineLearningInAction\\ch14 F:\studio\MachineLearningInAction\ch14 4.在工作目录下新建一个svdRec.py文件并加入如下代码: from num

第三十四章

11 道渢(fēng)呵,其可左右也.万物恃之以生而不辞,成功遂事而弗名有也.万物归焉而弗为主.则恒无欲也,可名于小.万物归焉而弗为主,可名于大.是以圣人之能成大也,以其不为大也,故能成大. 第三十四章1 相当比例的人,因占有心而生病 道渢呵,其可左右也.万物恃之以生而不辞(帛书未见此句),成功遂事而弗名有也.万物归焉而弗为主.则恒无欲也,可名于小. 道广泛盛大,充满左右无处不在.它生养万物而不推辞这个庞大的工作,完成了这些事而不说是自己所拥有的.万物源于它但它不说自己是主人.道没有欲望,所以可