数据输入的是一张(输入层),CONV表示卷积层,RELU表示激励层,POOL表示池化层,Fc表示全连接层
全连接神经网络需要非常多的计算资源才能支撑它来做反向传播和前向传播,所以说全连接神经网络可以存储非常多的参数,如果你给它的样本如果没有达到它的量级的时候,它可以轻轻松松把你给他的样本全部都记下来,这会出现过拟合的情况。
所以我们应该把神经元和神经元之间的连接的权重个数降下来,但是降下来我们又不能保证它有较强的学习能力,所以这是一个纠结的地方,所以有一个方法就是 局部连接+权值共享 ,局部连接+权值共享不仅权重参数降下来了,而且学习能力并没有实质的降低,除此之外还有其它的好处,下来看一下,下面的这几张:
一个图像的不同表示方式
这几张描述的都是一个东西,但是有的大有的小,有的靠左边,有的靠右边,有的位置不同,但是我们构建的网络识别这些东西的时候应该是同一结果。为了能够达到这个目的,我们可以让的不同位置具有相同的权重(权值共享),也就是上面所有的,我们只需要在训练集中放一张,我们的神经网络就可以识别出上面所有的,这也是 权值共享 的好处。
而卷积神经网络就是局部连接+权值共享的神经网络。
现在我们对卷积神经网络有一个初步认识了,下面具体来讲解一下卷积神经网络,卷积神经网络依旧是层级结构,但层的功能和形式做了改变,卷积神经网络常用来处理数据,比如识别一辆汽车:
在输出到神经网络之前,常常先进行图像处理,有 三种 常见的图像的处理方式:
均值化和归一化
去相关和白化
有一个性质叫做局部关联性质,一个的像素点影响最大的是它周边的像素点,而距离这个像素点比较远的像素点二者之间关系不大。这个性质意味着每一个神经元我们不用处理全局的了(和上一层全连接),我们的每一个神经元只需要和上一层局部连接,相当于每一个神经元扫描一小区域,然后许多神经元(这些神经元权值共享)合起来就相当于扫描了全局,这样就构成一个特征图,n个特征图就提取了这个的n维特征,每个特征图是由很多神经元来完成的。
在卷积神经网络中,我们先选择一个局部区域(filter),用这个局部区域(filter)去扫描整张。 局部区域所圈起来的所有节点会被连接到下一层的 一个节点上 。我们拿灰度图(只有一维)来举例:
局部区域
是矩阵式的,将这些以矩阵排列的节点展成了向量。就能更好的看出来卷积层和输入层之间的连接,并不是全连接的,我们将上图中的红色方框称为filter,它是22的,这是它的尺寸,这不是固定的,我们可以指定它的尺寸。
我们可以看出来当前filter是22的小窗口,这个小窗口会将矩阵从左上角滑到右下角,每滑一次就会一下子圈起来四个,连接到下一层的一个神经元,然后产生四个权重,这四个权重(w1、w2、w3、w4)构成的矩阵就叫做卷积核。
卷积核是算法自己学习得到的,它会和上一层计算,比如,第二层的0节点的数值就是局部区域的线性组合(w1 0+w2 1+w3 4+w4 5),即被圈中节点的数值乘以对应的权重后相加。
卷积核计算
卷积操作
我们前面说过不用向量表示是为了保留平面结构的信息。 同样的,卷积后的输出若用上图的向量排列方式则丢失了平面结构信息。 所以我们依然用矩阵的方式排列它们,就得到了下图所展示的连接,每一个蓝色结点连接四个**的结点。
卷积层的连接方式
是一个矩阵然后卷积神经网络的下一层也是一个矩阵,我们用一个卷积核从矩阵左上角到右下角滑动,每滑动一次,当然被圈起来的神经元们就会连接下一层的一个神经元,形成参数矩阵这个就是卷积核,每次滑动虽然圈起来的神经元不同,连接下一层的神经元也不同,但是产生的参数矩阵确是一样的,这就是 权值共享 。
卷积核会和扫描的的那个局部矩阵作用产生一个值,比如第一次的时候,(w1 0+w2 1+w3 4+w4 5),所以,filter从左上到右下的这个过程中会得到一个矩阵(这就是下一层也是一个矩阵的原因),具体过程如下所示:
卷积计算过程
上图中左边是图矩阵,我们使用的filter的大小是3 3的,第一次滑动的时候,卷积核和矩阵作用(1 1+1 0+1 1+0 0+1 1+1 0+0 1+0 0+1 1)=4,会产生一个值,这个值就是右边矩阵的第一个值,filter滑动9次之后,会产生9个值,也就是说下一层有9个神经元,这9个神经元产生的值就构成了一个矩阵,这矩阵叫做特征图,表示image的某一维度的特征,当然具体哪一维度可能并不知道,可能是这个图像的颜色,也有可能是这个图像的轮廓等等。
单通道总结 :以上就是单通道的的卷积处理,是一个矩阵,我们用指定大小的卷积核从左上角到右下角来滑动,每次滑动所圈起来的结点会和下一层的一个结点相连,连接之后就会形成局部连接,每一条连接都会产生权重,这些权重就是卷积核,所以每次滑动都会产生一个卷积核,因为权值共享,所以这些卷积核都是一样的。卷积核会不断和当时卷积核所圈起来的局部矩阵作用,每次产生的值就是下一层结点的值了,这样多次产生的值组合起来就是一个特征图,表示某一维度的特征。也就是从左上滑动到右下这一过程中会形成一个特征图矩阵(共享一个卷积核),再从左上滑动到右下又会形成另一个特征图矩阵(共享另一个卷积核),这些特征图都是表示特征的某一维度。
三个通道的如何进行卷积操作?
至此我们应该已经知道了单通道的灰度图是如何处理的,实际上我们的都是RGB的图像,有三个通道,那么此时图像是如何卷积的呢?
彩色图像
filter窗口滑的时候,我们只是从width和height的角度来滑动的,并没有考虑depth,所以每滑动一次实际上是产生一个卷积核,共享这一个卷积核,而现在depth=3了,所以每滑动一次实际上产生了具有三个通道的卷积核(它们分别作用于输入的蓝色、绿色、红色通道),卷积核的一个通道核蓝色的矩阵作用产生一个值,另一个和绿色的矩阵作用产生一个值,最后一个和红色的矩阵作用产生一个值,然后这些值加起来就是下一层结点的值,结果也是一个矩阵,也就是一张特征图。
三通道的计算过程
要想有多张特征图的话,我们可以再用新的卷积核来进行左上到右下的滑动,这样就会形成 新的特征图 。
三通道的卷积过程
也就是说增加一个卷积核,就会产生一个特征图,总的来说就是输入有多少通道,我们的卷积核就需要对应多少通道,而本层中卷积核有多少个,就会产生多少个特征图。这样卷积后输出可以作为新的输入送入另一个卷积层中处理,有几个特征图那么depth就是几,那么下一层的每一个特征图就得用相应的通道的卷积核来对应处理,这个逻辑要清楚,我们需要先了解一下 基本的概念:
卷积计算的公式
4x4的在边缘Zero padding一圈后,再用3x3的filter卷积后,得到的Feature Map尺寸依然是4x4不变。
填充
当然也可以使用5x5的filte和2的zero padding可以保持的原始尺寸,3x3的filter考虑到了像素与其距离为1以内的所有其他像素的关系,而5x5则是考虑像素与其距离为2以内的所有其他像素的关系。
规律: Feature Map的尺寸等于
(input_size + 2 padding_size − filter_size)/stride+1
我们可以把卷积层的作用 总结一点: 卷积层其实就是在提取特征,卷积层中最重要的是卷积核(训练出来的),不同的卷积核可以探测特定的形状、颜色、对比度等,然后特征图保持了抓取后的空间结构,所以不同卷积核对应的特征图表示某一维度的特征,具体什么特征可能我们并不知道。特征图作为输入再被卷积的话,可以则可以由此探测到"更大"的形状概念,也就是说随着卷积神经网络层数的增加,特征提取的越来越具体化。
激励层的作用可以理解为把卷积层的结果做 非线性映射 。
激励层
上图中的f表示激励函数,常用的激励函数几下几种:
常用的激励函数
我们先来看一下激励函数Sigmoid导数最小为0,最大为1/4,
激励函数Sigmoid
Tanh激活函数:和sigmoid相似,它会关于x轴上下对应,不至于朝某一方面偏向
Tanh激活函数
ReLU激活函数(修正线性单元):收敛快,求梯度快,但较脆弱,左边的梯度为0
ReLU激活函数
Leaky ReLU激活函数:不会饱和或者挂掉,计算也很快,但是计算量比较大
Leaky ReLU激活函数
一些激励函数的使用技巧 :一般不要用sigmoid,首先试RELU,因为快,但要小心点,如果RELU失效,请用Leaky ReLU,某些情况下tanh倒是有不错的结果。
这就是卷积神经网络的激励层,它就是将卷积层的线性计算的结果进行了非线性映射。可以从下面的图中理解。它展示的是将非线性操作应用到一个特征图中。这里的输出特征图也可以看作是"修正"过的特征图。如下所示:
非线性操作
池化层:降低了各个特征图的维度,但可以保持大分重要的信息。池化层夹在连续的卷积层中间,压缩数据和参数的量,减小过拟合,池化层并没有参数,它只不过是把上层给它的结果做了一个下采样(数据压缩)。下采样有 两种 常用的方式:
Max pooling :选取最大的,我们定义一个空间邻域(比如,2x2 的窗口),并从窗口内的修正特征图中取出最大的元素,最大池化被证明效果更好一些。
Average pooling :平均的,我们定义一个空间邻域(比如,2x2 的窗口),并从窗口内的修正特征图算出平均值
Max pooling
我们要注意一点的是:pooling在不同的depth上是分开执行的,也就是depth=5的话,pooling进行5次,产生5个池化后的矩阵,池化不需要参数控制。池化操作是分开应用到各个特征图的,我们可以从五个输入图中得到五个输出图。
池化操作
无论是max pool还是average pool都有分信息被舍弃,那么部分信息被舍弃后会损坏识别结果吗?
因为卷积后的Feature Map中有对于识别物体不必要的冗余信息,我们下采样就是为了去掉这些冗余信息,所以并不会损坏识别结果。
我们来看一下卷积之后的冗余信息是怎么产生的?
我们知道卷积核就是为了找到特定维度的信息,比如说某个形状,但是图像中并不会任何地方都出现这个形状,但卷积核在卷积过程中没有出现特定形状的位置卷积也会产生一个值,但是这个值的意义就不是很大了,所以我们使用池化层的作用,将这个值去掉的话,自然也不会损害识别结果了。
比如下图中,假如卷积核探测"横折"这个形状。 卷积后得到3x3的Feature Map中,真正有用的就是数字为3的那个节点,其余数值对于这个任务而言都是无关的。 所以用3x3的Max pooling后,并没有对"横折"的探测产生影响。 试想在这里例子中如果不使用Max pooling,而让网络自己去学习。 网络也会去学习与Max pooling近似效果的权重。因为是近似效果,增加了更多的参数的代价,却还不如直接进行最大池化处理。
最大池化处理
在全连接层中所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。当前面卷积层抓取到足以用来识别的特征后,接下来的就是如何进行分类。 通常卷积网络的最后会将末端得到的长方体平摊成一个长长的向量,并送入全连接层配合输出层进行分类。比如,在下面图中我们进行的图像分类为四分类问题,所以卷积神经网络的输出层就会有四个神经元。
四分类问题
我们从卷积神经网络的输入层、卷积层、激活层、池化层以及全连接层来讲解卷积神经网络,我们可以认为全连接层之间的在做特征提取,而全连接层在做分类,这就是卷积神经网络的核心。
一、情感建模
随着人工智能技术的发展,人机交互方式越来越向着人类自然交互方向发展,但传统的人机交互方式是机械化的,难以满足现在的需求。情感计算技术的引入,可以让机器像人一样的观察、理解和表达各种情感特征,就能在互动中与人发生情感上的交流,从而使得人与机器交流得更加自然、亲切和生动,让人产生依赖感,故情感计算及其在人机交互中的应用将是人工智能领域里一个重要的研究方向。
情感建模则是情感计算的重要过程,是情感识别、情感表达和人机情感交互的关键,其意义就在于通过建立情感状态的数学模型,能够更直观地描述和理解情感的内涵。
对于情感模型而言,由于其对情感描述方式的不同,可以分为维度情感模型、离散情感模型和其他的情感模型,但在目前的情感建模研究中,维度情感模型的应用更加广泛。
二、维度情感模型
维度空间论认为人类所有情感分布在由若干个维度组成的某一空间中,不同的情感根据不同维度的属性分布在空间中不同的位置,且不同情感状态彼此间的相似程度和差异可以根据它们在空间中的距离来显示。在维度情感中,不同情感之间不是独立的,而是连续的,可以实现逐渐、平稳的转变。
21、一维情感模型
该模型用一根实数轴来量化情感,认为人类情感除了其独特分类不同外,都可以沿情感的快乐维度排列,其正半轴表示快乐,负半轴表示不快乐,并且可以通过该轴的位置可以判断情感的快乐和不快乐程度。
当人受到消极情感的刺激时,情感会向负轴方向移动,当刺激终止时,消极情感减弱并向原点靠近。当受积极情感的刺激时,情感状态向正半轴移动,并随着刺激的减弱逐渐向原点靠近。
情感的快乐维度是个体情感的共有属性,许多不同的情感会借此相互制约,这还可以为个体情感的自我调节提供依据,但多数心理学家认为情感是由多个因素决定的,也因此产生后来的多维情感空间。
22、二维情感模型
该模型从极性和强度两个维度区分情感,极性是指情感具有正情感和负情感之分,强度是指情感具有强烈程度和微弱程度的区别。这种情感描述比较符合人们对客观世界的基本看法,目前使用最多的是VA二维情感模型,该模型将情感划分为两个维度,价效维度和唤醒维度,如下图所示:
价效维度的负半轴表示消极情感,正半轴表示积极情感。唤醒维度的负半轴表示平缓的情感,正半轴表示强烈的情感。例如,在这个二维情感模型中,高兴位于第一象限,惊恐位于第二象限,厌烦位于第三象限,轻松位于第四象限。每个人的情感状态就可以根据价效维度和唤醒维度上的取值组合得到表征
23、三维情感模型
在三维情感模型中,除了考虑情感的极性和强度外,还有其他因素考虑到情感描述中。PAD三维情感模型是当前认可度比较高的一种三维情感模型,该模型定义情感具有愉悦度、唤醒度、和优势度三个维度,其中P代表愉悦度,表示个体情感状态的正负特性;A代表唤醒度,表示个体的神经生理激活水平;D代表优势度,表示个体对情景和他人的控制状态。
另外,还有APA三维情感空间模型,该模型采用亲和力、愉悦度和活力度三种情感属性,能够描述绝大多是情感。
24、其他多维情感模型
除了以上三种情感模型外,还有更复杂的情感模型。心理学家Izard的思维理论认为情绪有愉悦度、紧张度、激动度和确实度4个维度。愉悦度代表情感体验的主观享乐程度,紧张度和激动度代表人体神经活动的生理水平,确信度代表个体感受情感的程度。
心理学家Krech认为情感的强度是指情感具有由弱到强的变化范围,同时还以紧张水平、复杂度、快乐度3个指标来进行量化。紧张水平是指对要发生的事情的事先冲动,复杂度是对复杂情感的量化,快乐度是表示情感所处的愉快和不愉快的程度,故可以从这四个维度来判断人的情感。
另外,心理学家Frijda提出了情感具有愉快、激活、兴趣、社会评价、惊奇和复杂共6个维度的观点,但高维情感空间的应用存在较大难度,因此在实际中很少使用。
维度情感模型是用人类情感体验的欧氏距离空间描述,其主要思想是人类的所有情感都涵盖于情感模型中,且情感模型不同维度上的不同取值组合可以表示一种特定的情感状态。虽然维度情感模型是连续体,基本情感可以通过一定方法映射到情感模型上,但对于基本情感并没有严格的边界,即基本情感之间可以逐渐、平稳转化。维度情感模型的发展为人类的情感识别、情感合成和调节提供了模型基础。
三、离散情感模型
离散情感模型是把情感状态描述为离散的形式,即基本情感类别,如喜、怒、哀、乐等。 较为著名的是由心理学家Ekman提出的六大基本情感类别:愤怒、厌恶、恐惧、高兴、悲伤、惊讶,其在情感计算研究领域得到广泛应用。Plutchik从强度、相似性和两极性三方面进行情绪划分,对出8种基本情绪:狂喜、警惕、悲痛、惊奇、狂怒、恐惧、接受、憎恨。还有其他的一些心理学家提出了对基本情绪的不同分类。
离散情感模型较为简洁明了,方面理解,但只能描述有限种类的情感状态,而维度情感模型弥补了离散情感模型的缺点,能够直观地反映情感状态的变化过程。
四、其他情感模型
除了较常用的维度情感模型和离散情感模型外,一些心理学家还提出了其他基于不同思想的情感模型,如基于认知的情感模型、基于情感能量的概率情感模型、基于事件相关的情感模型等,从不同的角度分析和描述人类的情感,使情感的数学描述更加丰富。
41、OCC情感模型
该模型是针对情感研究而提出的最完整的情感模型之一,它将22种基本情感根据其起因分为三类:事件的结果、仿生代理的动作和对于对象的观感,并对这三类定义了情感的层次关系,可以描述特定情感的产生条件和后续发展。OCC模型给出了各类情感产生的认知评价方式。同时,该模型根据假设的正负极性和个人对刺激事件反应是否高兴、满意和喜欢的评价倾向构成情感反应。
在模型中,最常产生的是恐惧、愤怒、高兴和悲伤这4种情绪。尽管OCC模型传递函数并不是很明确,但从广义上看,其具有较强的可推理性,易于计算机实现,因此被广泛应用于人机交互系统中。
42、隐马尔可夫模型情感模型
该模型有三种情感状态,分别是感兴趣、高兴、悲伤,并且可根据需要扩展到多种情感状态。在模型中,情感状态是通过观测到如情绪响应上升时间、峰值间隔的频率变化范围等情感特征得到的,并通过转移概率来描述情感状态之间的相互转移,从而输出一种最可能的情感状态。
该模型适合表现由不同情感组成的混合情感,如忧伤可以由爱和悲伤组成。另外,还适合表现由若干单一的情感状态基于时间的不断交替出现而成的混合情感,如爱恨交织的情感状态就可能是爱恨两种之间循环。该模型的不足之处在于,对于相同的刺激,其感知结果是确定的。
43、分布式情感模型
该模型是针对外界刺激建立起来的一种分布式情感模型,整个分布式系统是将特定的外界情感事件转换成与之相对应的情感状态,过程分为以下两个阶段:
1、由事件评估器评价事件的情感意义,针对每一类相关事件,分别定义一个事件评估器,当事件发生时,先确定事件的类型和信息,然后选择相关事件评估器进行情感评估,并产生量化结果情感脉冲向量EIV。
2、对EIV归一化得到NEIV,通过情感状态估计器ESC计算出新的情感状态。事件评估器、EIV、NEIV及ESC均采用神经网络实现。
附:学习书目
《情感计算与情感机器人系统》吴敏 刘振焘 陈略峰
一 池化简介
平均池化:将按照固定大小网格分割,网格内的像素值取网格内所有像素的平均值。
池化:使用均等大小的网格将分割,并求网格内代表值的过程。
池化是卷积神经网络(convolutional neural network)中非常重要的处理方式,能够有效地降低图像的维度。
平均池化定义:
二 将输入图像用44网格做平均池化
import cv2
import numpy as np
# average pooling
def average_pooling(img, G=4):
out = imgcopy()
H, W, C = imgshape
Nh = int(H / G)
Nw = int(W / G)
for y in range(Nh):
for x in range(Nw):
for c in range(C):
out[Gy:G(y+1), Gx:G(x+1), c] = npmean(out[Gy:G(y+1), Gx:G(x+1), c])astype(npint)
return out
# Read image
img = cv2imread("/paojiejpg")
# Average Pooling
out = average_pooling(img)
# Save result
cv2imwrite("outjpg", out)
cv2imshow("result", out)
cv2waitKey(0)
cv2destroyAllWindows()
三 输出结果
四 深度学习中的平均池化操作,以pytorch库为例
import cv2
import numpy as np
import torch
import torchnn as nn
img = cv2imread('/paojiejpg',0) #读入灰度图像
img = nparray(img,dtype='float32')
img = torchfrom_numpy(imgreshape(1,1,imgshape[0],imgshape[1])) # 将灰度图像转换为tensor
avgPool = nnAvgPool2d(4) #44的窗口,步长为4的平均池化
img = avgPool(img)
img = torchsqueeze(img) #去掉1的维度
img = imgnumpy()astype('uint8') #转换格式,准备输出
cv2imwrite("outjpg", img)
cv2imshow("result", img)
cv2waitKey(0)
cv2destroyAllWindows()
五 pytorch中的平均池化输出结果( AvgPool2d() 函数 )
可以看到,pytorch中 AvgPool2d 函数,平均池化后降低了图像的维度。
六 参考内容
https://wwwcnblogscom/wojianxin/p/12496509html
思考情感维度指的是思维模式,不是行动方式。
思考情感的维度肯定是指你的大脑。是你的思维模式而不是行动模式,当然行动靠大脑来指挥,也就是你的大脑所想到的,然后通过行为方式来实现,所以说是靠情感的维度,是靠你的大脑来想象。思考了一定的行动模式,然后靠自己行为模式来实现。
维度是一种描述方法,体现了信息的有效性。(你七大姑八大姨一家子觉得好只能等于1个人觉得好,因为是等效信息,你觉得好且你情敌觉得好才是真的好,这是正交信息)。
一个单维度和多维度的问题,单维度的理解深度重要,多维度的广度也同样重要。(看人不能只看身子,听其言,观其行,识其相,火眼金睛不是与生俱来而是多维度修行历练的结果)。
低维度和高维度的问题,高维度影响着低维度,低维度是高维度不可分割的组成部分。一家公司赚钱和一家公司有价值是两个不同的维度层级,有价值的公司不一定有利润,有利润的公司不一定有价值,利润和价值不直接划等号又密切关联,这是两个维度层级。
买股票预测得对公司利润也可会亏钱,这不是对公司业绩理解深度出了问题,而是更高维度的变化影响着公司价值,我们对此却熟视无睹,比如应试教培行业遭遇的降维打击。
嵌牛导读:卷积神经网络(Convolutional Neural Network)最早是应用在计算机视觉当中,而如今CNN也早已应用于自然语言处理(Natural Language Processing)的各种任务。
嵌牛鼻子:卷积神经网络;池化操作;NLP。
嵌牛提问:卷积神经网络结构有哪些?什么是池化操作?应用?
嵌牛正文:
先介绍卷积神经网络中各个重要的环节。
卷积
所以这里我们首先去理解卷积神经网络中卷积的运算。这里我们以图像作为输入。比较容易理解卷积的方法是把卷积想象成作用于矩阵的一个滑动窗口函数。如下面这张图的表示。
滑动窗口又称作卷积核、滤波器或是特征检测器。图中使用3x3的卷积核,将卷积核与矩阵对应的部分逐元素相乘,然后求和。对于卷积的运算可以看下面这幅图的解释。
在不改变卷积核权重的情况下,就像拿着一只刷子一样对整个图水平垂直滑动进行卷积运算,这样输出就是经过卷积运算后的输出层。
什么是卷积神经网络
卷积神经网络其实就是多层卷积运算,然后对每层的卷积输出用非线性激活函数做转换。卷积过程中每块局部的输入区域与输出的一个神经元相连接。对每一层应用不同的卷积核,每一种卷积核其实可以理解为对的一种特征进行提取,然后将多种特征进行汇总,以下面这幅图为例,原始的input为一幅,第一层卷积过后输出层变为6@2828,所以这里的卷积核实际上用了6个,6个卷积核代表了对这一张原始的六种不同角度的特征提取(例如提取左上方的边缘线条,右下方的边缘线条等等)。feature map实际上的含义就是特征通道(或者理解为一个的不同特征),也可以说就是输出层的深度,这里就是6,然后后面每一次做卷积操作是都是要对所有的特征通道进行卷积操作以便提取出更高级的特征。
例如,在上面这幅图中,第一层CNN模型也许学会从原始像素点中检测到一些边缘线条,然后根据边缘线条在第二层检测出一些简单的形状(例如横线条,左弯曲线条,竖线条等),然后基于这些形状检测出更高级的特征,比如一个A字母的上半部分等。最后一层则是利用这些组合的高级特征进行分类。
卷积神经网络中的卷积计算实际上体现了:位置不变性和组合性。位置不变性是因为卷积核是在全图范围内平移,所以并不用关心猫究竟在的什么位置。组合性是指每个卷积核对一小块局部区域的低级特征组合形成更高级的特征表示。
卷积是如何应用到自然语言处理中
在图像中卷积核通常是对图像的一小块区域进行计算,而在文本中,一句话所构成的词向量作为输入。每一行代表一个词的词向量,所以在处理文本时,卷积核通常覆盖上下几行的词,所以此时卷积核的宽度与输入的宽度相同,通过这样的方式,我们就能够捕捉到多个连续词之间的特征,并且能够在同一类特征计算时中共享权重。下面这张图很好地诠释了刚才的讲解。
池化层
卷积神经网络的一个重要概念就是池化层,一般是在卷积层之后。池化层对输入做降采样。池化的过程实际上是对卷积层分区域求最大值或者对每个卷积层求最大值。例如,下图就是2x2窗口的最大值池化(在自然语言处理中,我们通常对整个输出做池化,每个卷积层只有一个输出值)。
为什么要进行池化操作?
池化首先是可以输出一个固定大小的矩阵,这对于自然语言处理当中输入句子的长度不一有非常大的作用。例如,如果你用了200个卷积核,并对每个输出使用最大池化,那么无论卷积核的尺寸是多大,也无论输入数据的维度或者单词个数如何变化,你都将得到一个200维的输出。这让你可以应对不同长度的句子和不同大小的卷积核,但总是得到一个相同维度的输出结果,用作最后的分类。
另外池化层在降低数据维度的同时还能够保留显著的特征。每一种卷积核都是用来检测一种特定的特征。在以句子分类中,每一种卷积核可以用来检测某一种含义的词组,如果这种类型的含义的词语出现了,该卷积核的输出值就会非常大,通过池化过程就能够尽可能地将该信息保留下来。
激活函数
有关激活函数很多细节的讲述在最后的总结会提到。
卷积神经网络结构在NLP的应用
首先我们来介绍第一篇论文《Natural Language Processing (almost) from Scratch》,该论文主要是针对原来那种man-made 的输入特征和人工特征,利用神经网络的方法自动抽取出文本句子更高级的特征用来处理自然语言处理里的各项任务,例如本文中输入是一个句子序列,输出是对句子中各个词的词性的预测。该文提出了两种方法,一种是滑动窗口的方法(window approach),另一种就是将整个句子作为输入(sentence approach)的方法,两种方法就分别对应着局部和全局的特征。模型结构如下图所示:
window approach
sentence approach
window approach 是根据某一个单词以及其附近固定长度范围内的单词对应的词向量来为单词预测标签。需要注意的是,当处理到一个句子的开始或者结尾的单词的时候,其前后窗口或许不包含单词,这时候我们需要填充技术,为前面或者后面填充象征开始或者结束的符号。
实际上基于窗口的方法已经可以解决很多常见的任务,但是如果一个单词如果非常依赖上下文的单词,且当时这个单词并不在窗口中,这时就需要sentence approach,这里所使用的卷积操作与卷积神经网络中的卷积操作基本相同。这里需要对句子中的每一个单词进行一次卷积操作,这里池化过程选择最大池化,这里认为句子中大部分的词语对该单词的意义不会有影响。
总结/Q&A
1卷积层和池化层有什么区别?
首先可以从结构上可以看出,卷积之后输出层的维度减小,深度变深。但池化层深度不变。同时池化可以把很多数据用最大值或者平均值代替。目的是降低数据量。降低训练的参数。对于输入层,当其中像素在邻域发生微小位移时,池化层的输出是不变的,从而能提升鲁棒性。而卷积则是把数据通过一个卷积核变化成特征,便于后面的分离。
2采用宽卷积的好处有什么?
通过将输入边角的值纳入到滑窗中心进行计算,以便损失更少的信息。
3卷积输出的深度与哪个部件的个数相同?
输出深度(通道)与卷积核(过滤器)的个数相等。
4激活函数通常放在卷积神经网络的那个操作之后?
通常放在卷积层之后。
5为什么激活函数通常都是采用非线性的函数?
如果网络中都采用线性函数的组合,那么线性的组合还是线性,那么使用多次线性组合就等同于使用了一次线性函数。因此采用非线性函数可以来逼近任意函数。
6非线性激活函数中sigmod函数存在哪些不足?
Sigmod函数存在饱和状态,尤其是值过大时,当进入饱和状态时,进行梯度下降计算时,很容易出现梯度消失的情况,求导的精确值不能保证。
7ReLU和SoftPlus激活函数有哪些优势?
与sigmod相比,不存在指数计算,求导计算量变小,同时缓解了过拟合的情况,一部分输出为0,减少了参数的相互依存。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)