一、事件链
例如:
进餐馆---->点菜----->吃饭---->买单
二、模型LSTM
1.什么是LSTM模型?
LSTM模型是一种特别的RNN模型,比标准的 RNN 在很多的任务上都表现得更好。几乎所有的令人振奋的关于 RNN 的结果都是通过 LSTM 达到的。
2.什么是RNN模型?
RNN模型是神经网络的一种,英文名叫Recurrent Neural Networks。
三、简单介绍一下RNN神经网络
人是如何思考的?当你读一篇文章,你的大脑不可能从无开始思考,我们人类的思考是从已有的认知开始的,一篇文章的每个词我们都有自己的一个理解,就好比我们在自己的脑中对这个词有了一个初值。但这个初值是经过筛选的,例如你看到‘苹果’这个词,我们选择记忆的是‘手机’,‘水果’。。。。然后其他与‘’苹果‘’无关的词,我们就选择遗忘。
传统的神经网络并不能做到这点。例如,柯南中的一个事件里面的线索,传统的神经网络很难将每一个线索事件联系起来,然后推测下一个事件
RNN 解决了这个问题。RNN 是包含循环的网络,允许信息的持久化。
在上面的示例图中,神经网络的模块A,正在读取某个输入
X
t
X_t
Xt ,并输出一个值
h
t
h_t
ht。循环可以使得信息可以从当前步传递到下一步。
但是RNN存在一个长期依赖(Long-Term Dependencies)问题
在一个语句中,我们通过前文来推断当前的词。例如 “the color of apple is___” 最后的词,我们并不需要任何其他的上下文,因此下一个词很显然就应该是 red。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的,RNN 可以学会使用先前的信息。
但如果相关词距离预测位置太远了,RNN 会丧失学习到连接如此远的信息的能力。
在理论上,RNN 绝对可以处理这样的 长期依赖问题。但是实际上,很难。
所以就出现了LSTM。
四、简单了解LSTM
LSTM分为三层,输入层,遗忘门,输出门
为了获得长期依赖的能力。LSTM相对RNN进行了一个局部升级:
RNN是这样的:
五、事件预测流程
1.数据表示
给出一系列叙述事件e1, e2, …, en−1,我们的目的是预测下一个事件en。
事件e的结构为v(a0,a1,a2)
例如: bring{John, Marry, to the restaurant}
2.大致思想
使用语法分析器和命名实体解析器从文本语料库中提取事件。利用神经网络对提取的事件链进行建模,用于脚本学习。
特别是,在给定一系列事件的情况下,我们对后续事件的概率进行了建模。我们解决了多重选择的叙事完形填空任务:给定一系列事件和一组候选。
3.事件表达(这一步就是对事件的预处理,将文字转换为数字)
我们通过对标准事件的动词和参数进行预先训练的单词嵌入来学习标准事件的向量表示。对于包含多个单词的参数,我们使用平均值来表示。对于小于3个参数的事件,例如“john fell”,其中v=fall,a0=john,a1=null,a2=null,空参数使用全零向量表示。将v、a0、a1和a2的嵌入表示为e(V)、e(a0)、e(a1)和e(a2)。分别用tanh组成层计算了e的嵌入量。
W
e
v
,
W
e
0
,
W
e
1
,
W
e
2
,
b
e
W_e^v,W_e^0,W_e^1,W_e^2,b_e
Wev,We0,We1,We2,be是参数
3.时序建模
我们通过LSTM神经网络,得到每个事件的隐藏层
h
i
h_i
hi,也就是上面输出的
h
i
h_i
hi
h
i
=
L
S
T
M
(
e
(
e
i
)
,
h
i
−
1
)
h_i=LSTM(e(e_i),h_{i-1})
hi=LSTM(e(ei),hi−1),h有一个初值
h
S
h_S
hS。
上图中
e
c
1
,
e
c
2
.
.
.
e_{c1},e_{c2}...
ec1,ec2...是时间链的候选,我们可以通过求h的式子得到每个候选事件的h,这个h就是之后被用作估计相应事件候选对象的概率的基础。
4.事件对建模
在获取事件的隐状态后,利用这些隐藏状态向量对事件关系进行建模。一个简单的方法来模拟两个事件之间的关系。现有
h
i
h_i
hi和
h
c
h_c
hc,给定一对事件
h
i
h_i
hi(i∈[1.n−1])和
h
c
h_c
hc,关联评分由下式得:
W
s
i
,
W
s
c
,
b
S
W_{si},W_{sc},b_S
Wsi,Wsc,bS是参数,这是一个一对多的过程,一个候选事件对于前面每个事件都会有个关联评分,最终我们由:
可以得到这个候选时间对于这条时间链的评分,式子3就是求了个平均
但是啊!!!!平均对于我们来说是远远不够的,每个事件对于候选事件的贡献度是不同的。例如,考虑到“排队等候”、“就坐”和“点餐”等事件,与其他两个事件相比,“点餐”更适用于推断“吃的食物”。另外两件事。给定整个事件链上的信息,这个链接可能更明显,因为该场景可能是餐馆访问。所以我们需要对现有事件进行加权。
加权
我们使用一个注意神经网络来计算每个现存事件的相对重要性
最终
a
i
a_i
ai是
h
i
h_i
hi的权值
式子6就是加权后的每个候选事件对于事件链的关联评分】
基于深度记忆网络的多层关注
这种方法已经被用来探索语义任务的深层语义信息。例如回答问题
深层语义信息是进行最合理推理所必需的一种感觉。因此,我们被激励使用一个深记忆网络模型来细化事件权重和事件关系。通过递归地对场景的更抽象的表示进行建模来进行计算。与以往的研究不同,我们使用记忆网络对事件链进行建模,细化了对事件链的关注。探讨事件之间的成对关系
h
i
h_i
hi是现有事件链的隐藏变量,
v
t
v_t
vt是上下文事件与候选事件之间的语义表示。
a
t
a_t
at是上下文事件的权重。
现有事件
e
1
,
e
2
.
.
.
e
n
−
1
e_1,e_2...e_{n-1}
e1,e2...en−1的权重,可以使用相同的计算。给定权重α,我们将上下文事件链
e
1
、
e
2
、
.
、
e
n
−
1
e_1、e_2、.、e_{n−1}
e1、e2、.、en−1的合并表示为
h
1
、
h
2
、
.
、
h
n
−
1
h_1、h_2、.、h_{n−1}
h1、h2、.、hn−1的加权和:
候选事件
h
c
h_c
hc和现有链的新表示他可以进一步集成,从而推导出整个事件链假设的更深层次表示,与
h
c
h_c
hc相比,v包含更深层次的语义信息,它编码事件链的时间顺序
[
h
1
,
h
2
.
.
h
n
−
1
,
h
c
]
[h_1,h_2..h_{n−1},h_c]
[h1,h2..hn−1,hc],而不区分每个事件的权重。作为结果表明,在下一跳中,通过使用v代替
h
c
h_c
hc来计算关联度,可以得到更好的事件权重。
同样,我们还可以多次重复这些步骤,这样就可以根据现有事件的链提取更多的抽象证据。递归地使用
h
c
h_c
hc作为初始场景表示形式
v
0
v_0
v0,然后重复计算
h
e
t
h^t_e
het给定
h
1
,
h
2
,
.
,
h
n
−
1
和
v
t
h_1,h_2,.,h_{n−1}和v_t
h1,h2,.,hn−1和vt,并使用
h
e
t
h^t_e
het和
v
t
v_t
vt找到更深层次的场景报告。 为此目的,使用了门控递归网络。
后面这个深层次的看的不是很懂
最后有关的数学式子
2.
3.