在机器学习中会经常用到求导数相关的许多求导公式,比如在梯度下降中就经常用到,其中最常用的就是一下几个:
第一个是对幂函数的求导。
第二个是对指数函数的求导,其中第三个是第二个的特例,当a=e的时候,这个时候lne的值恰好为1。
第四个导数是对数函数的导数。
了解为什么使用“梯度下降法”去求最小值,必须先知道机器学习求得模型的方式。比如现在有一份线性数据的关系,假设他的模型为线性,w为权值(随机),b为偏置,e为假设的“误差”:
假设拟合模型
我们把这个方程做一下变换,得到关于真实值和模型拟合值的误差
上面只是关于一个数据的误差,接下来对所有数据的误差进行一次加和,然后再平方。得到一个所有真实值与拟合值误差的平方函数,将其定义为“全局性误差函数”loss
机器学习的目的就是拟合出一个可以准确描述这组数据的模型。按照上面的公式来看,如果令“Loss=0”,也就是令所有真实值与拟合值误差的平方为零,就等于说这个模型是可以准确描述真实世界数据的。而让Loss为零时的w与b,就是描述这个模型的参数。
至于为什么要进行平方处理,是应用了最小二乘的思想。我们本来是想找到一个合适的模型,对此构建了一个真实值与拟合值的“平方差模型”,找到了这个平方差模型的解,也就等于是找到了我们需要的“拟合模型”。
本质上,我们是通过上面的方式,把一个求模型的问题,转换成了一个函数求解“最小值”的数学问题。那么问题来了,如何找到这个函数中的最小值,就是“梯度下降”所解决的问题。
梯度下降是机器学习中用来求最小值的算法,它被广泛应用于像逻辑回归、线性回归和神经网络的模型中。
问题变成了求解一个函数模型的最小值问题,要用到高等数学里关于“导数”的一系列概念和知识作为铺垫。想理解何为梯度,梯度是如何一步一步如何求得这个函数的最小值,就必须从他开始
偏导数
偏导数本质上与导数一样,都是当自变量变化的时候,函数值的变化量与自变量变化值的比值(即某个点沿x轴正方向的变化率)。不同在于导数描述的一元函数,而偏导描述的是多元函数
方向导数
方向导数与导数和偏导不同在于,它描述的是一个多元函数,在任意方向上的变化率。方向导数既有数值,也有方向(不再仅仅是正方向一个方向)。
梯度
那么问题来了,你想不想知道在这个点的n多个方向导数中,哪个是下降的方向变化是最大的,哪个是上升的方向变化最大的。这就引出了对“梯度”的定义:
梯度,即函数在某个点的一个向量,它的方向与取得最大方向导数的方向一致,模为该方向导数的最大值。
梯度与方向导数的关系,可以理解为它是方向导数中两个极端的“子集”,因为方向导数可以说有无数个方向,而梯度就是两个上升和下降变化率最大的两个方向
梯度下降的核心思想为:当你在一个模型中随机选取了一个点并求得该点的Loss,此时你的目的是找到让Loss等于或最接近零的点,你为了让loss减小,就要寻找下一个能让这个loss下降最多的点。但如果对所有的方向依次试一遍,那工作量实在是太大了!这时候就可以引入“梯度”来解决这个问题。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。