SocialLSTM

RNN

Recurrent Neural Network,循环神经网络。

RNN 是包含循环的网络,允许信息的持久化,可以充分利用先验的信息知识。

3

本质上RNN就是在\(t\)时刻,input=\(X _t + h _{t-1}\)

LSTM就是一种特殊的RNN。

对于RNN来说,在语言预测词汇中,对此要预测的词来说,相近的词贡献会很大,而时间间隔越远的词,贡献越少。但是往往存在Long-Term Dependency问题,一些重要信息可能会贯穿全文,如果很早出现但是被忘记,在后续的预测中将会很不利。理论上,RNN当然可以处理这种长期记忆问题,但是实践中却很难做到。为此LSTM出现了。

LSTM

Long-Short Term Memory

LSTM主要目的就是为了能够尽可能利用长期记忆。

传统的RNN结构中只有一层神经网络。

3

LSTM结构:

3

每个时刻神经网络的状态(输出)为--cell state (\(C _t\)):

3

Gate

LSTM引入了gate,使得信息能够选择性通过:

3

gate = a layer of Sigmoid + bitwise multiplier

LSTM有三个gate: forget gate, input gate(memory gate), output gate.

3

Forget gate

\(input = [h _{t-1}, X _t]\) \(ouput = f _t\)

function: \(f _t = \sigma(W _f[h _{t-1}, x _t]+b _f)\)

显然\(f _t\)是一个[0, 1]之间的数,和\(C _{t-1}\)相乘之后决定\(C _{t-1}\)之中那些可以被保留,那些要忘记。

eg. 假设\(C _{t-1} = [0.5,0.6,0.4]\)\(h _{t-1} = [0.3,0.8,0.69]\)\(x _t = [0.2,1.3,0.7]\)

\(input = [h _{t-1}, X _t] = [0.3,0.8,0.69, 0.2,1.3,0.7]\)

然后通过sigmoid输出每一个元素都处于[公式][公式]之间的向量\(f = [0.5,0.1,0.8]\),注意这里的sigmoid不是一个函数,而是sigmoid神经网络层,ouput大小==\(C _{t-1}\)大小。

Input gate (Memory gate)

记忆门包括两个支路:

\(i _t = \sigma(W _i[h _{t-1}, x _t] + b _i)\)

\(\widetilde C _t= tanh(W _C[h _{t-1}, x _t]+b _C)\)

tanh层负责创造一个新的候选cell state (\(\widetilde C _t\)),sigmoid layer负责考虑哪些信息被保留,然后把结果加入之前的cell state。

此时,cell state更新完成:\(C _t = C _{t-1}*f _t + i _t *\widetilde C _t\)

Output gate

输出--作为下次输入的\(h _t\)

\(h _t = \sigma(W _o[h _{t-1}, x _t]+b _o) * tanh(C _t)\), note \('*’\) denotes bit-wise multiplier.

Why LSTM

forget gate里面大多数位置都是0,1即是网络中保留的信息。gate有点类似于注意力机制,对于需要的信息,训练出高attention(1)。这样使得有价值的信息能够被过滤出来,长时间地保留下去。

Social LSTM

问题:

\(i\)个人,在\(t\)时刻,位置为\((x _i ^t, y _i ^t)\) ,输入(观测)一段时间的行人位置:从 \(0\)\(T _{obs}\) 来预测未来时间内行人位置:从 \(T _{obs + 1}\)\(T _{predict}\)

social LSTM是指pooling based LSTM model

3

Social Pooling

LSTM对时间序列处理优秀,但是行人之间有复杂的相互影响关系,故引入Social Pooling(S-pooling)来让一定距离内的行人LSTM节点状态共享。

\(h _i ^t\)为第\(i\)个人在\(t\)时刻时LSTM的hidden state。为了共享这一状态,作者引入了\(H _t ^i\)。给定D(hidden state dimension)和临域大小\(N _o\)\(H _t ^i\)\(N _o *N _o*D\)大小。

3

\(1 _{mn}\)表示\(j\)节点点是否在m*n网格中,如果在即为1,否则为0。\(N _i\)\(i\)节点所有邻居节点。\(H _t ^i\)即为在\(i\)节点一定距离内所有节点的\(h _{t-1} ^j\)之和。