滑动平均是在对数据进行统计时,数据晃动是常见的现象,我很好奇如何防止这种晃动。 滑动平均就是这样的技术,其本质是利用历史来制作代替原始数据的数据。
举个例子,下图是伦敦四季温度变化的照片,横轴是时间(以天为单位),纵轴是一天的平均温度。
温度记录的theta如下。
使用以下公式计算加权平均温度vt :
(1) ) ) )。
其中v0=0。 将beta称为衰减率,如果beta=0. 9,则数据如下图的红点所示。
数据是不是平稳了很多?
滑动平均原理可以将公式展开为:
(2) ) ) )。
可以看出,当前滑动平均值受前面所有温度的影响,其中时间点越近,影响越大。 这也说明了为什么滑动平均值相对平稳。 实际上,这是因为它综合了迄今为止所有历史的值。
参数贝塔起着调节作用,贝塔变大对历史值的影响也很大,相反,表明当前值占支配地位。
虽然修改滑动平均值的滑动平均值有问题,但是由于v_0为0,所以v1比theta _ 1小。 同样,初期阶段的滑动平均值也有这样的问题。 贝塔系数大时尤为明显。 图中的紫色曲线:
为了解决这个问题,进一步调整幻灯片的平均值。
(3) ) )。
由此,即使是初期的滑动平均值也不会大大低于原来的值,随着跌倒的增加分母的影响也变小。
Tensorflow的滑动平均Tensorflow的滑动平均衰减率不是固定值。 请看下面的函数。 发现是以MOVING_AVERAGE_DECAY为最大值的递增函数。
# decay是衰减率MOVING_AVERAGE_DECAY,num_updates是实施滑动平均的步骤数,默认为EMA=TF.train.exponentialmovingaverage (donential ) #在实际的APP应用程序中,使用tf.trainable_variables ()将所有等待训练的参数返回到EMA _ op=EMA.apply (TF.train able _ variables ) 结合幻灯片平均和培训步骤的withtf.control _ dependencies ([ train _ step,ema_op] ) : train _ op=TF.no _ op (namame )
[1] mgddw深度学习
[2]【北京大学】人工智能实践: Tensorflow笔记