10.1 计算图展开
a. 最简单形式:s(t)=f(s(t?1);θ),s(t)表示系统状态。
图10.1
b. 系统状态为隐层单元:h(t)=f(h(t?1),x(t);θ),对应展开图:
图10.2
10.2 RNN
RNN设计模式范例:
- 循环网络每步产生一个输出,同时隐层节点之间有循环关联,图10.3。
- 循环网络每步产生一个输出,同时输出与下一步的隐层节点之间有循环关联,图10.4。
- 循环网络输入整个序列,产生单个输出,同时隐层节点之间有循环关联,图10.5。
a. 下面的网络是在计算RNN的训练代价,x表示输入序列,o是输出,y是目标值,L是代价函数,U、V、W是对应权值矩阵。
图10.3
前向传播:
a(t)=b+Wh(t?1)+Ux(t)
h(t)=tanh(a(t))
o(t)=c+Vh(t)
y^(t)=softmax(o(t))
输入序列和输出序列的长度相同。总代价为:
时间复杂度o(τ),反向传播求梯度时需要用到前向传播的计算结果,所以空间复杂度也是o(τ)。反向传播算法:BPTT(back-propagation through time)。
b. 另一种网络形式,输出和隐层节点之间存在循环关联,由于输出包含的历史信息较少,所以这种网络不够有效:
图10.4
c. 单一输出网络:
图10.5
10.2.2 RNN 梯度计算(BPTT)
首先看RNN网络中有哪些参数和节点,需要对所有节点求导数?NL。
参数:U,V,W,b,c;
节点:x(t),h(t),o(t),L(t);
!
a. 下面是一个有固定输入的RNN网络,例子是根据图像生成描述。
图10.9
b. 下面是条件RNN,区别于图10.3只能对条件分布建模,这里可以是任意分布。
图10.10
c. 典型的双向RNN。
图10.11
10.3 双向RNNs
如图10.11,分前向和后向RNN,扩展到二维图像上就需要四个RNNs,每个RNN代表一个方向,那么每个像素点对应的输出就包含该像素点周围的信息。
10.4 网络结构:编码-解码,序列-序列
输入序列与输出序列长度不一定相等,应用有:语音识别,机器翻译,机器问答。通常把RNN的输入称为“context”,记为C,它可以是矢量或者矢量序列X=(x(1),x(2),...,x(n)).
图10.12
输入x,输出y,训练最大化logP(y(1),y(2),...,y(ny)|x(1),x(2),...,x(nx))
10.5 深度循环网络