一、词向量技术的发展历程
one-hot 编码
基于共现矩阵的模型
Word2vec
glove
FastText
ELMo
OpenAI GPT
BERT
二、Word2vec
基本原理
CBOW模型
Skip-Gram模型
Word2vec案例实现
代码
#词向量
import pandas as pd
import jieba
from gensim.models.word2vec import Word2Vec
# 读入训练集文件
data = pd.read_csv('train.csv')
# 转字符串数组
corpus = data['comment'].values.astype(str)
# 分词,再重组为字符串数组
corpus = [jieba.lcut(corpus[index]
.replace(",", "")
.replace("!", "")
.replace("!", "")
.replace("。", "")
.replace("~", "")
.replace(";", "")
.replace("?", "")
.replace("?", "")
.replace("【", "")
.replace("】", "")
.replace("#", "")
) for index in range(len(corpus))]
# 词向量模型训练
model = Word2Vec(corpus, sg=0, vector_size=300, window=5, min_count=3, workers=4)
#模型显示
print('模型参数:',model,'\n')
#最匹配
print('最匹配的词是:',model.wv.most_similar(positive=['点赞', '不错'], negative=['难吃']),'\n')
#最不匹配
#print('最不匹配的词是:',model.wv.doesnt_match("点赞 好吃 支持 难吃".split()),'\n')
#语义相似度
print('相似度为=',model.wv.similarity('推荐','好吃'),'\n')
#坐标返回
print(model.wv.__getitem__('地道'))
三、 注意力机制
注意力机制概述
Encoder-Decoder框架
注意力机制的框架
注意力机制的本质思想
注意力机制的特点
注意力机制的发展
四、Transformer模型
1. Transformer模型概述
Transformer 模型是 BERT 的基石之一,同时 Transformer 模型也是通过注意力机制来进行构建的。右图是 Transformer 的模型结构图,其中编码器和解码器是 Transformer 的核心结构。
2. Transformer模型框架——位置编码
与 RNN、LSTM 等循环神经网络不同,Transformer 没有使用迭代操作,而输入的词序关系对语言模型至关重要,为此 Transformer 引入了位置向量(Positional Encoding)。在输入中,每个词都有与其位置一一对应的位置向量。 使用位置编码,一方面能实现并行计算,提升训练速度 ;另一方面,能减少长距离词之间的信息损失。
3. Transformer模型框架——Encoder和Decoder结构
Encoder 由多头自注意力层和前馈层两个子层构成。Decoder 除了具有 Encoder 的两个子层外,还具有注意力层,能对 Encoder 输出的多头注意力进行处理,获取对生成目标词具有重要作用的信息。Encoder结构如右图所示。
4. Transformer模型框架——层归一化
在 Transformer 中,每一个子层(自注意力层、前馈层)之后都会接一个残差连接,并且有一个 Layer Normalization。为了减少计算量,需要对数据进行归一化处理。
5. Transformer模型的工作流程
(1)在词嵌入层后加入位置向量,得到含位置信息的词嵌入表示,输入至 transformer 模型中。 (2)在 transformer 中,首先经过多个 Encoder 编码器。每个 Encoder 中,数据依次经过多头自注意力层、累加 & 归一化、前馈层、累加 & 归一化,然后输出至下一个 Encoder 中。 (3)最后一个 Encoder 的输出会作为 memory 保留,进入多个 Decoder 解码器。 (4)第一个 Decoder 的输入是 Encoder 的输出以及在当前词之前所有词的 Decoder 输出, 每个 Decoder 中,数据依次经过 MASK 多头自注意力层(看不到之后 token)、多头注意力层、累加 & 归一化、前馈层、累加 & 归一化。其中注意力层中的 K,V 来自 Encoder 的 memory,Q 来自上一层的 Decoder 输出,因此是注意力而非自注意力。 (5)Decoder 的输出经过全连接层变换,进入 softmax 层中,其输出为当前位置的输出词的概率分布,通过计算与真实分布之间误差对模型进行调整。
注意力机制代码实现:http://t.csdnimg.cn/wpDwt
Transformer代码实现:http://t.csdnimg.cn/yigqq