zengbin93 / blog

17 stars 10 forks source link

笔记 - DeepLearning - 深度学习 #15

Open zengbin93 opened 6 years ago

zengbin93 commented 6 years ago

深度学习效果惊人,做点学习笔记在这里。

学习资料:



zengbin93 commented 6 years ago

1 - 神经网络基础

神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,能够模拟生物神经系统对真实世界物体所作出的交互反应。 -- Kohonen, 1988

神经网络通常包含输入层、隐含层、输出层。其中,隐含层可以是多层。

神经网络的训练过程本质上是一个参数寻优过程。

1.1 - 神经元模型

神经元是组成神经网络的基本单元,其结构如下:

图片来自 《机器学习(周志华)》图5.1

1.2 - 感知机

感知机(Perception)有两层神经元,输入层接收外部输入数据后传递给输出层。

1.3 - 常见神经网络类型

zengbin93 commented 6 years ago

2 - 激活函数

激活函数是神经元模型的重要组成部分,常用的激活函数有:1)Sigmoid函数;2)阶跃函数;3)ReLU;4)Leaky-ReLU等。

根据处理任务的不同,选取一个合适的激活函数非常关键。

2.1 - 阶跃函数

阶跃函数非常简单,见下图。它的缺陷是不连续、不光滑,因此,实际操作中很少使用这个作为激活函数。

2.2 - Sigmoid函数

Sigmoid函数可以把较大范围内变化的输入值挤压到(0, 1)输出值范围。此外,SIgmoid函数的导数非常容易计算,公式如下:

zengbin93 commented 6 years ago

3 - 训练方法

3.1 - 误差反向传播算法(Back Propagation, BP)

以最简单的双层神经网络为例,其结构图(来自《机器学习(周志华)》图5.7)如下:

BP算法的工作流程:先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差,再将误差逆向传播至隐层神经元,最后根据隐层神经元的误差来对连接权和阈值进行调整。该迭代过程循环进行,直到达到某些停止条件为止。

BP算法的训练目标是最小化训练集上的累计误差。

3.2 - 无监督逐层训练(unsupervised layer-wise training)

无监督逐层训练是深度神经网络训练的有效手段,基本思想是:每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,这称为“预训练”(pre-training);在预训练全部完成后,再对整个网络进行“微调”(fine-tuning)训练,通常是利用BP算法对整个网络进行训练。

zengbin93 commented 6 years ago

4 - 超参数

4.1 - learning rate

learning rate 控制着算法每一轮迭代中的更新步长,若太大则容易振荡,太小则收敛速度又会过慢。通常设置在 [0.001, 0.1] 之间

zengbin93 commented 6 years ago

Others

zengbin93 commented 6 years ago

5 - 优化方法

zengbin93 commented 6 years ago

递归神经网络 Recurrent Neural Network, RNN

RNN是包含循环的网络,可以看作是同一个神经网络的多次复制,每个神经网络模块会把消息传递给下一个,因此,RNN能够使用之前一定时间内的相关信息。RNN常用于处理序列数据。

RNN结构图(from:http://colah.github.io/posts/2015-08-Understanding-LSTMs/)

1 - 长短期记忆网络 Long Short-Term Memory,LSTM

LSTM 由Hochreiter & Schmidhuber (1997)提出,并在近期被Alex Graves进行了改良和推广。LSTM(Long Short-Term Memory)是RNN 中一种特殊的类型,可以学习长期依赖信息,它在很多任务上都要表现的比标准RNN更好。