这是卡内基梅隆大学与新加坡南洋理工大学在AAAI上发表的一篇利用memory network来处理序列建模的文章。
文章中的multi view其实指代可以很广泛,许多地方也叫做multi modal,对于多模态序列学习而言,模态往往存在两种形式的交互(1)模态内关联(view-specific interactions),(2)模态间关联(cross-view interactions),这篇文章提出了Memory Fusion Network(MFN)方法来处理这种多模态序列建模,处于对模态内与模态间的不同处理,本文可将方法划分为三个部分(1)LSTM对各自模态单独建模(2)Delta-memory Attention Network(DMAN)(3)Multi-view Gated Memory,后两者致力于处理模态间的交互。
Input:
比如对语言,视频,音频序列进行建模, N = { l , v , a } N = \left\{l,v,a\right\} N={l,v,a},the input data of the n n nth view is denoted as: x n = { x n t : t < = T , x n t ∈ R d x n } x_n = \left\{x_n^t:t<=T,x_n^t \in R^{d_{x_n}}\right\} xn={xnt:t<=T,xnt∈Rdxn},where d x n d_{x_n} dxn is the input dimensionality of n n nth view input x n x_n xn.
System of LSTMs:
使用常规的LSTM, 对于每个输入 x n x_n xn,每一个step的memory表示为 c n = { c n t : t < = T , c n t ∈ R d c n } c_n= \left\{c_n^t:t<=T,c_n^t \in R^{d_{c_n}}\right\} cn={cnt:t<=T,cnt∈Rdcn},每个step的output表示为 h n = { h n t : t < = T , h n t ∈ R d c n } h_n= \left\{h_n^t:t<=T,h_n^t \in R^{d_{c_n}}\right\} hn={hnt:t<=T,hnt∈Rdcn},where d c n d_{c_n} dcn denotes the dimensionality of n n nth LSTM memory c n c_n cn.
Delta-memory Attention Network
a
[
t
−
1
,
t
]
=
D
α
(
c
[
t
−
1
,
t
]
)
a^{[t-1,t]} = D_\alpha(c^{[t-1,t]})
a[t−1,t]=Dα(c[t−1,t])
Delta顾名思义,考虑了LSTM前后两个step,输入到DMAN的是
t
−
1
t - 1
t−1与
t
t
t的memory拼接,其中
D
α
:
R
2
d
c
↦
R
2
d
c
,
d
c
=
∑
n
d
c
n
D_\alpha: R^{2d_c}\mapsto R^{2d_c},d_c= \sum_{n}d_{c_n}
Dα:R2dc↦R2dc,dc=∑ndcn, 通过上式来获得attention系数,
a
[
t
−
1
,
t
]
a^{[t-1,t]}
a[t−1,t]是对于时刻
t
−
1
t-1
t−1与
t
t
t的softmax score。
DMAN的输出定义如下
c
^
[
t
−
1
,
t
]
=
c
[
t
−
1
,
t
]
⨀
a
[
t
−
1
,
t
]
\hat c^{[t-1,t]}= c^{[t-1,t] \bigodot {a^{[t-1,t]}}}
c^[t−1,t]=c[t−1,t]⨀a[t−1,t]
c
^
[
t
−
1
,
t
]
\hat c^{[t-1,t]}
c^[t−1,t]是分配权重之后的memories,
⨀
\bigodot
⨀是element product.
Multi-view Gated Memory
(1)首先以上面的
c
^
[
t
−
1
,
t
]
\hat c^{[t-1,t]}
c^[t−1,t]为输入,生成update proposal
u
^
t
\hat u^t
u^t。
u
^
t
=
D
u
(
c
^
[
t
−
1
,
t
]
)
\hat u^t = D_u(\hat c^{[t-1,t]})
u^t=Du(c^[t−1,t])
其中
D
u
:
R
2
d
c
↦
R
d
m
e
m
D_u:R^{2d_c}\mapsto R^{d_{mem}}
Du:R2dc↦Rdmem。
(2)然后引入了两个gate,
γ
1
\gamma_{1}
γ1:(retain gates)
γ
2
\gamma_{2}
γ2(update gates),前者主要控制记忆当前状态的信息,后者主要用于控制前面所算update proposal $\hat u^t $的更新。
γ
1
t
=
D
γ
1
(
c
^
[
t
−
1
,
t
]
)
\gamma _{1}^t=D_{\gamma_{1}}(\hat c^{[t-1,t]})
γ1t=Dγ1(c^[t−1,t]),
γ
2
t
=
D
γ
2
(
c
^
[
t
−
1
,
t
]
)
\gamma _{2}^t=D_{\gamma_{2}}(\hat c^{[t-1,t]})
γ2t=Dγ2(c^[t−1,t])
其中
D
γ
1
,
D
γ
2
:
R
2
d
c
↦
R
d
m
e
m
D_{\gamma_{1}}, D_{\gamma_{2}}:R^{2d_c}\mapsto R^{d_{mem}}
Dγ1,Dγ2:R2dc↦Rdmem。
(3)所以updated
u
t
u^t
ut可以如下得到:
u
t
=
γ
1
t
⨀
u
t
−
1
+
γ
2
t
⨀
t
a
n
h
(
u
^
t
)
u^t=\gamma_{1}^t \bigodot u^{t-1}+\gamma_{2}^t \bigodot tanh(\hat u^t)
ut=γ1t⨀ut−1+γ2t⨀tanh(u^t)
Output
The output of the MFN are the final state of the Multi-view Gated Memory
u
T
u^T
uT and the output of each of the
n
n
n LSTMs.
h
T
=
⨁
n
∈
N
h
n
T
h^T=\underset{n\in N}{\bigoplus} h_n^T
hT=n∈N⨁hnT
representing idividual sequence information.
⨁
\bigoplus
⨁ denotes vector concatenation.
实验
主要是三个任务:Sentiment Analysis, Emotion Recognition, Speaker Traits Analysis
其数据类型是演讲者的视频,其中包含字幕,视频帧与音频,根据词的发声来划分文本,视频与音频,这样能够保证彼此的对齐,最后Language view特征:T300, Visual view 特征 T35, Acoustic view特征 T*74,本文在多个数据集上超越了state of the art 结果,并且进行自身ablation实验,分析其方法部件的有效性。
思考
与我以前常接触的跨模态不同的是,这儿等于是在时间维度上将多个模态(文本,图像,音频)非常严丝合缝地对齐(因为数据是根据同一段视频中,提取不同的view信息),因为LSTM天然的时间建模特性,作者所提出的Delta Memory Network就比较顺利成章地引入,但是如果是其它跨模态问题,比如Image caption, Cross-modal retrieval, visual question answering,不同模态之间虽然彼此联系,但是不存在时间维度上片段一一对齐,不知道这个框架是否能迁移过来,或者如何进行改造?
原始论文链接:Memory Fusion Network for Multi-view Sequential Learning
Github复现:MFN_keras
Github开源(作者目前还没公布源码):MFN