神经网络可以近似任何连续函数[14,15]和分段连续函数[16]。然而,对任意非连续函数进行近似是不合适的,因为它在其一般形式中假设了一定程度的连续性。在训练阶段,数据的连续性保证了优化的收敛性,在预测阶段,它确保了输入值的微小变化保持了输出的稳定。
如果我们使用正确的数据表示,我们在自然界中通常面临的问题往往是连续的。每当我们找到更好的方法来揭示数据的连续性时,我们就会增加神经网络学习数据的能力。例如,卷积神经网络[17]将同一邻域中的像素分组在一起。与简单地将图像表示为图像的所有像素值的平坦矢量相比,这增加了数据的连续性。神经网络在自然语言处理中的兴起是基于单词嵌入[9,11,18],它使具有相似含义的单词在单词空间中彼此更接近,从而与使用单词的一种热编码相比,增加了单词的连续性。
与自然界中发现的非结构化数据不同,具有分类特征的结构化数据可能根本不具有连续性,即使具有连续性也可能不那么明显。神经网络的连续性限制了其对分类变量的适用性。因此,将神经网络天真地应用于类别变量的整数表示的结构化数据并不能很好地工作。规避这个问题的一种常见方法是使用一个热编码,但它有两个缺点:首先,当我们有许多高基数特征时,一个热编码器通常会导致不切实际的计算资源需求。其次,它对待类别变量的不同值,它们之间完全独立,往往忽略了它们之间的信息关系。
实体嵌入的任务是将离散值映射到多维空间,在多维空间中,具有相似函数输出的值彼此接近。
将离散变量的每个状态映射为向量:在一个热编码输入的顶部增加了一层线性神经元。
在我们使用实体嵌入来表示所有分类变量之后,所有嵌入层和所有连续变量的输入(如果有的话)都被连接起来。合并后的层被视为神经网络中的正常输入层,其他层可以建立在其上。整个网络可以用标准的反向传播方法进行训练。通过这种方式,实体嵌入层了解每个类别的内在属性,而更深的层形成它们的复杂组合。