浅谈代价函数

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

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就是咱们要求的参数,此时拟合效果最好,因此目标函数就是代价函数。学习

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

而在机器学习中要作的就是对代价函数进行优化,寻找使代价最小的方法,包括基于梯度的优化。这就是我对模型,目标函数,代价函数以及优化目标函数的理解。若是有说的不对的地方,但愿能够评论出来,我立刻进行修改。debug

2.代价函数的选择

2.一、线性回归代价函数

通常咱们用预测值和实际值的平方差或者他们平方差的一半做为损失函数深度学习

2.二、逻辑回归代价函数

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

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

逻辑回归的$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)^ (该公式的推导能够本身推导证实下其正确性)

对于逻辑回归咱们的目标:以最大的几率去预测这个值(也就是预测能够达到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.正则化的代价函数

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

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

相关文章
相关标签/搜索