为什么要用到损失函数?
输入:训练集
X
=
[
x
(
1
)
,
x
(
2
)
,
.
.
.
x
(
i
)
.
.
.
x
(
m
)
]
X=[x^{(1)},x^{(2)},...x^{(i)}...x^{(m)}]
X=[x(1),x(2),...x(i)...x(m)],假设
x
(
i
)
x^{(i)}
x(i)为一张图片转化成的多维向量(如上一篇博客所讲)。
Y
=
[
y
(
1
)
,
y
(
2
)
,
.
.
.
y
(
i
)
.
.
.
y
(
m
)
]
Y=[y^{(1)},y^{(2)},...y^{(i)}...y^{(m)}]
Y=[y(1),y(2),...y(i)...y(m)],
y
(
m
)
y^{(m)}
y(m)为
x
(
i
)
x^{(i)}
x(i)对应的标签值,若
x
(
i
)
x^{(i)}
x(i)图片显示为cat,则
y
(
i
)
y^{(i)}
y(i)为1,否则为0。
执行:(1)将训练集
x
(
i
)
x^{(i)}
x(i)带入假设函数
z
(
i
)
=
w
T
x
(
i
)
+
b
z^{(i)}=w^Tx^{(i)}+b
z(i)=wTx(i)+b从而训练
w
w
w和
b
b
b;(2)将
z
(
i
)
z^{(i)}
z(i)作为自变量,放入
s
i
g
m
o
i
d
sigmoid
sigmoid函数(激活函数)中,即为
f
(
z
(
i
)
)
=
1
1
+
e
−
z
(
i
)
f(z^{(i)})=\frac{1}{1+e^{-z^{(i)}}}
f(z(i))=1+e−z(i)1;
输出:
y
(
i
)
^
=
f
(
z
(
i
)
)
\widehat{y^{(i)}}=f(z^{(i)})
y(i)
=f(z(i));
那么问题来了,如何来衡量
y
(
i
)
^
\widehat{y^{(i)}}
y(i)
与标签值
y
(
i
)
y^{(i)}
y(i)的近似程度?从而调整
w
w
w和
b
b
b?损失函数就是衡量的方法,来衡量预测输出值和实际值有多接近。
损失函数
在逻辑回归中用到的损失函数是:
L
(
y
^
,
y
)
=
−
y
l
o
g
(
y
^
)
−
(
1
−
y
)
l
o
g
(
1
−
y
^
)
L(\widehat{y},y)=-ylog(\widehat{y})-(1-y)log(1-\widehat{y})
L(y
,y)=−ylog(y
)−(1−y)log(1−y
)为什么要用到这个函数?比如:
我们的最终目的是让
L
(
y
^
,
y
)
L(\widehat{y},y)
L(y
,y)变小,从而表明预测值与实际值相近,上面这个函数就很好的解决了这个问题。
当
y
=
1
y=1
y=1时损失函数
L
(
y
^
,
y
)
=
−
l
o
g
(
y
^
)
L(\widehat{y},y)=-log(\widehat{y})
L(y
,y)=−log(y
),如果想要损失函数
L
L
L尽可能得小,那么
y
^
\widehat{y}
y
就要尽可能大,因为sigmoid函数取值[0,1],所以
y
^
\widehat{y}
y
会无限接近于1。
当
y
=
0
y=0
y=0时损失函数
L
(
y
^
,
y
)
=
−
l
o
g
(
1
−
y
^
)
L(\widehat{y},y)=-log(1-\widehat{y})
L(y
,y)=−log(1−y
),如果想要损失函数
L
L
L尽可能得小,那么
y
^
\widehat{y}
y
就要尽可能小,因为sigmoid函数取值[0,1],所以
y
^
\widehat{y}
y
会无限接近于0。
损失函数是在单个训练样本中定义的,它衡量的是算法在单个训练样本中表现如何,为了衡量算法在全部训练样本上的表现如何,我们需要定义一个算法的代价函数,算法的代价函数是对
m
m
m个样本的损失函数求和然后除以
m
m
m:
J
(
w
,
b
)
=
1
m
∑
i
=
1
m
L
(
y
i
^
,
y
(
i
)
)
=
1
m
∑
i
=
1
m
(
−
y
(
i
)
l
o
g
(
y
(
i
)
^
)
−
(
1
−
y
(
i
)
)
l
o
g
(
1
−
y
(
i
)
^
)
)
J(w,b)=\frac{1}{m}\sum_{i=1}^m{L(\widehat{y^i},y^{(i)})}=\frac{1}{m}\sum_{i=1}^m{(-y^{(i)}log(\widehat{y^{(i)}})-(1-y^{(i)})log(1-\widehat{y^{(i)}}))}
J(w,b)=m1i=1∑mL(yi
,y(i))=m1i=1∑m(−y(i)log(y(i)
)−(1−y(i))log(1−y(i)
))
J
(
w
,
b
)
J(w,b)
J(w,b)函数图如下:
损失函数只适用于像这样的单个训练样本,而代价函数是参数的总代价,所以在训练逻辑回归模型时候,我们需要找到合适的
w
w
w和
b
b
b,来让代价函数
J
J
J的总代价降到最低,代价越低,则
w
w
w和
b
b
b越准确。
关山初度尘未洗,策马扬鞭再奋蹄!