Tensorflow:实战Google深度学习框架第四章

一介绍

该章主要是介绍深层网络, 该章节主要按照损失函数,优化技巧俩部分进行展开。


二 损失函数

在损失函数介绍几种经典损失函数:

1. 交叉熵:刻画了俩个概率分布之间的距离,它是分类问题中使用比较广的一种损失函数,计算公式如下:

                   H(p,q) = -\sum_{x}p(x)log(q(x))

注意:H(p,q) != H(q, p)即交叉熵不满足对称性,它刻画的是通过概率分布q来表达概率分布p的困难程度。因为正确答案是希望得到的结果,所以当交叉熵作为损失函数时,P代表的是正确答案, q代表的是预测值。交叉熵刻画的是俩个概率分布的距离,也就是说交叉熵值越小,俩个概率分布越接近。

tips: 因为log x,如果x小于等于0会报错,所以在损失函数需要注意这种情况,在tensorlow中tf.clip_by_value可以将一个张量中的数值控制在一个范围内。

clip_by_value

2. 自定义损失函数:根据需要,需要自己定义损失函数,比如:当x>y时:\qquad     \qquad   \qquad    f(x, y)=\left\{\begin{aligned}a(x-y) & & x>y\\b(y-x) & & x\leq  y\end{aligned}\right.

tips:需要用到tf.greater()以及tf.where

 loss = tf.reduce\_sum(tf.where(tf.greater(v1,v2),(v1-v2)*a, (v2-v1)*b))

tf.where 有三个参数。第一个为选择条件依据,当选择条件为true时,tf.where函数会选择第二个参数中的值,否则使用第三个参数中的值。

三神经网络优化算法

3.1 学习率设置

学习率决定了参数更新的幅度。如果幅度过大,那么可能导致参数在极优值的俩侧 来回移动。为了设置合理的学习率,在本书中提到了指数衰减法。tf.train.exponential_decay。原理是可以先使用较大的学习率来得到一个比较优的解,然后随着迭代的继续逐步减小学习率。主要是事先的是:decayed\_learning\_rate = learning\_rate * decay\_rate^{global\_step / decay\_steps}         learning_rate表示学习率, decay_rate表示衰减系数,decay_steps为衰减速度                       tips:函数还有一个参数staircase布尔型, 如果为 true表示在一个数据集内学习率是一样的,即decay_rate的指数取整

3.2 过拟合问题

过拟合问题表示在训练集训练的太好,将噪音数据都学出来了,在验证集上的表现却太差。为了让模型的结构不至于负责。引入了正则化的概念。

L1:                                                                                                                                                                                                R(w) = \vert \vert w\vert \vert_1  = \sum_{i}\vert x_i \vert

L2:

                                               R(w) = ||W||_2^2 = \sum_{i}|W_i^2|

将正则化添加到损失函数,可以有效避免过拟合的问题。tensorflow中正则化的表达式为tf.contrib.layers.l2_regularizer(lambda),lambda为权重。

正则化损失函数的计算方式

3.3 滑动平均模型

在tensorflow提供tf.train.ExponentialMovingAverage来实现滑动平均模型。 该函数就是给每一个变量维护一个影子变量。                                                                                                                             shadow\_variable = decay * shadow + (1-decay)*variable            tips: decay衰减率控制模型更新速度。如果函数参数中有step参数,即模型迭代次数,衰减率为:                                                                                                                                                                                            min(decay, \frac{1+step}{10+step})              

具体代码如下:

滑动平均模型

四 总结

该部分主要介绍了一些trick,可以提高模型的稳定性,避免过拟合。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容