文章目录
1.词向量模型通俗解释
1.1Word2Vec
-
自然语言处理-词向量模型-Word2Vec
-
在自然语言处理(NLP)过程中,每个字中间有顺序
-
比如对一个人进行打分,我们不能只看外在(Extraversion)打分,只在其中一个层面进行描述,而是要结合多个特点Trait,综合各项指标进行打分
-
而仅仅是2维可能是不够的,50维肯定是够的,但是300维计算更精确,通常数据的维度越高,能提供的信息也就越多,从而计算结果的可靠性就更值得信赖
-
向量和向量之间可以做相似度的计算,先得将词向量构建好
-
假设现在已经将每个词转化成了50维的向量(如下图所示)
-
计算机能认识,我们不知道是如何进行转化的,相当于一个编码,我们只需要将向量训练出来,剩下如何去评估,如何去衡量,都交给计算机就足够了
- 在下图中,我们可以观察到man和boy的颜色分布相似度很大,如果看数值的话,对比不是很明显
- 再对比water和man颜色分布差别就很大
1.2如何训练词向量
- 比如,左边Thou是第一个词,shalt是第二个词,右边是输出
- 输出相当于神经网络多分类的结果,比如在100个词中,看看对应的哪个词可能性是最高的
- 词库表(Look up embeddings)
- 在输入神经网络之前,我们需要在词库表中找到对应的词向量,然后得到右边的输出结果
- 大表一开始是随机进行初始化的,比如现在所有文本当中一共包含一千个词,我们先将一千个词列出来,然后跟神经网络的权重初始化是一样的,随机构造一些初始化的策略,然后就随便初始化一些向量
- 神经网络在计算过程中,前向传播计算的是loss,反向传播是通过loss去更新权重参数,而此时在Word2Vec中,不光会更新整个神经网络模型权重参数矩阵,连输入也会进行更新,相当于大表是随机进行初始化的
- 随着训练的进行,每次都会将训练的数据进行更新,一旦训练了100万次之后,就其中的每个词都进行了很多次更新,越进行更新,神经网络学得越好,学得越好的情况下,计算机能表达出当前词向量,也能把下一个词猜得更准确一些
1.3构建训练数据
- 数据:一切可用的文本、图像都可以作为数据进行输入,比如小说中的“今天”跟新闻中的“今天”表达的是一个含义,所以“今天”可以运用在任何场景
- 当我们拿到一句话(Thou shalt not make a machine in the likeness of a human mind)之后,假设窗口大小为3,那么A(Thou)和B(shalt)相当于两个输入,再输出就是C(not),这就是第一个训练数据(如下图第一行)
- 将窗口往右边进行滑动,那么原来的B窗口的位置变成了之前窗口C对应的字母,即输入和输出不一样了,这样就形成了第二个训练数据(如下图第二行)
- 总结步骤:自己组建滑动窗口大小,记录输入输出,再进行滑动,所以说当前任务并不是有监督的数据集,因为无论什么数据拿过来都是可以做的,但是一定得是有逻辑才是可以用的
2.CBOW与Skip-gram模型对比
2.1CBOW模型
-
continuous bag of words(连续词袋模型)
-
如下图,输入是上下文,输出是中间缺的词
-
比如窗口是5,那么四个输入分别是by 、a 、bus 、 in ,输出就是red,也就是该空是red