一、深度学习概述
1、什么是深度学习?
2、深度学习与传统机器学习的区别
3、深度学习的应用领域
二、深度学习基本原理
1、神经网络的基本结构
(1)什么是神经网络?
(2)神经网络基本结构
2、激活函数的作用和选择
(1)什么是激活函数?
(2)激活函数的作用与选择
3、损失函数的定义和选择
(1)什么是损失函数
(2)损失函数的选择
4、反向传播算法的原理和应用
三、深度学习常用算法和模型
a. 卷积神经网络(CNN)
b. 循环神经网络(RNN)
c. 生成对抗网络(GAN)
d. 其他常用的深度学习模型和算法
四、深度学习实践操作
1、安装和配置深度学习工具
2、使用深度学习框架实现入门实验:PR-曲线、线性回归、卷积神经网络、GAN生成式对抗神经网络
深度学习是机器学习中的一种基于人工神经网络的机器学习方法,其关键在于通过多层神经网络对输入数据进行逐深度学习是机器学习中的一种基于人工神经网络的机器学习方法,其关键在于通过多层神经网络对输入数据进行逐层抽象和表示学习,从而实现对复杂数据结构和非线性关系的建模。深度学习模型通常包含多个隐藏层,每个隐藏层都有许多神经元。这些神经元通过权重连接,模拟了生物神经元之间的信号传递过程。
深度学习的目标是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字、图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。
深度学习和传统机器学习都是机器学习领域的重要分支,但它们在方法和应用上存在明显的区别与独特的优势。以下是它们之间的主要区别:
1. 特征提取与学习:
- 传统机器学习:通常依赖于特征工程 (feature engineering),这意味着专家需要人为地对数据进行提炼和清洗,选择或构造最相关的特征来训练模型。
- 深度学习:利用表示学习 (representation learning),机器学习模型自身能够从原始数据中自动学习和提取有用的特征。这种方法不需要手动选择特征、压缩维度或转换格式。
2. 数据依赖性:
- 传统机器学习:通常需要大量的标记数据来训练模型,因为模型的性能很大程度上取决于输入的数据质量。
- 深度学习:对于深度学习,尤其是当使用无监督学习方法时,可以处理大量未标记的数据。此外,深度网络的多层结构使其能够学习数据的多层次表示。
3. 计算资源:
- 传统机器学习:通常需要的计算资源较少,因为它们的模型结构简单。
- 深度学习:由于其复杂的网络结构和大量的参数,深度学习模型通常需要更多的计算资源,如GPU加速。
4. 模型解释性:
- 传统机器学习:许多传统的机器学习算法(如决策树、支持向量机等)提供相对较高的模型解释性,因为它们的决策过程往往是直观的。
- 深度学习:深度学习模型,尤其是深层神经网络,通常被视为“黑箱”,因为它们的内部工作机制很难解释。
5. 应用领域:
- 传统机器学习:广泛应用于各种领域,如金融、医疗、零售等,其中特征的选择和工程是关键步骤。
- 深度学习:由于其强大的表示学习能力,尤其在图像识别、语音识别和自然语言处理等领域表现出色。
深度学习是人工智能的一个分支,它教神经网络学习和推理。深度学习在图像识别、自然语言处理、语音识别、推荐系统、自动驾驶汽车、医疗保健、欺诈检测和游戏等领域都有广泛的应用 。
神经网络,又称人工神经网络 (ANN) 或模拟神经网络 (SNN),是机器学习的一个重要子领域,同时也是深度学习算法的核心。其名称和结构均受到人脑的启发,目的是模拟大脑的某些机理与机制,实现诸如图像识别、语音识别等功能。
基本组成:
- 神经元:这是神经网络的基本单位。每个神经元接收一组输入和一个偏置值,当信号(值)到达时会乘以一个权值。如果神经元有4个输入,那么就有4个权值,这些权重可以在训练时进行调整。
- 层:神经网络由相互连接的节点组成,也称为人工神经元,这些节点按层组织。例如,一个三层的神经网络可能包括输入层、隐藏层和输出层。
主要特点:
1. 自我学习和改进:神经网络能够无需人工干预地自我学习和改进。它可以直接从数据中学习特征。
2. 适应性:通过分析神经网络的结构,我们可以找到优化其性能的方法,如调整层数或节点数,或者调整网络处理输入数据的方式。
3. 应用广泛:神经网络被广泛应用于各种领域,从图像和语音识别到预测股市等。
神经网络的基本结构分为四大类: 标准网络、循环网络、卷积网络和自动编码器。
标准网络(Standard Network,SN):是最基本的神经网络类型,包括感知器和前馈网络。感知器是所有神经网络的基础,并且是更复杂的神经网络的基本构建模块。它只连接一个输入神经元和一个输出神经元。前馈网络是由多个感知器组成的集合,其中包含三种基本类型的层:输入层、隐藏层和输出层。在前馈网络中,来自上一层的信号会被乘以权重并增加偏置,然后通过激活函数。前馈网络使用反向传播来迭代更新参数,直到达到理想的性能为止。
循环网络(Recurrent Neural Network ,RNN):是一种处理序列数据的神经网络,例如自然语言处理或时间序列预测。在循环网络中,尝试识别数据中的最小单元,并将数据视为一组这样的单元进行处理。最常见的方法是将一个单词作为一个单元,并在处理句子时将句子视为一组单词。
卷积网络(Convolutional Neural Network, CNN):是一种常用于图像识别和分类的深度学习模型。卷积网络中的卷积层可以有效地提取图像中的空间特征,并通过池化层压缩数据大小,降低模型复杂度。
自动编码器(Autoencoder):是一种无监督学习模型,主要用于数据的特征提取和降维。自动编码器试图学习输入数据的有效表示(编码),并能够从该表示中重构原始输入数据。
激活函数是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。在神经元中,输入的input经过一系列加权求和后作用于另一个函数,这个函数就是这里的激活函数。类似于人类大脑中基于神经元的模型,激活函数最终决定了是否传递信号以及要发射给下一个神经元的内容。在人工神经网络中,一个节点的激活函数定义了该节点在给定的输入或输入集合下的输出。标准的计算机芯片电路可以看作是根据输入得到开(1)或关(0)输出的数字电路激活函数。
激活函数可以分为线性激活函数(线性方程控制输入到输出的映射,如f(x)=x等)以及非线性激活函数(非线性方程控制输入到输出的映射,比如Sigmoid、Tanh、ReLU、LReLU、PReLU、Swish 等) 。
注:Sigmoid、Tanh、ReLU、LReLU、PReLU、Swish都是非线性激活函数,它们都在人工神经网络中起到关键的作用。非线性激活函数如Sigmoid和Tanh可以将输入的线性组合转化为非线性输出。
Sigmoid函数的公式为 S(x)=1/(1+exp(-x)),它将输入的每个值压缩到0和1之间。但是,当输入值远离0时,Sigmoid函数的梯度将接近于0,这可能会导致在训练过程中出现梯度消失的问题。
Tanh函数与Sigmoid函数类似,但它是零中心的,也就是说它的输出范围在-1到1之间。然而,Tanh函数也存在饱和问题。
ReLU(Rectified Linear Unit)函数对正数原样输出,负数直接置零。它在正数区域不饱和,在负数区域硬饱和。ReLU函数计算上比Sigmoid或者Tanh更省计算量,因为不用exp,因而收敛较快。能够帮助解决sigmoid随着层数的增加梯度衰减现象。但是还是非zero-centered。
LReLU(Leaky ReLU)是ReLU的变体,区别在于它不是将所有负值设为零,而是引入一个小的正数斜率。PReLU(Parametric ReLU)是另一个ReLU的变体,其参数化负数部分允许网络学习负数斜率的最佳值。
Swish是一种自门控激活函数,其计算公式为 f(x) = x / ( 1 + e^(-x) )。
损失函数,也叫损失准则,是用来度量模型预测值与真实值之间的差异程度的一种方法。损失函数是一个非负实值函数,通常用符号L(Y, f(x))来表示,其中Y代表真实值,f(x)代表模型的预测值。损失函数越小,说明模型预测值与真实值越接近,模型的鲁棒性就越好。
损失函数在模型训练阶段发挥着重要的作用。每个批次的训练数据送入模型后,通过前向传播输出预测值,然后损失函数会计算出预测值和真实值之间的差异值,也就是损失值。得到损失值之后,模型通过反向传播去更新各个参数,以降低真实值与预测值之间的损失,使得模型生成的预测值更接近真实值,从而达到学习的目的。
关于如何选择损失函数,需要考虑以下因素:
选择损失函数的基本要求是衡量模型输出分布和样本标签分布之间的接近程度。此外,根据特定的预测建模问题(如分类或回归),损失函数的选择必须匹配问题的框架。例如,对于神经网络模型,输出层的参数选择也必须与所选的损失函数相适应。因此,如何选择合适的损失函数是问题抽象建模中的关键步骤。
反向传播算法,全称误差反向传播(Back-propagation, BP)算法,是神经网络发展的重大突破,也是现在众多深度学习训练方法的基础。它是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。
该算法的基本思想包括以下步骤:
1. 先计算每一层的状态和激活值,直到最后一层(即信号是前向传播的);
2. 计算每一层的误差,误差的计算过程是从最后一层向前推进的(即误差是反向传播的);
3. 计算每个神经元连接权重的梯度;
4. 根据梯度下降法则更新参数(目标是误差变小)。迭代以上步骤,直到满足停止准则(比如相邻两次迭代的误差的差别很小)。
在具体实施过程中,首先进行前向传播,输入数据按照从输入层到输出层的顺序,通过网络的每一层进行传递,并计算每一层的输出。然后在输出层得到预测结果后,用一个损失函数来衡量预测结果与真实标签的差异。最后开始反向传播的过程,从输出层开始,向输入层方向进行。
卷积神经网络(CNN)是一种深度学习算法,主要应用于图像识别领域。CNN的价值在于其能够将大数据量的图片有效地降维成小数据量,同时保留图片的特征,这类似于人类的视觉原理。
CNN的基本结构主要包括卷积层、池化层和全连接层:
1. 卷积层:这是CNN的核心部分,主要用于提取图像的特征。通过卷积操作,可以捕捉到图像中的局部特征。
2. 池化层:其主要作用是降低数据的维度,同时保留重要的特征信息。这有助于减少网络的复杂性,提高计算效率。
3. 全连接层:在卷积层和池化层提取并处理了图像的特征后,全连接层用于对特征进行高级处理并输出最终的分类结果。
卷积神经网络(CNN)的常用层结构和参数设置主要包含以下几个部分:
1. 数据输入层:这是网络的第一层,用于接收原始图像数据。在处理原始图像数据时,通常需要进行预处理,包括去均值和归一化等操作。输入图像的尺寸通常是可以被2整除多次的像素值矩阵,常用的数字包括32,64,96,224,384和512。
2. 卷积计算层:也被称为CONV层,是网络的核心部分,主要用于从输入图像中提取特征。这一层会通过多个不同的滤波器(或卷积核)对输入图像进行卷积操作,以提取出图像的不同特征。
3. ReLU激励层:这一层的主要作用是对上一层输出的结果进行非线性变换,增强网络的表达能力。常用的激活函数包括ReLU、Sigmoid和Tanh等。
4. 池化层:池化层的作用主要是降低数据的维度,同时保留重要的特征信息。常用的池化方法有Max Pooling和Average Pooling等。
5. 全连接层:全连接层通常位于网络的最后部分,用于将之前提取并处理的特征进行高级处理并输出最终的分类结果。
值得注意的是,CNN的设计选择和参数设定会严重影响网络的训练和表现。例如,滤波器的大小、步长以及填充方式等都需要根据具体的应用场景和需求来设定。此外,虽然很多架构的选择都是凭借直觉,而非有充分的数学论证,但这些直觉往往是基于大量的实验结果。
循环神经网络(Recurrent Neural Network,RNN)是深度学习中的一种主流模型,特别适用于处理序列数据的任务。其核心原理在于,RNN具有记忆能力,能够捕捉并使用序列中的时序信息,因此可以对序列数据进行有效的建模。
RNN的结构特点是,网络会对序列中的每个元素进行处理,并将结果传递给下一个元素。同时,RNN还会将自身的输出作为输入,结合之前的输出一起处理当前的元素,这种方式使得RNN能够捕捉到时间关系和依赖性信息。
RNN的主要应用包括自然语言处理、时间序列预测和语音识别等领域。例如,在自然语言处理任务中,RNN可以用于词性标注、命名实体识别等;在时间序列预测中,RNN可以用于预测股票价格、天气变化等;在语音识别中,RNN可以用于将语音信号转换为文本。
RNN的常用变体主要包括长短期记忆网络(Long Short-Term Memory,LSTM)和门控循环单元(Gated Recurrent Unit,GRU)。LSTM通过引入门机制解决了RNN的长期依赖问题,而GRU则通过减少参数数量和模型复杂度,同时保持了较好的性能。
在参数设置方面,我们需要关注三个重要的超参数:学习率、批次大小和迭代次数。学习率决定了权重更新的速度;批次大小影响每次训练使用的样本数;而迭代次数则决定了整个训练过程重复执行的次数。
至于RNN的训练方法,最常用的是反向传播通过时间(Backpropagation Through Time,BPTT)。这种方法是基于时间反向传播的,因此被称为随时间反向传播。
GAN,全称为生成对抗网络,是一种深度学习模型,它的核心原理是通过两个神经网络相互博弈学习产生数据。这两个神经网络分别是生成器和判别器。生成器负责从随机噪声中生成数据,试图欺骗判别器以为是真实的数据。判别器则负责判断这些数据是真实还是由生成器生成的。在这场“博弈”中,生成器和判别器不断进行迭代优化,最终实现生成越来越逼真的数据。
GAN的主要应用可以分为两个方面:数据生成和无监督学习。在数据生成方面,GAN常用于图像生成,常用的有DCGAN、WGAN、BEGAN等。此外,由于GAN是一种无监督学习的典范,因此它在无监督学习和半监督学习领域也有广泛的应用。例如,通过GAN可以对大量的未标记数据进行学习,进而提升模型的泛化能力。
GAN的核心组件是生成器和判别器,它们在训练过程中扮演着不同的角色并且相互对抗。生成器的目标是创建看起来像真实数据的新数据,判别器的任务则是判断这些新创建的数据是否真实。
生成器从一个随机噪声中生成数据,试图欺骗判别器以为是真实的数据。为了实现这一点,生成器会尽量最小化重构误差和正则项来学习潜在空间的分布,并使用重参数化技巧来实现可导性。
判别器则需要判断这些生成的数据是真实的还是由生成器生成的。如果判别器不能准确地区分出真假数据,那么就说明生成器成功地创造了逼真的数据。
在训练过程中,生成器和判别器不断进行博弈:生成器试图生成能够“欺骗”判别器的样本,判别器则努力提高其判别真假样本的准确性。通过这种方式,两者不断调整自己的参数,直到达到一个平衡点。在这个平衡点上,生成器能够生成非常逼真的样本,而判别器无法准确区分出真实样本和生成样本。这个过程可以通过多次迭代进行优化,使得生成的样本越来越逼真。
除了RNN、CNN和GAN,深度学习领域还有许多其他的模型和算法。例如:
1. DBN (Deep Belief Network): 它是一种生成式神经网络,由多层隐藏层和可见层组成,并使用受限玻尔兹曼机(Restricted Boltzmann Machine)作为其隐藏层单元。尽管DBN在理解深度学习的“哲学”和“思维模式”方面很有价值,但在实际应用中,CNN和RNN等模型更为常用。
2. RNTN (Recurrent Neural Turing Machine): 它是一种结合了RNN和Turing Machine的模型,旨在处理序列数据和记忆任务。
3. 自动编码器 (Autoencoder): 这是一种无监督的神经网络模型,用于学习数据的压缩表示,并通过解码器重构输入数据。
4. 全连接神经网络 (FCNN): 与CNN不同,FCNN完全连接所有的输入和输出层。它通常用于较少的维度和简单的结构。
5. 多层感知机 (MLP): 这是最简单的深度学习模型之一,由一个或多个隐藏层和一个输出层组成。它常用于监督学习任务。
方向二:深度学习的应用实例
CNN介绍
神经网络(ANN)是一种生物启发的编程范式,它使计算机能够从观测数据中学习。它由大量相互连接的处理单元组成,神经元共同工作以解决问题。人工神经网络通过学习过程被配置为特定的应用程序,如模式识别或数据分类。
ANN的源初形态:输入层、隐藏层、输出层(如图1)。
图1.ANN的基本结构
卷积神经网络与普通神经网络非常相似。他们也都设定了可学习的权值和阈值神经元。主要的区别是层数。卷积神经网络(CNN)是几层的非线性激活函数卷积的结果应用。在传统的神经网络中,每个输入神经元都连接到下一层的输出神经元,这称为全连接层。在CNN里,相反,是用在输入层卷积计算输出。这将导致局部连接,其中输入的每个区域与输出中的神经元相连,每个层应用不同的过滤器,通常是数百或数千,并结合其输出结果。
图2.经典的CNN架构
卷积神经网络的重要应用是引入了池化层,它的主要用武之地在卷积层后面。“池化”(Pooling)对输入做了降维操作,比较常见的是用max或average函数做一个滤波(filter)操作,通过窗口函数进行操作。为什么要进行池化呢?有两点原因。
池化的一个特性是它提供了一个固定大小的输出矩阵,这通常是做决策分类所必需的。这允许使用可变大小的句子和可变大小的过滤器,但输出的维度是相同的。
池化可以做降维,但保留显著信息。我们可以将每个过滤器视为检测特定特性。如果这个特征出现在句子的某个地方,那么将该过滤器应用到那个区域的结果会产生很大的值,但在其他区域中的值很小。恢复,关于位置的全局信息丢失(在某个句子中发生的事情),之所以能保留,是因为关键信息是被捕获的。
在训练阶段,CNN根据所要执行的任务自动学习其滤波器的值。例如,在图像分类中,CNN可以学习在第一层中检测原始像素的边缘,然后利用边缘检测第二层中的简单形状,然后使用这些形状来阻止高级特征,如高层的面部形状,最后一层是使用这些高级特性的分类器。 NLP中,句子和文档被表征为输入矩阵。矩阵每一列对应一个令牌,典型的是单词,也有可能是字符。这样,一列表示一个单词咯。典型的表达方法是化作一个低维度的矩阵表达式,它们也可以是将单词索引到词汇表中的一个热向量。对于一个10单词的句子,我们可以使用100维嵌入我们会有一个10x100矩阵作为输入。
在计算机视觉中,滤波器会滑过图像的局部补丁,但NLP滤波器是在矩阵的整个行上进行滑动的(按照单词来)。因此,滤波器的宽度通常与输入矩阵的宽度相同,高度或区域大小可能会有所不同,但每次滑动超过2-5个单词的窗口是典型的大小。
动机
在本文中,Bitvai等人比较了CNN在人工神经网络应用上的效率。他们建模的问题主要是基于电影评论和电影属性预测未来的票房收入,提出了一种用于文本回归建模的人工神经网络模型。在语言处理中,ANN是最先用概率语言建模的,其次是句子模型和句法分析。这些方法通过自动学习单词和其他语言单元的稠密低维分布式表示,已经表现出强大的性能,它们已被用在编码语言语法和语义的重要方面。Bitval等人还开发了卷积神经网络,灵感来自于他们在图像处理和最近的应用程序语言处理的突破结果。过去的成果主要依赖大数据数据集十分丰富。数以百计的大量参数,人们会期望这样的模型只能在非常大的数据集上得到有效的学习。然而,在本文中显示一个复杂的深度卷积网络可以只训练一千个样本的例子的例子,在这里,细致的模型设计和正则化是更重要的。他们考虑的问题,基于评论的电影评论家和电影属性预测未来的票房收入的电影。他们的方法是基于Joshi等人的方法和的数据集,提出了一个线性回归模型,用于从评论中提取的1、2、3-gram模型频度数据训练电影和审稿人的元数据。这个问题是特别有意思的,因为相对较少的情况下可用于训练,每个实例(电影)包括一系列丰富的数据包括从各种评论网站的一些评论文字,以及结构化数据(类型、等级、演员等)的灵感来自Joshi等人的工作。他们的模型也可以工作在可以用1-gram、2-gram和3-gram模型,之后的研究使用人工神经网络代替线性模型。如果将单词嵌入到低维空间中的表示的话,一个最大池表示卷积网络实例文件,和几个完全连接的隐层允许复杂的非线性相互作用的学习。非线性模型可以提供一个相对误差减少40%(MAE)的结果。
尽管ANN的参数可解释性一贯是口碑不好的,但通过n-gram文本预测模型进行量化分析,是一个可以接受的方案。这样,可以识别出最重要的文本输入,而且能够调研得到词语和词组在不同组合之下的非线性关联。
图3.CNN如何运作
深度神经网络类型
A. RNN
循环卷积神经网络(RNN)背后的想法是使用顺序的信息。在传统神经网络的所有输入(输出)是相互独立的,但对于许多导致性能差的任务, 如果一个句子中的下一个词要被预测,就需要知道前面有哪个词出现了,递归执行取决于之前的运算序列。另一种方式是循环卷积神经网络,长短期记忆序列(LSTM)可以解决这个问题.
图4.卷积神经网络
1) 双向(Bidirectional)循环卷积神经网络(RNN):双向卷积神经网络在预测的时候,不止依赖之前的输入,还要依赖之后的输入。比如说,我要预测一个丢失的单词,上下文(左右句子)的语境都需要直销,相当于左右各自堆栈了一个卷积神经网,输出是在两个循环卷积神经网的隐含层基础上进行计算的。
2) 深度(Deep)卷积神经网络(RNN):其他地方没区别,在原来的双向循环卷积神经网络的基础上,堆叠了好多层,这样增加了其学习能力。
图5.双向RNN结构
图6.深度RNN结构
3) LSTM相比RNN并无太多新鲜之处,它们看上由一些元细胞组成,你可以把它们看作存储当前状态和当前输入的黑盒子。在内部,保存什么记忆(以及擦除什么)由这些细胞(Cell)决定。然后,它们将以前的状态、当前内存和输入相结合。事实证明,这些类型的单元在捕获长期依赖关系方面非常有效。
图7.LSTM结构
循环与循环卷积神经网络是一种通过采用相同集合权重递归运行以对输入进行结构化或标量化预测,或遍历一个给定的拓扑结构以形成一个深度学习的神经网络。如果自然语言的学习主要是基于短语和句子的连续表示基于词的嵌入,在这方面,RNN对序列和树结构的学习是成功的。
如果一个词句可以用独立的树结构进行分布式表达,这方面,RNN是很擅长的。它可以被看作对文本序列的语义建模,用来处理那种将文字序列转化为固定长度向量的场景。循环卷积神经网络的参数可以通过联合概率分布函数进行学习,如同其他NLP任务那样,比如文本分析。
每个RNN单元可以学习词头和其子节点的复杂交互关系,进行建模。在一些特定的任务里,通过卷积和池化操作,循环卷积神经网可以抓取到最重要的语义和结构信息。
循环神经网络可以看成一些前向非循环图的组合,循环神经网络就是搭建一些有反馈的神经网络,其树结构可能是倾斜的。它们已被应用句法分析、句子层面情感分析和意译检测。给定一个句子的结构表示,例如一个解析树,它们通过自下而上的方式递归地生成父表达式,通过组合标记生成短语表示,最终生成整个句子。句子级表示(或者短语短语)可以用来对给定的输入语句进行最终分类。
因为反复的反馈操作,循环卷积神经网可以实现时间和空间上的深度学习操作。为了将这些概念结合起来,最近学界提出了深循环网络。近来,循环神经网络之所以如此杰出,它通过循环连接实现了时间上的深度概念,又通过多个全连接层的堆叠(stack)实现了空间上的深度概念,它们是由叠加在一起的多个递归层构成的,这使得额外的深度(deep)概念被纳入到时间处理中。
图8.循环网络
神经网络的依赖性
为了捕捉远距离的依赖关系,依赖卷积神经网络(DCNN)被提出来了。DCNN由一个卷积层之上长短期记忆(LSTM)网络构成,它与经典的神经网络略有不同,这取决于它的输入。对于简单的句子,LSTM可以在依赖内部捕获其依赖关系。LSTM的隐含层由低层次的表达式给定,带滤波器的卷积层和最大池化层负责提取具体的文本特征和进行分类的操作。在文本建模上,DCNN一开始先用独立的LSTM网络进行操作,第二层的LSTM则负责通过卷积做些编码操作。
k-max pooling
K-Max Pooling的意思是:原先的Max
Pooling Over Time从Convolution层一系列特征值中只取最强的那个值,那么我们思路可以扩展一下,K-Max Pooling可以取所有特征值中得分在Top –K的值,并保留这些特征值原始的先后顺序。K-Max Pooling可以表达同一类特征出现多次的情形,即可以表达某类特征的强度;另外,因为这些Top K特征值的相对顺序得以保留,所以应该说其保留了部分位置信息,但是这种位置信息只是特征间的相对顺序,而非绝对位置信息。这样既提取除了句子中的较重要信息(不止一个),同时保留了它们的次序信息(相对位置)。同时,由于应用在最后的卷积层上只需要提取出k个值,允许不同长度的输入。
图9.依赖网络
图10.动态多层池化网络
其他一些神经网络
1) Muliti-Column CNN:这个模型共享相同的字嵌入作为卷积神经网络的多个列。通常使用的列数是三个,但它或多或少地取决于它必须使用的上下文。这些列用于分析问题的不同方面,即应答路径、应答上下文和应答类型。通常作为问答系统的模型,这个框架结合嵌入学习,框架的概述如图11所示,例如,对于问题的时候在英国发布的Avatar系统,其实体相关的节点进行查询是自由的。这些相关的节点被视为候选答案(CQ)。然后,每个考生做出一个回答a,模型预测一个分数S(Q,A)来判断它是否正确答案。
图11. Muliti-Column CNN
2) Ranking CNN:
图12. Ranking CNN
3) Context-dependent CNN:
图13.Context dependent
CNN
它由两部分组成:卷积的句子模式,总结了源语言句子的意义和目标短语;匹配模型,比较了这两种表示的多层感知器(bengio,2009)。设e为目标短语,f为源句,将源于E. First的源短语通过卷积句子模型投影到特征向量x和y中,然后通过匹配模型计算匹配得分s(x,y)。最后,将分数引入到传统的SMT系统中,作为附加功能,卷积句模型如图13所示,该模型需要输入文字的嵌入(预先训练的地方)F和E然后反复总结通过卷积和汇聚层输入的意义,直到最后一层达到一个固定长度的向量表示。在第1层,卷积层以滑动窗口F和E分别与模型的所有相邻的词可能的组合物。卷积包含一个过滤器,为每个可能的组合生成一个新的特性。
自然语言处理
A.基本应用
1)A Re-ranking
Model for Dependency Parser with Recursive Convolutional Neural Network(递归卷积神经网络依存分析器的重新排序模型),提出了一个句法和组合语义的模型,他用了RCNN结合k-array的树,“这个论文最大的贡献是,他们把以前 Socher 提出的用原始 RNN 做 组合 这种联系 的 方法,给改良了。可以不再只能 model
binary composition 了,可以 triple even more 了。具体可以见 Section 4 开始的那段写的,就是一个 constituent parsing vs. dependency parsing 的问题。这个是他这个论文最大的贡献。variant of RNN to handle more-than-two units of composition。”(https://www.jianshu.com/p/73dffce2c23a)
2)Semantic
Clustering and Convolutional Neural Network for Short Text Categorization(短文本范畴的语义聚类与卷积神经网络):通过语义聚类和卷积神经网络进行建模,他们首先利用快速聚类算法在嵌入空间中发现语义组:(1)基于搜索密度峰的快速聚类方法发现语义组;(2)为了调整多尺度的SUS,语义群被用于超选择阶段。由于每个词的邻居在嵌入空间中是语义相关的,因此可以使用聚类方法发现语义组。然后,在语义组的监督下检测多尺度语义单元,为短文本引入有用的外部知识。这些有意义的语义单元被合并并送入卷积层,然后是最大池化操作。
3)Capturing
Semantic Similarity for Entity Linking with Convolutional Neural Networks(用卷积神经网捕捉实体连接的语义相似度):这篇论文提出了一种利用卷积神经网络捕获一个提及上下文和一个目标实体之间的语义对应关系的模型。这些卷积网络操作的多粒度开发各种主题的信息,和它们丰富的参数化给它们提高了学习能力,表征不同主题的实例。他们提到的模型方然源文件的背景和潜在的实体目标记忆神经网络间的语义相似度。神经网络可以用来为句子分类任务和捕获实体连接,可以证明将隔离实体连接相关话题的语义模型的相似性是有效的。这表明,在输入文档的多粒度卷积可以用于提供不同的语义上下文的概念。最后,它们展示了如何将这些网络与已有的实体连接系统集成起来。
4)Dependency
Sensitive Convolutional Neural Networksfor Modeling Sentences and Documents(基于依赖关系的卷积神经网络在句子建模中的作用):一个依赖敏感卷积神经网络(DSCNN)可以用作文本归纳系统,它可以通过LSTM表征句子。一般的CNN在进行句法分析的时候依赖局部slide滑行窗口,而DSCNN是end-to-end的全局分类系统,可以解决这样的问题。
B. 信息摘取
1) Event Extraction via Dynamic
Multi-Pooling Convolutional Neural Networks(通过动态多池化CNN进行事件抽取):“传统的ACE事件抽取的方法首先依赖人工设计的特征和复杂的NLP工具。这些传统的方法缺少一般性,需要大量的人力成本,而且会产生误差传播以及数据稀疏问题。本文提出了一个新的时间抽取方法,目的是自动地抽取文本级别的以及句子级别的特征,不需要使用复杂的NLP工具。我们提出了一个单词表示模型来描述有意义的语义规律而且采用了一个基于卷积神经网络的框架来描述句子级别的线索。然而,CNN仅仅能描述句子中最重要的信息,而且当考虑多事件句子的时候可能丢失掉有价值的事实。我们提出了一个动态多池化CNN(dynamic multi-pooling convolutional neural network,DMCNN),为了保持更多的重要的信息,该方法根据事件触发器和争议使用动态的多池化层。实验结果证明我们的方法比其他最好的方法(state-of-the-art methods)都要明显地好。”(http://blog.sciencenet.cn/home.php?mod=space&uid=656867&do=blog&id=994488)
2) Event Detection and Domain
Adaptation with Convolutional Neural Networks(基于卷积神经网络的事件检测与域自适应):CNN用来事件检测,进行特征提取,其次可以做些域自适应,可以减轻些错误传播,也可以找到一种更普适的字嵌入的方法。
3) Combining Recurrent and Convolutional Neural
Networks for Relation Classification(组合递归卷积神经网络的关系分类):“此前方法存在的缺陷:
传统文本文类方法:性能很大程度上依赖于特征的表示和选择,然而,常用的特征的表达方法经常忽略上下文信息、单词在文章中的位置,在获取词汇语义方面达不到令人满意的程度。high-ordern-grams和更为复杂的特征表示方法虽然可以获取上下文信息并且保留词序,但是存在数据稀疏问题。
RecursiveNeuralNetwork递归神经网络:在构建句子表达方面很有效,但是它是基于树结构来表达句意的,性能在很大程度上依赖文本树结构,构建这样的一个树时间复杂度会很高至少是O(n^2),而且两个句子之间的关系无法通过树的结构表示,所以RecursiveNN不适合对长句子或文档建模。
RecurrentNeuralNetwork循环神经网络:可以能够很好的捕获上下文信息,但他是有偏差的模型,后输入的词要比先输入的词占有更重要的地位,所以在获取整篇文档语义时这种方法就不那么有效了。
ConvolutionalNeuralNetwork卷积神经网络:是个无偏的模型,对比RNN可以很好的获取文档的语义信息,但是为了简化卷积核都采用固定的窗口,难点在于确定窗口大小,太小的窗口可能丢失重要信息,太大的窗口又会扩大参数空间
创新点:
提出一个新的模型RecurrentConvolutional NeuralNetwork并将其用到文本分类当中。首先在学习词的表达的时候,采用双向循环结构获取文本信息,比传统的基于窗口的神经网络更能减少噪声,而且在学习文本表达时可以大范围的保留词序。其次使用最大池化层获取文本主要成分,自动判断哪个特征在文本分类过程中起更重要的作用。
优点:同时利用了RNN和CNN的优点,时间复杂度仅为O(n),与文本长度呈线性相关。”(http://www.lxway.com/4018556954.htm)
4) Comparing Convolutional Neural Networks to Traditional
Models for Slot Filling(词槽填充的卷积神经网络与传统模型比较):1)CNN的组合能更好地处理一系列不同的问题,这些问题比单独的每种方法都要多。2)在关系参数之前将上下文分割开来,然后将其传递给卷积神经网络,以便更好地处理句子在关系分类中的特殊性,这优于目前最先进的分段CNN。3)他们对词槽填充和是一个重要的因素,可以尝试解决异文合并的冲突。4)它们为词槽填充关系分类提供了一个基准,将有助于未来模型的直接比较,并显示该数据集的结果与end-end系统结果相关。
C. 文本摘要
1)Modelling,
Visualising and Summarising Documents with a Single Convolutional Neural
Network这篇论文采用了二级结构,一级句子建模和二级文档建模都采用CNN来做,我个人觉得如果两级都采用CNN感觉意义不大,因为感觉第二级CNN并没有引入什么新的信息,本质上CNN都是学的N-GRAM片段作为特征,CNN从其机制上学不了特征间的顺序关系,所以套上多层感觉意义不太大。这个论文实验部分只对比了这个模型和随机模型的效果是有提升的,但是并没有做二级结构和一级结构的对比,所以感觉说服力不足,因为也许这个提升完全是因为引入了CNN而不是由于二级结构导致的,所以感觉总体而言从方法到实验都有点问题。(http://blog.csdn.net/malefactor/article/details/51009042)
D.机器翻译
1) Context-Dependent Translation
Selection Using Convolutional Neural Network:用统计学结合CNN做翻译
2) Encoding Source Language with
Convolutional Neural Network for Machine Translation:CNN加Gating做翻译
E.问答系统
1) Question Answering over Freebase with Multi-Column Convolutional
Neural Networks: 用multi-column卷积神经网络进行训练,这样可以获取上下文之间的关联。
图14.Multi-column卷积神经网训练问答系统
应用卷积神经网络生成问题向量,使用卷积神经网络的多层代表问题的不同信息,并与答案集合求解,最终的得出问题答案的匹配值。
2) Modeling Relational Information in Question-Answer Pairs
with Convolutional Neural Networks:通过对问答对的句子embedding矩阵分别进行卷积,池化,得到feature然后进行二分类。
F.语音识别
1)Convolutional
Neural Networks for Speech Recognition(卷积神经网络应用语音识别):这是一个卷积神经网络训练隐马尔科夫模型的思路。
图15.宗成庆《统计自然语言处理》第二版说明隐马尔可夫模型
2) Analysis of
CNN-based Speech Recognition System using Raw Speech as Input: 用了两层卷积层进行训练。
3) End-to-End Deep Neural Network for Automatic Speech
Recognition:这个也是用CNN训练隐马尔可夫模型,四层卷积,前两层做最大池化,接着是两层紧连接层,最后是一个softmax层,ReLU是激活函数。
4) Applying Convolutional Neural Networks Concepts to Hybrid
NN-HMM Model for Speech Recognition:用卷积神经网络搞层次化的隐马尔可夫模型,用最大池化层搭配滤波器来稳定语音输入的频域。
方向三:深度学习的挑战和未来发展方向
数据标注:深度学习通常需要大量标注数据来训练模型。然而,数据标注是一项费时费力的任务,尤其是对于某些复杂的任务,如语音识别或图像分割。缺乏高质量标注数据可能会限制深度学习模型的性能。
模型泛化能力:深度学习模型往往在训练数据上表现出色,但在未见过的数据上可能会出现过拟合现象。模型的泛化能力是指其在新数据上的性能表现。为了提高泛化能力,需要采取一些技术,如正则化、数据增强和集成学习等。
可解释性:深度学习模型通常被认为是黑盒子,即很难理解其决策背后的原因。这使得人们对模型的决策过程产生疑虑,特别是在需要解释的领域,如医疗诊断或法律。提高深度学习模型的可解释性是一个重要的研究方向。
隐私保护:深度学习模型通常需要大量的个人数据来训练,这可能引发隐私问题。训练数据中的敏感信息可能被泄露或滥用。因此,研究者们正在开发一些技术,如差分隐私和联邦学习,来保护用户的隐私。
未来深度学习的发展方向和趋势可能包括以下几个方面:
自监督学习:自监督学习是一种训练模型的方法,它无需人工标注的数据,而是通过模型自身学习任务。这种方法有望减少对标注数据的依赖,并提高模型的泛化能力。
强化学习:强化学习是一种通过与环境交互来学习最佳决策策略的方法。深度强化学习已经在游戏和机器人控制等领域取得了一些成功。未来,深度强化学习可能应用于更广泛的任务,如自动驾驶和智能推荐等。
小样本学习:小样本学习是指在少量标注样本的情况下进行有效学习的能力。这对于某些任务,如医学图像识别或新闻推荐等,是非常重要的。研究者们正在寻找新的算法和技术,以提高小样本学习的性能。
联邦学习:联邦学习是一种分布式学习方法,它允许在保持数据隐私的同时对深度学习模型进行训练。联邦学习的发展有望解决数据隐私问题,使更多的数据可以用于训练。
方向四:深度学习与机器学习的关系
深度学习相较于传统的机器学习方法具有以下优点:
然而,深度学习也存在一些缺点:
未来,机器学习和深度学习将会互相影响和交叉发展。机器学习方法可以为深度学习提供更好的初始化参数、优化算法等方面的改进,从而提高深度学习的效果。而深度学习的发展也将推动机器学习方法的进步,使其更好地应用于各种领域。此外,交叉学科的发展也将促进机器学习和深度学习在更多领域的应用,如医疗、金融、物流等。
总的来说,机器学习和深度学习是相辅相成的,互相促进和发展。未来的发展方向将是改进模型的可解释性、提高训练效率和资源利用率,以及更广泛的应用于各个领域。
方向五:深度学习与人类的智能交互
在模拟人类的认知和感知过程方面,深度学习可以通过神经网络的设计和训练来模拟人类的学习和思考过程。例如,通过深度神经网络的层次结构和权重调整,可以实现类似于人类大脑神经元之间的连接和信息传递。这种模拟人类认知过程的方法被称为“连接主义”(connectionism)。
此外,深度学习还可以模拟人类的感知过程,例如图像和语音的处理。深度学习模型可以通过训练大量的图像和语音数据来学习识别和理解这些输入。例如,通过卷积神经网络(CNN)可以实现图像识别和分类,通过循环神经网络(RNN)可以实现语音识别和自然语言处理。
在与人类进行交流和互动方面,深度学习可以用于开发智能对话系统和机器人。深度学习可以用于理解和生成自然语言,从而实现与人类的对话。例如,通过将深度学习模型与语音识别和自然语言处理技术相结合,可以实现智能助手、聊天机器人等应用。
未来,深度学习与人类智能交互的发展趋势可能包括以下方面:
更加人性化的交互:深度学习模型可以通过学习和理解人类的语言和行为来实现更加自然和智能化的交互。例如,通过情感分析和情感生成技术,机器可以更好地理解和回应人类的情感。
深度学习与其他技术的融合:深度学习可以与其他技术相结合,如增强学习、知识图谱等,以实现更加复杂和智能的交互。例如,深度强化学习可以用于训练智能机器人在复杂环境中进行决策和行动。
跨模态交互:深度学习可以用于处理多模态(例如视觉、语音、触觉等)输入和输出,从而实现更加全面和多样化的交互。例如,通过将视觉和语音识别技术相结合,可以实现智能图像描述和注释。
总之,深度学习在与人类的智能交互方面有着广阔的应用前景,通过不断地研究和发展,可以进一步提高深度学习模型的智能性和人性化,实现更加智能和自然的人机交互体验。