![e8c52c0b325dc151b98ce190b64fdf8c.png](https://i-blog.csdnimg.cn/blog_migrate/0a14f53da1ba2a0bc59f0dbd5ec8e422.jpeg)
成本函数
我们在机器学习中最主要的目标是最小化成本函数,因此,将执行优化过程以最小化该成本函数。成本函数由下式给出:
![d68cd2dba76041366596f8f569810a29.png](https://i-blog.csdnimg.cn/blog_migrate/4accf86b7113ea985c7bca789f4bd93d.jpeg)
为了深入了解成本函数的几何形状,让我们学习凹函数和凸函数:
凹函数
在凹函数g(x)中,对于x轴上的任意两个值,即a和b,点g(a)和g(b)之间的直线总是位于g(x)的下方。凹函数的最大值是一个导数为0的点
![4389c977f006d4eb3eed101277b39e63.png](https://i-blog.csdnimg.cn/blog_migrate/de9c803fe6f86a36fb15617f1ff94e1d.jpeg)
凸函数
凸函数具有相反的属性,凸函数的最小值是导数为0的点。
![17b6e6743d2a2cf8ec11ba21df42565c.png](https://i-blog.csdnimg.cn/blog_migrate/6b6a58eb0f813c31867a5b5bcf1373c8.jpeg)
我们如何找到成本函数的最大值或最小值呢?
有两种查找成本函数的最小值或最大值的方法:
解析法:凹函数的最大值和凸函数的最小值是导数为0的点。在导数=0后所形成的方程易于求解之前,解析法是较好的方法。
![2ac04c5c2ae8d6e75c5f74eced337d60.png](https://i-blog.csdnimg.cn/blog_migrate/e3a1f6cc1d93ed28e37ab35a534d6eb1.jpeg)
爬山算法:该算法是一种综合算法,我们从可能的斜率(θs)的空间中的某个地方开始,然后不断改变斜率,以期接近最大值或最小值。现在,出现的问题是我应该增加θ(将θ向右移动),还是应该减少θ(向左移动θ)以接近最佳值。在凸函数的情况下,我们可以求导数,如果导数为正,则需要增加θ,即向右移动,而如果导数为负,则减小θ。
![54e5f826faa4d44ceeac10f430a70cbf.png](https://i-blog.csdnimg.cn/blog_migrate/a76e09460d101d385a2f146915cbe2e4.jpeg)
t是迭代,α是学习率。
![a46e89f1f36d63ef871b120ab33aed0f.png](https://i-blog.csdnimg.cn/blog_migrate/64bad2fb88551a3ef950de7756e66843.jpeg)
学习率
学习率决定了“爬山算法”中步长的大小。学习率有两种类型:
静态:静态学习率是在所有迭代过程中保持不变的速率。
动态:学习率是动态变化的,即最初在θ偏离最佳值时,α很大,并且随着我们接近最佳值而不断下降。
选择学习率
学习率不能太小,因为需要很多次迭代才能达到最小值。而且,学习率不能太大,因为它可能会错过最佳点。
![fefd0237805d45a4885624f0944dde1a.png](https://i-blog.csdnimg.cn/blog_migrate/1606425e6f56c4962499b8c5eb9b924d.jpeg)
更好的想法是选择动态学习率,该学习率随着时间的推移而降低,因为它允许算法快速识别该点。基本的降低学习率时间表如下:
![dcfaadb2e1e126dc4e88eebd609cbae6.png](https://i-blog.csdnimg.cn/blog_migrate/4d862e2aa08838de34d81bba8b723773.jpeg)
理想情况下,对于凸函数,最优值出现在:
![cbcc3c400f29efc71d934a5cead373f0.png](https://i-blog.csdnimg.cn/blog_migrate/e748bfb18d84e1dc7a88b8e5b6df782b.jpeg)
但是,在实践中需要设置阈值,该阈值定义了与最佳解“足够接近”的条件:
![7655c3500646a744c8cbbaab82b54cdc.png](https://i-blog.csdnimg.cn/blog_migrate/300fcec82a2208efe85ba02306f17435.jpeg)
什么是梯度下降?
梯度下降用于实现爬山算法。为了理解梯度下降,让我们假设是否要最小化某些成本函数,这可能是许多变量的函数。为了简单起见,让我们假设C是两个变量的函数:
成本函数的变化由下式给出:
![6c139b7288e93464a2fa67cf4ec948b1.png](https://i-blog.csdnimg.cn/blog_migrate/7a4cf6b10b56f3157a3532b9c5a7c406.jpeg)
梯度向量(∇C)包含C相对于v的偏导数,即∇C使v的变化与C的变化相关:
![eacf44abe6f13b98b56ad8bc12b5a95f.png](https://i-blog.csdnimg.cn/blog_migrate/9276709ca7a8b3bedb82d51ae727b525.jpeg)
将向量的变化(ΔV)和梯度向量(∇C)放在ΔC方程中:
![236e37282230074817ad6644ca691f6e.png](https://i-blog.csdnimg.cn/blog_migrate/69b49563ff6e10c0e7c2c3e16923df63.jpeg)
我们需要以使ΔC为负的方式选择Δv。假设我们选择:
![2f788d830287f44a241aafdcb47e0359.png](https://i-blog.csdnimg.cn/blog_migrate/2ac7cc7e548ac5df913ce765cbf47e56.jpeg)
其中η是一个小的正参数(称为学习率)。那么ΔC可以写成:
![d94b7384637d06983671f8bc8dcd7e4b.png](https://i-blog.csdnimg.cn/blog_migrate/d716d22644eef5d4e1da524c724dcd25.jpeg)
因为∥∇C∥²≥0,所以保证了ΔC≤0,即,C将总是减小而从不增大。 降低C是主要动机,因为我们希望尽可能降低成本。 因此,我们以以下方式实现梯度:
![7ae44cefec99f4df4a28dc7f109792ad.png](https://i-blog.csdnimg.cn/blog_migrate/fcf2e9c5b4d25a608d0888224ffdaf0c.jpeg)
梯度下降是机器学习的基础,因此必须了解该算法背后的数学知识才能真正理解机器学习模型的工作原理。此外,所有深度学习模型在反向传播过程中都使用梯度下降算法来更新权重和偏差。希望这篇文章能帮助您了解机器学习中的成本函数,学习率和梯度下降的一些基础知识。