代价函数的工作原理
在线性回归模型中,我们希望得到一条拟合数据集的直线,所以我们构造了上图所示的假设函数
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 , θ 1 m i n i m i z e \large_{\;\;\;\theta_0,\theta_1}^{minimize} θ0,θ1minimize J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0,θ1)是优化目标。
1. 简化的代价函数
为了更好的使代价函数
J
(
θ
0
,
θ
1
)
J(\theta_0,\theta_1)
J(θ0,θ1)可视化,我们首先使用一个简化的代价函数来进行分析
代价函数与之前类似,只不过现在
h
θ
(
x
)
=
θ
1
x
h_\theta(x)=\theta_1x
hθ(x)=θ1x,即我们令参数
θ
0
=
0
\theta_0=0
θ0=0,相当于我们只选择了经过原点的假设函数,使用简化的代价函数可以帮助我们更好地理解代价函数的概念。
上图左边是我们绘制的假设函数
h
θ
(
x
)
=
θ
1
x
h_\theta(x)=\theta_1x
hθ(x)=θ1x的图像,很显然,在参数
θ
1
\theta_1
θ1确定的条件下,
h
θ
(
x
)
h_\theta(x)
hθ(x)是关于
x
x
x的函数,其中叉叉表示我们的数据集,它们分别是
(
1
,
1
)
,
(
2
,
2
)
,
(
3
,
3
)
(1,1),(2,2),(3,3)
(1,1),(2,2),(3,3),可知样本数量
m
=
3
m=3
m=3。
右边是我们绘制的简化后的代价函数 J ( θ 1 ) J(\theta_1) J(θ1),根据代价函数的表达式 J ( θ 1 ) = J(\theta_1)= J(θ1)= 1 2 m \,\Large1\over {2m} 2m1 ∑ i = 1 m \large\sum_{i=1}^m ∑i=1m ( h θ ( x i ) − y i ) 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),这就是线性回归的目标函数 θ 1 m i n i m i z e \large_{\;\;\;\;\;\theta_1}^{minimize} θ1minimize J ( θ 1 ) J(\theta_1) J(θ1)。
2. 原始的代价函数
上图左边是我们绘制的假设函数
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_\theta(x)=\theta_0+\theta_1x
hθ(x)=θ0+θ1x的图像,很显然,
h
θ
(
x
)
h_\theta(x)
hθ(x)是关于
x
x
x的函数,当我们取
θ
0
=
50
,
θ
1
=
0.06
\theta_0=50,\;\theta_1=0.06
θ0=50,θ1=0.06时,得到的假设函数为
h
θ
(
x
)
=
50
+
0.06
x
h_\theta(x)=50+0.06x
hθ(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)= 1 2 m \,\Large1\over {2m} 2m1 ∑ i = 1 m \large\sum_{i=1}^m ∑i=1m ( h θ ( x i ) − y i ) 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 θ。