一句话概括机器学习:调整权重——将weight的大小进行不断的调整——以降低误差。
不断调整weight大小,使得误差逐渐为0的过程,就是学习的过程。
在调整weight大小的过程中,给weight加减一个固定的值,得到结果并判断误差,我们就可以根据此来最终调整weight的大小。
而不断的重复上述过程,最终的误差会逐渐趋向于0,也就说明神经网络的预测精度较高。
什么是冷热学习?
冷热学习指的是通过扰动权重来确定向那个方向调整可以使得误差的降低幅度最大,基于此将权重的值向那个方向移动,不断重复这个过程,知道误差趋于0。
冷热法学习步骤:
1、构建一个空白的神经网络
weight = 0.1
lr = 0.01
def neural_network(input, weight):
prediction = input * weight
return prediction
2、预测:做出预测并衡量误差
input = 8.5
true = 1
pred = neural_network(input, weight)
error = (pred - true) ** 2
print(error)
3、比较:基于更大的权重值做出预测,并衡量误差
lr = 0.1
p_up = neural_network(input, weight + lr)
e_up = (p_up - true) ** 2
print(e_up)
4、比较:基于更小的权重做出预测,并衡量误差
lr = 0.01
p_dn = neural_network(input, weight - lr)
e_dn = (p_dn - true) ** 2
print(e_dn)
5、比较+学习:比较两次操作带来的误差,并更新权重
if(error > e_dn || error > e_up):
if(e_dn < e_up):
weight -= lr
if(p_up < e_up):
weight += lr
正常情况下,必须重复这个过程很多次才能找到正确的权重。
冷热学习的特点
很简单
冷热学习非常简单。在上一次做出预测之后,模型又进行了两次预测,一次权重稍微高一些,另一次的权重稍微低一些。然后,权重实际进行调节的量取决于那个方向所得到的误差更小。重复这一过程足够多次,最终误差将降低到0。
冷热学存在的问题
1:效率底下
必须通过多次预测才能进行一次权重的更新。
2:有时准确预测出目标是不可能的
给定一个幅度大小固定的值,除非权重恰好分毫不差地落在距离初始权重n步幅大小的位置,否则,最终会超出某个最小的迭代值。这一情况发生时,网路预测的输出就会在某个值周围来回波动。
更多内容请关注公众号:玖柒壹点点
欢迎大家交流探讨,如有侵权,联系作者。