机器学习(五) 自监督学习

(一)Transformer

Transformer是Sequence-toSequence(Seq2Seq)的一个模型,我们之前在作一些实验的时候,当我们输入一个Sequence时,我们的输出也会是一个Sequence,而输入和输出结果的长度是一样的,当我们不知道输出结果是有多长时,我们便要机器自己决定要输出多长,这就会用到Seq2Seq,特别是在语音辨识及机器翻译中。
在这里插入图片描述
一般的Seq2Seq模型是由Encoder和Decoder组成,Encoder接受外界的输入,然后把输出的结果丢给Decoder,再由Decoder决定要输出的Sequence的大小在这里插入图片描述
Seq2seq最早在14年的时候就有了,那时是长的很眉清目秀,后面就变得一言难尽了
在这里插入图片描述
在这里插入图片描述

Encoder

Encoder要做的事情就是输入一排向量然后输出一排长度相同向量,这个用RNN或者CNN都能做得到,Encoder用的是self-attention(在我第四篇笔记中有记录到,欢迎大家指正)在这里插入图片描述
现在的Encoder会被分成很多个block,每一个block先做一个self-attention,接受一排向量的输入,考虑全部的资讯,然后输出一排向量,再把结果丢到全连接层再输出一排向量,这就是每一个block的输出,在这里插入图片描述
实际上原来的transformer中,block做的事情更加复杂,在经过self-attention得到一排向量之后,并不会直接丢给全连接层,而是将输入加进来得到新的向量,当成新的output,这种架构叫做residual connection,再将得到的新output做layer normalization(不需要考虑batch),layer normalization在同一个feature中计算不同维度的mean,standard,用公式x’i = (xi - mean)/ std归一化,得到要输入到全连接层的结果,在这里插入图片描述
同样的,全连接层里面也有residual connection的架构和normalization,然后才得到一个block的输出

Decoder

这里记录两种常用的 Decoder

Autoregressive(AT)

语音辨识例子:
给Encoder吃入”机器学习“的一段语音,Encoder会输出四排向量;对于Decoder来说,他的输入就是encoder的输出,首先Decoder有一个代表开始的符号BEGIN,缩写是BOS在这里插入图片描述
Decoder接受的每一个输入都可以用One-hot-vector来表示,然后Decoder会吐出一排向量,大小是一个字典的长度,比如说做的是中文的语音辨识,中文大概有三四千常用字,所以Decoder吐出向量的长度是三四千。在Decoder中,结果还会经过softmax,最终会给每一个文字一个分数,分数最高的为所需结果
在这里插入图片描述
同样的,第一个的输出再作为第二次的输入,进行同样过程。在这里插入图片描述
我们能够发现Decoder的输出会被当成下一次的输入,这也会导致一个问题,就是当Deocder在某一次的输出错误的话就可能会导致后面的结果全部错误。接下来看一下Decoder的内层结果在这里插入图片描述
可以看出,Decoder除了中间部分和结果处的softmax之外,跟Encoder是差不多的。还有一个地方就是在Decoder里面self-attention变成了Masked self-attention,Masked其实是对self-attention的一个限制,就是让网络由可以考虑全部的资讯变成只能考虑左边的资讯在这里插入图片描述
例如下面,在输出b2时,只用第二个query和第一、二个的key相乘,而不考虑key3和key4
在这里插入图片描述
因为在Decoder中,输入不是一次性全部输入的,他是先有a1,再有a2,a3,a4,所以当你要输出b2时,是没有a3,a4的。开始的时候我们讲到Decoder是要有一个开始符号的,那类似的,Decoder也有结束的符号end在这里插入图片描述

Non-autoregressive(NAT)

对于NAT Decoder,他是一次性吃一整排的向量,然后直接生成一个 句子,就很直接,在这里插入图片描述

Encoder和Decoder之间的桥梁

Decoder通过产生一个query,到Encoder中抽取资讯,然后当作Decoder中的全连接层的输入,这个过程叫做Cross attention
在这里插入图片描述
Decoder的输入接下来的处理是一样的。

训练

我们还是用语音辨识的例子,假如输入的是”机器学习“,每一个字用一个独热向量表示,但我们经过Decoder得到第一个输出,这个输出是一个概率分布,我们会用”机“对应的独热向量跟输出进行cross entropy的计算在这里插入图片描述
每一个输出都有一个cross entropy,而我们就要使总cross entropy loss越小越好,但是要注意的是,我们还要输出end(结束)向量在这里插入图片描述
可以观察到我们在训练的时候,Decoder的输入都是正确的,这个叫Teacher Forcing:using the ground truth as input。但我们在测试时看的是自己的输入,可能有时候的输出是错误的,比如说将“器”输出成“气”,就可能导致后面全部错,所以我们在训练过程中需要给model加一些错误的信息让他去训练在这里插入图片描述
这个叫做Scheduled Sampling。

(二)结语

以上是我本人学习机器学习的学习笔记的第五篇,有错误的地方还望指出,共勉!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八岁爱玩耍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值