梯度是一个数学概念,其愿意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。在向量微积分中,标量场的梯度是一个向量场。标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。
更严格的说,从欧几里得空间Rn到R的函数的梯度是在Rn某一点最佳的线性近似。在这个意义上,梯度是雅可比矩阵的一个特殊情况。在单变量的实值函数的情况,梯度只是导数,或者,对于一个线性函数,也就是线的斜率。梯度一词有时用于斜度,也就是一个曲面沿着给定方向的倾斜程度。可以通过取向量梯度和所研究的方向的点积来得到斜度。梯度的数值有时也被称为梯度。
设体系中某处的物理参数(如温度、速度、浓度等)为w,在与其垂直距离的dy处该参数为w+dw,则称为该物理参数的梯度,也即该物理参数的变化率。如果参数为速度、浓度、温度或空间,则分别称为速度梯度、浓度梯度、温度梯度或空间梯度。其中温度梯度在直角坐标系下的表达式如右图。
在单变量的实值函数的情况,梯度只是导数,或者,对于一个线性函数,也就是线的斜率。
梯度一词有时用于斜度,也就是一个曲面沿着给定方向的倾斜程度。可以通过取向量梯度和所研究的方向的点积来得到斜度。梯度的数值有时也被称为梯度。
在二元函数的情形,设函数z=f(x,y)在平面区域D内具有一阶连续偏导数,则对于每一点P(x,y)∈D,都可以定出一个向量
(δf/x)*i+(δf/y)*j
这向量称为函数z=f(x,y)在点P(x,y)的梯度,记作gradf(x,y)
类似的对三元函数也可以定义一个:(δf/x)*i+(δf/y)*j+(δf/z)*k 记为grad[f(x,y,z)]
梯度本意是一个向量(矢量),当某一函数在某点处沿着该方向的方向导数取得该点处的最大值,即函数在该点处沿方向变化最快,变化率最大(为该梯度的模)。
散度运算的对像是向量,运算出来的结果会是纯量
散度的作用对像是向量场,如果现在我们考虑任何一个点(或者说这个点的周围极小的一块区域),在这个点上,向量场的发散程度,如果是正的,代表这些向量场是往外散出的.如果是负的,代表这些向量场是往内集中的.
一样,举例子:因为散度的作用对像是向量场,所以就不能用上面所讲的山来想象,这次要想象一个大广场里挤了很多人,如果每个人都在到处走动,是不是可以把每个人的行动都看成是一个向量,假如现在某人放了一个屁,周围的人(可能包含他自己)都想要赶快闪远一点,就会发现,在这块区域的人都往这小块区域以外的方向移动.对啦..这就是散度(你也可以想说是闪远一点的闪度....冷....),大家如果散得越快,散得人越多,这个散度算出来就就越大.
旋度运算的对像是向量,运算出来的结果会是向量
旋度的作用对象也是向量场,这次直接用上面的例子来讲:如果现在散开的众人都是直直的往那个屁的反方向散开,这时候你看到这些人的动线是不是就是一个标准的幅射状??不过事实上,每个人在闻到屁的时候是不会确切的知道屁到底是来自哪个方向的.而可能会走错方向,试过之后才发现不对劲,越找越臭.这时候你看到众人的走向不见得就是一个幅射状(大家都径向移动),而可能有一些切向移动的成份在(以屁发点为中心来看)旋度对应的就是这些切向移动的情况,相对来讲,散度对应的其实就是径向移动的情况.而一个屁,虽然可能会像上述的造成一些切向的移动,但理论上来讲,并不会使散开的众人较趋向于顺时钟转,或逆时钟转.在这种情况,顺时钟转的情况可以看作与逆时钟转的情况抵消,因此,在这情况下,旋度仍然是零.也就是说,一个屁能造成散度,而不会造成旋度....而甚么时候是有旋度的呢??如果这时候音乐一放,大家开始围着中间的营火手拉手跳起土风舞(当然是要绕着营火转的那种啦)这时候就会有旋度没有散度啦.(刚刚一直放屁的那位跑出去找厕所的除外)以上这三个,有一点一定要记得的.不论是梯度,散度,旋度,都是一种local的量(纯量,向量),所考虑的都是任何一点(其周围极接近,极小的小范围)的情况.以上举的例子因为要容易了解,所以都是针对二度空间向量为例,而且都是很大的东西,但广场是一个点,营火晚会也是一个点,纳须弥于芥子,这就请自行想象吧
运算的对像是纯量,运算出来的结果会是向量在一个标量场中
在每个位置都算出一个向量,而这个向量的方向会是在任何一点上从其周围(极接近的周围,学过微积分该知道甚么叫极限吧?)标量值最小处指向周围标量值最大处.而这个向量的大小会是上面所说的那个最小与最大的差距程度.这会是梯度的计算结果
举例子来讲会比较简单,如果现在的纯量场用一座山来表示,纯量值越大的地方越高,反之则越低.经过梯度这个运操作数的运算以后,会在这座山的每一个点上都算出一个向量,这个向量会指向每个点最陡的那个方向,而向量的大小则代表了这个最陡的方向到底有多陡.
分别求三个变量的偏导数,偏导数分别乘三个轴的单位向量,然后加到一起
圆柱坐标系中梯度、散度和旋度
在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数,和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。
梯度下降法和梯度上升法是可以互相转化的。比如我们需要求解损失函数f(θ)的最小值,这时我们需要用梯度下降法来迭代求解。但是实际上,我们可以反过来求解损失函数 -f(θ)的最大值,这时梯度上升法就派上用场了。
首先来看看梯度下降的一个直观的解释。比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。
从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。