机器学习笔记5(Transformer)

1.Batch Normalization

问题引入:当function为y=w1*x1+w2*x2+b时,若输入x1很小x2很大,则当w1和w2变化相同的Δw时,体现在y上的变化量却很不相同,这不利于我们的参数学习优化

因此我们需要使用normalization将输入进行正则化来消除由于参数差距过大带来的影响,normalization即将每一个输入减去均值后除标准差,即

当batch normalization运用到deep learning时,一般会在activation function之前进行normalization,这么做的原因为:一般我们采用的激活函数,如hyperbolic tangent(双曲正切,tanh),sigmoid,都会有饱和区域(saturation region),如果activation function的输入落在了饱和区域,在反向传播时很可能会造成梯度消失(gradient vanish)的问题。所以我们会希望输入落在微分比较大也就是0的附近。而在激活层之前做normalization使得平均值为0标准差为1,在一定程度上可以使得输入落在0附近的概率更大。

 这样得到的z序列的均值为0,方差为1,我们有时候不希望均值为0方差为1因此我们可以增加两个参数γ和β进行更新:

 

测试过程中由于没有batch,因此我们无法计算均值和方差,在此我们可以采用训练过程中的均值和方差,将训练过程中所有batch的μ和σ都保存下来,然后按权重求和得到用于testing的μ和σ。

batch normalization的好处:

1.由于BN解决了Internal Covariate Shift的问题,使得网络训练可以设置更大的learning rate,从而可以减少网络训练时间。
2.在一定程度上可以防止gradient vanishing(梯度消失)。
3.减小参数的初始化对网络学习的影响。例如我们将某层参数的初始化扩大K倍,那对应的这一层的输出也增大K倍,但是这层的输出做了BN之后的输出不会改变,如下图:

图十三

4.BN会减少regularization(正则化)的需求,即在一定程度上对抗overfitting。

2.Transformer

transformer的模型架构与seq2seq模型很相似,主要用于NLP领域,旨在处理顺序数据,以及翻译和文本摘要,多标签分类问题等,与RNN不同的是RNN输入需要按顺序输入,而Transformer可以同时输入。

seq2seq的架构主要由一个encoder(编码器)和decoder(解码器)组成,seq2seq主要是为了解决输入和输出长度不确定的情况。Encoder吃一个seq, 处理的结果丢给decoder,然后decoder来决定输出一个什么样的seq 

encoder:将输入(文字、语音、视频等)编码为单个向量,这个向量可以看成是全部输入的抽象表示。

decoder:接受encoder输出的向量,逐步解码,一次输出一个结果,每次输出会影响下一次的输出,开头加入<BOS>表示开始解码,<EOS>表示输出结束。

Encoder的实现:

Encoder就是通过多层block(模块),将输入转换成向量。每一个block又包括self-attention和fully connect等网络结构。

Block的内部细节:

考虑所有输入向量后的输出向量,b是原来的输入向量,经过残差网络和标准化后,送到完全连接神经网络,再经过残差网络和标准化后得到输出

 

 Encoder整体步骤:

 

1. 在inputs的地方加上了positional encoding,之前有讲过如果你只用self-attention,没有未知的资讯,所以需要加上positional的information。

2. Multi-Head Attention:这里就是self-attention的block,然后专门强调说它是Multi-Head的self-attention。

3. Add&Norm:residual加上layer normalization

batch normalization:对不同的example不同feature的同一个dimention去计算平均值和标准差。
layer normalization:对同一个example中同一个feature的不同dimention去计算平均值和标准差。

4. Feed Forward: 是FC的feed forward network

5. N×:block会重复N次。

还可以对encoder进行改进,改变norm的位置:

Decoder的实现:

 decoder主要实现有两种,分为AT(autoregressive)和NAT(non-autoregressive)

AT:(以语音辨别为例)

通过一个one-hot vector作为启动向量,接受encoder输出的向量,经过解码器和softmax之后得到一个向量,输出向量的长度和字体库大小相同。再对比已知字体库,相似度最高的就是最后输出的字体。再把自己的输出当做下一个的输入。

 Decoder的具体结构:

decoder和encoder的区别在于decoder中使用的是Masked Multi-Head Attention而encoder中使用的是self-attention,decoder多一层self-attention,而且多出来的这层有两个输入来自encoder,一个输入来自decoder前面网络的输出。

self-attention和masked self-attention的区别为:

self-attention中的b1、b2、b3、b4分别都接受a1,a2,a3,a4所有的资讯;而masked self-attention中的b1只接受a1的资讯,b2只接受a1、a2的资讯,b3只接受a1、a2、a3的资讯,b4接受a1,a2,a3,a4的资讯。

在decoder里面使用masked self-attention的原因是一个接一个输入,输入了a1才会产生b1即a2,所以在计算b1的时候还没有a2、a3、a4。

我们如何判断是否到了结束的地方呢,需要加入结束标志,因此在decoder中包括启动变量和结束变量,例如结束标志为end:

NAT VS AT :

a.AT只有一个启动向量,需要多个步骤才能完成解码;NAT有多个启动向量,只需要一个步骤就能完成解码。

b.我们不知道输出长度,那怎么确定NAT的输出长度,放多少个BOS呢?答:方法一是用其他的预测模型预测输出长度,方法二是放很多个BOS,输出很长的序列,在end之后的字体就忽略掉。

c.NAT是平行化的,输出长度可控,比AT更加稳定。

d.NAT的效果比AT差,因为multi-modality(多通道)

Encoder和Decoder之间的通信:

 

Cross attention是连接Encoder跟Decoder之间的桥梁,从图中可以看出,这个模块的输入部分,有两个箭头来自encoder,一个来自decoder。 

cross attention的内部实现细节如下:

decoder就是产生一个q,去encoder那边抽取资讯出来当作接下来decoder里面的Fully-Connected 的Network的Input。具体来说就是,q和k1、k2、k3去计算分数,然后在和v1、v2、v3做Weighted Sum做加权,加起来得到v’,然后交给Fully-Connected处理。

Tips:

1.copy mechanism:

复制一些词汇当作输出,没必要自己产生。

2.Guided Attention:

它要做的事情就是要求机器去领导这个Attention的过程,要求机器去做attention的时候是有固定的方式的。 

 (3)Beam Search

 

该算法是用一个比较有效的方法找到一个估测的解决方案,红色的路径是贪心算法,但是绿色的路径是最好的,束搜索就是尽可能找到一个最好的路径。

beam search适用于答案比较唯一的问题,例如语音辨识等。

beam search则不适用于需要机器有创造性的问题,例如根据前文编写故事、语音合成;甚至在上述问题中,加入noise之后结果更好。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
李宏毅是一位著名的机器学习深度学习专家,他在教学视频中也提到了Transformer模型。下面是一些关于李宏毅关于Transformer笔记总结: 1. Transformer 是一种基于注意力机制(attention mechanism)的序列到序列(sequence-to-sequence)模型。它在自然语言处理任务中取得了很大的成功。 2. Transformer 模型的核心思想是完全摒弃了传统的循环神经网络(RNN)结构,而是采用了自注意力机制(self-attention mechanism)来建模输入序列之间的依赖关系。 3. 自注意力机制能够将输入序列中的每个位置与其他位置建立联系,从而捕捉到全局上下文的信息。它能够解决传统的RNN模型在处理长序列时的梯度消失和梯度爆炸问题。 4. Transformer 模型由编码器(Encoder)和解码器(Decoder)两部分组成。编码器负责将输入序列表示为高维向量,解码器则根据编码器的输出生成目标序列。 5. 编码器和解码器由多个层堆叠而成,每一层都包含了多头自注意力机制和前馈神经网络。多头自注意力机制可以并行地学习输入序列中不同位置之间的关系。 6. Transformer 模型还引入了残差连接(residual connection)和层归一化(layer normalization)来帮助模型更好地进行训练和优化。 这些是李宏毅关于Transformer的一些主要笔记总结,希望对你有所帮助。注意,这些总结仅代表了我对李宏毅在其教学视频中所讲述内容的理解,如有误差请以李宏毅本人的观点为准。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值