Transforme基础学习

1.简述CNN

1.卷积核的特征提取

卷积神经网络简称CNN,其本质上对一个图像应用卷积核(也叫滤波器),是通过滑动一个小矩阵(卷积核)在图像上,对局部像素进行加权求和。这个操作可以提取局部特征,比如边缘、角点、纹理等,最终得到特征图。

第一个疑问:卷积核为什么能够提取边缘、角点、纹理?

由于边缘、角点、纹理在像素级别具有显著的变化差异,这使得卷积核可以用来检测图像中某种局部模式(pattern),比如经典的边缘检测卷积核(如 Sobel、Prewitt),一个可能的边缘卷积核如下:

这个矩阵就会对于上下具有明显亮度变化的区域会产生高响应值,也就是边缘。        

卷积核在这些“信息丰富”的区域响应强,而在平滑区域响应弱,自然就实现了对有意义结构(特征)的提取。

但是在CNN当中卷积核的值应该是学习的,而不是人为设定的,一般而言,我们通过损失函数loss function+反向传播backpropagetion+梯度下降实现,所以CNN的强大之处在于:不需要我们人工设计特征,它能自己发现有用的模式,它能够从简单的边缘到复杂语义对象逐层构建一整套特征表示系统。

2.特征图大小计算

第二个问题:想要知道一个30×30的矩阵,使用3×3的卷积核进行卷积最后多大?

计算公式为:

N-输入尺寸(30),K-卷积核尺寸(3),P-填充(padding),S-步长(stride)

如果我们仅仅考虑stride=1,padding=1的情况下此时的输出尺寸为30,值得注意的是:

填充:P是为了填充保持尺寸不变,使得可以堆叠更多的的卷积层,同时保留对于边缘信息的提取。

步长:S的大小直观来说影响特征提取的详细程度,一般而言,S=1表示进行特征提取,保留更多局部细节;S>1用于下采样(downsampling)、压缩特征,就像池化(pooling)那样。


2.简述DNN

DNN(Deep Neural Network)通常指的是由多个“全连接层(fully connected layers)”堆叠起来的神经网络结构,这样结构也可以叫做:MLP(多层感知机,Multi-Layer Perceptron)、DenseNet、Feedforward Neural Network(前馈神经网络)。

特点1:参数很多,容易导致过拟合这种情况,同时针对DNN而言,是需要在输入层之后进行展平flatten操作的,故而他会丢失掉图片的空间位置信息。

特点2:每一层的每个神经元都与上一层所有神经元相连,且每一个连接都有独立的权值。


3.简述RNN

RNN(循环神经网络,Recurrent Neural Network)是一种专门处理“序列数据”的神经网络模型,其核心在于当前的输出不仅取决于当前输入,还取决于过去的状态(记忆)。

其简单结构为:

可以看出此时,RNN就是针对序列信号(适用于一维信号),使用一个可优化的共享矩阵,将训练过程当中的前一轮的输出乘以一个权重U,去影响后一轮的输出。


4.详细叙述transformer

请注意本次详细叙述仅仅为了解决我自身问题而存在的,故而不成体系,但是却都是我自身认为理解比较困难的问题:

编码流程(针对NLP而言):

输入句子→转化词向量拼接矩阵→加入位置编码信息→多头注意力机制→残差网络→前馈神经网络→....→残差网络


问题3位置编码信息如何加入输入的词向量拼接矩阵?(拼接 or 直接相加 )

假设目前词向量拼接矩阵的大小为3×d,其中3表示有几个词向量,d表示每一个词向量的维度(一般而言,我们可以取得4),此时位置编码信息信息矩阵的大小应当为3×d,而且进行位置编码应该为矩阵直接相加,具体如下:

Input=Word Embedding+Positional Encoding

直接相加,具体原因如下:首先符合后续的多头注意力的结构,保持维度不变,其次还能再不改变语义空间的同时,轻柔地引入位置信息,最后有利于训练稳定性(拼接会让尺度变化大),同时还允许模型通过学习自动调整“位置信息对语义的影响强度”。


问题4:为什么我们认为这样的直接加入位置数值就能够实现轻柔地引入位置信息,这个位置信息是具有一定的规律吗?

答案是肯定的,对于位置编码的函数如下:

 他具有良好数学性质(周期性 + 可微 + 相对距离可感知),能够推断出词与词之间的相对距离、顺序信息,最重要的一点,位置信息是为了给多头注意力去学习的,及时他以及深度耦合在词向量当中。


问题5:位置的编码初始数值,是基于函数的,那么我们是否可能直接针对这个词向量的矩阵使用index序列,去优化这个值?这个难道不是直接的位置吗?

答案是肯定的(我都佩服我自己能够提出这个问题,哈哈哈哈)。具体而言这个问题可以精炼为:

既然每个词在句子中都有一个 index,我们是否可以直接把这个 index 编码为向量,作为“位置向量”,而不是用一堆 sin/cos 函数呢?是不是更直接?

目前这个基于index的位置编码方式为:可学习的位置编码(learnable positional embedding),对于一般的基于函数的位置编码而言,他是固定的周期性数值,仅仅通过注意力权重去进行强调和弱化,但是对于可学习的位置编码,是直接可以学习这些位置的,我们可以把位置当作一个index,使用类似词嵌入的方法处理,然后让模型学会哪些位置更重要,相对或绝对位置对任务有什么影响,其在数据量大、任务复杂的情况下,效果往往比 sin/cos 更好(比如目前:GPT 系列、BERT 等很多模型默认使用 learnable positional embedding)。

值得注意的是:目前的learnable positional embedding仍然采用的是直接相加的形式。


问题6:前馈神经网络(FFN)本质上就是MLP,他是忽略空间位置信息的,难道不会对输出的带有位置信息的特征造成影响吗?其次MLP是全连接层,针对向量而言的,那么矩阵如何进行?

这个问题有点门外汉咯,首先针对忽略空间位置信息的,由于位置信息以及深度耦合进行词向量当中,故而送入FFN也会保留(另外一个角度,由于矩阵的物理实体是没有发生变化的,故而他的顺序就是包含之前的位置信息的);第二个问题,针对MLP而言,他是对于这个词特征矩阵当中每一行的词向量进行处理,即:FFN被复制并独立作用在每个词(每一行)上,对每个词向量做增强、非线性变换,但不看别的词,也不改变顺序。


问题7既然 FFN 是逐位置处理,那如果我们把它“融进注意力机制内部”,让注意力不仅做加权聚合,还能在过程中进行非线性特征提取,是否更有效?

答案也是肯定的(果然,前人的智慧都是无穷的),这样的想法再一些模型当中也得到了验证,得到了一种“更智能的注意力机制”,其具有:

一边计算谁该被关注(attention weight)、一边动态处理值(value)的非线性表达的特点,比如Gated Attention Unit (GAU) 就是将 FFN 结构内嵌进 attention 权重计算和 value 映射,提升速度与表达力,还有其他的等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值