文章目录
本文基于百度飞浆Paddle平台
项目地址:
NLP 打卡Day2
1. 走进自然语言处理
1.1 自然语言处理的应用
- 智能问答:搜索引擎
- 智能对话
- 机器同传:同音频一边传一边翻译
1.2 自然语言的挑战
- 自然语言的歧义性
- 自然语言的多样性
NLP的评测
图灵测试:人类C跟计算机A,和人类B交谈,若当C问一个问题,已经分不清回复的是计算机还是人类,这样就说明计算机通过了图灵测试
1.3 NLP发展历程
-
规则方法
-
统计学习方法:IBM
特征工程:由人工翻译的特征(依赖专家)
-
深度学习方法:2015
又称为表征学习
2. 前预训练时代的自监督学习
- 前向传播
- 反向传播
2.1 One-Hot
- 两个词之间是正交的
- 只有唯一一个1
- 但是很难衡量一些词语之间的关系
2.2 Embedding
-
将每一个单词换成一个低维可持续的向量表征
-
是One-Hot编码的线性映射
-
One-Hot不需要学习,而词向量需要学习
分布式假设:具有相似的上下文的意思是相似的
Skip-gram:给定中间词,推出上下文(多对1教学)
CBow:给定上下文,得到中间词(大班教学)
-
One-hot:精准命中,Embedding:范围攻击
-
权重矩阵的每一行对应一个词向量
-
unk:在词向量中没有出现过的语料
Skip-gram和CBow的区别:
2.3 句子编码神经网络
- 语言的表达单靠单词是不够的,还需要完整的句子对语言模型的建模
RNN建模:
- 容易出现梯度爆炸和梯度消失
- 从左到右的串行结构
- 模型会对较前的语义信息产生遗忘
- 由于主要采用递归实现,所以time Step无法并行
- 无法对具有层次结构的信息进行较好的表达
由此引出Self-Attention
-
既能做到并行,又能做到常数复时间长距离依赖
-
Transformer的核心模块
-
并没有考虑单词的顺序
-
Residual connection 残差连接:解决梯度消失问题
- 直连接
- 映射部分
-
为保证数据分布的统一,会对向量做一个归一化操作
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
缺陷
- 不完全的双向训练,仅在Loss Function进行了结合
- 需要进行相关网络结构的设计
- 仅有词向量,无句向量
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字节用双塔会比较好一点
基于BERT的单塔文本匹配
上述的ERINE模型可参考
写在最后
各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟!
<(^-^)>
才疏学浅,若有纰漏,恳请斧正
本文章仅用于各位同志作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知