
第 4章 神经网络的学习
106
前面说过,学习率过大或者过小都无法得到好的结果。我们来做个实验
验证一下。
#
学习率过大的例子:
lr=10.0
>>> init_x = np.array([-3.0, 4.0])
>>> gradient_descent(function_2, init_x=init_x, lr=10.0, step_num=100)
array([ -2.58983747e+13, -1.29524862e+12])
#
学习率过小的例子:
lr=1e-10
>>> init_x = np.array([-3.0, 4.0])
>>> gradient_descent(function_2, init_x=init_x, lr=1e-10, step_num=100)
array([-2.99999994, 3.99999992])
实验结果表明,学习率过大的话,会发散成一个很大的值;反过来,学
习率过小的话,基本上没怎么更新就结束了。也就是说,设定合适的学习率
是一个很重要的问题。
像学习率这样的参数称为超参数。这是一种和神经网络的参数(权重
和偏置)性质不同的参数。相对于神经网络的权重参数是通过训练
数据和学习算法自动获得的,学习率这样的超参数则是人工设定的。
一般来说,超参数需要尝试多个值,以便找到一种可以使学习顺利
进行的设定。
4.4.2
神经网络的梯度
神经网络的学习也要求梯度。这里所说的梯度是指损失函数关于权重参
数的梯度。比如,有一个只有一个形状为2
×
3 的权重
W
的神经网络,损失 ...