• 【笔记】机器学习


    1.RNN和CNN的局限性

    RNN是seq2seq的模型,RNN不易平行化,如果是单向的话,要输出(b^3),需要先看完(a^1, a^2, a^3)。如果是双向的话,可以看完整个句子。

    CNN在高层的时候,可以考虑距离更长的信息,CNN易于并行化。CNN的缺点是,考虑的只是局部内容,要考虑长距信息,需要叠加很多层。

    2.Self-attention

    attention和bi-RNN有同样的能力,可以看完整个句子,并且可以并行化。所以同时包括了RNN和CNN的优点。

    计算过程如下:

    并行计算过程演示:

    多头机制,有的head可能考虑局部信息,有的head考虑长距信息,各司其职。

    3.attention的局限性

    由于和每个input vector都做attention,没有考虑到顺序位置信息。
    所以在原始paper里面,每一个input (x^i) 通过transform变成 (a^i) 以后,还要加上一个维度相同的向量 (e^i), (e^i) 是手设的,代表位置的资讯。

    换一种讲法就是,在input (x^i) 后连接一个one-hot vector (p^i) 代表位置资讯,第i维是1,其余都是0。
    连接之后乘上一个矩阵 W 做transform,W 可以拆成 (W^I)(W^P),把 (W^I)(x^i) 相乘得到 (a^i)(W^p)(p^i) 相乘得到 (e^i)
    (W^P) 是可以learn的,论文里面是人手设的。

    4.seq2seq中如何用attention

    一般的seq2seq model包含两个RNN,分别是encoder和decoder,都可以用self-attention 取代掉。总之,看到RNN用self-attention替换掉。

    5.Transformer

    以把中文翻译成英文为例,encoder的输入是中文的character sequence比如说是机器学习,在decoder给他一个begin of sequence的token就输出一个machine,在下一个timestep把machine当作输入,就输出learning,直到输出句点的时候翻译过程结束。

    接下来看每一个layer做的事情。

    1. 先看左半部的encoder,input通过input embedding layer变成一个vector,然后vector加上positonal encoding,接下来进入灰色的block,这个block重复N次。

    2. 在灰色的block里面,第一层是multi-head attention,也就是说input一个sequence,通过multi-head attention layer得到另外一个sequence。

    3. 下一个layer是add & norm,在这一步,把multi-head attention 的 output 跟 multi-head attention 的 input 相加,然后做layer normalization。参考文献见ppt。

    Layer normalization和batch normalization 的异同:
    假设有一个大小为4的batch,在batch normalization 的时候,是对同一个batch里面不同data里面的同样的dimension做normalization,希望同一个dimension 的均值为0,方差为1。
    而layer normalization是不需要考虑bacth的,给一个data,希望各个不同dimension的均值为0,方差为1。
    一般情况下layer normalization会搭配RNN一起使用。transformer很像RNN,所以这里使用layer normalization。

    1. 接下来feed forward layer 会把input sequence 的每一个vector进行处理,还有另外一个add & norm 的layer。

    2. 接下来是右半部decoder的部分,这个decoder的input 是前一个time step 产生的output,通过output embedding 加上positional information,进入灰色的block,这个block重复N次。

    3. 这个灰色block的第一层叫masked multi-head attention。加masked的意思是说,现在做self-attention的时候,decoder会attend 到已经产生出来的 sequence,因为还没有产生出来的无法做attention。

    4. add & norm layer

    5. 接下来是multi-head attention layer,这个是attend 到之前encoder的输出。

    6. 接下来还有add & norm layer, feed forward layer,add & norm layer

    7. 最后做linear,softmax得到最终的output

    6.原始论文里Transformer的可视化

    7.Transformer的应用

    基本上原来可以做seq2seq的,都可以换成transformer。

    1. 做summarization
      训练一个summarizer,input是一堆文章,output是一篇具有维基百科风格的文章。如果没有transformer,没有self-attention,很难用RNN产生(10^3)长的sequence,而有了transformer以后就可以实现。

    2. Universal transformer
      简单的概念是说,本来transformer每一层都是不一样,现在在深度上做RNN,每一层都是一样的transformer,同一个transformer的block不断的被反复使用。

    3. 影像self-attention GAN
      让每一个pixel都attend到其他的pixel,可以考虑比较global的资讯.

  • 相关阅读:
    判断activity是否显示在界面上
    限制EditText的输入字数
    安卓自定义类似TabHost的导航栏
    安卓中加载布局文件的三种方法
    绘图——Android绘图基础:Canvas、Paint等
    使用简单图片
    使用原始资源
    MySQL分表(Partition)学习研究报告
    Docker基础知识介绍
    Python开发系列
  • 原文地址:https://www.cnblogs.com/yanqiang/p/12654849.html
Copyright © 2020-2023  润新知