Deep Learning读书笔记8--应用

1. 大规模深度学习

深度学习的基本思想基于联结主义:尽管机器学习模型中单个生物性的神经元或者说是单个特征不是智能的,但是大量的神经元或者特征作用在一起往往能够表现出智能。

在训练过程中,数据并行某种程度上来说更加困难。 对于随机梯度下降的单步来说,我们可以增加小批量的大小,但是从优化性能的角度来说,我们得到的回报通常并不会线性增长。 使用多个机器并行地计算多个梯度下降步骤是一个更好的选择。 不幸的是,梯度下降的标准定义完全是一个串行的过程: 第 t 步的梯度是第 t1 步所得参数的函数。
这个问题可以使用异步随机梯度下降解决。 在这个方法中,几个处理器的核共用存有参数的内存。 每一个核在无锁情况下读取这些参数并计算对应的梯度,然后在无锁状态下更新这些参数。 由于一些核把其他的核所更新的参数覆盖了,因此这种方法减少了每一步梯度下降所获得的平均提升。 但因为更新步数的速率增加,总体上还是加快了学习过程。

模型压缩

模型压缩的基本思想是用一个更小的模型取代原始耗时的模型,从而使得用来存储与评估所需的内存与运行时间更少。

巨大的模型能够学习到某个函数 f(x) ,但选用的参数数量超过了任务所需的参数数量。 只是因为训练样本数是有限的,所以模型的规模才变得必要。 只要我们拟合了函数 f(x) ,我们就可以通过将 f 作用于随机采样点 x 来生成有无穷多训练样本的训练集。 然后,我们使用这些样本训练一个新的更小的模型,使其能够在这些点上拟合 f(x) 。 为了更加充分地利用了这个新的小模型的容量,最好从类似于真实测试数据(之后将提供给模型)的分布中采样 x 。 这个过程可以通过损坏训练样本或者从原始训练数据训练的生成模型中采样完成。

动态结构

一般来说,加速数据处理系统的一种策略是构造一个系统,这个系统用动态结构描述图中处理输入的所需计算过程。 在给定一个输入的情况中,数据处理系统可以动态地决定运行神经网络系统的哪一部分。 单个神经网络内部同样也存在动态结构,给定输入信息,决定特征(隐藏单元)哪一部分用于计算。 这种神经网络中的动态结构有时被称为条件计算。 由于模型结构许多部分可能只跟输入的一小部分有关,只计算那些需要的特征可以起到加速的目的。

2. 计算机视觉

预处理:对比度归一化

对比度指的是图像中亮像素和暗像素之间差异的大小。 在深度学习中,对比度通常指的是图像或图像区域中像素的标准差。 假设我们有一个张量表示的图像 XRr×c×3 ,其中 Xi,j,1 表示第 i 行第 j 列红色的强度, Xi,j,2 对应的是绿色的强度, Xi,j,3 对应的是蓝色的强度。 然后整个图像的对比度可以表示如下:

13rci=1rj=1ck=13(Xi,j,kX¯)2.

其中 X¯ 是整个图片的平均强度,满足

X¯=13rci=1rj=1ck=13(Xi,j,k).

全局对比度归一化旨在通过从每个图像中减去其平均值,然后重新缩放其使得其像素上的标准差等于某个常数 s 来防止图像具有变化的对比度。 这种方法非常复杂,因为没有缩放因子可以改变零对比度图像(所有像素都具有相等强度的图像)的对比度。 具有非常低但非零对比度的图像通常几乎没有信息内容。 在这种情况下除以真实标准差通常仅能放大传感器噪声或压缩伪像。 这种现象启发我们引入一个小的正的正则化参数 λ 来平衡估计的标准差。 或者,我们至少可以约束分母使其大于等于 ϵ 。 给定一个输入图像 X ,全局对比度归一化产生输出图像 X ,定义为

Xi,j,k=sXi,j,kX¯maxϵ,λ+13rcri=1cj=13k=1(Xi,j,kX¯)2.

从大图像中剪切感兴趣的对象所组成的数据集不可能包含任何强度几乎恒定的图像。 在这些情况下,通过设置 λ=0 来忽略小分母问题是安全的,并且在非常罕见的情况下为了避免除以 0 ,通过将 ϵ 设置为一个非常小的值比如说 108
尺度参数 s 通常可以设置为 1 ,或选择使所有样本上每个像素的标准差接近 1

全局对比度归一化常常不能突出我们想要突出的图像特征,例如边缘和角。 如果我们有一个场景,包含了一个大的黑暗区域和一个大的明亮的区域(例如一个城市广场有一半的区域处于建筑物的阴影之中), 则全局对比度归一化将确保暗区域的亮度与亮区域的亮度之间存在大的差异。 然而,它不能确保暗区内的边缘突出。

局部对比度归一化确保对比度在每个小窗口上被归一化,而不是作为整体在图像上被归一化。
我们可以通过减去邻近像素的平均值并除以邻近像素的标准差来修改每个像素。 在一些情况下,要计算以当前要修改的像素为中心的矩形窗口中所有像素的平均值和标准差。 在其他情况下,使用的则是以要修改的像素为中心的高斯权重的加权平均和加权标准差。

3. 语音识别

语音识别任务在于将一段包括了自然语言发音的声学信号投影到对应说话人的词序列上。 令 X=(x(1),x(2),,x(T)) 表示语音的输入向量(传统做法以 20 ms为一帧分割信号)。 许多语音识别的系统通过特殊的手工设计方法预处理输入信号,从而提取特征,但是某些深度学习系统直接从原始输入中学习特征。 令 y=(y1,y2,,yN) 表示目标的输出序列(通常是一个词或者字符的序列)。 自动语音识别任务指的是构造一个函数 fASR ,使得它能够在给定声学序列 X 的情况下计算最有可能的语言序列 y

fASR(X)=argmaxyP(yX=X),

其中 P 是给定输入值 X 时对应目标 y 的真实条件分布。

从20世纪80年代直到约2009-2012年,最先进的语音识别系统是隐马尔可夫模型和高斯混合模型的结合。 GMM对声学特征和音素之间的关系建模,HMM对音素序列建模。 GMM-HMM模型将语音信号视作由如下过程生成:首先,一个HMM生成了一个音素的序列以及离散的子音素状态(比如每一个音素的开始,中间,结尾),然后GMM把每一个离散的状态转化为一个简短的声音信号。
之后,随着更大更深的模型以及更大的数据集的出现,通过使用神经网络代替GMM来实现将声学特征转化为音素(或者子音素状态)的过程可以大大地提高识别的精度。
一个重要的创新是,卷积网络在时域与频域上复用了权重,改进了之前的仅在时域上使用重复权值的时延神经网络。 这种新的二维的卷积模型并不是将输入的频谱当作一个长的向量,而是当成是一个图像,其中一个轴对应着时间,另一个轴对应的是谱分量的频率。

4. 自然语言处理

自然语言处理让计算机能够使用人类语言,例如英语或法语。 为了让简单的程序能够高效明确地解析,计算机程序通常读取和发出特殊化的语言。 而自然的语言通常是模糊的,并且可能不遵循形式的描述。 自然语言处理中的应用如机器翻译,学习者需要读取一种人类语言的句子,并用另一种人类语言发出等同的句子。 许多NLP应用程序基于语言模型,语言模型定义了关于自然语言中的字、字符或字节序列的概率分布。

5. 其他应用

推荐系统

早期推荐系统的工作依赖于这些预测输入的最小信息:用户ID和项目ID。 在这种情况下,唯一的泛化方式依赖于不同用户或不同项目的目标变量值之间的模式相似性。 假设用户1和用户2都喜欢项目A,B和C. 由此,我们可以推断出用户1和用户2具有类似的口味。 如果用户1喜欢项目D,那么这可以强烈提示用户2也喜欢D。 基于此原理的算法称为协同过滤

协同过滤系统有一个基本限制:当引入新项目或新用户时,缺乏评级历史意味着无法评估其与其他项目或用户的相似性,或者说无法评估新的用户和现有项目的联系。 这被称为冷启动推荐问题。 解决冷启动推荐问题的一般方式是引入单个用户和项目的额外信息。 例如,该额外信息可以是用户简要信息或每个项目的特征。 使用这种信息的系统被称为基于内容的推荐系统。 从丰富的用户特征或项目特征集到嵌入的映射可以通过深度学习架构学习。

知识表示、推理和回答

因为使用符号和词嵌入,深度学习方法在语言模型、机器翻译和自然语言处理方面非常成功。 这些嵌入表示关于单个词或概念的语义知识。 研究前沿是为短语或词和事实之间的关系开发嵌入。 搜索引擎已经使用机器学习来实现这一目的,但是要改进这些更高级的表示还有许多工作要做。
知识、联系和回答 一个有趣的研究方向是确定如何训练分布式表示才能捕获两个实体之间的关系。







猜你喜欢

转载自blog.csdn.net/u012554092/article/details/78258757
今日推荐