深度学习之算法(Algorithm)

2018-06-09  本文已影响0人  StarsOcean

背景:
在讨论了损失函数后,已经将监督学习问题转化成最优化问题,现在就要考虑使用什么算法求解最优解,从而得到最优解情况下的模型参数,最优模型就基本得到了。

一、有哪些最优化算法

TensorFlow 有哪些最优化算法(优化器)

image.png

二、算法的对比

然后参照莫烦大神的对比
Stochastic Gradient Descent (SGD)
Momentum 向下的惯性
AdaGrad 一双不好走路的鞋子, 使得他一摇晃着走路就脚疼
RMSProp
Adam 一个下坡, 一双破鞋子, 功不可没

三、学习率(learning rate)

学习率决定了参数每次变化的幅度。学习率大了,更新速度快,但是不一定收敛;学习率小了,又很花时间。折中的方法,一开始的时候快点,随着迭代逐渐放慢,数学上用指数实现。

# ----------------------------------指数衰减学习率---------------------------------------
# exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None)
# decayed_learning_rate = learning_rate * decay_rate ^ (global_step / decay_steps)   ,(If the argument `staircase` is `True)

global_step = tf.Variable(0)
learning_rate = tf.train.exponential_decay(0.1, global_step, decay_steps=1000, decay_rate=0.96, staircase=True)  #staircase 楼梯。

四、code

# ----------------------------------指数衰减学习率---------------------------------------
# exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None)
# decayed_learning_rate = learning_rate * decay_rate ^ (global_step / decay_steps)   ,(If the argument `staircase` is `True)

global_step = tf.Variable(0)
learning_rate = tf.train.exponential_decay(0.1, global_step, decay_steps=1000, decay_rate=0.96, staircase=True)    #staircase 楼梯。

# ----------------------------------算法---------------------------------------
opt = tf.train.GradientDescentOptimizer(learning_rate = learning_rate).minimize(loss)

# 用AdamOptimizer,参数如下,迭代很慢
# opt = tf.train.AdamOptimizer(learning_rate = 0.1).minimize(loss)
# tf.train.AdamOptimizer.__init__
# (learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08, use_locking=False, name='Adam')
上一篇下一篇

猜你喜欢

热点阅读