绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
自然语言理解之神经网络语言模型的文本生成
2019-09-29 10:47:04

幻风的AI之路 



什么是语言模型

语言模型是一个单词序列上的概率分布,对于一个给定长度为m的序列,它可以为整个序列产生一个概率 P(w_1,w_2,…,w_m) 。其实就是想办法找到一个概率分布,它可以表示任意一个句子或序列出现的概率。语言模型的简单来说就是判断一句话是正常的概率是多少?那么如何计算一句话的概率呢?我们可以使用下面的公式:

以上就是一个文本的概率,我们可以对齐进行分解,变成一句话中每个单词的预测,那么现在的问题就变成我们如何预测一个词的概率

在语言模型中常用的方式n-gram方法,它的计算方法如下图所示

这是一种基于词统计的语言模型,我们可以通过语料数据的统计从而算出来P,语料越大效果越好,但是n-gram有一些问题使得它很难处理一些问题。

n-gram的问题

问题一:不可以解决长期依赖的问题

它上程序课,然后它需要电脑,programming和computer之间是相互依赖的,但是距离比较远,所以这个解决不了长期依赖的问题

问题二:相同的词不能共享权重

bought和purchased具有相同的上下文,但是n-gram不能让二者共享权重,所以这也是n-gram的问题

问题三:中心词不能作为上下文的条件

n-gram可以使用前面的词预测后面的词,但是不可以使用中心词预测上下文的词

解决问题三

假如现在给定上下文为giving a然后预测后面的单词的概率,其中b表示偏置项(每个词的先验可能),然后w1,a表示在a条件下,每一个词的可能性,w2,giving表示在giving的条件下,每一个词的可能性,然后加起来就是在giving a条件下后一个词的可能性,加起来就使得giving a绑定在了一起,这样可以使得giving a共同的发挥作用,我们可以看到可能的就是gift,我们可以把它变成网络的形式,如下所示

giving下面的蓝色向量(可以看作是特征),对应于w2,giving,a下面的蓝色向量(可以看作是特征),对应于w1,giving。

相对于n-gram基于统计的方式,这里使用特征的方式,特征化模型的计算概率用不同的办法,它们会计算上下文的特征,并基于特征来计算概率,对于n-gram来说Dr.jane和Dr Gertrude完全是两个不同的东西,而基于特征的方式,可以大限度的使得二者的scores相近,这样就当Dr.Gertrude Smith和Dr .jane Gertrude之间共享。

问题二

上面的模型是线性模型,我们知道线性模型没有特征组合,所以上面的模型没有办法解决问题二,那么如何才能解决问题二呢?那么我们可以使用非线性的方式,从而完成特征组合

我们将giving和a通过并列连接,然后通过非线性激活,从而得到紫色的特征组合,然后完成终的分类,此时就可以解决问题二了,这样的方式就会出现下面的情况:

当我们使用这个模型的时候,就会出现相近的词具有相同的词编码,这是因为我们并没有将二者加起来,而是连起来了,这样然后预测的下一个词相同,这就会导致相近的词会有相同的词向量编码。

这是n-gram所不能处理的,原因是:bought和purchased 是意思相同的词,然后car和bicyle是类型相同的词,但是n-gram仅仅进行表面的统计,所以bought和purchased没有共享任何的参数,这个意思就是说二者的意思相近,但是n-gram却把它当成了完全不同的东西,而使用这样的模型可以使得相近的词具有相同的向量

算法模型搭建

import torch 
from torch import nn
from collections import defaultdict
import math
import random
class My_net(nn.Module):
 def __init__(self,nwords,emb_size,hid_size,num_hist):
 super(My_net,self).__init__()
 self.embedding=nn.Embedding(nwords,emb_size)
 self.fnn=nn.Sequential(
	 nn.Linear(num_hist*emb_size,hid_size),
 nn.Dropout(True),
 nn.Linear(hid_size,nwords)
	)


分享好友

分享这个小栈给你的朋友们,一起进步吧。

人工智能的世界
创建时间:2020-06-15 14:31:10
人工智能那点事儿
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 栈栈
    专家
戳我,来吐槽~