1. 定义
*对深度学习的定义: 一类通过多层非线性变换对高复杂性数据建模算法的合集.
2. 激活函数实现去线性化
tensorflow提供了7种不同的非线性激活函数, 常见的有tf.nn.relu, tf.sigmoid, tf.tanh.
用户也可以自己定义激活函数..
3. 损失函数的定义
3.1 经典损失函数
3.1.1 交叉熵
用途: 刻画两个概率分布之间的距离, 交叉熵H越小, 两个概率分布就越近.
给定两个概率分布p和q, 通过q来表示p的交叉熵为:
p代表的是正确答案, q代表的是预测值.
3.1.2 softmax回归
用途: 将神经网络的输出变成一个概率分布.
设原始神经网络的输出为
…
, 经过softmax回归处理之后的输出为:
3.1.3 tf.nn.softmax_cross_entropy_with_logits函数
该函数把softmax回归和交叉熵同一封装了起来.
4. 神经网络优化算法
4.1 梯度下降算法
优化单个参数的取值.
4.2 反向传播算法
以一个高效的方式在所有的参数上使用梯度下降算法, 从而使损失函数尽可能的小.
参数更新公式:
式中η式学习率, 需要人为设定.
5. 神经网络的进一步优化
5.1 学习率的设置
5.1.1 exponential_decay函数
它可以指数级地减小学习率.
5.2 过拟合问题
(第三张图展示了过拟合的情景)
用正则化方法避免过拟合的问题
思想: 在损失函数中加入刻画模型复杂度的指标R(w), 优化时不直接优化损失函数L(θ), 而是优化L(θ)+λR(w).
R(w)通常有两种: L1正则化
和 L2正则化
tf.contrib.layers.l2_regularizer函数可以计算一个给定参数的L2正则化项的值.
5.3 滑动平均模型
思想: 通过影子变量来控制模型的更新速度.
具体做法: 先指定一个衰减率decay, 然后给每一个变量都维护一个影子变量.
decay可以通过设定numUpdates来动态设置: