浅谈代价函数

自己学了一段时间的机器学习和深度学习了,对于代价函数有些自己的浅显认识,现总结如下:

1.代价函数的由来

对于机器学习而言,首先就是找到模型,建立好模型后,这时候需要做的就是找到该模型的解,有了模型如何求解呢,肯定需要找到你要求解的函数吧,这个函数就是目标函数,也就是你要优化的代价函数。当我刚开始接触的时候,产生这样的疑惑,模型是很多方程的组合,直接求解不就行了么,后来我发现有时候无法直接对这些方程求解,需要找到另外的一个函数去对该方程求解。

可能上面我说的不够明白,举个例子解释一下,对于线性回归而言,当你的模型是y=wX+b,此时你有的数据是X,y,此时你要得到w和b,有了w,b后,你再给我x,我就可以给你计算出y来吧。那么该怎么去求解w和b呢,当有一个x和一个y数据时,此时解就很多了,你可以随便拟合,但是当x,y有很多组数据时,怎么才能更好的拟合呢,此时就需要我们去寻找目标函数了,对于线性回归,我们可以把误差平方的平均值当作目标函数即: (m/1)*($y$-y)^2^,一般我们再乘1/2,$y$指的是通过拟合得到的值。对于所有的x,y,只要当这个函数取得的值最小时,此时的w,b就是我们要求的参数,此时拟合效果最好,所以目标函数就是代价函数。

代价意思就是去评估该拟合的效果是怎样的,也就是误差,也叫损失,损失函数指的是一组数据(即单个样本)产生的误差,而代价函数指的是所有样本的损失和的平均值。

而在机器学习中要做的就是对代价函数进行优化,寻找使代价最小的方法,包括基于梯度的优化。这就是我对模型,目标函数,代价函数以及优化目标函数的理解。如果有说的不对的地方,希望可以评论出来,我马上进行修改。

2.代价函数的选择

2.1、线性回归代价函数

一般我们用预测值和实际值的平方差或者他们平方差的一半作为损失函数

2.2、逻辑回归代价函数

但是在做逻辑回归的时候用到的损失函数不用这个,因为在学习线性回归的参数时,优化目标是凸优化,而逻辑回归的不是凸优化,梯度下降法很可能找不到全局最优值。逻辑回归的损失函数是
cost=-ylog$y$-(1-y)log(1-$y$)

==推导过程:最大似然,即负的对数似然==
此时当y=0时,cost=-log(1-$y$),cost尽可能小,那么$y$就要尽可能小,因为逻辑回归中$y$的范围[0,1],所以此时$y$就会无限接近于0,当y等于1时,同样可以发现,此时$y$会无限接近于1。
那么这个损失函数是怎么求的呢?

逻辑回归的$y$指的是p(y=1|x),即在x的条件y取1的概率。那么y取0的概率就是1-$y$.所以换句话说就是(以二分类为例,y只能为0,1):
如果y=1,p(y|x)=$y$
如果y=0,p(y|x)=1-$y$

可以把这两个条件概率公式进行合并:

p(y|x)=$y$^y^(1-$y$)^(1-y)^ (该公式的推导可以自己推导证明下其正确性)

扫描二维码关注公众号,回复: 8231485 查看本文章

对于逻辑回归我们的目标:以最大的概率去预测这个值(也就是预测可以达到y值的概率)
所以我们要做的就是去优化 $y$^y^(1-$y$)^(1-y)^ 达到最大值,在这取下log,因为log是单调递增的函数

所以变为了求 log($y$^y^(1-$y$)^(1-y)^) 的最大值

转化一下变为ylog$y$+(1-y)log(1-$y$)

这时候发现这就是上面提到的代价函数的负值,因为我们是要使代价最小,所以给该函数加个负号就变成了损失函数即

cost=-ylog$y$-(1-y)log(1-$y$)

这仅仅是在一个样本的条件下,在m个样本时呢,当所有的样本服从同一分布并且相互独立(可以理解为参数相同,各个样本间不相互影响),那么这些样本的联合概率(所有样本同时发生的概率即p{y1|x1,y2|x2....})就是每个样本概率的乘积:

$\prod_{i=0}^m$ p(y^(i)^|x^(i)^)

此时我们的目标就转化成求该式的最大值,然后进行取log得到
log $\prod_{i=0}^m$ p(y^(i)^|x^(i)^)

此时转变为求该式最大值,该式可以转变成如下形式

$\sum_{i=0}^m$ log (p(y^(i)^|x^(i)^))

根据上面对单个样本损失函数的推导结果,使其转化变为代价函数的形式,最终变为了

$\sum_{i=0}^m$ - (y^(i)^log$y$^(i)^+(1-y^(i)^)log(1-$y$^(i)^))
(因为训练模型时,目标是让代价函数最小化,所以间接使用最大似然,加了一个负号)
通常最后对成本函数进行适当的放缩,即最终的代价函数为:

J=(1/m)$\sum_{i=0}^m$ - (y^(i)^log$y$^(i)^+(1-y^(i)^)log(1-$y$^(i)^))

注:
最大似然估计:即求出一组参数,使某个式子取得最大值。

2.3、神经网络代价函数

其实神经网络代价函数一般和上面的两个代价函数相同,取决于你的模型,如果做回归就采用线性回归形式的代价函数,如果做分类就选择逻辑回归形式的代价函数。

3.正则化的代价函数

对于采取了正则化的代价函数,实际上就是在未正则化的代价函数后面加上一个正则项,使权重衰减。对于该正则项可以选择L1范数,L2范数等,此处不再深入讨论。

又到一点半了,程序还没debug,希望看到这的你留下一个赞,您的点赞就是我前行的最大动力。

猜你喜欢

转载自www.cnblogs.com/day-stay-hungry/p/12060630.html