Introduction¶
深度学习在软件应用中越来越多地替代机器学习,这些应用场景包括:语音转换、用户兴趣推荐、网络搜索、内容过滤等。这是因为传统的机器学习技术处理原始形式的自然数据的能力有限,需要极强的工程能力和专业知识来改变原始数据,如像素的转换。
深度学习方法是具有多级表示的表示学习方法,通过组合简单但非线性的模块获得,将原始数据一级一级转换为更抽象、计算机更容易理解的数据。深度学习的关键是:这样每级的特征层不是人设计的,而是通过通用学习程序从数据中学习到的。深度学习非
常擅长在高维数据中发现复杂的结构,适用于医学、物理、商业和政府的许多领域,并已经取得了重大的进展,不需要手工操作的特性会使得它会在不久的将来取得更大的成功。新的学习算法和架构也会加速这一进程。
监督式学习¶
这是机器/深度学习最常见的形式。目标是得出一个函数,这个函数可以得出与期望值相差最小的结果。通过不断的修改函数内部的可调参数(权重),以减少目标函数输出分数和期望的分数之间的误差。计算每个权重的的梯度向量,取其反方向,即最陡的下降方向,使误差更接近最小值(即梯度下降)。
当时通常使用SGD 方法(随机梯度下降)。SGD:随机取出一组样本,计算出平均梯度,并相应地调整权重,重复地取出许多的样本,直到目标函数的平均值停止下降。优点:过程简单,速度快。训练完后会在一组不同的叫做测试集的例子上进行测量。这可以用来测试机器的泛化能力,对训练中从未见过的新输入产生合理答案。
机器学习中传统的手工设计特征需要专业知识和大量的工程技能,通过计算特征向量分量的加权和,并与阈值比较,得出所属类别,对细小的变化非常敏感。
深度学习可以通过自动学习程序自动学习好的特征,这是它的关键优势。这是因为深度学习体系结构是由简单模块组成的多层堆栈,其中所有(或大部分)模块都需要学习,其中许多模块计算非线性的输入-输出映射。栈中的每个模块对其输入进行转换,以增加表示的选择性和不变性。
反向传播来训练多层神经网络¶
几个不同的研究小组独立发现了这一想法:只要模块的输入和内部权重是相对平稳的函数,就可以使用反向传播过程计算梯度。
反向传播的过程就是对复合函数导数链式法则的应用过程,具体过程见(二)的图c和图d
前馈神经网络:学习将固定大小的输入映射到固定大小的输出。每层计算输入的加权和,并经过激活函数。当时ReLu最常用,比过去的sigmoid更快。不在输入或输出层中的单元通常被称为隐藏单元。隐藏层可以被视为以非线性的方式扭曲输入,并在最后一层变得线性可分。
在之前,神经网络和反向传播不被认可,认为很少的先验知识来训练是不可行的,认为SGD会陷入局部最小。然而大型网络中局部极小值问题并不严重。因为只有少数向下曲线方向存在大量鞍点,而且几乎所有鞍点的目标函数值都非常相似,因此卡在哪个点并不重要。
2006年,加拿大高级研究所在前馈神网络中引入了无监督学习,这个方法在数据有限的手写数字识别或行人识别方面效果非常好。Gpu的出现和其易于编程,运算速度快的优点使无监督学习拥有了现实基础。对于较小的数据集,无监督的预训练有助于防止过度拟合,在标记的样本数量较少的情况下,可以显著提高泛化效果。而且只有小数据集才需要预训练阶段。
CNN比全连接的网络更容易训练和推广,它也是一种深度前馈神经网络。
CNN¶
CNN被设计用于处理以多阵列形式出现的数据,信号、语言、序列使用1D,图像或声谱图使用2D,视频、体积图像使用3D。它有四个关键思想,利用了自然信号的特性:本地链接、共享权重、池化和多层的使用。最早起源于1990s早期,应用于语音识别、图像检测。
典型架构:卷积、非线性(ReLU)和池化的两个或三个阶段是堆叠的,然后是更多卷积和完全连接的层,允许训练网络中的所有权重值。卷积和池化直接受到视觉神经科学的启发。
卷积层:提取特征。“不全连接,参数共享”的特点大大降低了网络参数,保证了网络的稀疏性,防止过拟合。之所以可以“参数共享”,是因为样本存在局部相关的特性。特征图中的所有单元共享相同的滤波器组。一层中的不同特征映射使用不同的滤波器组。
池化层:有MaxPool和AveragePool等。其中MaxPool应用广泛。因为经过MaxPool可以减小卷积核的尺寸,同时又可以保留相应特征,所以主要用来降维。池化层的作用是将语义相似的特征合并成一个
许多自然信号中较高层次是由较低层次的特征组成的。前一层元素的位置和外观的变化所引起的池的变动非常小。
使用深度卷积网络(cnn)进行图像理解¶
21世纪初CNN已经用于图像检测分割和识别。最近(2015附近)应用于人脸识别自动驾驶,语音识别和自然语言处理,但直到因为GPU,ReLU和dropout的有效使用使得CNN在imageNet中取得惊人成绩,CNN才真正带来了计算机视觉的革命。最近的突破是使用CNN和RNN生成图像的文字说明。上述的有效使用,使得十几层的ReLU、十亿级单元的巨型网络的训练时间缩短到几个小时。
这个现象使得众多公司开始在CNN的图像理解产品、服务和芯片上开始布局。
Dropout正则化介绍:(1)大型网络但是数据集缺少的时候可以使用dropout防止过拟合,对于小型网络或者说不缺数据集的网络不推荐使用。(2)dropout使用:input 的dropout概率推荐是0.8, hidden layer 推荐是0.5, 但是也可以在一定的区间上取值。(3)dropout缺点:明显增加训练时间,因为引入dropout之后相当于每次只是训练的原先网络的一个子网络,为了达到同样的精度需要的训练次数会增多。(4)dropout优点:防止过拟合。
分布式表示和语言处理¶
与传统学习算法比,使用分布式表示的深度网络具有两种不同的指数优势,这两个优点都来自于组合的强大功能,并依赖于具有适当组件结构的底层数据生成分布:
(1) 学习分布式表示使学习到的特征值的新组合能够超越训练中看到的那些(我能想到的是,使用棋谱训练阿尔法狗可以使它打出不在棋谱中的操作)
(2) 在深度网络中形成一个代表层,会带来深度的指数优势
多层神经网络的隐藏层学会用一种容易预测目标输出的方式来表示网络的输入。
语言模型中,每个词都以向量表示,向量的某一分量为1其余分量为0,各个都不同。网络的其他层学会将输入的单词向量转换为预测的下一个单词的输出单词向量,它可以用来预测词汇表中任何一个单词作为下一个单词出现的概率。网络学习的词向量包含许多活动成分,每一个活动成分都可以被解释为一个词的单独特征。因分布式表示中的特征不是相互排斥的,它们的许多配置对应于观测数据中看到的变化
从文本中学习到的单词的向量表示现在在自然语言应用中非常广泛。表征问题是逻辑启发和神经网络启发认知范式争论的核心。前者认为,一个符号实例与其他符号是相同或不同是唯一的属性。后者在单词向量中可以包含上下文的信息,可以进行快速的直觉判断。神经语音模型得出的向量空间比N-gram的频率计数高效地多。
RNN¶
反向传播引入后,被迫不及待地用于训练RNN,适用于顺序输入、语音、语言。随着RNN的体系结构和训练方法的进步,人们发现RNN擅长预测下一个字符,通过RNN编码解码进行语言的翻译,可以通过CNN对图像编码,通过RNN进行图像解码形成对图像的描述。
RNN类似于非常长的前馈神经网络,每层共享相同的权值,只不过,每一层的输出都作为输入再次进入本层。所谓循环:输入序列的一个元素,保持隐藏单位的状态向量,隐式地包含所有过去的历史信息的元素序列。当我们考虑隐藏单元在不同离散时间步长的输出时,就好像它们是深层多层网络中不同神经元的输出。
优点:强大的动态系统。
缺点:梯度通常是单调的,所以经过很多步之后,通常会出现消失或者爆炸。这意味着无法将信息存储很长时间。
LSTM:比传统的RNN 更加有效,层数越多越有效,目前用于语音识别和机器翻译。
相比于RNN增加了(1)遗忘门:主要是对上一个节点传进来的输入进行选择性忘记。
(2)信息增强门:将输入有选择性地进行“记忆”,哪些重要则着重记录下来,哪些不重要,则少记一些。(3)输出门:这个将决定哪些将会被当成当前状态的输出
LSTM属于使用显式记忆扩充网络(显式记忆:是长期记忆中可被提取的知识,是可用回忆法或再认法测出察觉的记忆),还有使用内存模块来增强RNN的建议,包括图灵机和记忆网络:
图灵机:通过一种类似磁带的存储器增强网络,RNN可以选择读取或写入这种存储器。可以教算法
记忆网络:通过一种联想存储器增强常规网络。
两者都可用于:简单记忆、需要推理(这个厉害啊)和符号操作的任务。
深度学习的未来¶
人和动物的学习都是无监督的,我们通过观察世界发现来发现世界的结构,而不是因为被告知了物体相应的名称。
虽然结合了深度学习和强化学习的系统还处于初级阶段,但它们在分类任务上的表现已经超过了被动视觉系统。
另外,预言深度学习会在NPL、语音识别和手写识别上会变得越来越好。
启发与思考¶
对机器学习和深度学习的历史和相关的概念,以及它们之间的联系和不同有了更深入的认识,又推了一遍反向传播纠正了自己的错误认知,更深刻地认识了CNN的内在结构及其作用,第6部分分布式表示与N-gram的比较,让我把暑假作业中的N-gram和自学的seq2seq翻译联系到了一起,看来直接读论文还是比学二手的要来的清楚明白,并对深度学习未来的发展方向有了初步的把握,并对其充满信心。
我个人认为,无监督学习和监督学习同样重要,监督学习就像学习课堂上和生活中其他人教导的知识,就算所有的知识都是从实践中得出的,监督学习也是学习的非常重要的一环。