Embedding 嵌入

Embedding将离散的符号(如词、句子)映射到连续的向量空间,是深度学习处理自然语言的基础。

共 3 篇文章·阅读时间:约40分钟

01词嵌入

词嵌入将每个词映射为一个固定维度的稠密向量,使得语义相似的词在向量空间中距离相近。

词嵌入原理

词嵌入的核心思想是"分布假设":一个词由其周围的词来决定。 语义相似的词会出现在相似的上下文中,因此会有相似的向量表示。

One-Hot vs 词嵌入

特性One-Hot词嵌入
维度词表大小V(成千上万)通常50-300维
向量特点稀疏、正交稠密、可计算相似度
语义表示蕴含语义信息

词嵌入方法

Word2Vec

CBOW和Skip-gram两种架构,通过上下文预测或中心词预测学习词向量。
优点:训练快、效果好

GloVe

基于全局词共现统计的嵌入方法,结合了矩阵分解和上下文窗口的优点。

FastText

使用子词(n-gram)信息,适合处理未登录词和形态丰富的语言。

02句嵌入

句嵌入将整个句子映射为一个固定维度的向量,用于句子级别的语义表示和计算。

句嵌入原理

句嵌入捕捉句子的整体语义,可以用于句子相似度计算、分类、聚类等任务。

简单的词向量组合方法

  • 平均词向量:将句子中所有词的向量简单平均
  • 加权平均:使用IDF等权重进行加权
  • TF-IDF加权:用TF-IDF权重组合词向量

简单但有效,常作为基线方法

句嵌入方法

InferSent

使用BiLSTM编码句子,结合预训练语言模型学习句嵌入。

Sentence-BERT (SBERT)

使用孪生网络结构微调BERT,生成适合语义相似度计算的句子向量。
解决了BERT直接输出向量无法很好计算相似度的问题。

Instructor

使用任务指令引导句嵌入学习,可以根据不同任务生成定制化的嵌入。

句嵌入的应用

  • 语义搜索:计算查询与文档的向量相似度
  • 文本聚类:将相似文档聚类
  • 推荐系统:基于内容的推荐
  • 语义重复检测:问答系统中的问题重复检测

03上下文嵌入

上下文嵌入根据词所在的上下文动态生成词向量,解决了传统词嵌入的一词多义问题。

上下文嵌入原理

传统词嵌入对同一个词生成固定的向量,但自然语言中很多词是多义的。 上下文嵌入根据词周围的上下文动态调整词向量。

多义词示例

"bank" 在以下两个句子中有不同含义:

"I went to the bank to deposit money" - 银行

"The river bank was covered with flowers" - 河岸

上下文嵌入会根据上下文生成不同的向量表示

上下文嵌入的优势

解决一词多义

同一个词在不同上下文中得到不同的向量表示。

更丰富的语义

向量中蕴含了词在特定上下文中的语义信息。

预训练模型

BERT、GPT等预训练模型通过自监督学习生成上下文嵌入, 可以作为下游任务的强大特征。

代表模型

  • ELMo:早期上下文嵌入模型,使用BiLSTM
  • BERT:Transformer编码器,掩码语言模型预训练
  • GPT系列:Transformer解码器,自回归预训练
  • XLNet:排列语言模型,全排列上下文
----