第十四讲 树RNN和短语句法分析
Language understanding - it requires being able to understand bigger things from knowing about smaller parts.
Language could be respresented in a recursive way. For example, Noun phrase containing a noun phrase containing a noun phrase.
#我们希望把比较长的短语也嵌入到词向量空间中,从而也能计算它们的相似度。比如’the place where I was born’ 和 ‘my hometown’。
We could use principle of compositionality to map phrases into vector space.
(1)the meanings of its words
(2)the rules that combines them
#我们为树的每个结点赋值,规则为对其左右结点的向量进行平均(或者其他处理),而后得到根节点的向量,即得到整个短语的结果
两种RNN的对比
How to construct such RNN tree?
We coule use Neural Network as well.
input
c
1
,
c
2
\mathbf{c_1,c_2}
c1,c2, output
s
c
o
r
e
,
p
a
r
e
n
t
score,parent
score,parent.
#score表示这两个子节点适不适合结合在一起,而parent是结合以后的特征向量
s
c
o
r
e
=
U
T
p
p
=
t
a
n
h
(
W
[
c
1
;
c
2
]
+
b
)
\begin{aligned} score =& U^Tp \\ p=&tanh(W[c_1;c_2]+b) \end{aligned}
score=p=UTptanh(W[c1;c2]+b)
Loss function:
J
=
∑
i
s
(
x
i
,
y
i
)
−
max
y
∈
A
(
x
i
)
(
s
(
x
i
,
y
)
+
Δ
(
y
,
y
i
)
)
J=\sum_i s(x_i,y_i)-\max_{y\in A(x_i)}(s(x_i,y)+\Delta (y,y_i))
J=i∑s(xi,yi)−y∈A(xi)max(s(xi,y)+Δ(y,yi))
#其中,
x
i
x_i
xi表示输入的句子,
y
i
y_i
yi表示真实的树,
s
(
x
,
y
)
s(x,y)
s(x,y)表示当前树的每个结点对应的
s
c
o
r
e
score
score的加和,
A
(
x
)
A(x)
A(x)表示模型自己生成的树结构。
Δ
\Delta
Δ项用来惩罚错误的决策。于是我们最小化这个损失函数,一方面能让模型解析出来的树获得尽可能高的得分,另一方面能有监督地让模型学到正确的树结构
Improments
- 上面的p值其实在复用同样的一个矩阵 W W W,实际上我们可以通过树种每个结点的类别来定义不同的的权重,比如结点的两侧分别是介词(prep)和名词(noun),那么我们其实就可以专门定义一个 W p r e p , n o u n W^{prep,noun} Wprep,noun,而如果两个子结点分别是动词(verb)和名词(noun),我们又可以定义一个 W v e r b , n o u n W^{verb,noun} Wverb,noun,这样就粗略地有了一个区分。实践中也证明这种方法确实能对性能的提升带来帮助。
- 有些词可以被看成是operator,比如very。我们这个时候可以对一个词同时用向量和矩阵来表示
a
,
A
a,A
a,A,
p = f ( W [ A b B a ] ) P = f ( W M [ A B ] ) p=f(W\left[ \begin{array}{ccc} Ab \\ Ba \end{array} \right]) \\ P=f(W_M\left[ \begin{array}{ccc} A \\ B \end{array} \right]) p=f(W[AbBa])P=f(WM[AB])
其中 W M ∈ R n × 2 n W_M\in \mathbb{R}^{n\times 2n} WM∈Rn×2n