【深度学习(deep learning)】花书第10章 序列建模:循环和递归网络 读书笔记
第10章 序列建模:循环和递归网络
前言
打基础,阅读花书,感觉一次性啃不动。看一点算一点,写一点笔记留作纪念。以便日后查看与回顾。大名鼎鼎RNN。2020.12.3-2020.12.4以下是正式内容。除了特殊标注外,其他配图都来自花书。
一、序列模型
处理序列数据:
x ( 1 ) , ⋯ , x ( t ) , ⋯ , x ( τ ) \boldsymbol{x}^{\left( 1 \right)},\cdots ,\boldsymbol{x}^{\left( t \right)},\cdots ,\boldsymbol{x}^{\left( \tau \right)} x(1),⋯,x(t),⋯,x(τ)
1.1 序列模型中的参数共享
1.时延神经网络(卷积)
在一维时间序列上使用卷积,输出的每一项是相邻几项输入的函数。在每个时间步中使用相同的卷积核。最终效果是读入一个序列,输出一个卷积后的序列。
2.循环神经网络
输出的每一项是前一项输出的函数。由前一项输出得到后一项输出的规则是公用的,因此参数是共享的。
1.2 计算图展开
递归表达式:
s ( t ) = f ( s ( t − 1 ) ; θ ) \boldsymbol{s}^{\left( t \right)}=f\left( \boldsymbol{s}^{\left( t-1 \right)};\boldsymbol{\theta } \right) s(t)=f(s(t−1);θ)展开成非递归:
含外部信号的递归表达式: h ( t ) = f ( h ( t − 1 ) , x ( t ) ; θ ) \boldsymbol{h}^{\left( t \right)}=f\left( \boldsymbol{h}^{\left( t-1 \right)},\boldsymbol{x}^{\left( t \right)};\boldsymbol{\theta } \right) h(t)=f(h(t−1),x(t);θ)展开的计算图:
h(t)作为过去序列信息的一个有损表示。可以用另一个函数表达这种关系:
h ( t ) = f ( h ( t − 1 ) , x ( t ) ; θ ) \boldsymbol{h}^{\left( t \right)}=f\left( \boldsymbol{h}^{\left( t-1 \right)},\boldsymbol{x}^{\left( t \right)};\boldsymbol{\theta } \right) h(t)=f(h(t−1),x(t);θ) = g ( t ) ( x ( t ) , x ( t − 1 ) , x ( t − 2 ) , . . . , x ( 2 ) , x ( 1 ) ) =g^{\left( t \right)}\left( \boldsymbol{x}^{\left( t \right)},\boldsymbol{x}^{\left( t-1 \right)},\boldsymbol{x}^{\left( t-2 \right)},...,\boldsymbol{x}^{\left( 2 \right)},\boldsymbol{x}^{\left( 1 \right)} \right) =g(t)(x(t),x(t−1),x(t−2),...,x(2),x(1))展开带来的好处:
- 可以处理任意长度的序列。因为函数处理的是每个时刻中固定的大小,与序列长度就无关了。
- f函数是共享的,也就是参数共享。
二、循环神经网络 RNN
循环神经网络有多种模式。
2.1 多对多,隐藏到隐藏
每个时间步都产生一个输出,隐藏单元之间有循环连接。
将一个长度的输入序列映射到等长的输出序列,且y相互间无关(条件独立的假设)
x是输入,h是隐层表示,o是隐层输出,y只真实标记,L是根据输出与标记计算的损失。
前向传播过程:t=1 到 t=τ(tanh softmax 分别代表激活函数和输出函数)
a ( t ) = b + W h ( t − 1 ) + U x ( t ) \boldsymbol{a}^{\left( t \right)}=\boldsymbol{b}+\boldsymbol{Wh}^{\left( t-1 \right)}+\boldsymbol{Ux}^{\left( t \right)} a(t)=b+Wh(t−1)+Ux(t) h ( t ) = tan h ( a ( t ) ) \boldsymbol{h}^{\left( t \right)}=\tan\text{h}\left( \boldsymbol{a}^{\left( t \right)} \right) h(t)=tanh(a(t)) o ( t ) = c + V h ( t ) \boldsymbol{o}^{\left( t \right)}=\boldsymbol{c}+\boldsymbol{Vh}^{\left( t \right)} o(t)