万物皆可嵌入

本文介绍了预训练模型在自然语言处理中的应用,重点讨论了静态和动态词嵌入,如word2vec、ELMo、GPT和BERT。文章指出,不仅仅在语言序列问题上,Embedding思想也可应用于有序列特征的其他场景,如电商的商品推荐,通过随机游走等方法将无序数据转化为序列问题。此外,文章提到了在实际应用中可能遇到的可扩展性、数据稀疏性和冷启动问题。
摘要由CSDN通过智能技术生成

1.Embedding预训练模型可以分为静态和动态

2.静态称为上下文无关的词嵌入,动态称为上下文有关的词嵌入

3.Embedding不仅可以处理语言序列,类似有序列性质的情景都可以处理

4.一些无序列问题可以通过一定方法转化为序列问题

上一篇详解word2vec我们介绍了一种词嵌入的预训练模型,也是最早的embedding方法。它比one-hot要好很多,不仅降低维度,还可以反映语义空间的线性关系,比如“国王-王后=男-女”这种相似关系。但这类方法是根据语料库生成的字典,一个单词对应一个固定长度的向量,如果遇到一词多义的情况,就无能为力了。比如“苹果股票正在上涨,我不要这个苹果“这条句子中,word2vec无法区分前后两个”苹果“代表的含义。

预训练模型概述

词嵌入是预训练模型(Pre-Trained Model,PTM)的学习载体,根据嵌入的学习方式,可分为上下文无关上下文有关两类,两者的区别在于一个词语的嵌入是否随着上下文动态变化。

只关注词嵌入的单一表示的预训练模型,训练完成后,词嵌入就固定了,或称为处于静态,这种预训练模型称为上下文无关的词嵌入(Non-contextual Word Embedding),这方面的代表是word2vec;相反的,以学习上下文相关的词嵌入的预训练模型,除了带有学习到的结果外,还带有学习这些词嵌入的模型架构和学到的权重参数,把这些预训练模型迁移到下游任务时,便可根据上下文动态调整,这种模型称为上下文有关的词嵌入Contextual Word Embedding),这方面的代表有很多,比如ELMo、GPT采用的自回归语言模型,BERT使用掩码语言模型、XLNet采用排列语言模型。这里列出各种主要预训练模型的特征、抽取特征方法、使用语言模型类别等内容的表:

我们挑几个先简单介绍一下

ELMo是最早进行语境化词嵌入方法之一,是典型的自回归预训练模型,包括两个独立的单向LSTM实现的单向语言模型。GPT是一个生成式的预训练模型,它也是一个自回归语言模型,采用多层单向的Transformer Decoder作为特征抽取器。BERT属于MLM模型,通过超大数据、巨大模型和极大的计算开销训练完成。

从上表可以知道,很多预训练模型均采用一种称为Transformer的特征提取器,在此之前,一般采用RNN、LSTM等方法处理序列问题,但这种按部就班的方法在大量的语料库面前显得力不从心,而Transformer就是为解决类似问题提出的,它有两大亮点:平行处理序列问题,利用Self-Attention机制有效解决长期依赖问题

这些模型和方法我们以后再逐一详细介绍。这里总结了它们的优缺点以及关系:

不仅仅是词语嵌入


word2vec模型实现原理主要依赖一条条语句,而每条语句就是一个序列,由此可以做推广,只要有序列特征的场景应该适合使用这种Embedding思想。

比如在电商中,不同用户在一定时间内查询物品(Item)集合,可以表示为序列图形:

字母代表商品,在一次页面浏览的页面用虚线分隔,比如用户U2两次访问页面,第一次查看了物品B和物品E,第二次查看了物品DEF。

还记得ItemCF协同过滤算法吗,如果把item视为word,把用户行为序列视为一个集合,利用word2vec的Skip-Gram和Negative Sampling(SGNS)的算法思路迁移到基于物品的协同过滤上,以物品的共现性作为自然语言中的上下文关系,学习物品在隐空间的向量表示。

进一步的,有些看起来与序列无关的领域,经过适当变化后,也可以变成序列。

通过什么方法可以做到呢,最常用的是随机游走(Random Walk),由此得到的方法有Deep WalkLINEnode2vec

Deep Walk方法首先以随机游走的方式在网络中进行节点采样,生成序列,然后使用Skip-Gram模型将序列转化为Embedding。RandomWalk是一种可重复访问已访问节点的深度优先遍历算法,然后给定当前访问起始节点,从其邻居中随机选择一个节点作为下一个访问节点,重复此过程,直到访问序列长度满足预设条件。

DeepWalk只适用无向、无权重的图。针对有向图以及边有权重的网络,提出了大型信息网络嵌入方法——LINE(Large-scale Information Network Embedding)。而node2vec是结合了DeepWalk和LINE的基础上提出的算法,该方法不仅关注同质性和结构性,还可以在两者之间进行权衡。

下面我们结合上面两个过程,来说明如何将Item映射为Embedding,其流程图如下:

1.用户行为序列:

2. 物品图结构:

这里,用户U1先后浏览物品A和物品B,所以物品A和物品B之间会产生一条由A到B的有向边。如果这样的关系越多,则权重被加强。遍历所有用户的浏览记录,可以得到物品图结构。

3. 随机游走生成序列:

4.由Skip_Gram生成Embedding:

在具体实施过程中,可能会遇到如下几个问题:

  • 可扩展性问题

  • 数据稀疏性问题

  • 冷启动问题

这些问题及解决方案等以后具体介绍的时候再仔细说明。

参考资料:

《深入浅出Embedding》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

整得咔咔响

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

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

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

打赏作者

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

抵扣说明:

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

余额充值