向量(Vector),计算机编程语言用语,在如VB、C、C++、Pascal、Python或者其他编程语言中的向量,就是一个存放数据的地方,类似于一维数组和链表。
至于向量,通常会被用在比较两个数据的差异上
举个例子,我想知道“文章 A 和文章 B 的相似度”:
那么我可能会收集这些信息:
文章 A 和 B 的字数差异
文章 A 和 B 中相同的单词及其数量
文章 A 和 B 中完全相同的句子及其数量
这些信息是“不同维度上的值”,其实也就是向量了。
在实际应用中,我很可能会再设计一种算法,来”比较 A 和 B 的相似度与 A 和 C 的相似度哪个更高“,
这其实就是在定义一种向量减法。
向量的维数指的向量分量的个数。用大白话来讲就是描述一个向量需要用到好几个元素,有几个元素这个向量就有几维。比如最直观的三维向量,分别用x、y、z描述,所以这个向量就是三维的。





计算机中的向量,embedding_第1张图片





计算机中的向量,embedding_第2张图片





神经网络分析
假设我们的词汇只有4个,girl, woman, boy, man,下面就思考用两种不同的表达方式会有什么区别。
尽管我们知道他们彼此的关系,但是计算机并不知道。在神经网络的输入层中,每个单词都会被看作一个节点。 而我们知道训练神经网络就是要学习每个连接线的权重。如果只看第一层的权重,下面的情况需要确定43个连接线的关系,因为每个维度都彼此独立,girl的数据不会对其他单词的训练产生任何帮助,训练所需要的数据量,基本就固定在那里了。
计算机中的向量,embedding_第3张图片
Distributed representation
我们这里手动的寻找这四个单词之间的关系 f 。可以用两个节点去表示四个单词。每个节点取不同值时的意义如下表。 那么girl就可以被编码成向量[0,1],man可以被编码成[1,1](第一个维度是gender,第二个维度是age)。
计算机中的向量,embedding_第4张图片
那么这时再来看神经网络需要学习的连接线的权重就缩小到了23。同时,当送入girl为输入的训练数据时,因为它是由两个节点编码的。那么与girl共享相同连接的其他输入例子也可以被训练到(如可以帮助到与其共享female的woman,和child的boy的训练)。
计算机中的向量,embedding_第5张图片
Word embedding也就是要达到第二个神经网络所表示的结果,降低训练所需要的数据量。
Word embedding就是要从数据中自动学习到输入空间到Distributed representation空间的 映射f 。





计算机中的向量,embedding_第6张图片





计算机中的向量,embedding_第7张图片
计算机中的向量,embedding_第8张图片


计算机中的向量,embedding_第9张图片