摘要:将文本转化为向量,深度挖掘变量间的联系,构建更为精确的推荐系统。
深度学习在诸多方面,如图像分割、时序预测和自然语言处理,都优于其他机器学习方法。嵌入(embedding),即用连续向量表示离散变量的方法,在其中起到了不可或缺的作用。像机器翻译中的词嵌入和分类变量中的实体嵌入,都是嵌入的成功应用。
本文将围绕什么是神经网络嵌入、为什么要使用神经网络嵌入以及神经网络嵌入如何学习这三方面进行详细地讲解。相关概念已在之前的工作——将Wikipedia中所有图书转变为向量并构建图书推荐系统中进行了详细讲解。
Neural Network Embedding of all books on Wikipedia. (From Jupyter Notebook on GitHub).
嵌入(Embeddings)
在神经网络中,嵌入后的数据维度较低,它能将离散的序列映射为连续的向量。
神经网络嵌入的主要用途有三种:
在嵌入空间中找到最近邻。
作为有监督的机器学习模型的输入。
挖掘变量间的关系。
利用神经网络嵌入,我们能将Wikipedia中的37000多本书转换为至多包含50个数值的向量。
神经网络嵌入还克服了独热编码的局限性。
独热编码(One-Hot Encoding)的局限性
独热编码用于处理类别变量的最简单的嵌入方法,能够将不同的类别映射为不同的向量。独热编码保证了每一个取值只会使得一种状态处于“激活态”,也就是说这N种状态中只有一个状态位值为1,其他状态位都是0。
独热编码有两大缺陷:
当类别的数量很多时,特征空间会变得非常大。映射后的向量容易产生维数灾难。
“相似”的类别映射在嵌入空间后并不相邻。
第一个问题很容易理解:多一个类别,在