词向量技术

本文介绍了词向量技术的发展,重点讲解了Word2vec的CBOW和Skip-Gram模型,以及Transformer模型的注意力机制、Encoder-Decoder架构和位置编码。此外,还提到了BERT与Transformer的关系。通过实例展示了如何实现这些技术。
摘要由CSDN通过智能技术生成

一、词向量技术的发展历程

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

 

  • 24
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轻晃痛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值