之所以要文字的向量表示,是因为文字学习与图像与音频的学习过程是不一样的,图像或音频的全部信息都存储在原始数据里,我们直接对其中的像素或者功率谱密度强度值进行操作,因为人类本身就是依赖原始数据进行处理的,然而文字处理是需要将文字编码,这些符号编码毫无规律,每个编码之间毫无关联性,那么我们还怎么利用它们进行学习呢?
因此就不能让其拆分成编码,正确的操作是把其化为一个向量空间中的一个点,具有相似语义的点放在一起,那么它们之间就会有关联性,那么就易于处理了。
Word2Vec模型中,主要有Skip-Gram和CBOW两种模型,从直观上理解,Skip-Gram是给定input word来预测上下文。而CBOW是给定上下文,来预测input word。本篇文章仅讲解Skip-Gram模型。网上的博客大多都是在讲Skip-Gram模型。
相似的,本模型也不是为了直接利用训练好的模型,而仅仅是获得它的参数,例如隐层的权重矩阵,一些不那么明显的参数,建模并不是我们的最终目的。
其基本原理是建立词之间的关联度,那么关联度是如何得出?实际上是统计出来的,例如得到一个词后,从头到尾搜索这个词,然后把它左右两边的词跟它建立联系,那么,嗯,简单来说就是这样,虽然简单但是有意想不到的有用之处。如果单词比较出现的频率高,那么它的权重值也会更大一点,也就是这样了。
但是有一个问题是神经网络只接受数值输入,实际上这个只是一个技术的问题,我们可以给它进行onehot编码,这个没什么难的。例如一共有10000的单词,就分别设它们的id为从1-10000就可以了,这个时候,它的特征几乎就是它所关联的词的权重以及数量了。
这样做有很多好处,例如同义的单词,它们会非常相近,有联系的单词,它们会次要比较接近,甚至两个词的集群之间,它们也会由于学习,从而逐渐接近或者逐渐拉远,关键是看你怎么用了。
但是有一点的是,这种分析仅仅是对单词的分析,无法进行句子的分析,事实上,通过单词的分析对句子的构成模拟度并不是那么好,针对句子还是要进行句法上的分析才行,然而上述提到的方法并没有。
在这种向量构造法中会有非常有趣的现象发生,向量之间的关系可以非常形象的描述为词与词之间的关系----平行,例如男人->女人之间的关系会与国王->王后之间的关系平行,田径->跑步之间的关系会与泳池->游泳之间的关系平行,这个并不是人为参与构建的,这些完全是自动构建的。
网友评论