梯度

深度学习基础

倖福魔咒の 提交于 2019-12-04 11:49:50
摘要:本文主要介绍了深度学习中的一些基础知识和CNN的相关内容。 1、关于目标函数的选取 目标函数用于衡量训练出来的模型的输出值和给定样本数据实际输出值的误差。目标函数会直接参与到误差的反向传播的计算当中,一个较好的目标函数会对各层的权重的调整起到更好的效果,所以选择好的目标函数尤为重要。下面列举出两种目标函数: 在上面两种比较常见的目标函数的对比中,我们可以清楚的看到, 交叉熵目标函数的图像更加陡峭,因此移动相同的步数,那么目标函数的变化也就更加明显,那么也就更有利于寻找最小值(最优值),最终确定相应的模型权重 。 2、关于全连接层Softmax Softmax是神经网络的最后一层,用于处理经过各个层计算后得到的最后结果。如下图: 在上面的图中,z代表经过各层计算得到的输出值,将z值带入上面的逻辑计算中,最后得到了的输出值有这样的特点: 将原来的输出结果映射到了0-1范围内,并且这些值相加为1 。 那么为什么要进行这样做呢? 经过Softmax处理得到的输出值可以用在以交叉熵作为目标函数的情况中。 利用概率的形式进行处理,更加明确了各个输出值对精度的影响状况,进而更有利于对各层权重进行调整。 3、采用RELU激活函数,而不采用Sigmoid函数的原因 在梯度下降过程中,会对激活函数求导,Sigmoid函数求导之后的峰值为0.25,而且在调整权重的过程中w的绝对值一般都是小于1的

softmax 转载

孤街醉人 提交于 2019-12-04 08:39:23
https://www.zhihu.com/question/294679135/answer/885285177 softmax 虽然简单,但是其实这里面有非常的多细节值得一说。 我们挨个捋一捋。 1. 什么是 Softmax? 首先,softmax 的作用是把 一个序列,变成概率。 他能够保证: 所有的值都是 [0, 1] 之间的(因为概率必须是 [0, 1]) 所有的值加起来等于 1 从概率的角度解释 softmax 的话,就是 2. 文档里面跟 Softmax 有关的坑 这里穿插一个“小坑”,很多deep learning frameworks的 文档 里面 (PyTorch,TensorFlow)是这样描述 softmax 的, take logits and produce probabilities 很明显,这里面的 logits 就是 全连接层(经过或者不经过 activation都可以)的输出, probability 就是 softmax 的输出结果。 这里 logits 有些地方还称之为 unscaled log probabilities 。这个就很意思了,unscaled probability可以理解,那又为什么 全连接层直接出来结果会和 log 有关系呢? 原因有两个: 因为 全连接层 出来的结果,其实是无界的(有正有负),这个跟概率的定义不一致

网络权重初始化方法总结(上):梯度消失、梯度爆炸与不良的初始化

杀马特。学长 韩版系。学妹 提交于 2019-12-03 22:41:27
目录 前向传播与反向传播回顾 梯度消失与梯度爆炸 激活函数的影响 权重矩阵的影响 不良初始化 参考 博客: blog.shinelee.me | 博客园 | CSDN 前向传播与反向传播回顾 神经网络的训练过程可以简化成以下步骤, 输入预处理(feature scaling等) 初始化网络weight和bias 前向传播,得到网络输出 计算损失函数,得到当前损失 反向传播,根据链式法则,逐层回传得到损失函数对当前参数的偏导,根据梯度下降算法对当前参数进行更新 重复步骤3 4 5,直到损失不再减小,即收敛 一个简单的前向传播和反向传播的示意图如下,线性组合和非线性激活交替进行,线性组合层可以为全连接层或卷积层等,图片来自 链接 , 梯度下降算法的参数更新公式为, \[ W(t+1)=W(t)-\eta \frac{d C}{d W} \] 其中 \(C=J(W)\) 为损失函数,即通过参数的偏导对参数进行更新。反向传播时,由链式法则,偏导反向回传,逐层计算损失函数对当前参数的偏导。对某个参数的偏导为一串因子的乘积,因子依次为损失函数对网络输出的偏导、激活函数的偏导、线性组合的偏导、激活函数的偏导、线性组合的偏导……如下面所示(来自 链接 ),这里,损失为二分之LMS,用 \(C\) 表示, \(z\) 为线性组合的输出(激活层的输入), \(a\) 为激活层的输出(线性组合的输入),

深度学习基础模型算法原理及编程实现--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

浅谈深度学习之一:神经网络基本概念与分类

允我心安 提交于 2019-12-03 17:37:31
一、深度学习概念 1.什么是深度学习 深度学习(Deep Learning)是机器学习的一种形式,概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。它是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据。 2.基本变换(层的概念) 神经网络是由一层一层构建的,那么每层究竟在做什么? 数学式子: ,其中 是输入向量, 是输出向量, 是偏移向量, 是权重矩阵, 是激活函数。每一层仅仅是把输入 经过如此简单的操作得到 。 数学理解:通过如下5种对输入空间(输入向量的集合)的操作,完成 输入空间 —> 输出空间 的变换 (矩阵的行空间到列空间)。 注:用“空间”二字的原因是被分类的并不是单个事物,而是一类事物。空间是指这类事物所有个体的集合。 1. 升维/降维 2. 放大/缩小 3. 旋转 4. 平移 5. “弯曲” 这5种操作中,1,2,3的操作由 完成,4的操作是由 完成,5的操作则是由 来实现。 每层神经网络的数学理解:用线性变换跟随着非线性变化,将输入空间投向另一个空间。 线性可分视角:神经网络的学习就是学习如何利用矩阵的线性变换加激活函数的非线性变换,将原始输入空间投向线性可分/稀疏的空间去分类/回归。 增加节点数

机器学习 --超参数调优

五迷三道 提交于 2019-12-03 17:17:56
 机器学习中,绝大部分模型没有解析解,需要采用梯度下降法求解最有参数,各种各样的梯度下降法都会遇到一个问题,就是如何设置学习率,是一个技术活,更是一个运气活。 一 学习率参数调优的原理 超参数调优,经常会遇到两个问题: 1、 模型发散,参数随着迭代数值绝对值越来越大,甚至发散到无穷,从损失函数来看,误差也会越来越大。 2、 震荡,从损失函数来看,误差出现震荡,模型在局部最优解附近徘徊。 1.1 模型参数发散的原因 假定损失函数为 Q ( β ) > 0 Q ( β ) > 0 //--> ,通常梯度下降法可表示为 β n e w = β o l d − λ ∇ Q ( β ) | β = β o l d β n e w = β o l d − λ ∇ Q ( β ) | β = β o l d //--> 当 Q ( β ) Q ( β ) //--> 满足条件: ∥ ∇ Q ( β ) ∥ ≥ s ∥ β ∥ ; ∀ ∥ β ∥ > M > 0 a n d s > 0 ‖ ∇ Q ( β ) ‖ ≥ s ‖ β ‖ ; ∀ ‖ β ‖ > M > 0 a n d s > 0 //--> 几乎所有损失函数都满足这一条件,比如最简单的 Q ( θ ) = a θ 2 , a > 0 , ∀ θ ≠ 0 Q ( θ ) = a θ 2 , a > 0 , ∀ θ ≠ 0 //-->

梯度

北城余情 提交于 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 11:07:51
1.为什么使用梯度下降来优化神经网络参数?   深度网络可以视为是一个复合的非线性多元函数,我们的最终目的是希望这个非线性函数很好的完成输入到输出的映射,也就是让损失函数取得最小值。所以最终问题变成了一个寻找函数最小值的问题,在数学上,很容易就想到使用梯度下降来解决。 2.梯度消失和梯度爆炸的原因   假设存在一个网络结构:      表达式为:      若对w1求梯度,根据链式法则,得到的解为:      若使用激活函数为sigmod,则其导数为:      如果我们使用标准化初始w,每个层次都是0-1之间的小数,激活函数也是0-1之间的数,连乘之后结果会变得很小,称之为梯度消失。   如果我们初始化w为很大的数,w大到乘以激活函数的导数都大于1,那么连乘之后导致求导结果很大,形成梯度爆炸。 3.如何解决梯度消失、梯度爆炸   1)通过添加正则项,避免梯度爆炸   2)使用LSTM等自循环和门控制机制,避免梯度消失   3)优化激活函数,譬如sigmod改成relu,避免梯度消失。 来源: https://www.cnblogs.com/wengyuyuan/p/11792673.html