[机器学习]词向量

  • ① 词向量是一种表示词的float32类型的向量,一般维度在50,到100维左右,需要注意的是,所有的词向量几乎都不是人工标注出来的,而是训练出来的。Bengio模型分解:该模型的作用是:用所熟悉的全连接神经网络,根据输入的前n-1个词来预测后一个最有可能的词,注意,这里的n是个定值,即n不同,模型参数也会不同,需要重新修改模型,这个也是全连接网络来实现预测下一个词的局限部分(需要一次性输入所有“前面”的词)(这个也是自然语言最最常见的一个问题之一),使得其更像一个自然语言,而在实现这个功能的同时,可以“顺便”训练出词向量。
  • ② 首先需要一个学习样本(注意这里讨论的是英文,所以不涉及分词问题。)这个样本可以是一本书,或者其他人类的作品都是可以的。- - ③ 标注成词向量:这个可以就用one-hot标注法来标注,只要能够唯一表征一个词就行了,或者其他现有的很多自动标注,都是可以的反正这个不作为最后的词向量使用。假设语料库中有V个不重复的词汇,那么标注后就会形成一个Vxm(假设标注的词向量是m维度)的特征矩阵(这个一会会用来映射单词,会把其作为单词第一次使用的初始值。
  • ④ 构建模型:只需要构建两层模型即可:第一层是tanh层(用tanh作为激活函数),输入x就是所有的前n-1个单词映射到词向量后,首尾相接形成的一个(n-1)*m的向量,也可以将其类比为我们的神经网络的输入特征值。然后处理公式也一样,就是tanh(wx+b),最后进行第一层的输出。至于这个第一层的隐藏层神经元个数,可以自己去根据数据量来设定。第二层就是输出层了,注意,他接收两部分输入:(1)刚才的第一层隐藏层的输出,作为输入。(2)直接将x再次作为输入(即从输入池连接一条直连的边到第二层输出层),这个连接很有意思,因为一般的全连接神经网络是不会这么“跨层”连接的,但是,也的确并没有限制这种连接方式,所以神经网络的联机可扩展性,或者说潜力还是巨大的,但是根据实际的结果,这条直连边对于结果其实并没有产生什么影响,只是减少了一些运算步数,说白了,就是几乎没有用,可以不连。这两快输入进入输出层后进行一样的线性变换z=b+Wx+U(tanh(wx+b)),这里并没有让两个输入共享一个权重参数,而是分开,这样互相不影响,在W取0的时候,也就是关闭那个直连通道。输出层最后的输出经过softmax,输出一个V维的向量,里面的内容自然就是后一个词是那个词的概率了。取最大的就可以实现预测。
  • ⑤ 注意点:需要注意的是,这个结构看似和神经网络非常的类似,但有一个最大的区别就是这的输入x本身也是一个可以训练的向量,即词向量,我们只是给了他初始值,随着模型的训练,其值会不断的修改,直到最终模型的值稳定了之后,就可以在得到模型的同时,得到对应
    的词的词向量(说白了,这里的x要作为一个变量来更新,并且将每次的优化后的x,存储到语料库中对应的位置(对语料库进行更新),从而实现每次从语料库中去映射的词向量都是不同的。
  • ⑥ 总结:这个就是bengio通过非RNN的方式来实现语言模型的训练,并且该模型堪称经典。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值