【Paddle NLP入门打卡】Chapter3 理论课:预训练模型及历史发展

文章目录

  • NLP 打卡Day2
  • 1. 走进自然语言处理
    • 1.1 自然语言处理的应用
    • 1.2 自然语言的挑战
    • 1.3 NLP发展历程
  • 2. 前预训练时代的自监督学习
    • 2.1 One-Hot
    • 2.2 Embedding
    • 2.3 句子编码神经网络
    • 2.4 自回归、自编码和预学习
  • 3. 预训练语言模型及其应用
    • 3.1 ELMo:第一个预训练的语义理解模型
    • 3.2 GPT
    • 3.3 BERT
    • 3.4 ERNIE
    • 3.4 ERINE 2.0
  • 4. NLP实践应用
    • 4.1 难点与发展
  • 写在最后


本文基于百度飞浆Paddle平台

项目地址:

『NLP打卡营』实践课1:词向量应用演示

VisualDL官方说明文档

Embedding源码地址


NLP 打卡Day2

1. 走进自然语言处理


1.1 自然语言处理的应用

  • 智能问答:搜索引擎
  • 智能对话
  • 机器同传:同音频一边传一边翻译

1.2 自然语言的挑战

  • 自然语言的歧义性
  • 自然语言的多样性

NLP的评测

图灵测试:人类C跟计算机A,和人类B交谈,若当C问一个问题,已经分不清回复的是计算机还是人类,这样就说明计算机通过了图灵测试

1.3 NLP发展历程

  1. 规则方法

  2. 统计学习方法:IBM

    特征工程:由人工翻译的特征(依赖专家)

  3. 深度学习方法:2015

    又称为表征学习


2. 前预训练时代的自监督学习


  • 前向传播

【Paddle NLP入门打卡】Chapter3 理论课:预训练模型及历史发展_第1张图片

  • 反向传播

【Paddle NLP入门打卡】Chapter3 理论课:预训练模型及历史发展_第2张图片

2.1 One-Hot

  • 两个词之间是正交的
  • 只有唯一一个1
  • 但是很难衡量一些词语之间的关系

2.2 Embedding

  • 将每一个单词换成一个低维可持续的向量表征

  • 是One-Hot编码的线性映射

【Paddle NLP入门打卡】Chapter3 理论课:预训练模型及历史发展_第3张图片

  • One-Hot不需要学习,而词向量需要学习

    分布式假设:具有相似的上下文的意思是相似的

    Skip-gram:给定中间词,推出上下文(多对1教学)

    CBow:给定上下文,得到中间词(大班教学)

  • One-hot:精准命中,Embedding:范围攻击

  • 权重矩阵的每一行对应一个词向量

  • unk:在词向量中没有出现过的语料

Skip-gram和CBow的区别:

【Paddle NLP入门打卡】Chapter3 理论课:预训练模型及历史发展_第4张图片

2.3 句子编码神经网络

  • 语言的表达单靠单词是不够的,还需要完整的句子对语言模型的建模

RNN建模:

  • 容易出现梯度爆炸和梯度消失
  • 从左到右的串行结构
  • 模型会对较前的语义信息产生遗忘
  • 由于主要采用递归实现,所以time Step无法并行
  • 无法对具有层次结构的信息进行较好的表达

5

由此引出Self-Attention

  • 既能做到并行,又能做到常数复时间长距离依赖

  • Transformer的核心模块

  • 并没有考虑单词的顺序

  • Residual connection 残差连接:解决梯度消失问题

    • 直连接
    • 映射部分
  • 为保证数据分布的统一,会对向量做一个归一化操作

【Paddle NLP入门打卡】Chapter3 理论课:预训练模型及历史发展_第5张图片

2.4 自回归、自编码和预学习

  • BERT:句子表示能力更强,单词能够表示句子全部信息
  • GBT:只能看到上下文的词语语句信息

3. 预训练语言模型及其应用


挑战:

  • 语言的复杂性和多义性
    • 多义、同义、歧义
    • 灵活多变的表达形式

自监督学习:

  • 从大规模的无标注数据中学习词向量
  • Embedding和Word2Vec的功能一致

如何使用:

  • 观点抽取、阅读理解
    • 通过查表得方法从原始文本得到词向量
    • 分类器
  • 情感分析、文本匹配
    • Pooling + 分类器

缺陷:

  • 词向量是静态固定得,无法根据上下文语义调整词向量
  • 在下游任务中,其余的模型参数仍需要训练
  • 缺乏对文本信息的建模

Pre-training & Fine-tuning机制

  • Pre:在大规模数据集上尽可能学习较好的通用表示

  • Fine-tuning

    • 利用学习好的通用参数初始化下游网络任务
      • 加速收敛
      • 减少相关监督数据要求
  • 大规模训练下,复杂模型可以学的更好

  • 底层特征会有很大的通用性

3.1 ELMo:第一个预训练的语义理解模型

  • 使用Bi-LSTM语言模型建模
  • 无监督训练
  • Fine-tuning阶段
    • 基于Feature-Based方式
    • Pre-training model作为存粹的表示抽取器
    • $E = \alpha_1 E_1 + \alpha_2 E_2 + \alpha_3 E_3 $可以训练,实现动态WordEmbedding

缺陷

  1. 不完全的双向训练,仅在Loss Function进行了结合
  2. 需要进行相关网络结构的设计
  3. 仅有词向量,无句向量

3.2 GPT

  • Pre-training阶段

    • 使用12层Transformer Decoder替换Bi - LSTM
    • 更大规模的训练数据
  • 目标:传统单向语言模型

缺陷

  • 单项预训练
  • 仅有词向量,无句向量
  • 仅仅解决了下游网络设计复杂的问题

3.3 BERT

  • Pre-training阶段

    • 使用12层Transformer Decoder
    • 使用了交互式双向语言模型进行建模
    • 引入sentence-level预训练任务,实现句向量的显示建模
    • 更大的数据集
  • 目标

    • 同时训练 token-level 和 sentence-level 的任务
  • Mask-LM任务

    • 输入文本中15%token(字)镜像mask替代
    • 80%的token使用mask的token替代
    • 10%的token用词语中的任意token进行替代
    • 10%的token保持不变
  • 解决了无交互的缺点

缺陷

  • 由于使用token,缺乏对全局信息的建模

3.4 ERNIE

基于知识增强的语义理解模型

两个不同点(与BERT)

  • 将token(字)升级为word(词)
  • 使用baidu自建的语料库

简单理解(mask)的内容更大了

3.4 ERINE 2.0

  • 持续学习语义框架 — 预训练阶段不断叠加学习(新旧一起)

  • 使得不会前学后忘


4. NLP实践应用


4.1 难点与发展

文本语义匹配

  • 多义同义问题:苹果
  • 组合结构问题:从北京到上海、从上海到北京
  • 表达多样性:香蕉的翻译(英文怎么说?)
  • 匹配非对称:今天别累了、早点休息吧

基于BERT的双塔文本匹配

  • 双塔:两个Encoder

  • 优势:两个句子独立建模,时间复杂度低

  • 缺陷: 对各文本抽取醉胡的语义向量,大量的语义信息损失

  • 文本长度超过512字节用双塔会比较好一点

【Paddle NLP入门打卡】Chapter3 理论课:预训练模型及历史发展_第6张图片

基于BERT的单塔文本匹配

【Paddle NLP入门打卡】Chapter3 理论课:预训练模型及历史发展_第7张图片

上述的ERINE模型可参考

【Paddle NLP入门打卡】Chapter3 理论课:预训练模型及历史发展_第8张图片


写在最后

各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟!
<(^-^)>
才疏学浅,若有纰漏,恳请斧正
本文章仅用于各位同志作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知

你可能感兴趣的:(百度飞浆AILab,线性代数,paddle,python,自然语言处理,BERT)