损失函数、代价函数、目标函数

Q:机器学习中的损失函数、代价函数、目标函数有什么联系和区别?

A:在监督学习中,损失函数用来评估模型的预测值和真实值不一致的程度。简单理解损失函数、代价函数、目标函数有这样的区别:

  • 损失函数 |y_i-f(x_i)|,一般是针对单个样本,算的是一个样本的误差
  • 代价函数 \frac{1}{N}\sum_{i=1}^{N}|y_i-f(x_i)|,一般是针对整个训练集上,是所有样本误差的平均,也就是损失函数的平均,也被称作 经验风险最小化函数
  • 目标函数 \frac{1}{N} \sum_{i=1}^{N}|y_i-f(x_i)| + 正则项,也被称作 结构风险最小化函数

常见的损失函数

  1. 0-1损失函数

    L(Y,f(x))=\left\{\begin{matrix} 1, & Y\neq f(x) & 不等则loss为1 \\ 0, & Y=f(x) & 相等则loss为0 \end{matrix}\right.

    一般在实际使用过程中,相等的条件过于严格,可适当放宽条件

    L(Y,f(x))=\left\{\begin{matrix} 1, & |Y - f(x)| \geqslant T & \\ 0, & |Y - f(x)| < T & \end{matrix}\right.

  2. 绝对值损失函数

    L(Y,f(x))=|Y-f(x)|

  3. 平方损失函数

    L(Y,f(x))=\sum_N(Y-f(x))^2

    可以从最小二乘法和欧氏距离理解。最小二乘法的原理是,最优拟合曲线应该使所有点到回归直线的距离和最小。

  4. 对数损失函数

    L(Y,P(Y|X))=-logP(Y|X)=-\frac{1}{N}\sum_{i=1}^N\sum_{j=1}^{M}y_{i,j}log(p_{ij})

    p_{ij}表示模型或分类器预测输入实例x_i属于j的概率。常见的逻辑回归使用的就是对数损失函数。逻辑回归假设样本服从伯努利分布(0-1分布),求得满足该分布的似然函数,接着取对数求极值。逻辑回归推导出的经验风险最小化负的似然函数,从损失函数的角度看,就是对数损失函数,形式上等价于二分类的交叉熵损失函数。

  5. Hinge损失函数

    L(y)=max(0, 1-ty)

    统一的形式:

    L(Y,f(x))=max(0,Yf(x))

    在支撑向量机中的损失函数就是Hinge损失函数

  6. 指数损失函数

    L(Y,f(x))=exp(-Yf(x))

    AdaBoost就是以指数损失函数为损失函数

常见代价函数

  1. 二次代价函数

    J=\frac{1}{2n}\sum_x||y(x)-a^L(x)||^2

    使用梯度下降(Gradient descent)来调整权值参数的大小,权重\omega和偏置b的梯度:

    \frac{\partial J}{\partial \omega}=(y-a){\sigma}'(z)x ,\ \frac{\partial J}{\partial b}=(y-a){\sigma}'(z)

    权重\omega和偏置b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,权重和偏置的大小调整得越快,训练收敛得就越快

  2. 交叉熵代价函数

    J=-\frac{1}{n}\sum_x[y\ln{a}+(1-y)\ln{(1-a)}]

    权重\omega和偏置b的梯度:

    \frac{\partial J}{\partial \omega_j}=\frac{1}{n}\sum_xx_j(\sigma(z)-y),\ \frac{\partial J}{\partial b}=\frac{1}{n}\sum_x(\sigma(z)-y)

    当误差越大时,梯度就越大,权重和偏置调整得越快,训练速度也就越快

    二次代价函数适合输出神经元是线性的情况,交叉熵代价函数适合输出神经元是S型函数的情况

  3. 对数似然代价函数

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容