分类目录:《深入理解深度学习》总目录
相关文章:

· Word Embedding(一):word2vec
· Word Embedding(二):连续词袋模型(CBOW, The Continuous Bag-of-Words Model)
· Word Embedding(三):Skip-Gram模型
· Word Embedding(四):Skip-Gram模型的数学原理
· Word Embedding(五):基于哈夫曼树(Huffman Tree)的Hierarchical Softmax优化
· Word Embedding(六):负采样(Negative Sampling)优化


因机器无法直接接收单词、词语、字符等标识符(token),所以把标识符数值化一直是人们研究的内容。开始时人们用整数表示各标识符,这种方法简单但不够灵活,后来人们开始用独热编码(One-Hot Encoding)来表示。这种编码方法虽然方便,但非常稀疏,属于硬编码,且无法重载更多信息。此后,人们想到用数值向量或标识符嵌入(Token Embedding)来表示,即通常说的词嵌入(Word Embedding),又称为分布式表示。不过Word Embedding方法真正流行起来,还要归功于Google的word2vec。

从文本、标识符、独热编码到向量表示的整个过程,可以用下图表示:

从上图可以看出,独热编码是稀疏、高维的硬编码,如果一个语料有一万个不同的词,那么每个词就需要用一万维的独热编码表示。如果用向量或词嵌入表示,那么这些向量就是低维、密集的,且这些向量值都是通过学习得来的,而不是硬性给定的。至于词嵌入的学习方法,大致可以分为两种:利用机器学习框架的Embedding层学习词嵌入和使用预训练的词嵌入。

利用机器学习框架的Embedding层学习词嵌入
在完成任务的同时学习词嵌入,例如,把Embedding作为第一层,先随机初始化这些词向量,然后利用机器学习框架(如PyTorch、TensorFlow等框架)不断学习(包括正向学习和反向学习),最后得到需要的词向量。

使用预训练的词嵌入
利用在较大语料上预训练好的词嵌入或预训练模型,把这些词嵌入加载到当前任务或模型中。预训练模型很多,如word2vec、ELMo、BERT、XLNet、ALBERT等,后续的文章将介绍这些预训练模型。