代价函数的工作原理
在线性回归模型中,我们希望得到一条拟合数据集的直线,所以我们构造了上图所示的假设函数hθ(x)h_\theta(x)hθ(x),其中包含两个参数θ0和θ1\theta_0和\theta_1θ0和θ1,随着所选择参数的不同,我们会得到不同的直线。
J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1)是我们的代价函数; θ0,θ1minimize\large_{\;\;\;\theta_0,\theta_1}^{minimize}θ0,θ1minimizeJ(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1)是优化目标。
1. 简化的代价函数
为了更好的使代价函数J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1)可视化,我们首先使用一个简化的代价函数来进行分析
代价函数与之前类似,只不过现在hθ(x)=θ1xh_\theta(x)=\theta_1xhθ(x)=θ1x,即我们令参数θ0=0\theta_0=0θ0=0,相当于我们只选择了经过原点的假设函数,使用简化的代价函数可以帮助我们更好地理解代价函数的概念。
上图左边是我们绘制的假设函数hθ(x)=θ1xh_\theta(x)=\theta_1xhθ(x)=θ1x的图像,很显然,在参数θ1\theta_1θ1确定的条件下,hθ(x)h_\theta(x)hθ(x)是关于xxx的函数,其中叉叉表示我们的数据集,它们分别是(1,1),(2,2),(3,3)(1,1),(2,2),(3,3)(1,1),(2,2),(3,3),可知样本数量 m=3m=3m=3。
右边是我们绘制的简化后的代价函数J(θ1)J(\theta_1)J(θ1),根据代价函数的表达式J(θ1)=J(\theta_1)=J(θ1)= 12m\,\Large1\over {2m}2m1 ∑i=1m\large\sum_{i=1}^m∑i=1m (hθ(xi)−yi)2(h_\theta(x^i)-y^i)^2(hθ(xi)−yi)2,可知J(θ1)J(\theta_1)J(θ1)是关于参数θ1\theta_1θ1的函数。
对于参数θ1\theta_1θ1不同的取值,我们都可以在左边绘制出假设函数对应的直线,再根据代价函数的计算公式,我们就可以在右边的图像中绘制出代价函数对应的点,最终在θ1\theta_1θ1不同的取值下,我们可以绘制出代价函数J(θ1)J(\theta_1)J(θ1)对应的图像,可知当J(θ1)J(\theta_1)J(θ1)只有一个参数时,其对应的是一个平面上的二维图像。
我们学习算法的优化目标是通过选择θ1\theta_1θ1不同的取值,获得最小的代价函数J(θ1)J(\theta_1)J(θ1),这就是线性回归的目标函数 θ1minimize\large_{\;\;\;\;\;\theta_1}^{minimize}θ1minimizeJ(θ1)J(\theta_1)J(θ1)。
2. 原始的代价函数
上图左边是我们绘制的假设函数hθ(x)=θ0+θ1xh_\theta(x)=\theta_0+\theta_1xhθ(x)=θ0+θ1x的图像,很显然,hθ(x)h_\theta(x)hθ(x)是关于xxx的函数,当我们取θ0=50, θ1=0.06\theta_0=50,\;\theta_1=0.06θ0=50,θ1=0.06时,得到的假设函数为hθ(x)=50+0.06xh_\theta(x)=50+0.06xhθ(x)=50+0.06x,其对应的直线如图所示。
右边是原始的代价函数J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1),根据代价函数的表达式J(θ0,θ1)=J(\theta_0,\theta_1)=J(θ0,θ1)= 12m\,\Large1\over {2m}2m1 ∑i=1m\large\sum_{i=1}^m∑i=1m (hθ(xi)−yi)2(h_\theta(x^i)-y^i)^2(hθ(xi)−yi)2,可知J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1)是关于参数 θ0,θ1\theta_0,\theta_1θ0,θ1的函数。
对于参数θ0,θ1\theta_0,\theta_1θ0,θ1不同的取值,我们都可以在左边绘制出假设函数对应的直线,再根据代价函数的计算公式,我们就可以计算出代价函数对应的值,最终在θ0,θ1\theta_0,\theta_1θ0,θ1不同的取值下,我们就可以绘制出代价函数J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1)对应的图像
可知当代价函数J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1)有两个参数时,其对应的是空间内的三维图像。
当我们取不同的θ0,θ1\theta_0,\theta_1θ0,θ1时,J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1)的值就是曲面上(θ0,θ1)(\theta_0,\theta_1)(θ0,θ1)这一点对应的高度。
为了更好地展示代价函数J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1),我们使用等高线图来表示J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1)与θ0,θ1\theta_0,\theta_1θ0,θ1之间对应的关系。
右边等高线图中的每一个椭圆都代表了J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1)相等时的一系列θ0,θ1\theta_0,\theta_1θ0,θ1的不同取值,很显然,当椭圆越大时,说明取到这个J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1)值的(θ0,θ1)(\theta_0,\theta_1)(θ0,θ1)越多,所以J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1)的最小值在等高线图中应该是最小的等高线,即只会有一组(θ0,θ1)(\theta_0,\theta_1)(θ0,θ1)满足优化目标,在图像中就对应着一个点。
通过上述的例子,我们可以发现,当代价函数J(θ)J(\theta)J(θ)中的参数越多时,其对应的函数图像维度也就越高,我们就无法通过手动的方式来解决,我们真正想要的是一种高效的算法,可以通过软件实现的算法,来自动找寻代价函数J(θ)J(\theta)J(θ)的最小值其对应的参数 θ\thetaθ。