如何理解神经网络词嵌入技术?


深度学习可以怎样将《战争与和平》表示成一个向量?借助神经网络嵌入就能实现 。神经网络嵌入是很多机器学习语言处理应用的基础性技术之一 。Feature Labs 的数据科学家 William Koehrsen 通过一个基于维基百科的书籍推荐项目对词嵌入进行了介绍 。
项目地址:https://github.com/WillKoehrsen/wikipedia-data-science/blob/master/notebooks/Book%20Recommendation%20System.ipynb

如何理解神经网络词嵌入技术?

文章插图
最近几年 。神经网络的应用范围已经从图像分割显著扩展到了自然语言处理以及时间序列预测领域 。深度学习一大显著成功的用途是嵌入(embedding) 。这是一种可用于将离散变量表示成连续向量的方法 。这项技术的实际应用包括用于机器翻译的词嵌入和用于类别变量的实体嵌入 。
在这篇文章中 。我将解释神经网络嵌入的定义 。我们使用它们的原因 。以及它们的学习方式 。我将在我正在研究的一个真实问题的背景中介绍这些概念:将维基百科上的所有书籍都表示成向量以创建一个书籍推荐系统 。
如何理解神经网络词嵌入技术?

文章插图
维基百科上所有书籍的神经网络嵌入
嵌入
嵌入是离散的(类别化的)变量向连续数值向量的映射 。在神经网络语境中 。嵌入是离散变量的低维度的学习得到的连续向量表示 。神经网络嵌入很有用 。因为它们可以降低类别化变量的维度以及能够在变换后的空间中有意义地表示类别 。
神经网络嵌入有三个主要用途:
寻找嵌入空间中的最近邻 。这可被用于基于用户兴趣或聚类类别来进行推荐;
可作为机器学习模型的输入来学习监督式任务;
可实现概念和类别之间的关系的可视化 。
对于我们的书籍项目 。这就意味着我们可以使用神经网络嵌入将维基百科上的 37000 篇书籍文章都各自表示成一个仅具有 50 个数字的向量 。此外 。因为嵌入是学习得到的 。所以对于我们的学习问题而言 。更相似的书籍在这个嵌入空间中具有更接近的位置 。
神经网络嵌入能够克服常用的类别变量表示方法 one-hot 编码的两大局限 。
one-hot 编码的局限
one-hot 编码的类别变量的操作实际上是一种简单的嵌入 。其中每个类别都被映射成了不同的向量 。其过程是将离散的实体的每个观察都映射成由一定数量的 0 和单个 1 构成的向量 。这个 1 指示了特定的类别 。
one-hot 编码技术具有两大主要缺陷:
对于高基数变量(即有很多特有类别的变量) 。变换得到的向量的维度将难以掌控 。
这种映射方式信息完全不充分:「近似」的类别在嵌入空间中并不处于相近的位置 。
第一个问题很容易理解:每增加一个类别(成为实体) 。我们都必须为 one-hot 编码的向量增加一个数 。如果我们有维基百科上的 37000 本书 。那么表示它们就将需要 37000 维的向量 。基于这种表示方式训练任何机器学习模型都难以实现 。
第二个问题具有同等的局限性:one-hot 编码并不会将相似的实体放在向量空间中相近的位置 。如果使用余弦距离来衡量向量之间的相似性 。那么在经过 one-hot 编码后 。每一对比较的实体之间的相似度都是零 。
【如何理解神经网络词嵌入技术?】这意味着 。如果我们使用 one-hot 编码 。《战争与和平》与《安娜·卡列尼娜》这样的实体(都是列夫·托尔斯泰的经典著作)不会比《战争与和平》与《银河系漫游指南》之间的距离更近 。

    推荐阅读