01 梯度下降、学习率、损失函数

概念引入

基于一个自变量x,比如时间,我们可以得到其对应的观测值y,比如温度值。不停的观测,我们可以得到一系列的真实对应关系:(时间,温度的真实值),即(x1, y1),(x2, y2), ..., (xn, yn)。

现在我们知道了温度和时间之间是呈正比例关系的,即y = k*x。很显然,我们不知道k应该取到多少,但是我们可以假设。

现在我们假设k=2,也就是我们猜想温度和时间的关系是 y=2*x。那么由上述得到的真实对应关系,我们可以得到一系列预测对应关系:(时间,温度的预测值),即(x1, 2*x1),(x2, 2*x2), ..., (xn, 2*xn)。

那么当k=2时,我们可以得到一个loss,这个loss是预测值与真实值之间的误差。每个观测点都会造成误差,所以每个误差都应该被记录,所以总的误差应该是\sum_{i=1}^{n}(yi - 2*xi)^{2},平均误差是\sum_{i=1}^{n}(yi - 2*xi)^{2}/n,这里之所以加平方,是为了消除正负,比如y1-2*x1结果是个负的,然后加到总误差里,岂不是让总误差变小了,这当然不行。

上面我们假设了一个k值,得到了一个loss。但我们为什么要假设k值?因为我们知道温度=k*时间,但我们又不知道k值是多少,所以只能假设。但是如何让k值逼近真实的k值?首先我们很明确真实的k值,一定会使误差为0,其它都大于0。那我们的目的就变得很清晰,我们要让误差不断的减小,直至为0。当然0是最理想的状态,基本达不到,所以只要loss足够小,得到的k的预测值也就满足我们的需求了。

梯度下降、学习率、损失函数

我们来看平均误差函数即损失函数 averagLoss = \sum_{i=1}^{n}(yi - k*xi)^{2} /n,我们的目的是让averageLoss越来越小,然后我们发现这个函数中只有一个未知量也就是k,这是个一元二次方程啊!方程怎么求最小值?这里不要看着是个一元二次方程求最小值,瞬间就想到初中知识。因为初中最值求法解决不了二元二次方程最小值,而梯度求导可以。什么是梯度求导?很简单,对于一个一元函数来说是切线,对于多元函数来说,我们可以通过偏导得到切线。这个具体内容学过高数的应该是很明白的。

接下来是我个人的思考:

 

猜你喜欢

转载自blog.csdn.net/qq_40923413/article/details/108172580