• 【DeepLearning 8】Self-Attention自注意力神经网络


    🍊本文主要介绍了Self-Attention产生的背景以及解析了具体的网络模型

    一、Introduction 

            很多时候,我们需要输入的数据非常的复杂,难以用统一、固定长度的向量来表示。比如NLP中长短不一的句子。此外,我们需要输出的数据有时候也会复杂,比如一组向量中每一个向量有一个输出(词性标注),或者一组向量有一个输出,或者输出的数量让机器自己决定(即seq2seq任务,比如中英文翻译)

            在第一种情况的时候,我们可以使用Fully-connected,然后每一个向量会有一个输出,但是单独使用一个向量为基础其蕴含的信息太少了,于是可以加上一个Windows想法,一个向量的前后5个也作为输入。但是这样也有一个缺点,就是我们的句子长度是不一样的,难以用一个统一的windows来。而Self-Attention网络可以用在任何长度的句子上,非常的灵活

    二、Model

    2.1 Revelant  

    Self-Attention第一步:计算每两个输入向量之间的Relevant,记为α

            常见的计算方法有Dot-productAdditive

            即将各向量分别乘以一个矩阵,得到两个新的向量。两个向量相乘就是Dot-Product方法,若直接相连接然后使用tanh函数就是Additive方法

     注意自己也要和自己计算相关性,这样的做法可以提高模型的性能。这里的归一化可以使用Soft-max也可以使用ReLu

    2.2 Sum up

    Self-Attention第二步:新增一个向量v,与α相乘,将所有的数值进行累加         

            再乘以一个Wv矩阵得到v向量,然后让每一个v向量乘以它的α,将这些向量所有累加起来成为一个新的向量

     

    2.3 Fully-Connection

    Self-Attention第三步:与Fully-Connection结合起来使用

    但是这样有一个缺点就是,没有考虑到每个单词在句子中的位置信息。

    如果想要考虑的话,很简单,你为每一个位置设计一个位置权重向量ei,每个ei加到ai上面去

    参考资料

    《机器学习》周志华

    《深度学习与机器学习》吴恩达

    《神经网络与与深度学习》邱锡鹏

    《深度学习与机器学习》李宏毅

  • 相关阅读:
    C#压缩图片的方法
    动物数据集+动物分类识别训练代码(Pytorch)
    14-GuliMall ElasticSearch安装与入门
    76.C++ STL list容器
    以detectron2了解maskrcnn实现源码(0)--开篇
    ElasticSearch7.3学习(十七)----搜索结果字段解析及time_out字段解析
    N3 中文文本分类
    职场经验:为什么要学习自动化测试?过来人告诉你答案
    Object.keys() 方法
    python报错 UnicodeDecodeError
  • 原文地址:https://blog.csdn.net/ccaoshangfei/article/details/128044362