1-of-N Encoding
每个单词用一个vector代替,世界上有多少个word,vector有多少个维度
这样的vector得不到任何的联系,比如bag和cat你无法知道都是动物
解决:使用word class
但是光用class是不够的,我们少了一些信息,class1和class2代表动物和动物可以做的动作,这一层也没有体现出来
解决:Word Embedding,它每一个word project一个高维度的space上面(维度往往比1-of-N Encoding维度低),我们使得接近的词汇位置靠近,每一个维度都可能代表一个特征
如何做到:让机器阅读大量数据,但是我们虽然有大量的数据,我们却无法确定输出大小
如何探索内容
count based
如果经常一起出现,为这两个vector越接近越好
prediction-based
我们需要训练一个NN,输入1-of-N encoding,输出比如有十万个word,那么输出就是十万个维度,每一维会当作下一个word出现的概率
我们用word输入进NN的第一层的输出作为vector
比如蔡英文和马英九的下一个输出为宣誓就职是高的概率,中间的层必须通过参数的转换对应到接近的空间,这样才能有同样的几率输出宣誓就职可能性都大
其实用一个词汇去预测下一个词汇是比较难的,可以选择多个词汇(至少十个,下面使用两个作为例子)
每个词汇的每个维度都互相绑定,所以相连的weight必须一样(如上面颜色相同的线weight要一致)为什么要这么做呢?如果们不这么做,如果每个词汇是一样,weight不一样,那么输出的z也就不一样,这样也可以减少参数,算法描述如下
如何使得w1,w2 权重一样呢?
首先给定一样的初始值,之后减去每个的偏微分,这样就能保证一样了
变形:
有趣对的应用
左图代表国家与首都的映射,右图是动三态的映射,都有特定的形状连线
如果我们将一类属于另一类的相减,就会映射到同一个空间
所以我么你可以这样获取Berlin位于哪个国家