图像梯度

smooth l1 loss & l1 loss & l2 loss

烈酒焚心 提交于 2019-12-04 20:10:38
引自:https://www.zhihu.com/question/58200555/answer/621174180 为了从两个方面限制梯度: 当预测框与 ground truth 差别过大时,梯度值不至于过大; 当预测框与 ground truth 差别很小时,梯度值足够小。 考察如下几种损失函数,其中 为预测框与 groud truth 之间 elementwise 的差异: 观察 (4) ,当 x 增大时 L2 损失对 x 的导数也增大。这就导致训练初期,预测值与 groud truth 差异过于大时,损失函数对预测值的梯度十分大,训练不稳定。 根据方程 (5) , L1 对 x 的导数为常数。这就导致训练后期,预测值与 ground truth 差异很小时, L1 损失对预测值的导数的绝对值仍然为 1 ,而 learning rate 如果不变,损失函数将在稳定值附近波动,难以继续收敛以达到更高精度。 最后观察 (6) , smooth L1 在 x 较小时,对 x 的梯度也会变小,而在 x 很大时,对 x 的梯度的绝对值达到上限 1 ,也不会太大以至于破坏网络参数。 smooth L1 完美地避开了 L1 和 L2 损失的缺陷。其函数图像如下: 综上所述smootn l1 loss 综合了l1 loss 和l2 loss的优点。 来源: https://www

吴恩达《深度学习》第二门课(1)深度学习的实用层面

狂风中的少年 提交于 2019-12-04 13:47:18
1.1训练,验证,测试集(Train/Dev/Test sets) (1)深度学习是一个按照下图进行循环的快速迭代的过程,往往需要多次才能为应用程序找到一个称心的神经网络。 (2)在机器学习中,通常将样本分成训练集,验证集和测试集三部分,数据规模相对较小,适合传统的划分比例(如6:2:2),数据集规模比较大的,验证集和测试集要小于数据总量的20%或者10%甚至更低。 (3)交叉验证集和测试集务必来自同分布。 (4)有时候只有训练集和验证集,没有独立的测试集(将无法提供无偏性能评估),这时人们也会把验证集称为测试集。 1.2偏差,方差(Bias/Varicance) (1)以下三个图分别表示欠拟合(高偏差),适度拟合,过拟合(高方差): (2)最优误差也称为贝叶斯误差,本节中假设最有误差为零(如在图像分类中人可以辨别出所有图像的类别)。 (3)训练误差减去左右误差为偏差,结果大说明偏差大;验证集误差减去训练误差为方差,结果大说明偏差大。 (4)是存在高偏差高方差的情况的,如下图,直线导致高偏差,局部过拟合导致高方差: 1.3机器学习基础 (1)偏差和方差是两种完全不同的情况,有分别对应的处理方法,不要盲目的使用一些策略。 (2)在深度学习时代,只要正则适度,通常构建一个更大的网络便可以在不影响方差的同时减少偏差,而采用更多数据通常可以在不过多影响偏差的同时减少方差。 1.4正则化

深度学习基础模型算法原理及编程实现--04.改进神经网络的方法

≡放荡痞女 提交于 2019-12-03 18:45:43
文章列表 1. 深度学习基础模型算法原理及编程实现–01.感知机 . 2. 深度学习基础模型算法原理及编程实现–02.线性单元 . 3. 深度学习基础模型算法原理及编程实现–03.全链接 . 4. 深度学习基础模型算法原理及编程实现–04.改进神经网络的方法 . 5. 深度学习基础模型算法原理及编程实现–05.卷积神经网络 . 6. 深度学习基础模型算法原理及编程实现–06.循环神经网络 . 9. 深度学习基础模型算法原理及编程实现–09.自编码网络 . 9. 深度学习基础模型算法原理及编程实现–10.优化方法:从梯度下降到NAdam . … 深度学习基础模型算法原理及编程实现–04.改进神经网络的方法 4.1 基本激活函数认知 4.1.1 sigmoid 5.1.2 tf.tanh 5.1.3 ReLU 5.1.4 Leaky ReLU 5.1.5 Softplus 5.2 增加隐藏层数 5.3 提升学习速率 5.3.1 梯度下降改为随机梯度下降 5.3.2 输出层激活函数与目标函数的选择 5.3.2.1 激活函数为sigmoid函数、损失函数为交叉项 5.3.2.2 激活函数为线性函数且损失函数为平方损失函数 5.3.2.3 损失函数为交叉项的好处 5.3.2.4 柔性最大值(softmax函数) 5.3.2.5 Softmax-loss 5.3.3

13 opencv人脸识别

孤街浪徒 提交于 2019-12-03 15:46:05
https://www.pyimagesearch.com/2014/11/10/histogram-oriented-gradients-object-detection/ https://yongyuan.name/blog/pedestrian-detection-opencv.html 你知道OpenCV里面已经内置的行人检测方法吗?在OpenCV里面,有一个预先训练好了的HOG+线性SVM模型,能够对图像和视频中的行人进行检测。如果你还不熟悉方向梯度直方图HOG和线性SVM方法,我建议你阅读 方向梯度直方图和物体检测 这篇文章,在这篇文章中,我对该框架分了6步进行讨论。 来源: https://www.cnblogs.com/kekeoutlook/p/11802704.html

机器学习专业词汇中英文对照

岁酱吖の 提交于 2019-12-03 13:32:21
activation 激活值 activation function 激活函数 additive noise 加性噪声 autoencoder 自编码器 Autoencoders 自编码算法 average firing rate 平均激活率 average sum-of-squares error 均方差 backpropagation 后向传播 basis 基 basis feature vectors 特征基向量 batch gradient ascent 批量梯度上升法 Bayesian regularization method 贝叶斯规则化方法 Bernoulli random variable 伯努利随机变量 bias term 偏置项 binary classfication 二元分类 class labels 类型标记 concatenation 级联 conjugate gradient 共轭梯度 contiguous groups 联通区域 convex optimization software 凸优化软件 convolution 卷积 cost function 代价函数 covariance matrix 协方差矩阵 DC component 直流分量 decorrelation 去相关 degeneracy 退化 demensionality

梯度下降法

泄露秘密 提交于 2019-12-03 11:33:58
我们知道梯度是一个向量,即是一个矢量,是有方向的,某一点它的梯度方向的指向是该点函数值变化最快的方向,因此要想找到极值就沿着该方向前进是最快的到达极值点的方法。 至于下降,指的是函数图像的某点处梯度向量的模在寻找极值点的路途的过程中逐渐减小,可以想象一下一个3D图像,在逼近它的极值点的过程中经过的点处的梯度向量的模是一直减小的。(因为梯度向量的模为 , 表示函数在x轴方向的变化率, 表示函数在y轴方向的变化率,在逼近极值点的过程中函数图像逐渐变得平缓,函数在x、y方向变化变慢 和 变小,函数在任意方向变化速度(方向导数)变得逐渐减慢,即梯度向量的模逐渐减小,即梯度下降。) 来源: https://www.cnblogs.com/wisir/p/11794159.html

梯度

北城余情 提交于 2019-12-03 11:30:15
方向导数: 指在函数图像某一点处沿着某个方向的导数,即可以求沿着任意方向的导数,当然在引入方向导数之前只是求沿着坐标轴的导数(如x、y方向),之前学过可以求对某个坐标轴的导数,所以要求沿着某一个方向的导数可以利用对坐标轴的导数变换得到,即沿着某一个方向的导数等于 ①(其中 为该方向到x轴正向的夹角)。 梯度: 是一个向量,指在函数图像某一点处方向导数最大的方向,也即是沿着该方向函数值变化最快,即此向量为( , )。 在函数图像某一点处时,由①式和梯度概念可知,当方向l为该点的梯度方向时,该点的方向导数最大,也可以证明:①式中cos 2 +sin 2 =1的约束条件下 中函数 的最大值为 。也可以推导,梯度方向的方向导数为 恰好该点方向导数最大值和该点梯度向量的模相等。 来源: https://www.cnblogs.com/wisir/p/11794051.html

梯度弥散与梯度爆炸

匆匆过客 提交于 2019-12-03 10:35:59
问题描述 先来看看问题描述。 当我们使用sigmoid funciton 作为激活函数时,随着神经网络hidden layer层数的增加,训练误差反而加大了,如上图所示。 下面以2层隐藏层神经网络为例,进行说明。 结点中的柱状图表示每个神经元参数的更新速率(梯度)大小,有图中可以看出,layer2整体速度都要大于layer1. 我们又取每层layer中参数向量的长度来粗略的估计该层的更新速率,得到下图。 可以看出,layer2的速率都要大于layer1. 然后我们继续加深神经网络的层数。 可以得到下面的结论: 靠近输出层的hidden layer 梯度大,参数更新快,所以很快就会收敛; 而靠近输入层的hidden layer 梯度小,参数更新慢,几乎就和初始状态一样,随机分布。 在上面的四层隐藏层网络结构中,第一层比第四层慢了接近100倍!! 这种现象就是 梯度弥散(vanishing gradient problem) 。而在另一种情况中,前面layer的梯度通过训练变大,而后面layer的梯度指数级增大,这种现象又叫做 梯度爆炸(exploding gradient problem) 。 总的来说,就是在这个深度网络中, 梯度相当不稳定(unstable)。 直观说明 那么为何会出现这种情况呢? 现在我们来直观的说明一下。 在上面的升级网络中,我们随意更新一个参数,加上一个Δw

Batch Normalization

心已入冬 提交于 2019-12-03 02:36:43
Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和重要性。虽然有些细节处理还解释不清其理论原因,但是实践证明好用才是真的好,别忘了DL从Hinton对深层网络做Pre-Train开始就是一个经验领先于理论分析的偏经验的一门学问。 本文是对论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》的导读(看看看, 这是通过减少内部协变量移位加速神经网络训练)。 机器学习领域有个很重要的假设:IID独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。那BatchNorm的作用是什么呢?BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的(相同分布是怎样的?是什么的相同分布?参数吗?)。 接下来一步一步的理解什么是BN。 为什么深度神经网络随着网络深度加深,训练起来越困难,收敛越来越慢?这是个在DL领域很接近本质的好问题。很多论文都是解决这个问题的,比如ReLU激活函数,再比如Residual Network,BN本质上也是解释并从某个不同的角度来解决这个问题的(这个解释还是很妙的)。

深度学习剖根问底:梯度消失以及爆炸

匿名 (未验证) 提交于 2019-12-03 00:36:02
转载自:https://blog.csdn.net/qq_25737169/article/details/78847691 前言 其中,梯度消失爆炸的解决方案主要包括以下几个部分。 - 预训练加微调 - 梯度剪切、权重正则(针对梯度爆炸) - 使用不同的激活函数 - 使用batchnorm - 使用残差结构 - 使用LSTM网络 第一部分:为什么要使用梯度更新规则 我们最终的目的是希望这个多元函数可以很好的完成输入到输出之间的映射,假设不同的输入,输出的最优解是 取得极小值点,比如最简单的损失函数 第二部分:梯度消失、爆炸 梯度消失与梯度爆炸其实是一种情况,看接下来的文章就知道了。两种情况下梯度消失经常出现,一是在 深层网络 中,二是采用了 不合适的损失函数 ,比如sigmoid。梯度爆炸一般出现在深层网络和 权值初始化值太大 的情况下,下面分别从这两个角度分析梯度消失和爆炸的原因。 1.深层网络角度 图中的曲线表示权值更新的速度,对于下图两个隐层的网络来说,已经可以发现隐藏层2的权值更新速度要比隐藏层1更新的速度慢 那么对于四个隐层的网络来说,就更明显了,第四隐藏层比第一隐藏层的更新速度慢了两个数量级: 总结: 从深层网络角度来讲,不同的层学习的速度差异很大,表现为网络中靠近输出的层学习的情况很好,靠近输入的层学习的很慢,有时甚至训练了很久