损失函数

tensorflow之损失函数:sparse_softmax_cross_entropy_with_logits 与 softmax_cross_entropy_with_logits的区别

非 Y 不嫁゛ 提交于 2019-12-03 13:02:55
原函数: tf.nn.sparse_softmax_cross_entropy_with_logits( _sentinel=None, labels=None, logits=None, name=None ) tf.nn.softmax_cross_entropy_with_logits( _sentinel=None, labels=None, logits=None, dim=-1, name=None ) 1.sparse_softmax_cross_entropy_with_logits中 lables接受直接的数字标签 如[1], [2], [3], [4] (类型只能为int32,int64) labels=tf.constant([0,1,2,3],dtype=tf.int32) logits=tf.Variable(tf.random_normal([4,4])) loss=tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels,logits=logits) sess=tf.Session() init=tf.global_variables_initializer() sess.run(init) print(sess.run(loss)) 2.而softmax_cross_entropy

回归损失函数:L1,L2,Huber,Log-Cosh,Quantile Loss

谁说我不能喝 提交于 2019-12-03 09:52:38
回归损失函数:L1,L2,Huber,Log-Cosh,Quantile Loss 2019-06-04 20:09:34 clover_my 阅读数 430 更多 分类专栏: 阅读笔记 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/clover_my/article/details/90777964 回归损失函数:L1,L2,Huber,Log-Cosh,Quantile Loss 机器学习中所有的算法都需要最大化或最小化一个函数,这个函数被称为“目标函数”。其中,我们一般把最小化的一类函数,称为“损失函数”。它能根据预测结果,衡量出模型预测能力的好坏。 在实际应用中,选取损失函数会受到诸多因素的制约,比如是否有异常值、机器学习算法的选择、梯度下降的时间复杂度、求导的难易程度以及预测值的置信度等等。因此,不存在一种损失函数适用于处理所有类型的数据。损失函数大致可分为两类:分类问题的损失函数和回归问题的损失函数。这篇文章介绍不同种类的回归损失函数以及它们的作用。 1、MAE / L1 + MSE / L2 (1)平均绝对误差(MAE / L1) Y轴:MAE损失。X轴:预测值。 平均绝对误差(MAE)是一种用于回归模型的损失函数。MAE是目标值和预测值之差的绝对值之和

TensorFlow优化 --- 损失函数loss

匿名 (未验证) 提交于 2019-12-03 00:37:01
1.softmax算法 (1).softmax的定义 (2).TensorFlow中的softmax # 计算softmax tf.nn.softmax(logits, name=None) # 对softmax求对数 tf.nn.log_softmax(logits, name=None) 2.损失函数 损失函数的作用是用来描述模型预测值与真实值的差距大小。一般有两种常见的算法, 均值平方差(MSE)和交叉熵 (1).均值平方差 M S E = 1 n ∑ n t = 1 ( o b s e r v d e t p r e d i c t e d t ) 2 M S E = 1 n ∑ t = 1 n ( o b s e r v d e t p r e d i c t e d t ) 2 MSE = tf.reduce_mean(tf.sub(logits, outputs), 2.0) MSE = tf.reduce_mean(tf.square(tf.sub(logits, outputs))) MSE = tf.reduce_mean(tf.square(logits-outputs)) (2).交叉熵 c = 1 n ∑ x [ y l n a + ( 1 y ) l n ( 1 a ) ) ] c = 1 n ∑ x [ y l n a + ( 1 y ) l n (

感知机

匿名 (未验证) 提交于 2019-12-03 00:29:01
感知机是一个二类分类的线性分类模型。所谓二类分类就是它只能将实例分为正类和负类两个类别。那么为什么是线性分类模型呢,我的理解是感知机学习旨在 求出可以将数据进行划分的分离超平面 ,而分离超平面的方程: 为线性方程,所以感知机为线性分类模型。 模型如下图所示: sign(x)={+1,x≥0 由此我们可以得到由输入空间到输出空间的函数 感知机学习的目的就在于确定参数w和b的值。 给定一个线性可分的数据集: T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . ( x N , y N ) } T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . ( x N , y N ) } 为了确定感知机模型的参数w和b,需要确定一个学习策略,即 定义一个损失函数并将损失函数极小化 。感知机采用的损失函数为 误分类点到超平面的总距离 。首先写出输入空间Rn中任一点 x 0 x 0 到分离超平面的距离: 1 ‖ w ‖ | w x 0 + b | 1 ‖ w ‖ | w x 0 + b | 这里 ‖ w ‖ ‖ w ‖ 是 w w 的 L 2 L 2 范数。 其次对于误分类的数据 ( x i , y i ) ( x i , y i ) 来说, y i ( w x i + b ) > 0 y i ( w x i + b ) > 0

梯度下降

匿名 (未验证) 提交于 2019-12-03 00:27:02
在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。这里就对梯度下降法做一个完整的总结。 1. 梯度 T 0 ,y 0 0 0 ) T 0 ,y 0 T ,以此类推。     那么这个梯度向量求出来有什么意义呢?他的意义从几何意义上讲,就是函数变化增加最快的地方。具体来说,对于函数f(x,y),在点(x 0 ,y 0 0 0 ) T 0 0 ) T 的方向,梯度减少最快,也就是更加容易找到函数的最小值。 2. 梯度下降与梯度上升     在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数,和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。     梯度下降法和梯度上升法是可以互相转化的。比如我们需要求解损失函数f(θ)的最小值,这时我们需要用梯度下降法来迭代求解。但是实际上,我们可以反过来求解损失函数 -f(θ)的最大值,这时梯度上升法就派上用场了。 3. 梯度下降法算法详解 3.1 梯度下降的直观解释     首先来看看梯度下降的一个直观的解释。比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向

感知机

匿名 (未验证) 提交于 2019-12-03 00:26:01
作者:sealaes 链接:https://www.jianshu.com/p/4715a4bea89d 来源:简书 【概述】 1、感知机模型特征 :感知机对应于输入空间中将实例划分为正负两类的分离超平面,属于判别模型。 2、感知机策略 :感知机学习的目标是求出将训练数据进行线性划分的分离超平面,导入基于误分类的损失函数,利用梯度下降法对损失函数进行最小化,求得感知机模型。 3、感知机学习算法: 用学习得到的感知机模型对新的输入实例进行分类。 4、重点: 感知机是神经网络和支持向量机的基础,所以一些核心概念要仔细理解和和掌握。 一、感知机模型(机器学习三要素之一) 1、定义2.1(感知机) 公式说明:W和b为感知机模型参数,称为权值(weight)或权值向量(weight vector),b称为偏置,一般b会以bx0的方式形成统一的权值向量w, w.x表示w和x的内积(内积的定义见附录1) ,sign(x)是符号函数,即: 图2.1:Sign符号函数的几何表示 2、感知机的几何解释 线性方程w.x+b=0对应于特征空间的一个超平面 S ,其中w是超平面的法向量 (法向量和超平面的关系见附录2) ,b是超平面的截距。 该超平面将特征空间划分成两个部分,位于两部分的点(特征向量)分别被分成正、负两类,超平面 S 成为分离超平面。 3、感知机学习方法 由训练集(实例的特征向量及类别)T=

深度学习个人理解

匿名 (未验证) 提交于 2019-12-03 00:21:02
实现人工智能的方法有很多种,当前最热门的一种就是通过深度学习来训练神经网络。深度学习这个词指的是训练大型神经网络。深代表着非常大的神经网络。那么神经网络到底是什么呢? 如下图: 假设你有一个数据集(包含了六个房屋的面积和价格数据)。你想要找到一个方法(即构建一个函数)来通过面积预测出价格。如果你熟悉线性回归(不熟悉也没关系,你就把它看作是一个数学理论),那么可以根据这个理论在实际数据附近画出一条直线,如上图中红色的线,它附近的蓝色的小圆圈代表着六个房子的面积与房价对应的点,即根据这条线(这个函数)来找某一个面积对应的房价,那么除了些误差外,基本上是准的。 理解:大量的数据通过一个函数进行处理分析,找到相同得规则,然后再根据其他得数据分析出最可能得结果,这就是机器学习得一个大概得流程。 监督学习: 判断是否是监督学习,就看输入数据是否有标签。输入数据有标签,则为有监督学习,没标签则为无监督学习。 分类(classification) 这种机器学习算法就是一种监督学习。对于分类,输入的训练数据有特征(feature),有标签(label)。也就是我们前面文章中的输入x和输出y。每一个x样本都对应着一个y(输出)标签。所谓的学习,其本质就是找到特征和标签间的关系(mapping),也就是找规律。这样当有特征而无标签的未知数据输入时,我们就可以通过已有的关系得到未知数据标签

keras自定义损失函数

匿名 (未验证) 提交于 2019-12-03 00:19:01
Keras是一个搭积木式的深度学习框架,用它可以很方便且直观地搭建一些常见的深度学习模型。在tensorflow出来之前,Keras就已经几乎是当时最火的深度学习框架,以theano为后端,而如今Keras已经同时支持四种后端:theano、tensorflow、cntk、mxnet(前三种官方支持,mxnet还没整合到官方中),由此可见Keras的魅力。 Keras是很方便,然而这种方便不是没有代价的,最为人诟病之一的缺点就是灵活性较低,难以搭建一些复杂的模型。的确,Keras确实不是很适合搭建复杂的模型,但并非没有可能,而是搭建太复杂的模型所用的代码量,跟直接用tensorflow写也差不了多少。但不管怎么说, Keras其友好、方便的特性(比如那可爱的训练进度条),使得我们总有使用它的场景。这样,如何更灵活地定制Keras模型,就成为一个值得研究的课题了。 这篇文章我们来关心自定义loss。 Keras的模型是函数式的,即有输入,也有输出,而loss即为预测值与真实值的某种误差函数。Keras本身也自带了很多 loss函数 ,如mse、交叉熵等,直接调用即可。而要自定义loss,最自然的方法就是仿照Keras自带的loss进行改写。 比如,我们做分类问题时,经常用的就是softmax输出,然后用交叉熵作为loss。然而这种做法也有不少缺点,其中之一就是分类太自信,哪怕输入噪音

损失深度学习网络基础解析(一)

匿名 (未验证) 提交于 2019-12-03 00:19:01
神经网络是深度学习的基石,说起来的渊源应该是1986年 Rumelhart 和 McCelland 提出的BP(Back Propagation)算法。一般书上要讲解这一部分知识通常会从模型结构、算法原理等等开始,这样虽然会很专业严谨,然而对初学者不甚友好,不利于快速消化吸收。而本系列文章则以初学者的角度来边思考,边“形容”出深度学习深层次的原理,并在此基础上配以公式和图片,以满足处于不同学习阶段的学习者理解深度学习。 在开始讲深度学习理论之前,我们先来回想一个小时候都玩过的游戏(首先声明一下我是90后,00后作为电子时代的孩子有没有玩过我就不知道了)――猜数字,也就是两个人坐在一起,其中一个人A在心里默想一个数字x,然后让另一个人B猜,当B说出一个数字后,A只能回答真实数字比猜测值大、小或是相等,然后B再根据A的回答相应调整猜测值,直到两者相等为止。 我们放慢这一过程(就像下图一样)――当B说出一个数字后,猜测值 x g x g 随着数据流到了A,随之A在心里面将真实值 x r x r 和猜测值 x g x g 做了比较,即 Δ = x r x g Δ = x r x g ,然后将 Δ Δ 的正负情况告诉 B,B 则提出一个新的值 x g + Δ g x g + Δ g ( Δ g Δ g 是一个与 Δ Δ 正负一致,然而绝对值不尽相同的数) 给A进行判断。

深度学习入门

匿名 (未验证) 提交于 2019-12-03 00:15:02
Deep Learning with Pytorch_002 chapter03_深入研究神经网络的构建块 在上一章中,我们使用Py Torch的低级操作来构建模块,如网络体系结构、损失函数和优化器。在本章中,我们将探讨解决现实世界问题所需的神经网络的一些重要组成部分,以及PyTorch如何通过提供大量的高级函数来抽象出大量的复杂性。 本章将讨论以下主题: 深入研究神经网络的各种构建块 探索PyTorch中的高级功能来构建深度学习体系结构 将深度学习应用在一个真实图像分类问题 任何深入的学习训练都需要获取数据,构建一个总体上是将一堆层聚集在一起的体系结构。 理解PyTorch为构建层、损失函数和优化器提供的更高层次的抽象。 层次――神经网络的基本块 最重要的层之一――线性层 对输入的数据应用线性变换: y = x A T + b y y = xA^T + by y = x A T + b y torch.randn(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor 返回一个由均值为0、方差为1的正态分布(标准正态分布)中的随机数组成的张量。 o u t i N ( 0 , 1 ) o u t i N ( 0 , 1 ) torch.from