大数据人工智能

人工智能00016 深度学习与图像识别书评16 机器学习基础05

2023-10-24  本文已影响0人  水晓朴

4.2.2节中,我们主要介绍了什么是梯度下降法,本节将主要介绍学习率η对于梯度下降法的影响。

第一个例子,我们将η设置为0.01(之前是0.1)我们可以观察到,步长减少之后,蓝色的标记更加密集,这就说明步长减少之后,从起始点到导数为0的步数增加了。步数变为了424步,这样整个学习的速度就变慢了。

第二个例子,我们将η设置为0.8,我们可以观察到,代表蓝色的步长在损失函数之间发生了跳跃,不过在跳跃的过程中,损失函数的值依然在不断地变小。

步数是22步,因此当学习率为0.8时,优化过程的时间缩短,但是最终也找到了最优解。

第三个例子,我们将η设置为1.1来看一下效果。这里需要注意的是,学习率本身是一个0到1的概率,因此1.1是一个错误的值,但为了展示梯度过大会出现的情况,我们暂且用这个值来示意。

我们将会发现程序会提示这个错误OverflowError:(34,'Result too large')。我们可以想象得到,这个步长跳跃的方向导致了损失函数的值越来越大,所以才会报出错误“Result toolarge”,因此我们需要修改下求损失函数的程序,修改后代码如下:

def J(theta):

 try:

   return (theta-2.5)**2 -1

 except:

   return float('inf')

另外,我们需要增加一下循环的次数,代码如下:

i_iter= 0

 n_iters = 10

 while i_iter < n_iters:

gradient = dJ(theta)

   last_theta = theta

   theta = theta - eta * gradient

   i_iter += 1

   theta_history.append(theta)

   if (abs(J(theta) - J(last_theta)) < epsilon):

     break

#当两个theta值非常接近的时候,终止循环 我们可以很明显地看到,损失函数在最下面,学习到的损失函数的值在不断的增大,也就是说模型不会找到最优解。

学习率η=1.1时,一元二次损失函数不收敛

本节通过几个示例,简单讲解了梯度下降法以及步长η的作用。从三个实验中我们可以看出,学习率是一个需要认真调整的参数,过小会导致收敛过慢,而过大又可能会导致模型不收敛。

上一篇 下一篇

猜你喜欢

热点阅读