GRU
的输入为当前时间步的输入x^t
和上一个节点传递下来的隐状态h^(t-1)
,输出为当前时间步的输出y^t
和传递给下一个节点的隐状态h^t
。在GRU
中,y^t = h^t
- 更新门:
z^t = sigmoid(Linear(h^(t-1)|x^t))
,拼接上一个节点的隐状态h^(t-1)
与当前时间步输入x^t
作为输入,通过以sigmoid作为激活函数的单层全连接层,获得输出向量。其值位于0~1之间,称为门。 - 重置门:
r^t = sigmoid(Linear(h^(t-1)|x^t))
,过程同上,通过另外一个全连接层获得另外一个门。 - 新状态:首先对上一个节点的隐状态进行重置
r^t⊙h^(t-1)
(⊙
为哈达马积即对同形状张量逐点相乘),然后与当前时间步输入x^t
拼接作为输入,通过以hanh作为激活函数的单层全连接层,输出作为新状态h~^t
- 输出:按权结合旧状态
h^(t-1)
与新状态h~^t
作为输出h^t
并直接看作隐状态传递给下一个时间步
- 对于整句分类等任务可以直接取最后一个时间步的输出作为整个句子的表征向量,因为其包含所有单词的信息