1. 梯度下降, tf.train.GradientDescentOptimizer(0.05),梯度下降的问题在与不一定能获得全局最优解,并且因为要在所有数据上最小化损失,所以损失函数是在所有训练数据上的损失和,所以在大数据情况下,需要的时间相当长。
2.随机梯度下降,随机梯度下降优化的不是全部数据上的损失函数,在每一轮迭代中,都随机选择一条训练数据进行优化,这样训练时间大大减小,但是由于某一条数据上的全局最小不一定代表所有数据的全局最小,所以随机梯度下降也不一定能达到全局最优解。
为了综合梯度下降和随机梯度下降的优点,在实际训练中通常将训练数据分为多个batch,每次只训练一个batch,这样可以大大减小收敛所需的迭代次数。
3. MomentumOptimizer(),解决了梯度下降无法跳出局部极小值的问题。
4. AdagradOptimizer(),根据每个变量变换优化步长,考虑了变量梯度的整个历史。
5. AdadeltaOptimizer(),Adagrad有时候会很快使梯度到0,为了解决这个问题,Adadelta可以限制最少使用多少步。