创新实训个人工作日志(三)

1. 本周工作内容

通过本周的工作,我能够获得answer+passage组成文段的[CLS]词向量,并认为该词向量中蕴含着本段文字的所有语义信息,计划通过[CLS]与答案文本的命名实体识别来获得疑问词的分类,但在具体实现的过程中遇到了比较严重的问题,在与学姐充分交流之后转换了思路,决定使用uniLM模型进行问题生成任务。因此本周认真阅读并研究了uniLM模型。

2. 遇到的问题

2.1 模型方面

项目之前的实现思路是基于《Let Me Know What to Ask: Interrogative-Word-Aware Question Generation》一文,但该文章是针对英文文本提出的,实现在中文文本上有很大的问题
最重要的就是英文中的疑问词相对明确,但是中文文本的混淆度更高,也就是越复杂,简而言之就是同样的意思有更多的说法。
原文中将疑问词分为八个类别,一开始我的思路是直接将其对应翻译成中文,即如下表所示:

英文中文
who
why为什么
when什么时候
what什么
how怎样
which哪一个
where哪里
others其他

但是具体实现的时候发现了问题,上表中的英文疑问词与中文疑问词并不是一一对应的,例如where在中文中可以说成是哪里,也可说成什么地方,什么地点,有多种说法;疑问词从字面上看也互相包含,例如“为什么”,“什么”,“什么时候”。
原文中疑问词分类器的实现是通过识别数据集中的疑问词,对应自动做出标注,利用标注数据训练分类器。但在中文中因为疑问词说法繁多不一致,没有明显的标志无法实现自动标注,如果使用该思路需要人工进行数据集标注,成本很高,因此放弃了这个思路。

2.2 数据集方面

原本计划使用百度的Dureader数据集,因此该数据集对问题进行了标注,分为fact和opinion两个大类,每个大类下又各分三小类,共有六种类别的问题。计划将问题的类别输入模型,优化问题生成。
但是Dureader数据集是直接爬虫获得的,包含大量html代码,这一点通过简单的数据清洗还可以改善。
另一方面,Dureader数据集是从百度知道和百度搜索中选取的网友的问题和回答,通过检查数据集发现,很多问题并不是疑问词的形式,例如:“淘宝开店的流程步骤”,且答案文本偏向口语化,普遍篇章较长。
经过讨论分析,我认为该数据集更适合做文本理解任务,并不适合问题生成。因此改换为科大讯飞的CMRC数据集,该数据集更加规范符合我们的需要,并且格式与斯坦福SQuAD数据集相同。
但是我们仍然希望可以使用标签对生成的问题进行控制,因此决定将原本计划用于评估结果的问题分类应用于CMRC数据集。也就是先对CMRC数据集中的问题分类,运用分类后的数据进行问题生成。

3. uniLM论文阅读——Unified Language Model Pre-training for Natural Language Understanding and Generation

Abstract

uniLM模型是统一的预训练语言模型——自然语言理解和自然语言生成。使用三种类型的语言模型任务:单向、双向、序列到序列的预测;使用共享的transformer网络和特定的自我注意蒙版mask去控制预测条件在什么上下文中。
在这里插入图片描述

Introduction

uniLM模型主要有以下三个优点:

  • 一个单独transformer 共享参数和结构,减轻不同类型的LMs分别训练和托管host多个LMs的需要.
  • 共享参数使得文本表示形式更加通用,因为针对不同的语言建模目标(它们以不同的方式利用上下文)进行了联合优化,从而减轻了对任何单个LM任务的过度拟合.
  • 使用seq2seq,成为NLG的自然选择.

Unified Language Model Pre-training

给定输入序列,uniLM对每个token获得上下文化的向量表示
预训练针对多个无监督语言建模目标(即单向LM,双向LM和序列到序列LM)优化了共享的Transformer网络。
不同的mask自注意–通过mask控制token关注多少上下文信息去计算向量表示。一旦对UNILM进行了预训练,我们就可以使用特定于任务的数据对下游任务进行微调(fine-tune).
在这里插入图片描述

Input Representation

[SOS]:start-of-sequence,输入的开始
[EOS]:end-of-sequence,[EOS]不仅标记了NLU任务中的句子边界,还用于模型学习何时终止NLG任务中的解码过程

  • 对于每个输入的token,向量表示是通过相应的token embedding position embedding segment
  • embedding相加sum得出的 针对不同的LM目标使用不同的段嵌入segment embedding
  • The input representation follows that of BERT

Backbone Network:Multi-Layer Transformer

在这里插入图片描述
A:the output of a self-attention head
使用不同的mask矩阵来控制计算上下文表示的时候token能参加什么上下文

Pre-training Objectives

  • 随机在输入中选择WordPiece tokens,用特殊token[mask]将transformer后的网络通过softmax预测被masked的token
  • 最小化交叉熵
  • 相似的训练流程对所有其他的语言模型 无论是单向还是双向都适用
Unidirectional LM :left-to-right and right-to-left

left-to-right LM:所有token的表示在编码时只考虑左边的token和自身
self-attention mask
在这里插入图片描述

Bidirectional LM

编码时考虑所有token
与单向文本相比,可以生成更好的文本上下文表示。
在这里插入图片描述

Sequence-to-Sequence LM

第一个segment能使用本segment中的所有token
第二个segment只能使用目标target左边的语境和他本身

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值