Skip to content

【关于 NLP】 那些你不知道的事

km1994 edited this page Jan 19, 2021 · 1 revision

【关于 NLP】 那些你不知道的事

作者:杨夕

项目地址:https://github.com/km1994/nlp_paper_study

个人介绍:大佬们好,我叫杨夕,该项目主要是本人在研读顶会论文和复现经典论文过程中,所见、所思、所想、所闻,可能存在一些理解错误,希望大佬们多多指正。

目录

介绍

会议收集篇

NLP 学习篇

经典会议论文研读篇
  • ACL2020
    • 【关于 CHECKLIST】 那些你不知道的事
      • 阅读理由:ACL2020 best paper ,利用 软件工程 的 思想 思考 深度学习
      • 动机:针对 train-val-test 分割方法 评估 模型性能容易出现 不全面、偏向性、可解性差问题;
      • 方法:提出了一种模型无关和任务无关的测试方法checklist,它使用三种不同的测试类型来测试模型的独立性。
      • 效果:checklist揭示了大型软件公司开发的商业系统中的关键缺陷,表明它是对当前实践的补充好吧。测试使用 checklist 创建的模型可以应用于任何模型,这样就可以很容易地将其纳入当前的基准测试或评估中管道。

理论学习篇

经典论文研读篇
【关于 transformer 】 那些的你不知道的事
  • 【关于Transformer】 那些的你不知道的事 transformer 论文学习
    • 【关于Transformer】 那些的你不知道的事
      1. 为什么要有 Transformer?
      2. Transformer 作用是什么?
      3. Transformer 整体结构怎么样?
      4. Transformer-encoder 结构怎么样?
      5. Transformer-decoder 结构怎么样?
      6. 传统 attention 是什么?
      7. self-attention 长怎么样?
      8. self-attention 如何解决长距离依赖问题?
      9. self-attention 如何并行化?
      10. multi-head attention 怎么解?
      11. 为什么要 加入 position embedding ?
      12. 为什么要 加入 残差模块?
      13. Layer normalization。Normalization 是什么?
      14. 什么是 Mask?
      15. Transformer 存在问题?
      16. Transformer 怎么 Coding?
    • 【关于 Transformer-XL】 那些的你不知道的事
      • 动机
        • RNN:主要面临梯度消失或爆炸(gradient vanishing and explosion),解决方法集中在优化方法、初始化策略、辅助记忆单元的研究上。
        • vanilla Transformer:最长建模长度是固定的,无法捕捉更长依赖关系;等长输入序列的获取通常没有遵循句子或语义边界(出于高效考虑,往往就是将文本按长度一段段截取,而没有采用padding机制),可能造成上下文碎片化(context fragmentation)。
      • 方法
        • 引入循环机制(Reccurrence,让上一segment的隐含状态可以传递到下一个segment):将循环(recurrence)概念引入了深度自注意力网络。不再从头计算每个新segment的隐藏状态,而是复用从之前segments中获得的隐藏状态。被复用的隐藏状态视为当前segment的memory,而当前的segment为segments之间建立了循环连接(recurrent connection)。因此,超长依赖性建模成为了可能,因为信息可以通过循环连接来传播。
        • 提出一种新的相对位置编码方法,避免绝对位置编码在循环机制下的时序错乱:从之前的segment传递信息也可以解决上下文碎片化的问题。更重要的是,本文展示了使用相对位置而不是用绝对位置进行编码的必要性,这样做可以在不造成时间混乱(temporal confusion)的情况下,实现状态的复用。因此,作为额外的技术贡献,文本引入了简单但有效的相对位置编码公式,它可以泛化至比在训练过程中观察到的长度更长的注意力长度。
    • 【关于 SHA_RNN】 那些的你不知道的事
      • 论文名称:Single Headed Attention RNN: Stop Thinking With Your Head 单头注意力 RNN: 停止用你的头脑思考
    • 【关于 Universal Transformers】 那些你不知道的事
    • 【关于Style_Transformer】 那些你不知道的事
    • 【关于 Linformer 】 那些你不知道的事
    • 【关于 Performer 】 那些你不知道的事 【推荐阅读】
      • 阅读理由:Transformer 作者 Krzysztof Choromanski 针对 Transformer 问题的重新思考与改进
      • 动机:Transformer 有着巨大的内存和算力需求,因为它构造了一个注意力矩阵,需求与输入呈平方关系;
      • 思路:使用一个高效的(线性)广义注意力框架(generalized attention framework),允许基于不同相似性度量(核)的一类广泛的注意力机制。
      • 优点:该方法在保持线性空间和时间复杂度的同时准确率也很有保证,也可以应用到独立的 softmax 运算。此外,该方法还可以和可逆层等其他技术进行互操作。
【关于 预训练模型】 那些的你不知道的事
  • 【关于Bert】 那些的你不知道的事:Bert论文研读

    • 【关于Bert】 那些的你不知道的事
      • 阅读理由:NLP 的 创世之作
      • 动机:word2vec 的多义词问题 && GPT 单向 Transformer && Elmo 双向LSTM
      • 介绍:Transformer的双向编码器
      • 思路:
        • 预训练:Task 1:Masked LM && Task 2:Next Sentence Prediction
        • 微调:直接利用 特定任务数据 微调
      • 优点:NLP 所有任务上都刷了一遍 SOTA
      • 缺点:
        • [MASK]预训练和微调之间的不匹配
        • Max Len 为 512
    • 【关于 XLNet 】 那些你不知道的事
      • 阅读理由:Bert 问题上的改进
      • 动机:
        • Bert 预训练和微调之间的不匹配
        • Bert 的 Max Len 为 512
      • 介绍:广义自回归预训练方法
      • 思路:
        • 预训练:
          • Permutation Language Modeling【解决Bert 预训练和微调之间的不匹配】
          • Two-Stream Self-Attention for Target-Aware Representations【解决PLM出现的目标预测歧义】
          • XLNet将最先进的自回归模型Transformer-XL的思想整合到预训练中【解决 Bert 的 Max Len 为 512】
        • 微调:直接利用 特定任务数据 微调
      • 优点:
      • 缺点:
    • 【关于 RoBERTa】 那些你不知道的事
      • 阅读理由:Bert 问题上的改进
      • 动机:
        • 确定方法的哪些方面贡献最大可能是具有挑战性的
        • 训练在计算上是昂贵的的,限制了可能完成的调整量
      • 介绍:A Robustly Optimized BERT Pretraining Approach
      • 思路:
        • 预训练:
          • 去掉下一句预测(NSP)任务
          • 动态掩码
          • 文本编码
        • 微调:直接利用 特定任务数据 微调
      • 优点:
      • 缺点:
    • 【关于 ELECTRA 】 那些的你不知道的事
      • 阅读理由:Bert 问题上的改进 【不推荐阅读,存在注水!】
      • 动机:
        • 只有15%的输入上是会有loss
      • 介绍:判别器 & 生成器 【但是最后发现非 判别器 & 生成器】
      • 思路:
        • 预训练:
          • 利用一个基于MLM的Generator来替换example中的某些个token,然后丢给Discriminator来判别
        • 微调:直接利用 特定任务数据 微调
      • 优点:
      • 缺点:
    • 【关于 Perturbed Masking: Parameter-free Probing for Analyzing and Interpreting BERT】 那些你不知道的事
      • 论文链接:https://arxiv.org/pdf/2004.14786.pdf
      • 代码链接:https://github.com/bojone/perturbed_masking
      • 动机
        • 通过引入少量的附加参数,probe learns 在监督方式中使用特征表示(例如,上下文嵌入)来 解决特定的语言任务(例如,依赖解析)。这样的probe tasks 的有效性被视为预训练模型编码语言知识的证据。但是,这种评估语言模型的方法会因 probe 本身所学知识量的不确定性而受到破坏
      • Perturbed Masking
        • 介绍:parameter-free probing technique
        • 目标:analyze and interpret pre-trained models,测量一个单词xj对预测另一个单词xi的影响,然后从该单词间信息中得出全局语言属性(例如,依赖树)。
      • 整体思想很直接,句法结构,其实本质上描述的是词和词之间的某种关系,如果我们能从BERT当中拿到词和词之间相互“作用”的信息,就能利用一些算法解析出句法结构。
    • 【关于 GRAPH-BERT】 那些你不知道的事)
      • 论文名称:GRAPH-BERT: Only Attention is Needed for Learning Graph Representations
      • 论文地址:https://arxiv.org/abs/2001.05140
      • 论文代码:https://github.com/jwzhanggy/Graph-Bert
      • 动机
        • 传统的GNN技术问题:
          • 模型做深会存在suspended animation和over smoothing的问题。
          • 由于 graph 中每个结点相互连接的性质,一般都是丢进去一个完整的graph给他训练而很难用batch去并行化。
      • 方法:提出一种新的图神经网络模型GRAPH-BERT (Graph based BERT),该模型只依赖于注意力机制,不涉及任何的图卷积和聚合操作。Graph-Bert 将原始图采样为多个子图,并且只利用attention机制在子图上进行表征学习,而不考虑子图中的边信息。因此Graph-Bert可以解决上面提到的传统GNN具有的性能问题和效率问题。
    • 【关于自训练 + 预训练 = 更好的自然语言理解模型 】 那些的你不知道的事)
      • 论文标题:Self-training Improves Pre-training for Natural Language Understanding
      • 论文地址:https://arxiv.org/abs/2010.02194
      • 动机
        • 问题一: do pre-training and self-training capture the same information, or are they complementary?
        • 问题二: how can we obtain large amounts of unannotated data from specific domains?
      • 方法
        • 问题二解决方法:提出 SentAugment 方法 从 web 上获取有用数据;
        • 问题一解决方法:使用标记的任务数据训练一个 teacher 模型,然后用它对检索到的未标注句子进行标注,并基于这个合成数据集训练最终的模型。
  • 【关于 Bert 模型压缩】 那些你不知道的事

    • 【关于 Bert 模型压缩】 那些你不知道的事
      • 阅读理由:Bert 在工程上问题上的改进
      • 动机:
        • 内存占用;
        • 功耗过高;
        • 带来很高的延迟;
        • 限制了 Bert 系列模型在移动和物联网等嵌入式设备上的部署;
      • 介绍:BERT 瘦身来提升速度
      • 模型压缩思路:
        • 低秩因式分解:在输入层和输出层使用嵌入大小远小于原生Bert的嵌入大小,再使用简单的映射矩阵使得输入层的输出或者最后一层隐藏层的输出可以通过映射矩阵输入到第一层的隐藏层或者输出层;
        • 跨层参数共享:隐藏层中的每一层都使用相同的参数,用多种方式共享参数,例如只共享每层的前馈网络参数或者只共享每层的注意力子层参数。默认情况是共享每层的所有参数;
        • 剪枝:剪掉多余的连接、多余的注意力头、甚至LayerDrop[1]直接砍掉一半Transformer层
        • 量化:把FP32改成FP16或者INT8;
        • 蒸馏:用一个学生模型来学习大模型的知识,不仅要学logits,还要学attention score;
      • 优点:BERT 瘦身来提升速度
      • 缺点:
        • 精度的下降
        • 低秩因式分解 and 跨层参数共享 计算量并没有下降;
        • 剪枝会直接降低模型的拟合能力;
        • 量化虽然有提升但也有瓶颈;
        • 蒸馏的不确定性最大,很难预知你的BERT教出来怎样的学生;
    • 【关于 AlBert 】 那些你不知道的事
      • 模型压缩方法:低秩因式分解 + 跨层参数共享
      • 模型压缩方法介绍:
        • 低秩因式分解:
          • 动机:Bert的参数量大部分集中于模型的隐藏层架构上,在嵌入层中只有30,000词块,其所占据的参数量只占据整个模型参数量的小部分;
          • 方法:将输入层和输出层的权重矩阵分解为两个更小的参数矩阵;
          • 思路:在输入层和输出层使用嵌入大小远小于原生Bert的嵌入大小,再使用简单的映射矩阵使得输入层的输出或者最后一层隐藏层的输出可以通过映射矩阵输入到第一层的隐藏层或者输出层;
          • 优点:在不显著增加词嵌入大小的情况下能够更容易增加隐藏层大小;
        • 参数共享【跨层参数共享】:
          • 动机:隐藏层 参数 大小 一致;
          • 方法:隐藏层中的每一层都使用相同的参数,用多种方式共享参数,例如只共享每层的前馈网络参数或者只共享每层的注意力子层参数。默认情况是共享每层的所有参数;
          • 优点:防止参数随着网络深度的增加而增大;
      • 其他改进策略:
        • 句子顺序预测损失(SOP)代替Bert中的下一句预测损失(NSP)
          • 动机:通过实验证明,Bert中的下一句预测损失(NSP) 作用不大;
          • 介绍:用预测两个句子是否连续出现在原文中替换为两个连续的句子是正序或是逆序,用于进一步提高下游任务的表现
      • 优点:参数量上有所降低;
      • 缺点:其加速指标仅展示了训练过程,由于ALBERT的隐藏层架构采用跨层参数共享策略并未减少训练过程的计算量,加速效果更多来源于低维的嵌入层;
    • 【关于 FastBERT】 那些你不知道的事
      • 模型压缩方法:知识蒸馏
      • 模型压缩方法介绍:
        • 样本自适应机制(Sample-wise adaptive mechanism)
          • 思路:
            • 在每层Transformer后都去预测样本标签,如果某样本预测结果的置信度很高,就不用继续计算了,就是自适应调整每个样本的计算量,容易的样本通过一两层就可以预测出来,较难的样本则需要走完全程。
          • 操作:
            • 给每层后面接一个分类器,毕竟分类器比Transformer需要的成本小多了
        • 自蒸馏(Self-distillation)
          • 思路:
            • 在预训练和精调阶段都只更新主干参数;
            • 精调完后freeze主干参数,用分支分类器(图中的student)蒸馏主干分类器(图中的teacher)的概率分布
          • 优点:
            • 非蒸馏的结果没有蒸馏要好
            • 不再依赖于标注数据。蒸馏的效果可以通过源源不断的无标签数据来提升
    • 【关于 distilbert】 那些你不知道的事
    • 【关于 TinyBert】 那些你不知道的事
      • 模型压缩方法:知识蒸馏
      • tinybert的创新点:学习了teacher Bert中更多的层数的特征表示;
      • 模型压缩方法介绍:
        • 基于transformer的知识蒸馏模型压缩
          • 学习了teacher Bert中更多的层数的特征表示;
          • 特征表示:
            • 词向量层的输出;
            • Transformer layer的输出以及注意力矩阵;
            • 预测层输出(仅在微调阶段使用);
        • bert知识蒸馏的过程
          • 左图:整体概括了知识蒸馏的过程
            • 左边:Teacher BERT;
            • 右边:Student TinyBERT
            • 目标:将Teacher BERT学习到的知识迁移到TinyBERT中
          • 右图:描述了知识迁移的细节;
            • 在训练过程中选用Teacher BERT中每一层transformer layer的attention矩阵和输出作为监督信息
  • 【关于 Perturbed Masking】那些你不知道的事

    • 论文:Perturbed Masking: Parameter-free Probing for Analyzing and Interpreting BERT
    • 论文链接:https://arxiv.org/pdf/2004.14786.pdf
    • 代码链接:https://github.com/bojone/perturbed_masking
    • 动机: 通过引入少量的附加参数,probe learns 在监督方式中使用特征表示(例如,上下文嵌入)来 解决特定的语言任务(例如,依赖解析)。这样的probe tasks 的有效性被视为预训练模型编码语言知识的证据。但是,这种评估语言模型的方法会因 probe 本身所学知识量的不确定性而受到破坏。
    • 方法介绍:
      • Perturbed Masking
        • 介绍:parameter-free probing technique
        • 目标:analyze and interpret pre-trained models,测量一个单词xj对预测另一个单词xi的影响,然后从该单词间信息中得出全局语言属性(例如,依赖树)。
    • 思想:整体思想很直接,句法结构,其实本质上描述的是词和词之间的某种关系,如果我们能从BERT当中拿到词和词之间相互“作用”的信息,就能利用一些算法解析出句法结构。
  • 【关于 A Frustratingly Easy Approach for Joint Entity and Relation Extraction】 那些你不知道的事 【强烈推荐】
    • 论文:A Frustratingly Easy Approach for Joint Entity and Relation Extraction
    • 阅读理由:反直觉!陈丹琦用pipeline方式刷新关系抽取SOTA
    • 方法:建立两个 encoders,并独立训练:
      • encoder 1:entity model
        • 方法:建立在 span-level representations 上
      • encoder 2:relation model:只依赖于实体模型作为输入特征
        • 方法:builds on contextual representations specific to a given pair of span
    • 优点:
      • 很简单,但我们发现这种流水线方法非常简单有效;
      • 使用同样的预先训练的编码器,我们的模型在三个标准基准(ACE04,ACE05,SciERC)上优于所有以前的联合模型;
    • 问题讨论:
      • Q1、关系抽取最care什么?
        • 解答:引入实体类别信息会让你的关系模型有提升
      • Q2、共享编码 VS 独立编码 哪家强?
        • 解答:由于两个任务各自是不同的输入形式,并且需要不同的特征去进行实体和关系预测,也就是说:使用单独的编码器确实可以学习更好的特定任务特征。
      • Q3:误差传播不可避免?还是不存在?
        • 解答:并不认为误差传播问题不存在或无法解决,而需要探索更好的解决方案来解决此问题
      • Q4:Effect of Cross-sentence Context
        • 解答:使用跨句上下文可以明显改善实体和关系
  • 【关于 实体关系联合抽取】那些你不知道的事
  • Incremental Joint Extraction of Entity Mentions and Relations
  • 【关于 Joint NER】那些你不知道的事
    • 论文名称:Joint Extraction of Entities and Relations Based on a Novel Decomposition Strategy
  • 【关于 GraphRel】 那些的你不知道的事
    • 论文名称:论文名称:GraphRel: Modeling Text as Relational Graphs for Joint Entity and Relation Extraction
    • 动机
      • 想要自动提取特征的联合模型
        • 通过堆叠Bi-LSTM语句编码器和GCN (Kipf和Welling, 2017)依赖树编码器来自动学习特征
        • 用以考虑线性和依赖结构
          • 类似于Miwa和Bansal(2016)(一样是堆叠的)
            • 方法
              • 每个句子使用Bi-LSTM进行自动特征学习
              • 提取的隐藏特征由连续实体标记器和最短依赖路径关系分类器共享
            • 问题
              • 然而,在为联合实体识别和关系提取引入共享参数时:
                • 它们仍然必须将标记者预测的实体提及通过管道连接起来
                • 形成关系分类器的提及对
        • 考虑重叠关系
        • 如何考虑关系之间的相互作用
          • 2nd-phase relation-weighted GCN
          • 重叠关系(常见)
            • 情况
              • 两个三元组的实体对重合
              • 两个三元组都有某个实体mention
            • 推断
              • 困难(对联合模型尤其困难,因为连实体都还不知道)
      • 方法:
        • 学习特征
          • 通过堆叠Bi-LSTM语句编码器和GCN (Kipf和Welling, 2017)依赖树编码器来自动学习特征
        • 第一阶段的预测
          • GraphRel标记实体提及词,预测连接提及词的关系三元组
          • 用关系权重的边建立一个新的全连接图(中间图)
          • 指导:关系损失和实体损失
        • 第二阶段的GCN
          • 通过对这个中间图的操作
          • 考虑实体之间的交互作用和可能重叠的关系
          • 对每条边进行最终分类
          • 在第二阶段,基于第一阶段预测的关系,我们为每个关系构建完整的关系图,并在每个图上应用GCN来整合每个关系的信息,进一步考虑实体与关系之间的相互作用。
  • 【关于 HBT】 那些的你不知道的事
    • 论文名称:A Novel Hierarchical Binary Tagging Framework for Relational Triple Extraction
    • 动机:
      • pipeline approach
        • 思路
          • 识别句子中的所有实体;
          • 对每个实体对执行关系分类。
        • 问题
          • 由于早期阶段的错误无法在后期阶段进行纠正,因此这种方法容易遭受错误传播问题的困扰。
      • feature-based models and neural network-based models
        • 思路
          • 通过用学习表示替换人工构建的特征,基于神经网络的模型在三重提取任务中取得了相当大的成功。
        • 问题
          • 大多数现有方法无法正确处理句子包含多个相互重叠的关系三元组的情况。
      • 基于Seq2Seq模型 and GCN
        • 思路:提出了具有复制机制以提取三元组的序列到序列(Seq2Seq)模型。 他们基于Seq2Seq模型,进一步研究了提取顺序的影响,并通过强化学习获得了很大的改进。
        • 问题:它们都将关系视为要分配给实体对的离散标签。 这种表述使关系分类成为硬机器学习问题。 首先,班级分布高度不平衡。 在所有提取的实体对中,大多数都不形成有效关系,从而产生了太多的否定实例。 其次,当同一实体参与多个有效关系(重叠三元组)时,分类器可能会感到困惑。 没有足够的训练示例,分类器就很难说出实体参与的关系。结果,提取的三元组通常是不完整且不准确的。
    • 方法:
      • 首先,我们确定句子中所有可能的 subjects;
      • 然后针对每个subjects,我们应用特定于关系的标记器来同时识别所有可能的 relations 和相应的 objects。
  • 【关于 LEX-BERT】 那些你不知道的事【强烈推荐】
    • 推荐理由:在 query 中 引入 标签信息的方法,秒杀 Flat NER,登上 2021 年 Chinese NER SOTA。
    • 论文名称:《Lex-BERT: Enhancing BERT based NER with lexicons》
    • 动机:尽管它在NER任务中的表现令人印象深刻,但最近已经证明,添加词汇信息可以显著提高下游性能。然而,没有任何工作在不引入额外结构的情况下将单词信息纳入BERT。在我们的工作中,我们提出了词法BERT(lex-bert),这是一种在基于BERT的NER模型中更方便的词汇借用方法
    • 方法:
      • LEX-BERT V1:Lex BERT的第一个版本通过在单词的左右两侧插入特殊标记来识别句子中单词的 span。特殊标记不仅可以标记单词的起始位置和结束位置,还可以为句子提供实体类型信息
      • LEX-BERT V2:对于在句子中加宽的单词,我们没有在句子中单词的周围插入起始和结束标记,而是在句子的末尾附加一个标记[x]。请注意,我们将标记的位置嵌入与单词的起始标记绑定
  • 【关于 Biaffine Ner 】 那些你不知道的事
    • 动机:NER 研究 关注于 扁平化NER,而忽略了 实体嵌套问题;
    • 方法: 在本文中,我们使用基于图的依存关系解析中的思想,以通过 biaffine model 为模型提供全局的输入视图。 biaffine model 对句子中的开始标记和结束标记对进行评分,我们使用该标记来探索所有跨度,以便该模型能够准确地预测命名实体。
    • 工作介绍:在这项工作中,我们将NER重新确定为开始和结束索引的任务,并为这些对定义的范围分配类别。我们的系统在多层BiLSTM之上使用biaffine模型,将分数分配给句子中所有可能的跨度。此后,我们不用构建依赖关系树,而是根据候选树的分数对它们进行排序,然后返回符合 Flat 或 Nested NER约束的排名最高的树 span;
    • 实验结果:我们根据三个嵌套的NER基准(ACE 2004,ACE 2005,GENIA)和五个扁平的NER语料库(CONLL 2002(荷兰语,西班牙语),CONLL 2003(英语,德语)和ONTONOTES)对系统进行了评估。结果表明,我们的系统在所有三个嵌套的NER语料库和所有五个平坦的NER语料库上均取得了SoTA结果,与以前的SoTA相比,实际收益高达2.2%的绝对百分比。
  • 【关于 NER trick】 那些你不知道的事
  • TENER: Adapting Transformer Encoder for Name Entity Recognition
    • 动机:
        1. Transformer 能够解决长距离依赖问题;
        1. Transformer 能够并行化;
        1. 然而,Transformer 在 NER 任务上面效果不好。
    • 方法:
      • 第一是经验发现。 引入:相对位置编码
      • 第二是经验发现。 香草变压器的注意力分布是缩放且平滑的。 但是对于NER,因为并非所有单词都需要参加,所以很少注意是合适的。 给定一个当前单词,只需几个上下文单词就足以判断其标签。 平稳的注意力可能包括一些嘈杂的信息。 因此,我们放弃了点生产注意力的比例因子,而使用了无比例且敏锐的注意力。
  • DynamicArchitecture
    • 介绍:Dynamic Architecture范式通常需要设计相应结构以融入词汇信息。
    • 论文:
      • 【关于 LatticeLSTM 】那些你不知道的事
        • 想法:在 char-based 的 LSTM 中引入词汇信息
        • 做法:
          • 根据大量语料生成词典;
          • 若当前字符与前面的字符无法组成词典中词汇,则按 LSTM 的方法更新记忆状态;
          • 若当前字符与前面的字符组成词典中词汇,从最新词汇中提取信息,联合更新记忆状态;
        • 存在问题:
          • 计算性能低下,导致其不能充分利用GPU进行并行化。究其原因主要是每个字符之间的增加word cell(看作节点)数目不一致;
          • 信息损失:
            • 1)每个字符只能获取以它为结尾的词汇信息,对于其之前的词汇信息也没有持续记忆。如对于「大」,并无法获得‘inside’的「长江大桥」信息。
            • 2)由于RNN特性,采取BiLSTM时其前向和后向的词汇信息不能共享,导致 Lattice LSTM 无法有效处理词汇信息冲突问题
          • 可迁移性差:只适配于LSTM,不具备向其他网络迁移的特性。
      • 【关于 LR-CNN 】那些你不知道的事
        • 动机
          • 词信息引入问题;
          • lattice LSTM 问题:
            • 基于 RNN 结构方法不能充分利用 GPU 并行计算资源;
              • 针对句子中字符计算;
              • 针对匹配词典中潜在词
            • 很难处理被合并到词典中的潜在单词之间的冲突:
              • 一个字符可能对应词典中多个潜在词,误导模型
        • 方法:
        • Lexicon-Based CNNs:采取CNN对字符特征进行编码,感受野大小为2提取bi-gram特征,堆叠多层获得multi-gram信息;同时采取注意力机制融入词汇信息(word embed);
        • Refining Networks with Lexicon Rethinking:由于上述提到的词汇信息冲突问题,LR-CNN采取rethinking机制增加feedback layer来调整词汇信息的权值:具体地,将高层特征作为输入通过注意力模块调节每一层词汇特征分布,利用这种方式来利用高级语义来完善嵌入单词的权重并解决潜在单词之间的冲突。
      • 【关于 CGN 】那些你不知道的事
        • 动机
          • 中文命名实体识别中,词边界 问题;
          • 如何 引入 词边界信息:
            • pipeline:CWS -> NER
              • 问题:误差传递
            • CWS 和 NER 联合学习
              • 问题:标注 CWS 数据
            • 利用 词典 自动构建
              • 优点:比 CWS 标注数据 更容易获得
              • 问题:
                • 第一个挑战是整合自我匹配的词汇词;
                  • 举例:“北京机场” (Beijing Airport) and “机场” (Airport) are the self-matched words of the character “机” (airplane)
                • 第二个挑战是直接整合最接近的上下文词汇词;
                  • 举例:by directly using the semantic knowledge of the nearest contextual words “离开” (leave), an “I-PER” tag can be predicted instead of an “I-ORG” tag, since “希尔顿” (Hilton Hotels) cannot be taken as the subject of the verb “离开”
          • 论文思路:
            • character-based Collaborative Graph:
              • encoding layer:
                • 句子信息:
                  • s1:将 char 表示为 embedding;
                  • s2:利用 biLSTM 捕获 上下文信息
                • lexical words 信息:
                  • s1:将 lexical word 表示为 embedding;
                • 合并 contextual representation 和 word embeddings
              • a graph layer:
                • Containing graph (C-graph):
                  • 思路:字与字之间无连接,词与其inside的字之间有连接;
                  • 目的:帮助 字符 捕获 self-matched lexical words 的边界和语义信息
                • Transition graph (T-graph):
                  • 思路:相邻字符相连接,词与其前后字符连接;
                  • 目的:帮助 字符 捕获 相邻 上下文 lexical 词 的 语义信息
                • Lattice graph (L-graph):
                  • 思路:通相邻字符相连接,词与其开始结束字符相连;
                  • 目的:融合 lexical knowledge
                • GAT:
                  • 操作:针对三种图,使用Graph Attention Network(GAN)来进行编码。最终每个图的输出
                    • 其中 $G_k$ 为第k个图的GAN表示,因为是基于字符级的序列标注,所以解码时只关注字符,因此从矩阵中取出前n行作为最终的图编码层的输出。

              • a fusion layer:
                • 目的:融合 三种 graphs 中不同 的 lexical 知识
              • a decoding layer:
                • 操作:利用 CRF 解码
      • 【关于 LGN 】那些你不知道的事
        • 动机:
          • 在 char-base Chinese NER 中,同一个字符可能属于多个 lexicon word,存在 overlapping ambiguity 问题
            • 举例(如下图)
              • 字符[流] 可以 匹配词汇 [河流] 和 [流经] 两个词汇信息,但是 Lattice LSTM 只能利用 [河流];
          • Lattice LSTM这种RNN结构仅仅依靠前一步的信息输入,而不是利用全局信息
            • 举例
              • 字符 [度]只能看到前序信息,不能充分利用 [印度河] 信息,从而造成标注冲突问题
          • Ma等人于2014年提出,想解决overlapping across strings的问题,需要引入「整个句子中的上下文」以及「来自高层的信息」;然而,现有的基于RNN的序列模型,不能让字符收到序列方向上 remain characters 的信息;
        • 方法:
          • Graph Construction and Aggregation
          • Graph Construction
          • Local Aggregation
          • Global Aggregation
          • Recurrent-based Update Module
      • 【关于 FLAT】 那些你不知道的事
        • 动机
          • 方法一:设计一个动态框架,能够兼容词汇输入;
            • 代表模型:
              • Lattice LSTM:利用额外的单词单元编码可能的单词,并利用注意力机制融合每个位置的变量节点
              • LR-CNN:采用不同窗口大小的卷积核来编码 潜在词
            • 问题:
              • RNN 和 CNN 难以解决长距离依赖问题,它对于 NER 是有用的,例如: coreference(共指)
              • 无法充分利用 GPU 的并行计算能力
          • 方法二:将 Lattice 转化到图中并使用 GNN 进行编码:
            • 代表模型
              • Lexicon-based GN(LGN)
              • Collaborative GN(CGN)
            • 问题
              • 虽然顺序结构对于NER仍然很重要,并且 Graph 是一般的对应物,但它们之间的差距不可忽略;
              • 需要使用 LSTM 作为底层编码器,带有顺序感性偏置,使模型变得复杂。
        • 方法:将Lattice结构展平,将其从一个有向无环图展平为一个平面的Flat-Lattice Transformer结构,由多个span构成:每个字符的head和tail是相同的,每个词汇的head和tail是skipped的。
  • 【关于 ACL 2019 中的NER】那些你不知道的事
  • 【关于 EMNLP 2019 中的NER】那些你不知道的事
  • 【关于 LCF】 那些的你不知道的事
    • 论文名称:A Local Context Focus Mechanism for Aspect-Based Sentiment Classification
    • 论文动机:没有考虑情感极性和局部上下文间关系
      • LCF:利用自注意力机制同时捕获局部上下文特征和全局上下文特征,以推断 targeted aspect 的情感极性
      • SRD:评估上下文词与 aspect 间的独立性,SRD对于弄清局部上下文具有重要意义,并且SRD阈值中的上下文单词的特征将得到保留和重点关注。
      • CDM 和 CDW 层:强化 LCF,使其对 特殊 aspest 的局部上下文提供 更多 注意力。CDM层通过掩盖语义相对较少的上下文词的输出表示,将重点放在局部上下文上。 CDW 层根据 SRD 削弱语义相对较少的上下文词的特征;
  • 【关于 生成对抗网络 GAN 】 那些的你不知道的事
  • 【关于 FreeLB 】 那些的你不知道的事
    • 论文名称: FreeLB: Enhanced Adversarial Training for Language Understanding 加强语言理解的对抗性训练
    • 动机:对抗训练使保留标签的输入扰动的最大风险最小,对于提高语言模型的泛化能力是有效的。
    • 方法:提出了一种新的对抗性训练算法—— freeb,它通过在字嵌入中添加对抗性的干扰,最小化输入样本周围不同区域内的对抗性风险,从而提高嵌入空间的鲁棒性和不变性。
  • 【关于 语义相似度匹配任务中的 BERT】 那些你不知道的事
    • 阅读理由:BERT 在 语义相似度匹配任务 中的应用,可以由很多种方式,然而,你真的了解这些方式的区别和优缺点么?
    • 动机:BERT 在 语义相似度匹配任务 中的应用,可以常用 Sentence Pair Classification Task:使用 [CLS]、cosine similairity、sentence/word embedding、siamese network 方法,那么哪种是最佳的方式呢?你是否考虑过呢?
  • 【关于 MPCNN】 那些你不知道的事
    • 论文:Multi-Perspective Sentence Similarity Modeling with Convolution Neural Networks
  • 【关于 RE2】 那些你不知道的事
    • 论文:Simple and Effective Text Matching with Richer Alignment Features
    • 动机: 可以使用多个序列间比对层构建更强大的模型。 代替基于单个对准过程的比较结果进行预测,具有多个对准层的堆叠模型将保持其中间状态并逐渐完善其预测。但是,由于底层特征的传播效率低下和梯度消失,这些更深的体系结构更难训练。
    • 介绍:一种快速强大的神经体系结构,具有用于通用文本匹配的多个对齐过程。 我们对以前文献中介绍的文本匹配方法中许多慢速组件的必要性提出了质疑,包括复杂的多向对齐机制,对齐结果的大量提炼,外部句法特征或当模型深入时用于连接堆叠块的密集连接。 这些设计选择会极大地减慢模型的速度,并且可以用重量更轻且效果相同的模型代替。 同时,我们重点介绍了有效文本匹配模型的三个关键组成部分。 这些组件(名称为RE2代表)是以前的对齐特征(残差矢量),原始点向特征(嵌入矢量)和上下文特征(编码矢量)。 其余组件可能尽可能简单,以保持模型快速,同时仍能产生出色的性能。
  • 【关于 DSSM】 那些你不知道的事
    • 论文:Deep Structured Semantic Model
    • 论文会议:CIKM2013
    • 问题:语义相似度问题
      • 字面匹配体现
        • 召回:在召回时,传统的文本相似性如 BM25,无法有效发现语义类 Query-Doc 结果对,如"从北京到上海的机票"与"携程网"的相似性、"快递软件"与"菜鸟裹裹"的相似性
        • 排序:在排序时,一些细微的语言变化往往带来巨大的语义变化,如"小宝宝生病怎么办"和"狗宝宝生病怎么办"、"深度学习"和"学习深度";
      • 使用 LSA 类模型进行语义匹配,但是效果不好
    • 思路:
      • 利用 表示层 将 Query 和 Title 表达为低维语义向量;
      • 通过 cosine 距离来计算两个语义向量的距离,最终训练出语义相似度模型。
    • 优点
      • 减少切词的依赖:解决了LSA、LDA、Autoencoder等方法存在的一个最大的问题,因为在英文单词中,词的数量可能是没有限制,但是字母 n-gram 的数量通常是有限的
      • 基于词的特征表示比较难处理新词,字母的 n-gram可以有效表示,鲁棒性较强;
      • 传统的输入层是用 Embedding 的方式(如 Word2Vec 的词向量)或者主题模型的方式(如 LDA 的主题向量)来直接做词的映射,再把各个词的向量累加或者拼接起来,由于 Word2Vec 和 LDA 都是无监督的训练,这样会给整个模型引入误差,DSSM 采用统一的有监督训练,不需要在中间过程做无监督模型的映射,因此精准度会比较高;
      • 省去了人工的特征工程;
    • 缺点
      • word hashing可能造成冲突
      • DSSM采用了词袋模型,损失了上下文信息
      • 在排序中,搜索引擎的排序由多种因素决定,由于用户点击时doc的排名越靠前,点击的概率就越大,如果仅仅用点击来判断是否为正负样本,噪声比较大,难以收敛
  • 【关于 ABCNN 】那些你不知道的事
    • 论文:ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs
    • 会议:TACL 2016
    • 论文方法:采用了CNN的结构来提取特征,并用attention机制进行进一步的特征处理,作者一共提出了三种attention的建模方法
  • 【关于 ESIM 】那些你不知道的事
    • 论文:Enhanced LSTM for Natural Language Inference
    • 会议:TACL2017
    • 自然语言推理(NLI: natural language inference)问题:
      • 即判断能否从一个前提p中推导出假设h
      • 简单来说,就是判断给定两个句子的三种关系:蕴含、矛盾或无关
    • 论文方法:
      • 模型结构图分为左右两边:
      • 左侧就是 ESIM,
      • 右侧是基于句法树的 tree-LSTM,两者合在一起交 HIM (Hybrid Inference Model)。
      • 整个模型从下往上看,分为三部分:
        • input encoding;
        • local inference modeling;
        • inference composition;
        • Prediction
  • 【关于 BiMPM 】那些你不知道的事
    • 论文:Bilateral multi-perspective matching for natural language sentences
    • 会议:IJCAI2017
    • 方法:
      • Word Representation Layer:其中词表示层使用预训练的Glove或Word2Vec词向量表示, 论文中还将每个单词中的字符喂给一个LSTM得到字符级别的字嵌入表示, 文中使用两者构造了一个dd维的词向量表示, 于是两个句子可以分别表示为 P:[p1,⋯,pm],Q:[q1,⋯,qn].
      • Context Representation Layer: 上下文表示层, 使用相同的双向LSTM来对两个句子进行编码. 分别得到两个句子每个时间步的输出.
      • Matching layer: 对两个句子PP和QQ从两个方向进行匹配, 其中⊗⊗表示某个句子的某个时间步的输出对另一个句子所有时间步的输出进行匹配的结果. 最终匹配的结果还是代表两个句子的匹配向量序列.
      • Aggregation Layer: 使用另一个双向LSTM模型, 将两个匹配向量序列两个方向的最后一个时间步的表示(共4个)进行拼接, 得到两个句子的聚合表示.
  • Prediction Layer: 对拼接后的表示, 使用全连接层, 再进行softmax得到最终每个标签的概率.
  • 【关于 DIIN 】那些你不知道的事
    • 论文:Densely Interactive Inference Network
    • 会议:TACL2017
    • 模型主要包括五层:嵌入层(Embedding Layer)、编码层(Encoding Layer)、交互层(Interaction Layer )、特征提取层(Feature Extraction Layer)和输出层(Output Layer)
  • 【关于 DC-BERT】 那些你不知道的事
    • 论文名称:DC-BERT : DECOUPLING QUESTION AND DOCUMENT FOR EFFICIENT CONTEXTUAL ENCODING
    • 阅读理由:Bert 在 QA 上面的应用
    • 动机:Bert 无法处理传入问题的高吞吐量,每个问题都有大量检索到的文档;
    • 论文方法:具有双重BERT模型的解耦上下文编码框架:
      • 一个在线BERT,仅对问题进行一次编码;
      • 一个正式的BERT,对所有文档进行预编码并缓存其编码;
  • 【关于 tBERT 】那些你不知道的事
    • 论文:tBERT: Topic Models and BERT Joining Forces for Semantic Similarity Detection
    • 会议:ACL2020
    • 论文地址:https://www.aclweb.org/anthology/2020.acl-main.630/
    • 论文代码:https://github.com/wuningxi/tBERT
    • 动机:未存在将主题模型和BERT结合的方法。 语义相似度检测是自然语言的一项基本任务理解。添加主题信息对于以前的特征工程语义相似性模型和神经网络模型都是有用的其他任务。在那里目前还没有标准的方法将主题与预先训练的内容表示结合起来比如 BERT。
    • 方法:我们提出了一种新颖的基于主题的基于BERT的语义相似度检测体系结构,并证明了我们的模型在不同的英语语言数据集上的性能优于强神经基线。我们发现在BERT中添加主题特别有助于解决特定领域的情况。
  • 【关于 DeepType】 那些你不知道的事
    • 阅读理由:这篇论文属于 实体消歧 领域 比较经典的论文,而且调研了很多相关竞赛,很多 Top 大佬 都会用到它,所以想学习一下!【目前还没看完!!!】
  1. 【关于 Domain/Intent Classification 】那些你不知道的事
  2. 【关于 槽位填充 (Slot Filling)】那些你不知道的事
  3. 【关于 上下文LU】那些你不知道的事
  4. 【关于 自然语言生成NLG 】那些你不知道的事
  5. 【关于 DSTC 】那些你不知道的事
  6. 【关于 E2E 】那些你不知道的事
    1. 【关于 TC_Bot(End-to-End Task-Completion Neural Dialogue Systems) 】那些你不知道的事
  1. 【关于 rasa 安装 】那些你不知道的事
  2. 【关于 rasa 基本架构 】那些你不知道的事
  3. 【关于 rasa中文对话系统】那些你不知道的事
  4. 【关于 rasa中文对话系统构建】那些你不知道的事
  5. 【关于 rasa->NLU 】那些你不知道的事
  6. 【关于 rasa -> Core -> FormAction 】那些你不知道的事
  7. 【关于 rasa -> Core -> Stories 】那些你不知道的事
  8. 【关于 rasa -> Core -> Action 】那些你不知道的事
  • Unsupervised Data Augmentation (UDA)
    • 【关于 UDA】 那些你不知道的事
      • 阅读理由:UDA(Unsupervised Data Augmentation 无监督数据增强)是Google在2019年提出的半监督学习算法。该算法超越了所有现有的半监督学习方法,并实现了仅使用极少量标记样本即可达到使用大量标记样本训练集的精度。
      • 动机: 深度学习的模型训练通常依赖大量的标签数据,在只有少量数据上通常表现不好;
      • 思路:提出了一种基于无监督数据的数据增强方式UDA(Unsupervised Data Augmentation)。UDA方法生成无监督数据与原始无监督数据具备分布的一致性,而以前的方法通常只是应用高斯噪声和dropout噪声(无法保证一致性)。UDA方法利用了一种目前为止最优的方法生成更加“真实”的数据。
      • 优点:使用这种数据增强方法,在极少量数据集上,六种语言任务和三种视觉任务都得到了明显的提升。

实战篇

重点推荐篇
推荐篇

视频学习篇

Elastrsearch 学习篇

推荐系统 学习篇

竞赛篇

Clone this wiki locally