台大应用深度学习笔记

deep learning

  1. end-to-end training
    台大应用深度学习笔记_第1张图片

台大应用深度学习笔记_第2张图片

1. 神经元

台大应用深度学习笔记_第3张图片

1.1 为什么需要bias?

为了给对应位置一个prior,给它一个初始值,b越大, σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1+e^{-z}} σ(z)=1+ez1越大,越趋向于1.

台大应用深度学习笔记_第4张图片

多层神经网络:

台大应用深度学习笔记_第5张图片
神经网络输入输出关系
台大应用深度学习笔记_第6张图片

3. 激活函数

台大应用深度学习笔记_第7张图片

3.1 为啥要非线性激活函数?

台大应用深度学习笔记_第8张图片

4. 模型评估: Loss Function

台大应用深度学习笔记_第9张图片

台大应用深度学习笔记_第10张图片
cross entropy 的结果越低越好
对于分类问题来说,预测的输出可以看作是一个概率分布,真实的label 也是一个概率分布,计算这两者之间的cross entroy, 差异越大的话,代表模型越差

4. 优化:

4.1 梯度下降

台大应用深度学习笔记_第11张图片
台大应用深度学习笔记_第12张图片
θ \theta θ 就是模型中所有参数变量集合
梯度下降的问题
看完训练集中的所有数据集,再去更新梯度,训练速度会很慢
台大应用深度学习笔记_第13张图片

4.2 随机梯度下降(SGD)

所以 为了提升训练速度, 提出 随机梯度下降
每看一个样本,都更新一次梯度

假设每个样本随机抽取的概率是一样的,服从均匀分布。

台大应用深度学习笔记_第14张图片
台大应用深度学习笔记_第15张图片

4.3 mini-batch SGD

每次挑选 batch_size个样本去更新梯度。
台大应用深度学习笔记_第16张图片
台大应用深度学习笔记_第17张图片

mini-batch SGD 训练的时候 的tips:

  1. 每一个epoch之间 shuffle一下 训练样本
  2. 每个epoch 都有相同的 batch_size
  3. 调整batch_size时 learning rate 也应做适量调整
    (batch_size 变大时,每个epoch梯度更新的次数下降,那么也需要相应较大的learning rate。 有论文提到 K 倍的 batch_size, learning rate 应变成 K \sqrt K K 倍数)

4.4 三者的比较

台大应用深度学习笔记_第18张图片

为什么mini-batch SGD 比SGD 训练更快
台大应用深度学习笔记_第19张图片
因为两次的matric-vector 的计算 比 一次 matric-matrix计算 耗时更长。

4.5 back propagation 反向传播

反向传播是为了用来快速计算梯度

在这里插入图片描述
举个例子:
台大应用深度学习笔记_第20张图片

第一部分:

台大应用深度学习笔记_第21张图片
台大应用深度学习笔记_第22张图片
对于第一层来说,是这样:

台大应用深度学习笔记_第23张图片

第二部分

台大应用深度学习笔记_第24张图片

台大应用深度学习笔记_第25张图片
也就是
台大应用深度学习笔记_第26张图片

台大应用深度学习笔记_第27张图片

总结起来

总结起来::

台大应用深度学习笔记_第28张图片
一次前向传播计算和一次后向传播计算,就可以把网络中的需要更新的参数都记录下来,提升速度

5 模型训练的tips

5.1 在训练集无法得到好的结果

  1. 陷入局部最优、 训练策略需要调整,调整learning_rate, 或者初始值
  2. 模型不好:重新构建模型结构
    台大应用深度学习笔记_第29张图片

5.2 在训练集结果很好,但在validate集的结果不好

可能原因: overfitting了 过拟合了

台大应用深度学习笔记_第30张图片
解决方法:

  1. 增加训练数据
  2. dropout

你可能感兴趣的:(深度学习,深度学习,人工智能)