美文网首页
各种损失函数深入解析

各种损失函数深入解析

作者: ZeroZone零域 | 来源:发表于2018-10-22 19:36 被阅读0次

常用损失函数及其形式

损失函数 形式
评分损失

各个损失函数详细解析

绝对值损失

别名 L_1 损失

平方损失:

平方损失的别名是 L_2 损失

平方损失函数是由线性模型引出的. 对于最简单的线性模型, 可以用房屋面积和房屋价格来举例子, 假设我们已经知道了一些面积和价格的数据:

image

将其描绘出来如下图所示:

image

那么, 如果新来了一个面积, 我们能否根据已有的数据来预测它的价格, 这就是线性回归问题. 我们利用一条直线来拟合这些数据, 从而可以得到预测的价格, 如下图所示:

image

将这种最简单的线性回归一般化, 使其成为具有多个变量的线性模型, 就可以用向量的形式来表达, 如下所示:

h_\theta (x) = \theta ^Tx

对于上面的公式, 我们就可以求出多个不同的 \theta, 来得到不同的模型, 但是我们需要知道到底哪些模型是好的, 哪些是不好的, 因此, 就需要引入了评价机制来判断当前的参数 \theta 是好还是坏, 这就引出了平方误差损失函数, 如下所示:

J(\theta) = \frac{1}{2} \sum_{i=1}^{m}{(h_\theta(x^{(i)}) - y^{(i)})^2}

这个公式本身非常好理解, 就是希望我们当前模型的参数 \theta 可以让模型的输出结果与真实结果无限逼近. 但是问题是:

为什么是平方形式? 对此,数学解释如下:

一句话说明: 平方损失函数就是对theta的极大似然估计

首先, 预测结果和真实结果之间肯定是有误差的, 我们假设这个误差是 \epsilon ^{(i)} , 那么就有如下公式:

y^{(i)} = \theta ^T x^{(i)} + \epsilon ^{(i)}

而一般在实际使用中, 我们的训练数据是海量的, 根据中心极限定力, 我们可以假定误差满足均值为0, 方差为 \sigma ^2 的正态分布, 即 \epsilon^{(i)} \sim N(0, \sigma ^2) :

p(\epsilon^{(i)}) = \frac{1}{\sqrt {2 \pi } \sigma }exp(-\frac{(\epsilon^{(i)})^2}{2 \sigma ^2})

这也就是说:

p(y^{(i)} | x^{(i)};\theta) = \frac{1}{\sqrt {2 \pi } \sigma }exp(-\frac{(y^{(i)} - \theta ^T x^{(i)})^2}{2 \sigma ^2})

p(y^{(i)} | x^{(i)};\theta) 代表在给定的 x^{(i)} 和参数 \theta 下, y^{(i)}的分布概率, 这可以看做是在给定的 \theta 一个关于 yx 的函数. 与之相对的,我们也可以将其视为是关于参数 \theta 的函数,如下所示:

L(\theta) = L(\theta ; X, \vec y) = p(\vec y | X; \theta)

注意到, \epsilon^{(i)} , y^{(i)} , x^{(i)} 都是独立同分布的, 因此, 根据极大似然定理, 我们希望下面的式子能够取得最大值(也就是在给定数据的情况下, 我们希望找到一组参数 \theta , 来使这些数据出现的概率最大, 也就是概率积最大)

L(\theta) = \prod_{i=1}^{m}{p(y^{(i)} | x{(i)} ; \theta)} = \prod_{i=1}^{m}{\frac{1}{\sqrt{2\pi} \sigma} exp\Big( -\frac{ (y^{(i)} - \theta ^T x^{(i)})^2}{2\sigma ^2} \Big)}

为方便计算, 对上式取对数, 可得:

l(\theta) = log L(\theta) = log\prod_{i=1}^{m}{\frac{1}{\sqrt{2\pi} \sigma} exp\Big( -\frac{ (y^{(i)} - \theta ^T x^{(i)})^2}{2\sigma ^2} \Big)} = \sum_{i=1}^{m} log \frac{1}{sqrt{2\pi} \sigma} exp\Big( -\frac{(y^{(i)} - \theta ^T x^{(i)})^2}{2\sigma ^2} \Big) = mlog\frac{1}{\sqrt{2\pi} \sigma} - \frac{1}{\sigma ^2}\times \frac{1}{2}\sum_{i=1}^{m}(y^{(i)} - \theta ^T x^{(i)})^2

为了让上面的式子取值最大, 那我们就只需要令下面的式子取值最小即可:

\frac{1}{2} \sum_{i=1}^{m} ( y^{(i)} - \theta ^T x^{(i)}) ^2

上面的形式恰好就是我们的平方误差损失函数(通常还需要对上面的损失函数做归一化, 也就是乘上 \frac{1}{m} ), 这也是平方误差损失函数的来源. (但实际上, 要知道, 基于概率假设来说, 不一定非要是平方项, 另外, 无需在意 \sigma 的具体值是什么)

softmax 交叉熵损失

y_i = softmax(z_j) = \frac{e^{z_j}}{\sum_j e^{z_j}}

E(t,y) = -\sum_j t_j log y_j

上式中, ty 分别表示神经网络的真实标签和预测输出, 第一个公式代表 softmax 激活函数.

交叉熵损失

首先定义符号说明:

  • p^{(i)}: 第i个样本类别为1的真实概率(如第i个样本真实类别为1, 则概率为1, 否则为0)
  • o^{(i)}: 第i个样本预测类别为1的概率
  • p_k^{(i)}: 第i个样本类别为k的真实概率(如第i个样本真实类别为k, 则概率为1, 否则为0)
  • o_k^{(i)}: 第i个样本预测类别为k的概率

面对二分类问题, 损失函数形式为:

J(W,b) = -\Big[\frac{1}{m} \sum_{i=1}{m}\big(y^{(i)}logo^{(i)} + (1-y^{(i)})log(1-o^{(i)}) \big) \Big]

面对多分类问题, 损失函数形式为:
J(W,b) = -\Big[\frac{1}{m} \sum_{i=1}^{m} \sum_{k=1}^{n} y_k^{(i)} log o_k^{(i)} \Big]

交叉熵衡量了两个分布之间的差异性, 当概率相等时, 交叉熵最大, 则损失函数达到最小(因为加了负号)

损失函数之间的区别和联系

为什么分类问题要使用交叉熵损失而不用平方损失?

相关文章

  • 各种损失函数深入解析

    常用损失函数及其形式 各个损失函数详细解析 绝对值损失 别名 损失 平方损失: 平方损失的别名是 损失 平方损...

  • 【AlexeyAB DarkNet框架解析】九,YOLOV3损失

    前言 前面已经讲完了YOLOV1/V2的损失函数代码解析,今天为大家带来YOLOv3的损失函数解析。YOLOV3的...

  • 各种损失函数详解

    1. 损失函数、代价函数与目标函数 损失函数(Loss Function):是定义在单个样本上的,是指一个样本的误...

  • tensorflow--各种损失函数

    来源:tensorflow学习笔记(三):损失函数 sparse_softmax_cross_entropy_wi...

  • 损失函数选择

    机器学习算法中最终优化的为模型的损失函数,而损失函数各种各样,对于不同的模型,选择什么样的损失函数才比较合适。本文...

  • 机器学习:常见的损失函数

    损失函数简要介绍 0-1损失 绝对值损失 log对数损失函数 平方损失函数 指数损失函数 Hinge损失函数 损失...

  • (4)损失函数

    损失函数用来表示输出与实际值的差距。常用的损失函数为0-1损失函数、平方损失函数、绝对损失函数、对数损失函数、交叉...

  • 【深度学习】

    1, 两个重要的函数:得分函数和损失函数损失函数: hinge损失,softmax 损失。hinge损失: max...

  • Lecture 4 介绍神经网络

    我们已知梯度计算有数值法和解析式法,当损失函数非常复杂时我们可能无法直接写出损失函数L对参数W的梯度计算表达式,所...

  • 损失函数概述

    常用的损失函数 1.L1损失(绝对损失函数) 和 L2 损失(平方损失函数) L1范数损失函数,也被称为 最小绝对...

网友评论

      本文标题:各种损失函数深入解析

      本文链接:https://www.haomeiwen.com/subject/ibfnzftx.html