[Tensorflow] 深层神经网络

时间:2022-12-14 17:48:55

1. 定义

*对深度学习的定义: 一类通过多层非线性变换对高复杂性数据建模算法的合集.

2. 激活函数实现去线性化

tensorflow提供了7种不同的非线性激活函数, 常见的有tf.nn.relu, tf.sigmoid, tf.tanh.
用户也可以自己定义激活函数..

3. 损失函数的定义

3.1 经典损失函数

3.1.1 交叉熵

用途: 刻画两个概率分布之间的距离, 交叉熵H越小, 两个概率分布就越近.
给定两个概率分布p和q, 通过q来表示p的交叉熵为:
H ( p , q ) = x p ( x ) log q ( s )
p代表的是正确答案, q代表的是预测值.

3.1.2 softmax回归

用途: 将神经网络的输出变成一个概率分布.
设原始神经网络的输出为 y 1 y n , 经过softmax回归处理之后的输出为:
s o f t m a x ( y ) i = y i = e y i j = 1 n e y j

3.1.3 tf.nn.softmax_cross_entropy_with_logits函数

该函数把softmax回归和交叉熵同一封装了起来.

4. 神经网络优化算法

4.1 梯度下降算法

优化单个参数的取值.

4.2 反向传播算法

以一个高效的方式在所有的参数上使用梯度下降算法, 从而使损失函数尽可能的小.
参数更新公式:
θ n + 1 = θ n η θ n J ( θ n )
式中η式学习率, 需要人为设定.

5. 神经网络的进一步优化

5.1 学习率的设置

5.1.1 exponential_decay函数

它可以指数级地减小学习率.

5.2 过拟合问题

[Tensorflow] 深层神经网络
(第三张图展示了过拟合的情景)

用正则化方法避免过拟合的问题

思想: 在损失函数中加入刻画模型复杂度的指标R(w), 优化时不直接优化损失函数L(θ), 而是优化L(θ)+λR(w).
R(w)通常有两种: L1正则化 R ( w ) = i | w i | 和 L2正则化 R ( w ) = i | w i 2 |
tf.contrib.layers.l2_regularizer函数可以计算一个给定参数的L2正则化项的值.

5.3 滑动平均模型

思想: 通过影子变量来控制模型的更新速度.
具体做法: 先指定一个衰减率decay, 然后给每一个变量都维护一个影子变量.
s h a d o w V a r i a b l e = d e c a y s h a d o w V a r i a b l e + ( 1 d e c a y ) v a r i a b l e
decay可以通过设定numUpdates来动态设置:
d e c a y = min ( d e c a y , 1 + n u m U p d a t e s 10 + n u m U p d a t e s )