前言
人工智能的奥义是:“万物皆可Embedding”
不知道大家有没有这种感受,在学习各种算法模型时,特别是深度学习模型,少不了嵌入(Embedding)的应用。
嵌入可以说是人工智能最基础的功能。机器学习模型只接受数值组作为输入,字符或者图片首先需要转化成数值组,才能进入模型。常用的转化方式有3种:One-hot编码,整数编码,嵌入(Embedding)的方法。
-
One-hot编码是最常用的特征表示方法,优点是简单,但是随着特征空间的变大维度爆炸,而且无法学习到词语间的联系。
-
整数编码(编码数值本身无含义,具有误导性。
-
嵌入的方法,通过学习构造一个低维、稠密的向量,可以更好地学习到字符的表示。常见的框架有,Word2Vec(基于浅窗口的方法), fasttext(基于浅窗口的方法), GloVe(矩阵分解方法+窗口方法)等方式。**在表示学习后,相似的词汇在向量空间中是比较的距离接近的。**如下图:
接下来,我们一起了解下什么是嵌入,以及它的原理及作用:
什么是嵌入?
嵌入是将某些数据对象表示为向量,其构造使得数据对象的某些属性被编码到其向量表示的几何属性中。
这非常抽象,但并不像听起来那么复杂。
首先,我们需要介绍一点(很少)的数学知识。向量是两个听起来不同但实际上相同的东西:
-
向量是多维空间中的一个点。
-
向量是标量值(即数字)的有序列表。
要了解其工作原理,请考虑包含两个数字的列表。例如, (6,4)(6,4) 和 (2,8)(2,8) .您可以看到,我们可以将它们视为 x-y 轴上的坐标,每个列表对应于二维空间中的一个点:
如果我们有三个数字,比如 (3,2,5)(3,2,5) 和 (4,5,2)(4,5,2) ,那么这对应于三维空间中的点:
重要的一点是,我们可以将其扩展到更多维度:四、五、一百、一千,甚至数百万或数十亿。绘制一个有一千个维度的空间是非常困难的,想象一个几乎是不可能的,但从数学上讲,这真的很容易。