Navigation Menu

Skip to content

Commit

Permalink
格式错误订正
Browse files Browse the repository at this point in the history
  • Loading branch information
fengdu78 committed Nov 21, 2019
1 parent 0b832a1 commit 37be944
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions markdown/lesson5-week1.md
Expand Up @@ -29,7 +29,7 @@

下节中我们会定义一些定义序列问题要用到的符号。

###1.2 数学符号(Notation)
### 1.2 数学符号(Notation)

本节先从定义符号开始一步步构建序列模型。

Expand Down Expand Up @@ -75,7 +75,7 @@

总结一下本节课的内容,我们描述了一套符号用来表述你的训练集里的序列数据$x$和$y$,在下节课我们开始讲述循环神经网络中如何构建$X$到$Y$的映射。

###1.3 循环神经网络模型(Recurrent Neural Network Model)
### 1.3 循环神经网络模型(Recurrent Neural Network Model)

上节视频中,你了解了我们用来定义序列学习问题的符号。现在我们讨论一下怎样才能建立一个模型,建立一个神经网络来学习$X$到$Y$的映射。

Expand Down Expand Up @@ -143,7 +143,7 @@ $\hat y^{< t >} = g_{2}(W_{{ya}}a^{< t >} + b_{y})$

好就这么多,你现在知道了基本的循环神经网络,下节课我们会一起来讨论反向传播,以及你如何能够用**RNN**进行学习。

###1.4 通过时间的反向传播(Backpropagation through time)
### 1.4 通过时间的反向传播(Backpropagation through time)

之前我们已经学过了循环神经网络的基础结构,在本节视频中我们将来了解反向传播是怎样在循环神经网络中运行的。和之前一样,当你在编程框架中实现循环神经网络时,编程框架通常会自动处理反向传播。但我认为,在循环神经网络中,对反向传播的运行有一个粗略的认识还是非常有用的,让我们来一探究竟。

Expand Down Expand Up @@ -181,7 +181,7 @@ $L(\hat y,y) = \ \sum_{t = 1}^{T_{x}}{L^{< t >}(\hat y^{< t >},y^{< t >})}$

希望你大致了解了前向和反向传播是如何在**RNN**中工作的,到目前为止,你只见到了**RNN**中一个主要的例子,其中输入序列的长度和输出序列的长度是一样的。在下节课将展示更多的**RNN**架构,这将让你能够处理一些更广泛的应用。

###1.5 不同类型的循环神经网络(Different types of **RNN**s)
### 1.5 不同类型的循环神经网络(Different types of **RNN**s)

现在你已经了解了一种**RNN**结构,它的输入量$T_{x}$等于输出数量$T_{y}$。事实上,对于其他一些应用,$T_{x}$和$T_{y}$并不一定相等。在这个视频里,你会看到更多的**RNN**的结构。

Expand Down Expand Up @@ -221,7 +221,7 @@ $L(\hat y,y) = \ \sum_{t = 1}^{T_{x}}{L^{< t >}(\hat y^{< t >},y^{< t >})}$

我希望你从本视频中了解到用这些**RNN**的基本模块,把它们组合在一起就可以构建各种各样的模型。但是正如我前面提到的,序列生成还有一些不一样的地方,在这周的练习里,你也会实现它,你需要构建一个语言模型,结果好的话会得到一些有趣的序列或者有意思的文本。下节课深入探讨序列生成。

###1.6 语言模型和序列生成(Language model and sequence generation)
### 1.6 语言模型和序列生成(Language model and sequence generation)

在自然语言处理中,构建语言模型是最基础的也是最重要的工作之一,并且能用**RNN**很好地实现。在本视频中,你将学习用**RNN**构建一个语言模型,在本周结束的时候,还会有一个很有趣的编程练习,你能在练习中构建一个语言模型,并用它来生成莎士比亚文风的文本或其他类型文本。

Expand Down Expand Up @@ -263,7 +263,7 @@ $L(\hat y,y) = \ \sum_{t = 1}^{T_{x}}{L^{< t >}(\hat y^{< t >},y^{< t >})}$

这就是用**RNN**训练一个语言模型的基础结构,可能我说的这些东西听起来有些抽象,不过别担心,你可以在编程练习中亲自实现这些东西。下一节课用语言模型做的一件最有趣的事就是从模型中进行采样。

###1.7 对新序列采样(Sampling novel sequences)
### 1.7 对新序列采样(Sampling novel sequences)

在你训练一个序列模型之后,要想了解到这个模型学到了什么,一种非正式的方法就是进行一次新序列采样,来看看到底应该怎么做。

Expand Down Expand Up @@ -305,7 +305,7 @@ $L(\hat y,y) = \ \sum_{t = 1}^{T_{x}}{L^{< t >}(\hat y^{< t >},y^{< t >})}$

这些就是基础的**RNN**结构和如何去建立一个语言模型并使用它,对于训练出的语言模型进行采样。在之后的视频中,我想探讨在训练**RNN**时一些更加深入的挑战以及如何适应这些挑战,特别是梯度消失问题来建立更加强大的**RNN**模型。下节课,我们将谈到梯度消失并且会开始谈到**GRU**,也就是门控循环单元和**LSTM**长期记忆网络模型。

###1.8 循环神经网络的梯度消失(Vanishing gradients with **RNN**s)
### 1.8 循环神经网络的梯度消失(Vanishing gradients with **RNN**s)

你已经了解了**RNN**时如何工作的了,并且知道如何应用到具体问题上,比如命名实体识别,比如语言模型,你也看到了怎么把反向传播用于**RNN**。其实,基本的**RNN**算法还有一个很大的问题,就是梯度消失的问题。这节课我们会讨论,在下几节课我们会讨论一些方法用来解决这个问题。

Expand All @@ -323,7 +323,7 @@ $L(\hat y,y) = \ \sum_{t = 1}^{T_{x}}{L^{< t >}(\hat y^{< t >},y^{< t >})}$

总结一下,在前面的课程,我们了解了训练很深的神经网络时,随着层数的增加,导数有可能指数型的下降或者指数型的增加,我们可能会遇到梯度消失或者梯度爆炸的问题。加入一个**RNN**处理1,000个时间序列的数据集或者10,000个时间序列的数据集,这就是一个1,000层或者10,000层的神经网络,这样的网络就会遇到上述类型的问题。梯度爆炸基本上用梯度修剪就可以应对,但梯度消失比较棘手。我们下节会介绍**GRU**,门控循环单元网络,这个网络可以有效地解决梯度消失的问题,并且能够使你的神经网络捕获更长的长期依赖,我们去下个视频一探究竟吧。

###1.9 **GRU**单元(Gated Recurrent Unit(**GRU**))
### 1.9 **GRU**单元(Gated Recurrent Unit(**GRU**))

你已经了解了基础的**RNN**模型的运行机制,在本节视频中你将会学习门控循环单元,它改变了**RNN**的隐藏层,使其可以更好地捕捉深层连接,并改善了梯度消失问题,让我们看一看。

Expand Down Expand Up @@ -382,7 +382,7 @@ $L(\hat y,y) = \ \sum_{t = 1}^{T_{x}}{L^{< t >}(\hat y^{< t >},y^{< t >})}$

**Cho K, Merrienboer B V, Bahdanau D, et al. On the Properties of Neural Machine Translation: Encoder-Decoder Approaches[J]. Computer Science, 2014.**

###1.10 长短期记忆(**LSTM**(long short term memory)unit)
### 1.10 长短期记忆(**LSTM**(long short term memory)unit)

在上一个视频中你已经学了**GRU**(门控循环单元)。它能够让你可以在序列中学习非常深的连接。其他类型的单元也可以让你做到这个,比如**LSTM**即长短时记忆网络,甚至比**GRU**更加有效,让我们看看。

Expand Down Expand Up @@ -477,7 +477,7 @@ $ dx^{\langle t \rangle} = W_f^T*d\Gamma_f^{\langle t \rangle} + W_u^T * d\Gamma

**Hochreiter S, Schmidhuber J. Long Short-Term Memory[J]. Neural Computation, 1997, 9(8):1735-1780.**

###1.11 双向循环神经网络(Bidirectional **RNN**
### 1.11 双向循环神经网络(Bidirectional **RNN**

现在,你已经了解了大部分**RNN**模型的关键的构件,还有两个方法可以让你构建更好的模型,其中之一就是双向**RNN**模型,这个模型可以让你在序列的某点处不仅可以获取之前的信息,还可以获取未来的信息,我们会在这个视频里讲解。第二个就是深层的**RNN**,我们会在下个视频里见到,现在先从双向**RNN**开始吧。

Expand All @@ -503,15 +503,15 @@ $ dx^{\langle t \rangle} = W_f^T*d\Gamma_f^{\langle t \rangle} + W_u^T * d\Gamma

好的,这就是双向**RNN**,下一个视频,也是这周的最后一个,我们会讨论如何用这些概念,标准的**RNN****LSTM**单元,**GRU**单元,还有双向的版本,构建更深的网络。

###1.12 深层循环神经网络(Deep **RNN**s)
### 1.12 深层循环神经网络(Deep **RNN**s)

目前你学到的不同**RNN**的版本,每一个都可以独当一面。但是要学习非常复杂的函数,通常我们会把**RNN**的多个层堆叠在一起构建更深的模型。这节视频里我们会学到如何构建这些更深的**RNN**

一个标准的神经网络,首先是输入$x$,然后堆叠上隐含层,所以这里应该有激活值,比如说第一层是$a^{\left\lbrack 1 \right\rbrack}$,接着堆叠上下一层,激活值$a^{\left\lbrack 2 \right\rbrack}$,可以再加一层$a^{\left\lbrack 3 \right\rbrack}$,然后得到预测值$\hat{y}$。深层的**RNN**网络跟这个有点像,用手画的这个网络(下图编号1所示),然后把它按时间展开就是了,我们看看。

![](../images/8378c2bfe73e1ac9f85d6aa79b71b5eb.png)

这是我们一直见到的标准的**RNN**(上图编号3所示方框内的**RNN**),只是我把这里的符号稍微改了一下,不再用原来的$a^{<0 >}$表示0时刻的激活值了,而是用$a^{\lbrack 1\rbrack <0>}$来表示第一层(上图编号4所示),所以我们现在用$a^{\lbrack l\rbrack <t>}$来表示第l层的激活值,这个\<t\>表示第$t$个时间点,这样就可以表示。第一层第一个时间点的激活值$a^{\lbrack 1\rbrack <1>}$,这($a^{\lbrack 1\rbrack <2>}$)就是第一层第二个时间点的激活值,$a^{\lbrack 1\rbrack <3>}$和$a^{\lbrack 1\rbrack <4>}$。然后我们把这些(上图编号4方框内所示的部分)堆叠在上面,这就是一个有三个隐层的新的网络。
这是我们一直见到的标准的**RNN**(上图编号3所示方框内的**RNN**),只是我把这里的符号稍微改了一下,不再用原来的$a^{<0 >}$表示0时刻的激活值了,而是用$a^{\lbrack 1\rbrack <0>}$来表示第一层(上图编号4所示),所以我们现在用$a^{\lbrack l\rbrack <t>}$来表示第l层的激活值,这个$\<t\>$表示第$t$个时间点,这样就可以表示。第一层第一个时间点的激活值$a^{\lbrack 1\rbrack <1>}$,这($a^{\lbrack 1\rbrack <2>}$)就是第一层第二个时间点的激活值,$a^{\lbrack 1\rbrack <3>}$和$a^{\lbrack 1\rbrack <4>}$。然后我们把这些(上图编号4方框内所示的部分)堆叠在上面,这就是一个有三个隐层的新的网络。

我们看个具体的例子,看看这个值($a^{\lbrack 2\rbrack <3>}$,上图编号5所示)是怎么算的。激活值$a^{\lbrack 2\rbrack <3>}$有两个输入,一个是从下面过来的输入(上图编号6所示),还有一个是从左边过来的输入(上图编号7所示),$a^{\lbrack 2\rbrack < 3 >} = g(W_{a}^{\left\lbrack 2 \right\rbrack}\left\lbrack a^{\left\lbrack 2 \right\rbrack < 2 >},a^{\left\lbrack 1 \right\rbrack < 3 >} \right\rbrack + b_{a}^{\left\lbrack 2 \right\rbrack})$,这就是这个激活值的计算方法。参数$W_{a}^{\left\lbrack 2 \right\rbrack}$和$b_{a}^{\left\lbrack 2 \right\rbrack}$在这一层的计算里都一样,相对应地第一层也有自己的参数$W_{a}^{\left\lbrack 1 \right\rbrack}$和$b_{a}^{\left\lbrack 1 \right\rbrack}$。

Expand Down

0 comments on commit 37be944

Please sign in to comment.