作者:livan
Embedding介绍
Embedding是深度学习中的一个重要部分,重要到几乎每个深度模型都会用到他,他的原理相对复杂,但是其作用解释起来只需要一句话,即:Embedding是一个将离散变量转为固定长度的连续向量的方法。
Embedding能够用低维向量对物体进行编码还能保留其含义的特点非常适合深度学习。在传统机器学习模型构建过程中,我们经常使用one hot encoding对离散特征,特别是id类特征进行编码,但由于one hot encoding的维度等于物体的总数,比如阿里的商品one hot encoding的维度就至少是千万量级的。这样的编码方式对于商品来说是极端稀疏的,甚至用multi hot encoding对用户浏览历史的编码也会是一个非常稀疏的向量。而深度学习的特点以及工程方面的原因使其不利于稀疏特征向量的处理。因此如果能把物体编码为一个低维稠密向量再喂给DNN,自然是一个高效的基本操作,Embedding应运而生~
Embedding的原理涉及到深度学习的部分,现在应用最广的Embedding方式为word2vec,大家可以回顾一下笔者之前的文章:
从零开始学自然语言处理(十三)——CBOW原理详解
其中详细描述了Embedding的两种模式~
具体代码层面可以描述为:
books = ["War and Peace", "Anna Karenina", "The Hitchhiker's Guide to the Galaxy"]books_encoded = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
Embedding之后为:
books_encoded_ideal = [[0.53, 0.85],
[0.60, 0.80],
[-0.78, -0.62]]
这一模式一般会融合在深度学习的架构中,作为其中的一个环节或者一层来使用,例如:LSTM、卷积神经网络等;
在常规使用过程中也可以作为降维的好方法,学习时还是需要给予足够的关注的。