mirror of
https://github.com/openmlsys/openmlsys-zh.git
synced 2026-04-14 10:30:58 +08:00
Update references
This commit is contained in:
@@ -23,7 +23,7 @@ Rate)。
|
||||
:width:`600px`
|
||||
:label:`gradient_descent2`
|
||||
|
||||
那么接下来,在深度神经网络中如何实现梯度下降呢,这需要计算出网络中每层参数的偏导数$\frac{\partial \mathcal{L}}{\partial {w}}$,我们可以用**反向传播**(Back-Propagation)[@rumelhart1986learning; @lecun2015deep]来实现。
|
||||
那么接下来,在深度神经网络中如何实现梯度下降呢,这需要计算出网络中每层参数的偏导数$\frac{\partial \mathcal{L}}{\partial {w}}$,我们可以用**反向传播**(Back-Propagation) :cite:`rumelhart1986learning,lecun2015deep`来实现。
|
||||
接下来,
|
||||
我们引入一个中间量${\delta}=\frac{\partial \mathcal{L}}{\partial {z}}$来表示损失函数$\mathcal{L}$
|
||||
对于神经网络输出${z}$(未经过激活函数,不是$a$)的偏导数,
|
||||
@@ -89,6 +89,5 @@ $\frac{\partial \mathcal{L}}{\partial {b}^l}$后,我们就可以用梯度下
|
||||
Descent,SGD)来计算损失值。具体来说,我们计算损失值不用全部训练数据,而是从训练集中随机选取一些数据样本来计算损失值,比如选取16、32、64或者128个数据样本,样本的数量被称为**批大小**(Batch
|
||||
Size)。
|
||||
此外,学习率的设定也非常重要。如果学习率太大,可能无法接近最小值的山谷,如果太小,训练又太慢。
|
||||
自适应学习率,例如Adam [@KingmaAdam2014]、RMSProp [@tieleman2012rmsprop]
|
||||
和
|
||||
Adagrad [@duchi2011adagrad] 等,在训练的过程中通过自动的方法来修改学习率,实现训练的快速收敛,到达最小值点。
|
||||
自适应学习率,例如Adam :cite:`KingmaAdam2014`、RMSProp :cite:`tieleman2012rmsprop`和
|
||||
Adagrad :cite:`duchi2011adagrad`等,在训练的过程中通过自动的方法来修改学习率,实现训练的快速收敛,到达最小值点。
|
||||
|
||||
@@ -116,7 +116,7 @@ $$f({z})_{i} = \frac{{\rm e}^{z_{i}}}{\sum_{k=1}^{K}{\rm e}^{z_{k}}}$$
|
||||

|
||||
|
||||
**多层感知器**(Multi-Layer
|
||||
Perceptron,MLP)通过叠加多层全连接层来提升网络的表达能力。相比单层网络,多层感知器有很多中间层的输出并不暴露给最终输出,这些层被称为**隐含层**(Hidden
|
||||
Perceptron,MLP) :cite:`rosenblatt1958perceptron`通过叠加多层全连接层来提升网络的表达能力。相比单层网络,多层感知器有很多中间层的输出并不暴露给最终输出,这些层被称为**隐含层**(Hidden
|
||||
Layers)。这个例子中的网络可以通过下方的串联式矩阵运算实现,其中$W^l$和$b^l$代表不同层的权重矩阵和偏置,$l$代表层号,$L$代表输出层。
|
||||
|
||||
$${z} = f({W^L}f({W^3}f({W^2}f({W^1}{x} + {b^1}) + {b^2}) + {b^3}) + {b^L})$$
|
||||
@@ -136,8 +136,8 @@ Map),在这个例子中因为只有一个卷积核,所以输出的通道
|
||||
:label:`conv_computation_v4`
|
||||
|
||||
**卷积神经网络** (Convolutional Neural
|
||||
Network,CNN)由多层**卷积层**(Convolutional
|
||||
Layer)组成,常用于计算机视觉任务。
|
||||
Network,CNN) :cite:`lecun1989backpropagation`由多层**卷积层**(Convolutional
|
||||
Layer)组成,常用于计算机视觉任务 :cite:`krizhevsky2012imagenet,he2016deep`。
|
||||
:numref:`conv_computation_v4`描述了一个卷积运算的例子。
|
||||
根据卷积的特点,我们可以知道两个事实:1)一个卷积核的通道数,等于输入的通道数;2)输出的通道数,等于卷积核的数量。
|
||||
|
||||
@@ -158,7 +158,7 @@ Pooling)。如 :numref:`pooling_v3`所示,假设池化的卷积核高宽为$
|
||||
### 时序模型
|
||||
|
||||
现实生活中除了图像还有大量时间序列数据,例如视频、股票价格等等。**循环神经网络**(Recurrent
|
||||
Neural Networks,RNN)是一种处理序列数据的深度学习模型结构。序列数据是一串连续的数据$\{x_1, x_2, \dots, x_n\}$,比如每个$x$代表一个句子中的单词。
|
||||
Neural Networks,RNN) :cite:`rumelhart1986learning`是一种处理序列数据的深度学习模型结构。序列数据是一串连续的数据$\{x_1, x_2, \dots, x_n\}$,比如每个$x$代表一个句子中的单词。
|
||||
|
||||
为了可以接收一连串的输入序列,如 :numref:`rnn_simple_cell2`所示,朴素循环神经网络使用了循环单元(Cell)作为计算单元,用隐状态(Hidden
|
||||
State)来存储过去输入的信息。具体来说,对输入模型的每个数据$x$,根据公式 :eqref:`aligned`,循环单元会反复计算新的隐状态,用于记录当前和过去输入的信息。而新的隐状态会被用到下一单元的计算中。
|
||||
@@ -172,5 +172,4 @@ $${h}_t = {W}[{x}_t; {h}_{t-1}] + {b}$$
|
||||
|
||||
然而这种简单的朴素循环神经网络有严重的信息遗忘问题。比如说我们的输入是"我是中国人,我的母语是___",隐状态记住了"中国人"的信息,使得网络最后可以预测出"中文"一词;但是如果句子很长的时候,隐状态可能记不住太久之前的信息了,比如说"我是中国人,我去英国读书,后来在法国工作,我的母语是___",这时候在最后的隐状态中关于"中国人"的信息可能会被因为多次的更新而遗忘了。
|
||||
为了解决这个问题,后面有人提出了各种各样的改进方法,其中最有名的是长短期记忆(Long
|
||||
Short-Term
|
||||
Memory,LSTM)。关于时序的模型还有很多很多,比如近年来出现的Transformer等等。
|
||||
Short-Term Memory,LSTM) :cite:`Hochreiter1997lstm`。关于时序的模型还有很多很多,比如近年来出现的Transformer :cite:`vaswani2017attention`等等。
|
||||
|
||||
Reference in New Issue
Block a user