《吴恩达深度学习》05序列模型(第1周 循环序列模型)

05. 序列模型

第1周 循环序列模型

1.1 为什么选择序列模型

  1. 序列数据举例
    (1)语音识别
    在这里插入图片描述
    (2)音乐生成
    (3)态度分类
    (4)DNA序列分析
    (5)机器翻译
    (6)视频动作识别
    (7)命名实体识别

1.2 数学符号

  1. 举例
    (1) x \mathbf{x} x:Harry Potter and Hermione Granger invented a new spell.定义输入为 x < t > \mathbf{x}^{<t>} x<t>
    (2)模型目的:命名实体识别(人名位置)
    (3)输出: y = 110110000 \mathbf{y}=110110000 y=110110000表示是否为人名的一部分。定义输出为 y < t > \mathbf{y}^{<t>} y<t>
    (4)定义 T x ( i ) T_x^{(i)} Tx(i)为第 i i i个样本的长度, T y ( i ) T_y^{(i)} Ty(i)为第 i i i个样本输出的长度。
  2. 词表示
    (1)构建词典:本课以10000词典为例(商业用的通常大小为3W到5W,更大的也有)
    (2)构建one-hot的词表示向量。
    (3)未出现在词典里的单词,标记为新类别。

1.3 循环神经网络

  1. 为什么标准神经网络不行?
    (1)输入和输出的维度可能不同。
    (2)从文本不同位置学到特征无法共享。
  2. 循环神经网络
    (1)对每一个单词进行预测,预测时,上一个单词网络中的激活值会输入到下一个单词的网络中,第一个单词可输入0向量。
    (2)网络结构示意图
    在这里插入图片描述
    (3)词向量输入权重记为 w a x w_{ax} wax,激活值输入权重记为 w a a w_{aa} waa,预测值输出权重记为 w y a w_{ya} wya
    (4)问题:在某一时刻仅利用了该时刻之前的信息。解决方法:双向循环神经网络(BRNN)。
  3. 前向传播
    (1) a < 0 > = 0 a^{<0>}=\mathbf{0} a<0>=0
    (2) a < 1 > = g 1 ( w a a a < 0 > + w a x x < 1 > + b a ) a^{<1>}=g_1(w_{aa}a^{<0>}+w_{ax}\mathbf{x}^{<1>}+b_a) a<1>=g1(waaa<0>+waxx<1>+ba)
    (3) y ^ < 1 > = g 2 ( w y a a < 1 > + b y ) \hat{y}^{<1>}=g_2(w_{ya}a^{<1>}+b_y) y^<1>=g2(wyaa<1>+by)
    (4)RNN中常用的激活函数为tanh。
    (5) a < t > = g ( w a a a < t − 1 > + w a x x < t > + b a ) a^{<t>}=g(w_{aa}a^{<t-1>}+w_{ax}x^{<t>}+b_a) a<t>=g(waaa<t1>+waxx<t>+ba)
    (6) y ^ < t > = g ( w y a a < t > + b y ) \hat{y}^{<t>}=g(w_{ya}a^{<t>}+b_y) y^<t>=g(wyaa<t>+by)
  4. 简化的RNN符号
    (1)上条的(5)公式,改写为 a < t > = g ( W a [ a < t − 1 > , x < t > ] + b a ) a^{<t>}=g(W_a[a^{<t-1>}, x^{<t>}]+b_a) a<t>=g(Wa[a<t1>,x<t>]+ba)
    (2) W a = [ w a a ; w a x ] W_a=\left[w_{aa}; w_{ax}\right] Wa=[waa;wax]
    (3) [ a < t − 1 > , x < t > ] = [ a < t − 1 > x < t > ] [a^{<t-1>}, x^{<t>}]=\left[\begin{matrix}a^{<t-1>}\\ x^{<t>}\end{matrix}\right] [a<t1>,x<t>]=[a<t1>x<t>]
    (4) y ^ < t > = g ( W y a < t > + b y ) \hat{y}^{<t>}=g(W_ya^{<t>}+b_y) y^<t>=g(Wya<t>+by)

1.4 通过时间的方向传播

  1. 前向传播和反向传播
    (1)定义损失项
    L < t > ( y ^ < t > , y < t > ) = − y < t > log ⁡ y ^ < t > − ( 1 − y < t > ) log ⁡ ( 1 − y ^ < t > ) L^{<t>}(\hat{y}^{<t>}, y^{<t>})=-y^{<t>}\log \hat{y}^{<t>}-(1-y^{<t>})\log (1-\hat{y}^{<t>}) L<t>(y^<t>,y<t>)=y<t>logy^<t>(1y<t>)log(1y^<t>)
    (2)定义损失函数
    L ( y ^ , y ) = ∑ t = 1 T y L < t > ( y ^ < t > , y < t > ) L(\hat{y}, y)=\sum_{t=1}^{T_y}L^{<t>}(\hat{y}^{<t>}, y^{<t>}) L(y^,y)=t=1TyL<t>(y^<t>,y<t>)

1.5 不同类型的循环神经网络

  1. 前几节中展示的RNN要求 T x = T y T_x=T_y Tx=Ty,本节展示一些其他RNN结构,不一定要求 T x = T y T_x=T_y Tx=Ty
  2. RNN结构举例
    (1)前述结构称为many-to-many结构。
    (2)情感识别:输入测试单词,输出为情感评分,称为many-to-one结构。
    (3)音乐生成:输入整数(代表类型等),输出为一段音乐,称为one-to-many。
    (4)机器翻译:输入输出序列长度可能不同。先读取输入进行编码,然后统一进行解码。
  3. RNN类型总结
    (1)one to one
    在这里插入图片描述
    (2)one to many
    在这里插入图片描述
    (3)many to one
    在这里插入图片描述
    (4)many to many( T x = T y T_x=T_y Tx=Ty
    在这里插入图片描述
    (5)many to many ( T x ≠ T y T_x \neq T_y Tx=Ty在这里插入图片描述

1.6 语言模型和序列生成

  1. 什么是语言模型
    (1)语音识别
    (2)给出某个特定句子的概率: P ( s e n t e n c e ) = ? P(sentence)=? P(sentence)=?
  2. 使用RNN建立语言模型
    (1)训练集:大规模英语文本语料库
    (2)标记句子结尾: < E O S > <EOS> <EOS>
  3. RNN模型
    (1)例句:Cats average 15 hours of sleep a day. < E O S > <EOS> <EOS>
    (2)网络结构在这里插入图片描述
    (3)损失函数
    L ( y ^ < t > , y < t > ) = − ∑ i y i < t > log ⁡ y ^ < t > L(\hat{y}^{<t>},y^{<t>})=-\sum_i y^{<t>}_i\log \hat{y}^{<t>} L(y^<t>,y<t>)=iyi<t>logy^<t>
    L = ∑ t L < t > ( y ^ < t > , y < t > ) L = \sum_t L^{<t>}(\hat{y}^{<t>},y^{<t>}) L=tL<t>(y^<t>,y<t>)
    (4)给定任意句子的某些开头词语,可以预测后面词汇出现的概率。

1.7 对新序列采样

  1. 从一个已训练的RNN中采样序列
    (1)训练模型结构在这里插入图片描述
    (2)采样模型
    根据训练模型得到的概率分布,选取单词,实现方法举例:np.numpy.choice
  2. 基于字符的语言模型
    (1)之前的RNN是基于词汇的RNN方法
    (2)基于字符的优点是不必担心会出现未知词汇,但是其缺点是得到的序列过长,因而计算成本较高。
    (3)主流思想仍是基于词汇的。

1.8 带有神经网络的梯度消失

  1. RNN中的梯度消失
    (1)RNN网络结构
    在这里插入图片描述
    (2)长短期记忆需求举例
    The cat, which ……, was full ……
    The cats, which ……, were full ……
    (3)由于神经网络层数较深,所以梯度难以传递到网络前段,反映到句子上,句子前面的名词单复数难以影响到后面动词的单复数上。
    (4)也可能会出现梯度爆炸,表现是会出现NAN,解决方法是通过最大值进行梯度修剪。

1.9 GRU单元

  1. RNN单元
    (1)RNN计算 a < t > = g ( W a [ a < t − 1 > , x < t > ] + b a ) a^{<t>}=g(W_a[a^{<t-1>},x^{<t>}]+b_a) a<t>=g(Wa[a<t1>,x<t>]+ba)单元图在这里插入图片描述
  2. GRU(简化版)
    (1)举例句子:The cat, which alread ate …, was full.
    (2)GRU引入新的变量 c c c(来自于记忆细胞)。
    (3)在GRU中令 c < t > = a < t > c^{<t>}=a^{<t>} c<t>=a<t>(LSTM中不相等)。
    (4)在每个时间步,计算 c < t > c^{<t>} c<t>的一个替代值 c ~ < t > = tanh ⁡ ( w c [ c < t − 1 > , x < t > ] + b c ) \tilde{c}^{<t>}=\tanh(w_c[c^{<t-1>},x^{<t>}]+b_c) c~<t>=tanh(wc[c<t1>,x<t>]+bc)
    (5)定义门值 Γ u = σ ( w u [ c < t − 1 > , x < t > ] + b u ) \Gamma_u=\sigma(w_u[c^{<t-1>},x^{<t>}]+b_u) Γu=σ(wu[c<t1>,x<t>]+bu),其中 σ ( ⋅ ) \sigma(\cdot) σ()为sigmoid函数。
    (6)在GRU中, c < t > = Γ u × c ~ < t > + ( 1 − Γ u ) × c < t − 1 > c^{<t>}=\Gamma_u\times \tilde{c}^{<t>}+(1-\Gamma_u)\times c^{<t-1>} c<t>=Γu×c~<t>+(1Γu)×c<t1>
    (7)GRU示意图在这里插入图片描述
  3. 完整版GRU
    (1)简化版关键公式
    c ~ < t > = tanh ⁡ ( W c [ c < t − 1 > , x < t > ] + b c ) \tilde{c}^{<t>}=\tanh (W_c[c^{<t-1>},x^{<t>}]+b_c) c~<t>=tanh(Wc[c<t1>,x<t>]+bc)
    Γ u = σ ( W u [ c < t − 1 > , x < t > ] + b u ) \Gamma_u=\sigma(W_u[c^{<t-1>}, x^{<t>}]+b_u) Γu=σ(Wu[c<t1>,x<t>]+bu)
    c < t > = Γ u × c ~ < t > + ( 1 − Γ u ) × c < t − 1 > c^{<t>}=\Gamma_u\times \tilde{c}^{<t>}+(1-\Gamma_u)\times c^{<t-1>} c<t>=Γu×c~<t>+(1Γu)×c<t1>
    (2)完整版
    c ~ < t > = tanh ⁡ ( W c [ Γ r × c < t − 1 > , x < t > ] + b c ) \tilde{c}^{<t>}=\tanh (W_c[\Gamma_r\times c^{<t-1>},x^{<t>}]+b_c) c~<t>=tanh(Wc[Γr×c<t1>,x<t>]+bc)
    Γ u = σ ( W u [ c < t − 1 > , x < t > ] + b u ) \Gamma_u=\sigma(W_u[c^{<t-1>}, x^{<t>}]+b_u) Γu=σ(Wu[c<t1>,x<t>]+bu)
    Γ r = σ ( W r [ c < t − 1 > , x < t > ] + b r ) \Gamma_r=\sigma(W_r[c^{<t-1>}, x^{<t>}]+b_r) Γr=σ(Wr[c<t1>,x<t>]+br)
    c < t > = Γ u × c ~ < t > + ( 1 − Γ u ) × c < t − 1 > c^{<t>}=\Gamma_u\times \tilde{c}^{<t>}+(1-\Gamma_u)\times c^{<t-1>} c<t>=Γu×c~<t>+(1Γu)×c<t1>

1.10 长短期记忆

  1. GRU和LSTM
    (1)GRU
    c ~ < t > = tanh ⁡ ( W c [ Γ r × c < t − 1 > , x < t > ] + b c ) \tilde{c}^{<t>}=\tanh(W_c[\Gamma_r\times c^{<t-1>}, x^{<t>}]+b_c) c~<t>=tanh(Wc[Γr×c<t1>,x<t>]+bc)
    Γ u = σ ( W u [ c < t − 1 > , x < t > ] + b u ) \Gamma_u = \sigma(W_u[c^{<t-1>}, x^{<t>}]+b_u) Γu=σ(Wu[c<t1>,x<t>]+bu)
    Γ r = σ ( W r [ c < t − 1 > , x < t > ] + b r ) \Gamma_r = \sigma(W_r[c^{<t-1>}, x^{<t>}]+b_r) Γr=σ(Wr[c<t1>,x<t>]+br)
    c < t > = Γ u × c ~ < t > + ( 1 − Γ u ) × c < t − 1 > c^{<t>}=\Gamma_u\times\tilde{c}^{<t>}+(1-\Gamma_u)\times c^{<t-1>} c<t>=Γu×c~<t>+(1Γu)×c<t1>
    a < t > = c < t > a^{<t>}=c^{<t>} a<t>=c<t>
    (2)LSTM
    c ~ < t > = tanh ⁡ ( W c [ a < t − 1 > , x < t > ] + b c ) \tilde{c}^{<t>}=\tanh(W_c[a^{<t-1>}, x^{<t>}]+b_c) c~<t>=tanh(Wc[a<t1>,x<t>]+bc)
    Γ u = σ ( W u [ a < t − 1 > , x < t > ] + b u ) \Gamma_u = \sigma(W_u[a^{<t-1>}, x^{<t>}]+b_u) Γu=σ(Wu[a<t1>,x<t>]+bu)
    Γ f = σ ( W f [ a < t − 1 > , x < t > ] + b f ) \Gamma_f = \sigma(W_f[a^{<t-1>}, x^{<t>}]+b_f) Γf=σ(Wf[a<t1>,x<t>]+bf)
    Γ o = σ ( W o [ a < t − 1 > , x < t > ] + b o ) \Gamma_o = \sigma(W_o[a^{<t-1>}, x^{<t>}]+b_o) Γo=σ(Wo[a<t1>,x<t>]+bo)
    c < t > = Γ u × c ~ < t > + Γ f × c < t − 1 > c^{<t>}=\Gamma_u\times \tilde{c}^{<t>}+\Gamma_f\times c^{<t-1>} c<t>=Γu×c~<t>+Γf×c<t1>
    a < t > = Γ o × tanh ⁡ c < t > a^{<t>}=\Gamma_o\times \tanh c^{<t>} a<t>=Γo×tanhc<t>
  2. LSTM图像化
    在这里插入图片描述

1.11 双向神经网络

  1. 从未来获得信息
    (1)举例
    He said, “Teddy bears are on sale!”
    He said, “Teddy Roosevelt was a great President!”
  2. 双向RNN
    (1)网络结构图
    在这里插入图片描述
    (2)上述结构图构成了一个无环有向图。

1.12 深层循环神经网络

  1. 深度RNN举例
    (1)符号说明: a [ l ] < t > a^{[l]<t>} a[l]<t> l l l层第 t t t时刻值。
    (2)网络架构举例在这里插入图片描述
    (3)每一层的权值相同。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值