神经网络中常见的损失函数

神经网络中常见的损失函数

损失函数用来评价模型的预测值真实值不一样的程度,损失函数越好,通常模型的性能越好。不同的模型用的损失函数一般也不一样。

损失函数分为经验风险损失函数结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是指经验风险损失函数加上正则项。一般用于防止过拟合,模型越复杂,其正则项的值就越大,相应的结构化风险损失函数的值就越大,相应的损失就越大。

常见的损失函数以及其优缺点如下:

0-1 损失函数(Zero-One Loss)

0-1损失是指预测值和目标值不相等为1, 否则为0:

$$
L ( Y , f ( X ) ) = \left \lbrace
\begin{align}
1 , & \qquad Y \neq f ( X ) \\
0 , & \qquad Y = f ( X )
\end{align}
\right.
$$

特点:

(1)0-1 损失函数直接对应分类判断错误的个数,但是它是一个非凸函数,不太适用.

(2)感知机就是用的这种损失函数。但是相等这个条件太过严格,因此可以放宽条件,即满足$|Y - f(x)| < T$时认为相等,

$$
L ( Y , f ( X ) ) = \left \lbrace
\begin{align}
1 , & \qquad | Y - f ( X ) | \ge T \\
0 , & \qquad| Y - f ( X ) | < T
\end{align}
\right.
$$

绝对值损失函数

绝对值损失函数是计算预测值与目标值的差的绝对值:

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

log 对数损失函数

log 对数损失函数的标准形式如下:

$$
L(Y, P(Y|X)) = -\log P(Y|X)
$$

特点:

  1. log 对数损失函数能非常好的表征概率分布,在很多场景尤其是多分类,如果需要知道结果属于每个类别的置信度,那它非常适合。
  2. 健壮性不强,相比于 hinge loss 对噪声更敏感。
  3. 逻辑回归的损失函数就是 log 对数损失函数。

平方损失函数

平方损失函数标准形式如下,经常应用与回归问题。

$$
L ( Y | f ( X ) ) = \sum _ { N } ( Y - f ( X ) ) ^ { 2 }
$$

指数损失函数(exponential loss)

指数损失函数的标准形式如下,对离群点、噪声非常敏感。经常用在 AdaBoost 算法中。

$$
L(Y|f(X)) = \exp[-yf(x)]
$$

Hinge 损失函数

Hinge 损失函数标准形式如下:

$$
L(y, f(x)) = \max(0, 1-yf(x))
$$

特点:

  1. hinge 损失函数表示如果被分类正确,损失为 0,否则损失就为$1-yf(x)$ 。SVM就是使用这个损失函数。
  2. 一般的 [公式] 是预测值,在-1 到 1 之间,$y$ 是目标值(-1 或 1)。其含义是,$f(x)$的值在-1 和+1 之间就可以了,并不鼓励 $|f(x)| > 1$,即并不鼓励分类器过度自信,让某个正确分类的样本距离分割线超过 1 并不会有任何奖励,从而使分类器可以更专注于整体的误差。
  3. 健壮性相对较高,对异常点、噪声不敏感,但它没太好的概率解释。

感知损失(perceptron loss)函数

感知损失函数的标准形式如下:

$$
L(y, f(x)) = max(0, -f(x))
$$

特点:

是 Hinge 损失函数的一个变种,Hinge loss 对判定边界附近的点(正确端)惩罚力度很高。而 perceptron loss 只要样本的判定类别正确的话,它就满意,不管其判定边界的距离。它比 Hinge loss 简单,因为不是 max-margin boundary,所以模型的泛化能力没 hinge loss 强。

交叉熵损失函数 (Cross-entropy loss function)

交叉熵损失函数的标准形式如下:

$$
C = - \frac { 1 } { n } \sum _ { x } [ y \ln a + ( 1 - y ) \ln ( 1 - a ) ]
$$

注意公式中$x$表示样本, $y$表示实际的标签,$a$表示预测的输出,$n$表示样本总数量。

特点:

  1. 本质上也是一种对数似然函数,可用于二分类和多分类任务中。
  • 二分类问题中的 loss 函数(输入数据是 softmax 或者 sigmoid 函数的输出):

$$
loss = - \frac { 1 } { n } \sum _ { x } [ y \ln a + ( 1 - y ) \ln ( 1 - a ) ]
$$

  • 多分类问题中的 loss 函数(输入数据是 softmax 或者 sigmoid 函数的输出):

$$
loss = - \frac{1}{n} \sum_i y_i \ln a_i
$$

  1. 当使用 sigmoid 作为激活函数的时候,常用交叉熵损失函数而不用均方误差损失函数,因为它可以完美解决平方损失函数权重更新过慢的问题,具有“误差大的时候,权重更新快;误差小的时候,权重更新慢”的良好性质。

评论

Agile Angularjs Animation Application Artificial Intelligence BP Babel Bokeh Book C4.5 CART CD CLI CSS CentOS CheetSheet Cinder Clipboardjs Concept Continuous Delivery DeepLearning Department DevOps Develop Development Directive Distribution Django Document ECMA ELU ES5 ES6 ES7 Echarts Engine Entropy Filter Front End GELU Gallery Git Gradient descent Hexo Horizon ID3 ID3.5 Icarus JavaScript Javascript KVM LaTeX LeetCode LibreOffice Linux Logestic MNIST Machine Learning Mathematics Matrix MiddleWare Module Native Network Nginx NodeJS Numpy OOP OpenSSH OpenStack OpenStackApi Operations Oprations PDF PLA Pandas Pipline Probability Python ReLU React Relational algebra Restful Route SVD SVM Scalar Sigmoid SoftPlus Swish Team Tempest Tensor TensorFlow Testing Time TimeMachine Tips Vector Vmware Vue Vuex WSGI Web Word Cut aliyun auth babel certbot cost function debounce decision tree dns docker dockerfile eject error function footer git header homebrew html5 http https jupyter jwt keystone lab loader lodash loss function mathematics migrate nav openstack outline pdf2html pm2 proto prototype python replace request response rp rt ruby scikit-learn section singular value decomposition sklearn stylus tanh throttle url vue-router vue-ssr webpack 事件 事件代理 事件冒泡 事件捕获 位运算 低通滤波器 入门 全局 全局变量 全局对象 全栈 公式 决策树 几何意义 函数 分类器 剪枝 加速 动态变量 匹配滤波边缘检测 卷积 卷积核 原型链 双向绑定 反向传播 发布 变量类型 可视化 基尼指数 官方示例 对偶形式 对象 小技巧 平移和查分边缘检测 思维导图 感知机模型 手动实现 拉格朗日乘子法 推导 提交阶段 数据 数据绑定 最大似然估计 最小二乘估计 最小二乘回归树 最小二乘法 本地 朴素贝叶斯 朴素贝叶斯算法 机器学习 条件概率 标签模板 梯度下降 梯度方向边缘检测 概念 概率 模板字符 模板字符串 正则 求导 流程 源码 源码阅读 激活函数 灰度 特征值 特征向量 特征工程 生命周期 矩阵 神经元 神经网络 私有对象 科学计算 算法 算法实现 线性代数 线性回归 编译 缺失 联合概率 脚手架 识别 调试 贝叶斯 贝叶斯判定准则 边缘检测 边际概率 闭包 间隔 防抖动 限流 随机森林 高斯分布 高通滤波器
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×