一、神经网络优化总结
梯度下降
梯度下降算法不一定达到全局最优,并且消耗时间,因为其是在全部数据集上的损失和。
因此采用随机梯度下降算法:其不是在全部数据集上优化损失函数,而是在每一轮迭代中,随机优化某一条训练数据上的损失函数;
存在问题:某一条数据上损失函数更小,不代表在全部数据上损失函数更小,可能无法达到局部最优。
实际应用;采用这两个算法折中,每次计算一小部分训练数据的损失函数,成为一个batch。每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使得收敛到的结果更加接近梯度下降的效果。
学习率指数衰减
学习率既不能过大也不能过小,tensorflow采用一种学习率的设置方法——指数衰减法。
tf.train.exponential_decay : 函数实现指数衰减学习率。先使用较大的学习率来快速得到一个比较优的解,随着迭代的继续逐步减小学习率,使得模型在训练后期更加稳定。
tf.train.exponential_decay(
learning_rate,初始学习率
global_step,当前迭代次数
decay_steps,衰减速度(在迭代到该次数时学习率衰减为earning_rate * decay_rate),一般为全部数据全部计算一次的step,相当于是全部数据数目/batch_size
decay_rate,学习率衰减系数,通常介于0-1之间。
staircase=False,(默认值为False,当为True时,(global_step/decay_steps)则被转化为整数) ,选择不同的衰减方式。默认False&