损失函数

深度学习-最优化笔记

徘徊边缘 提交于 2019-12-27 17:29:29
作者:杜客 链接:https://zhuanlan.zhihu.com/p/21360434 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 译者注:本文 智能单元 首发,译自斯坦福CS231n课程笔记 Optimization Note ,课程教师 Andrej Karpathy 授权翻译。本篇教程由 杜客 翻译完成, 堃堃 和 李艺颖 进行校对修改。译文含公式和代码,建议PC端阅读。 原文如下 内容列表: 简介 损失函数可视化 最优化 策略#1:随机搜索 策略#2:随机局部搜索 策略#3:跟随梯度 译者注:上篇截止处 梯度计算 使用有限差值进行数值计算 微分计算梯度 梯度下降 小结 简介 在上一节中,我们介绍了图像分类任务中的两个关键部分: 基于参数的 评分函数。 该函数将原始图像像素映射为分类评分值(例如:一个线性函数)。 损失函数 。该函数能够根据分类评分和训练集图像数据实际分类的一致性,衡量某个具体参数集的质量好坏。损失函数有多种版本和不同的实现方式(例如:Softmax或SVM)。 上节中,线性函数的形式是 ,而SVM实现的公式是: 对于图像数据 ,如果基于参数集 做出的分类预测与真实情况比较一致,那么计算出来的损失值 就很低。现在介绍第三个,也是最后一个关键部分: 最优化Optimization

cs231n笔记(二) 最优化方法

佐手、 提交于 2019-12-27 17:29:20
回顾上一节中,介绍了图像分类任务中的两个要点: 假设函数。 该函数将原始图像像素映射为分类评分值。 损失函数 。该函数根据分类评分和训练集图像数据实际分类的一致性,衡量某个具体参数集的质量好坏。 现在介绍第三个要点,也是最后一个关键部分: 最优化Optimization 。最优化是寻找能使得损失函数值最小化的参数 W 的过程,一旦理解了这三个部分是如何相互运作的,我们将会回到第一个要点,然后将其拓展为一个远比线性函数复杂的函数:首先是神经网络,然后是卷积神经网络。而损失函数和最优化过程这两个部分将会保持相对稳定。 损失函数可视化 : 本节讨论的损失函数一般都是定义在高维度的空间中(比如,在 CIFAR-10 中一个线性分类器的权重矩阵大小是 $[10 \times 3073]$ ,就有 30730 个参数),这样要将其可视化就很困难。然而办法还是有的,在 1 个维度或者 2 个维度的方向上对高维空间进行切片,就能得到一些直观感受。例如,随机生成一个权重矩阵 W ,将其看做向量,该矩阵就与高维空间中的一个点对应。然后沿着某个维度方向前进的同时记录损失函数值的变化。换句话说,就是生成一个随机的方向 $W_1$ 并且沿着此方向计算损失值,计算方法是根据不同的 $a$ 值来计算 $L(W + aW_1)$ 。这个过程将生成一个图表,其 $x$ 轴是 $a$ 值,$y$ 轴是损失函数值

Tutorial教程:机器/深度学习中的损失函数(loss function)

拟墨画扇 提交于 2019-12-26 19:39:41
机器/深度学习中的损失函数(loss function) 机器学习大部分的算法都有希望最大化/最小化一个函数/指标,这个函数被称为「目标函数(Object function)」(如果修过最佳化理论对这个名词应该不陌生,整本书都在讲这个),比如K-means群集分析就是希望「最小化群内的资料和群心的误差平方和」,PCA则是希望「投影向量让投影后的资料变异量最大化」。不同的演算法用到的假设都不太一样,所以目标函数都不一样。人工智慧(几乎都是深度学习)用到的目标函数基本上都是「损失函数(loss function)」,而模型的好坏有绝大部分的因素来至损失函数的设计。 损失函数基本上可以分成两个面向(分类和回归),基本上都是希望最小化损失函数。 本篇文章将介绍 1.「什么叫做损失函数为什么是最小化」 2.回归常用的损失函数:均方误差(Mean square error,MSE)和平均绝对值误差(Mean absolute error,MAE),和这两个方法的优缺点。 3.分类问题常用的损失函数:交叉熵(cross-entropy)。 什么叫做损失函数跟为什么是最小化 在回归的问题中,我们通常希望模型很棒,预测出来的东西可以跟实际的值一样。但现实是不可能预测出的值跟实际值是一样的,预测出来的东西基本上跟实际值都会有落差,这个落差在统计上称为「残差(residual)」。 换个角度解释

激活函数和损失函数

ぃ、小莉子 提交于 2019-12-26 04:19:58
原文地址 激活函数和损失函数 这一部分来探讨下激活函数和损失函数。在之前的logistic和神经网络中,激活函数是sigmoid, 损失函数是平方函数。但是这并不是固定的。事实上,这两部分都有很多其他不错的选项,下面来一一讨论 激活函数和损失函数 激活函数 关于激活函数,首先要搞清楚的问题是,激活函数是什么,有什么用?不用激活函数可不可以?答案是不可以。激活函数的主要作用是提供网络的非线性建模能力。如果没有激活函数,那么该网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网络跟单层神经网络也是等价的。因此也可以认为,只有加入了激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。 那么激活函数应该具有什么样的性质呢? 可微性: 当优化方法是基于梯度的时候,这个性质是必须的。 单调性: 当激活函数是单调的时候,单层网络能够保证是凸函数。 输出值的范围: 当激活函数输出值是 有限 的时候,基于梯度的优化方法会更加 稳定,因为特征的表示受有限权值的影 响更显著;当激活函数的输出是 无限 的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的learning rate 从目前来看,常见的激活函数多是分段线性和具有指数形状的非线性函数 sigmoid f(x)=11+e−xf(x)=\frac{1}{1+e^{−x}} f ( x ) = 1 + e − x 1 ​

强化学习(9):TRPO、PPO以及DPPO算法

拟墨画扇 提交于 2019-12-22 11:42:13
本文主要讲解有关 TRPO算法、PPO 算法、PPO2算法以及 DPPO 算法的相关内容。 一、PPO 算法 PPO(Proximal Policy Optimization) 是一种解决 PG 算法中学习率不好确定的问题的算法,因为如果学习率过大,则学出来的策略不易收敛, 反之,如果学习率太小,则会花费较长的时间。PPO 算法利用新策略和旧策略的比例,从而限制了新策略的更新幅度,让 PG 算法对于稍微大一点的学习率不那么敏感。 为了判定模型的更新什么时候停止,所以 PPO 在原目标函数的基础上添加了 KL 散度部分,用来表示两个分布之间的差别,差别越大值越大,惩罚也就越大。所以可以使两个分布尽可能的相似。PPO 算法的损失函数如下: J P P O θ ′ ( θ ) = J θ ′ ( θ ) − β K L ( θ , θ ′ ) J_{PPO}^{\theta'}(\theta)=J^{\theta'}(\theta)-\beta KL(\theta,\theta') J P P O θ ′ ​ ( θ ) = J θ ′ ( θ ) − β K L ( θ , θ ′ ) J θ ′ ( θ ) = E ( s t , a t ) ∼ π θ ′ [ p θ ( a t ∣ s t ) p θ ′ ( a t ∣ s t ) A θ ′ ( s t , a t ) ] J

SSD目标检测损失函数multibox loss pytorch源码详解 - 样本不均衡问题解决

拜拜、爱过 提交于 2019-12-22 11:10:56
最近做大作业,用到了目标检测算法,要解决样本不均衡的问题。 样本不均衡除了数据扩增外,在损失函数上,容易想到,对于数目较少的类别,当检测类别错误时将惩罚加倍。这里从multibox loss下手,关于它的计算公式不再赘述,已有许多原理解析,写的相当不错。要来解析的是它的源码。 其实已有许多自称源码解析,但是对于重要的部分讲解并不是很详细。。甚至翻译了一下注释就略过了。。。囧 以下注解集合了各路神仙的帮助,以及一些个人理解,在此感谢某知乎作者(忘记叫啥了 和另一位CSDN博主。 以下代码包含了一小段解决样本不均衡问题的部分,因为本人其实是写java的。。所以python写的可能比较丑,另外直接取了第一个标签,因为不知道多标签的时候应该怎么样的。。。所以对一张图有多个标注的可能还需要另外处理。 多说几句,Tensor的很多语法一开始真的是难住了我这个python 0基础,比如一个Tensor 方括号中包含了另一个Tensor 和0比较的结果,之类的,一些很迷的操作,可能会有一些阻碍,解决方法就是多试试,然后就会发现,哦,原来这个操作是这样子的。 各位,共勉。 def forward(self, predictions, targets): """Multibox Loss Args: predictions (tuple): A tuple containing loc preds,

交叉熵损失函数和均方误差损失函数

泪湿孤枕 提交于 2019-12-21 20:11:08
交叉熵 分类问题中,预测结果是(或可以转化成)输入样本属于n个不同分类的对应概率。比如对于一个4分类问题,期望输出应该为 g0=[0,1,0,0] ,实际输出为 g1=[0.2,0.4,0.4,0] ,计算g1与g0之间的差异所使用的方法,就是损失函数,分类问题中常用损失函数是交叉熵。 交叉熵( cross entropy )描述的是两个概率分布之间的距离,距离越小表示这两个概率越相近,越大表示两个概率差异越大。对于两个概率分布 p 和 q ,使用 q 来表示 p 的交叉熵为: 由公式可以看出来,p 与 q 之间的交叉熵 和 q 与 p 之间的交叉熵不是等价的。上式表示的物理意义是使用概率分布 q 来表示概率分布 p 的困难程序,q 是预测值,p 是期望值。 神经网络的输出,也就是前向传播的输出可以通过Softmax回归变成概率分布 ,之后就可以使用交叉熵函数计算损失了。 交叉熵一般会跟Softmax一起使用,在tf中对这两个函数做了封装,就是 tf.nn.softmax_cross_entropy_with_logits 函数,可以直接计算神经网络的交叉熵损失。 cross_entropy = tf.nn.softmax_cross_entropy_with_logits(y, y_) 其中 y 是网络的输出,y_ 是期望输出。 针对分类任务中,正确答案往往只有一个的情况

一文搞懂交叉熵损失

痞子三分冷 提交于 2019-12-20 06:12:42
本文从信息论和最大似然估计得角度推导交叉熵作为分类损失函数的依据。 从熵来看交叉熵损失 信息量 信息量来衡量一个事件的不确定性,一个事件发生的概率越大,不确定性越小,则其携带的信息量就越小。 设 \(X\) 是一个离散型随机变量,其取值为集合 \(X = {x_0,x_1,\dots,x_n}\) ,则其概率分布函数为 \(p(x) = Pr(X = x),x \in X\) ,则定义事件 \(X = x_0\) 的信息量为: \[ I(x_0) = -\log(p(x_0)) \] 当 \(p(x_0) = 1\) 时,该事件必定发生,其信息量为0. 熵 熵用来衡量一个系统的混乱程度,代表系统中信息量的总和;熵值越大,表明这个系统的不确定性就越大。 信息量是衡量某个事件的不确定性,而熵是衡量一个系统(所有事件)的不确定性。 熵的计算公式 \[ H(x) = -\sum_{i=1}^np(x_i)\log(p(x_i)) \] 其中, \(p(x_i)\) 为事件 \(X=x_i\) 的概率, \(-log(p(x_i))\) 为事件 \(X=x_i\) 的信息量。 可以看出,熵是信息量的期望值,是一个随机变量(一个系统,事件所有可能性)不确定性的度量。熵值越大,随机变量的取值就越难确定,系统也就越不稳定;熵值越小,随机变量的取值也就越容易确定,系统越稳定。 相对熵

线性回归,感知机,逻辑回归(GD,SGD)

你。 提交于 2019-12-20 00:53:30
线性回归 线性回归是一个 回归问题 ,即用一条线去拟合训练数据 线性回归的模型: 通过训练数据学习一个 特征的线性组合 ,以此作为预测函数。 训练目标:根据训练数据学习参数(w 1 ,w 2 , ... , w n ,b) 学习策略: 要确定参数(w 1 ,w 2 , ... , w n ,b),即关键在于如何衡量 预测函数f(x)与训练数据y之间的差别。 如果要使得预测函数 f(x)尽可能准确,那么即要求f(x)-y尽可能小,而 f(x)-y便是一个样本(x,y)的损失函数。 对于整个训练数据的损失函数,用 均方误差损失函数 (1/2是为了求导方便) 即当均方误差损失函数J最小时的参数(w 1 ,w 2 , ... , w n ,b),便是最终线性模型中的参数。 所以目标就是求: 求解这个损失函数的方法主要有两个: 最小二乘法,梯度下降法 使用 梯度下降法 求解 (梯度下降,批量梯度下降,随机梯度下降) 我们知道 曲面上沿着梯度的方向是函数值变化(增大)最快的方向,因此要得到J(w)最小值,应该沿着梯度的反方向 。 使用沿着梯度的反方向进行权重的更新,可以有效的找到全局的最优解。 更新过程如下: 说明: 1. 上述是对参数向量W的分量w j 进行更新的表达式。由更新表达式可知,每次更新使用所有的训练数据(m个样本)。 2. 在对参数w j 更新时,使用到了样本x i (样本x i

机器学习如何选择回归损失函数的?

£可爱£侵袭症+ 提交于 2019-12-19 16:50:53
无论在机器学习还是深度领域中,损失函数都是一个非常重要的知识点。损失函数(Loss Function)是用来估量模型的预测值 f(x) 与真实值 y 的不一致程度。我们的目标就是最小化损失函数,让 f(x) 与 y 尽量接近。通常可以使用梯度下降算法寻找函数最小值。 关于梯度下降最直白的解释可以看我的这篇文章: 简单的梯度下降算法,你真的懂了吗? 损失函数有许多不同的类型,没有哪种损失函数适合所有的问题,需根据具体模型和问题进行选择。一般来说,损失函数大致可以分成两类:回归(Regression)和分类(Classification)。今天,红色石头将要总结回归问题中常用的 3 种损失函数,希望对你有所帮助。 回归模型中的三种损失函数包括:均方误差(Mean Square Error)、平均绝对误差(Mean Absolute Error,MAE)、Huber Loss。 1. 均方误差(Mean Square Error,MSE) 均方误差指的就是模型预测值 f(x) 与样本真实值 y 之间距离平方的平均值。其公式如下所示: 其中,yi 和 f(xi) 分别表示第 i 个样本的真实值和预测值,m 为样本个数。 为了简化讨论,忽略下标 i,m = 1,以 y-f(x) 为横坐标,MSE 为纵坐标,绘制其损失函数的图形: MSE 曲线的特点是光滑连续、可导,便于使用梯度下降算法