机器学习模式是以迭代的方式来降低损失,这种方法有点像"Hot and Cold"这种儿童游戏,在游戏中,隐藏的物品就是最佳模型,刚开始我们会胡乱猜测,比如w=0,然后系统告诉我们损失是多少,然后我们再重新猜测一个值,看看损失是多少,通常我们会越来越接近目标。问题是我们如何尽可能高效的找到最佳的模型。
迭代在机器学习中的应用非常普遍,这主要是因为他们可以很好的扩展到大型数据集。
模型将特征(一个或多个)作为输入,返回一个预测值作为输出。我们在这里考虑一个特征与一个输出结果的模型:
y = wx + b
我们应该为w和b设置哪些初始值呢?事实证明初始值并不重要(在该模型中),我们可以随机选择值,在这里我们选择一些无关紧要的值。
w=0, b=0
假设第一个特征值为10,我们这里预测到的结果为 0*(10) + 0 = 0。
计算损失会要求两个输入值(预测值和真实值),机器学习系统会检测这些值,并生成新的w和b.新的w,b又会生成新的预测值,从而生成新的loss值,如此迭代下去。
通常我们经过不断迭代,直到该算法发现了损失很低的模型或者总体损失不再变化或者变化缓慢为止。这时我们称模型已经收敛。
梯度下降法:
如果我们有时间和资源去计算w所有可能值的损失,对于我们一直研究的问题,损失-weights的图形始终是凸形的。
凸形的好处是只有一个最低点:即只有一个斜率为0的位置(不存在局部最优解问题),这个最小值就是损失函数收敛的位置。
当然我们可以计算数据集中每个w可能的损失函数来找到收敛方法,但是这种方法的效率太低,我们有一种更好的机制