[机器学习] 代价函数(cost function)

前言:代价函数也叫做损失函数,loss function。机器学习中训练模型的过程就是优化代价函数的过程,代价函数对每个参数的偏导数就是梯度下降中的梯度。


1、代价函数的定义


 假设有训练样本(x,y),模型为f,参数为w,f(w)= wTx ,我们需要度量预测值f(w)与真实值y之间的差异,我们将这种差异函数叫做代价函数,如果多个样本,则可以将所有代价函数的取值求平均,计作J(w)。因此我们可以知道代价函数的一些性质:
    1、对于每一种算法,代价函数不是唯一的 ;
    2、代价函数是参数w的函数;
    3、代价函数J(w)衡量着模型的好坏,值越小表示模型和参数越符合样本;
    4、J(w)是一个标量;

 当确定h后,我们需要知道参数w,那么什么样的w是我们想要的呢,也就是模型训练什么时候才结束?我们的做法就是最小化J(w),通过不断改变w获得最小的J(w),即:

minwJ(w)

 优化参数过程中,常用的方法是梯度下降法,需要对J(w)求偏导,那么需要代价函数对w可微。


2、 常用的代价函数


2.1 均方误差

在线性回归中,最常用的是均方误差(Mean squared error),具体形式如下:

J(w0,w1)=12ni=1n(y¯(i)y(i))2=12ni=1n(fw(x(i))y(i))2

2.2 交叉熵

 在逻辑回归中,最常用的代价函数是交叉熵(cross entropy)。《神经网络与深度学习》中的一种解释:

 交叉熵是对「出乎意料」(译者注:原文使用suprise)的度量。神经元的目标是去计算函数y, 且y=y(x)。但是我们让它取而代之计算函数a, 且a=a(x)。假设我们把a当作y等于1的概率,1−a是y等于0的概率。那么,交叉熵衡量的是我们在知道y的真实值时的平均「出乎意料」程度。当输出是我们期望的值,我们的「出乎意料」程度比较低;当输出不是我们期望的,我们的「出乎意料」程度就比较高。
 香农信息量用来度量不确定的大小:一个时间的香农信息量为0,表示该事件的发生不会给我们提供任何新的信息,例如确定性事件的发生,发生的概率为1,发生了也不会引起任何惊讶;当不可能的事情发生时,香农信息量无穷大,表示给我们提供了无穷多的新信息,并且使人无限的惊讶。公式如下:

J(w)=1n[i=1n(y(i)logfw(x(i))+(1y(i))log(1fw(x(i)))]

2.3 神经网络中的代价函数

类似交叉熵函数。。。待续,对数损失函数,指数损失函数,一般损失函数。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想在代码中运行 `costFunction` 函数,你需要先定义好函数所需要的输入参数和输出值。在机器学习中,`costFunction` 通常用于计算模型的损失函数,因此它需要接收模型预测的结果和真实标签,并返回损失值。 以下是一个示例代码,展示了如何定义和调用 `costFunction` 函数: ```python import numpy as np # 定义 costFunction def costFunction(predictions, labels): # 计算预测值和真实值之间的差异 errors = predictions - labels # 计算 MSE 损失函数 mse = np.mean(np.power(errors, 2)) # 返回损失值 return mse # 创建模型预测结果和真实标签 predictions = np.array([1.2, 3.4, 5.6]) labels = np.array([1.0, 3.5, 5.3]) # 调用 costFunction 计算损失 loss = costFunction(predictions, labels) # 输出损失值 print("损失值为:", loss) ``` 在上面的示例中,我们首先定义了 `costFunction` 函数,它接收两个参数 `predictions` 和 `labels`,分别表示模型预测结果和真实标签。函数的实现过程中,我们将预测值和真实值之间的差异计算出来,并使用均方误差(MSE)损失函数计算损失值。最后,函数返回损失值 `mse`。 接着,我们创建了模型预测结果和真实标签,并调用 `costFunction` 函数计算损失。最后,我们将损失值输出到控制台上。 请注意,上面的示例只是一个简单的示例,并不代表所有的 `costFunction` 函数都是这样实现的。在实际应用中,你需要根据具体的问题和模型来实现自己的损失函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值