代价函数
代价函数,在训练逻辑回归模型中需要有个评判标准,让我知道模型参数是多少的时候,模型最优。值得注意的是代价函数是针对整个训练集样本的误差平均。一个好的代价函数需要满足两个最基本的要求:能够评价模型的准确性,对参数θ可微。
就比如假设现在有好多个
(
x
,
y
)
(x,y)
(x,y),把
x
,
y
x,y
x,y的关系定义为:
h
(
x
)
=
θ
0
x
+
θ
1
h(x) = \theta_0x + \theta_1
h(x)=θ0?x+θ1?如何找到最合适的
θ
0
,
θ
1
\theta_0, \theta_1
θ0?,θ1?,那就是把每个
(
x
,
y
)
(x,y)
(x,y)代入公式,不要太离谱,取一个各方面都能接受的结果,那就是下面这个公式,最小就好了。
J
(
θ
0
,
θ
1
)
=
1
m
∑
i
=
1
m
(
h
(
x
(
i
)
)
?
y
(
i
)
)
2
J(\theta_0, \theta_1) = \frac{1}{m}\sum_{i=1}^m(h(x^{(i)})-y^{(i)})^2
J(θ0?,θ1?)=m1?i=1∑m?(h(x(i))?y(i))2就是求方程最小解,求偏导,让偏导等于零,可以求出来。在设计代价函数的时候要有下界就好,可以让目标函数逐渐收敛,非负就更为方便。但是有的时候代价函数比较复杂,直接求难度太高,于是人们发明了梯度下降的方法,一步步去找最小值,梯度下降,也就是找到让函数最小时所对应的自变量。
- 均方误差
J
=
1
2
n
∑
x
∥
y
(
x
)
?
a
L
(
x
)
∥
2
J = \frac{1}{2n}\sum_x\Vert y(x)-a^L(x)\Vert^2
J=2n1?x∑?∥y(x)?aL(x)∥2 - 交叉熵
?
J
?
w
j
=
1
n
∑
x
x
j
(
σ
(
z
)
?
y
)
??
,
?
J
?
b
=
1
n
∑
x
(
σ
(
z
)
?
y
)
\frac{\partial J}{\partial w_j}=\frac{1}{n}\sum_{x}x_j(\sigma{(z)}-y)\;, \frac{\partial J}{\partial b}=\frac{1}{n}\sum_{x}(\sigma{(z)}-y)
?wj??J?=n1?x∑?xj?(σ(z)?y),?b?J?=n1?x∑?(σ(z)?y)
损失函数
我是这样理解的,我们送进模型的样本,肯定不止一个两个,一定是成千上万的,最终最理想的结果是,我找出一个最OK的模型,满足这些样本的误差和最小。但是随之而来的就是代价函数会变得相当复杂,不易求解。损失函数是定义在单个样本上的,算的是一个样本的误差。可以看成是个局部的代价函数吧。
-
0-1损失函数
L
(
Y
,
f
(
x
)
)
=
{
1
,
∣
Y
?
f
(
x
)
∣
?
T
0
,
∣
Y
?
f
(
x
)
∣
<
T
L(Y, f(x)) = \begin{cases} 1,& |Y-f(x)|\geqslant T\\ 0,& |Y-f(x)|< T \end{cases}
L(Y,f(x))={1,0,?∣Y?f(x)∣?T∣Y?f(x)∣<T? -
绝对值损失函数
L
(
Y
,
f
(
x
)
)
=
∣
Y
?
f
(
x
)
∣
?
L(Y, f(x)) = |Y-f(x)|?
L(Y,f(x))=∣Y?f(x)∣? -
对数损失函数
L
(
Y
,
P
(
Y
∣
X
)
)
=
?
log
?
P
(
Y
∣
X
)
=
?
1
N
∑
i
=
1
N
∑
j
=
1
M
y
i
j
l
o
g
(
p
i
j
)
L(Y, P(Y|X)) = -\log{P(Y|X)}=-\frac{1}{N}\sum_{i=1}^N\sum_{j=1}^M y_{ij}log(p_{ij})
L(Y,P(Y∣X))=?logP(Y∣X)=?N1?i=1∑N?j=1∑M?yij?log(pij?) 形式上等价于二分类的交叉熵损失函数。 -
平方损失函数
L
(
Y
,
f
(
x
)
)
=
∑
N
(
Y
?
f
(
x
)
)
2
L(Y, f(x)) = \sum_N{(Y-f(x))}^2
L(Y,f(x))=N∑?(Y?f(x))2 -
指数损失函数
L
(
Y
,
f
(
x
)
)
=
exp
?
(
?
Y
f
(
x
)
)
L(Y, f(x)) = \exp(-Yf(x))
L(Y,f(x))=exp(?Yf(x)) -
Hinge损失函数
L
(
y
)
=
max
?
(
0
,
1
?
t
y
)
L(y) = \max{(0, 1-ty)}
L(y)=max(0,1?ty)
|