梯度

cs231n训练营学习笔记(7)

↘锁芯ラ 提交于 2019-12-24 01:41:43
反向传播 计算复杂函数的解析梯度,(每个变量的导数指明了整个表达式对于该变量的值的敏感程度) 利用计算图这个框架 圆形节点表示运算,也被叫做门(gate) 复杂函数梯度根据链式法则反向递归得到,每个圆形节点可得到局部梯度 下面是一个例子,为了方便理解 更复杂的情况是,各个变量,比如上面局部梯度的x,y,z是向量的时候,局部梯度就变成了雅可比矩阵 但是当维数太大以及一次需要同时处理很多输入的时候,计算雅可比矩阵不太现实 如果节点处的计算是取最大值,那么可以通过分析,知道雅可比矩阵是个对角矩阵,直接计算填入 乘法的向量化梯度计算时候可以通过梯度的维度回推哪个矩阵在前,哪个矩阵该转置,梯度总是和变量一样的维度比较好确认。但是比如说2*2就很难判断是不是转置过了的 这里通过具体看改变了某个x是如何影响q的,可以看出来是变化了一列W,要和q这个列向量相乘需要转置 在线性分类器中,权重和输入是进行点积 ,这说明输入数据的大小对于权重梯度的大小有影响。例如,在计算过程中对所有输入数据样本 乘以1000,那么权重的梯度将会增大1000倍,这样就必须降低学习率来弥补。这就是为什么数据预处理关系重大,它即使只是有微小变化,也会产生巨大影响。 前向后向程序运行: 来源: CSDN 作者: 就叫荣吧 链接: https://blog.csdn.net/qq_29843303/article/details

(十三)从零开始学人工智能-强化学习:值函数近似和策略梯度

青春壹個敷衍的年華 提交于 2019-12-23 18:07:51
强化学习–值函数近似和策略梯度 文章目录 强化学习--值函数近似和策略梯度 1. 值函数近似 1.1 线性函数近似 1.1.1 状态价值函数近似 1.1.2 动作价值函数近似 1.2 深度神经网络近似 2. 策略梯度 声明 参考资料 前两节内容都是强化学习的一些基础理论 ,只能解决一些中小规模的问题,实际情况下很多价值函数需要一张大表来存储,获取某一状态或动作价值的时候通常需要一个查表操作,这对于某些状态或动作空间很大的问题几乎无法求解,而许多实际问题拥有大量状态或动作,甚至是连续的状态和动作。那么,如何解决实际问题呢?主要有两种方法:值函数近似和策略梯度。 1. 值函数近似 强化学习可以用来解决大规模问题,例如西洋双陆棋(Backgammon)有 1 0 20 10^{20} 1 0 2 0 个状态空间,围棋AlphaGo有 1 0 170 10^{170} 1 0 1 7 0 状态空间,机器人控制以及无人机控制需要的是一个连续状态空间。如何才能将强化学习应用到这类大规模的问题中,进而进行预测和控制呢? (1)使用值函数近似的解决思路可以是这样的: ①、通过函数近似来估计实际的价值函数: v ^ ( s , ω ) ≈ v π ( s ) \hat v(s,\omega ) \approx {v_\pi }(s) v ^ ( s , ω ) ≈ v π ​ ( s ) q ^ (

秒懂机器学习---机器学习无法逃避的梯度下降法

最后都变了- 提交于 2019-12-22 05:12:14
秒懂机器学习---机器学习无法逃避的梯度下降法 一、总结 一句话总结: 梯度下降法有其缺陷,但是可以和其它算法配合使用,比如模拟退火等。 1、导数的几何意义是什么? 斜率:导数又叫微分,是图像的斜率。 2、复合函数(比如z=f[u(x,y),v(x,y)])的偏导数的链式求导法则是怎样的? δz/δx=(δz/δu)*(δu/δx)+(δz/δv)*(δv/δx) 3、偏导数的几何意义是什么? 曲面无数条切线中的一条:多远看书表示的是高维空间中的曲面。而曲面上的每一点都有无穷多条切线,而求偏导数就是选择其中的一条切线。 4、梯度的定义是什么? 某一函数在该点处的方向导数沿着该方向取得最大值:(梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)) 单变量中表示导数或斜率:在单变量的实值函数的情况,梯度只是导数,或者,对于一个线性函数,也就是线的斜率。 5、梯度是向量还是标量? 向量 6、多元函数中的梯度分别为什么? 偏导数:一个n元函数f关于n个变量的偏导数 三元函数f的梯度为(fx,fy,fz),二元函数f的梯度为(fx,fy),一元函数f的梯度为fx 要明确梯度是一个向量,是一个n元函数f关于n个变量的偏导数,比如三元函数f的梯度为(fx,fy,fz),二元函数f的梯度为

线性回归,感知机,逻辑回归(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

(二)深入梯度下降(Gradient Descent)算法

筅森魡賤 提交于 2019-12-19 02:54:10
一直以来都以为自己对一些算法已经理解了,直到最近才发现,梯度下降都理解的不好。 1 问题的引出 对于上篇中讲到的线性回归,先化一个为一个特征θ 1 ,θ 0 为偏置项,最后列出的误差函数如下图所示: 手动求解 目标是优化J(θ1),得到其最小化,下图中的×为y (i) ,下面给出TrainSet,{(1,1),(2,2),(3,3)}通过手动寻找来找到最优解,由图可见当θ1取1时, 与y (i) 完全重合,J(θ1) = 0 下面是θ1的取值与对应的J(θ1)变化情况 由此可见,最优解即为0,现在来看通过梯度下降法来自动找到最优解,对于上述待优化问题,下图给出其三维图像,可见要找到最优解,就要不断向下探索,使得J(θ)最小即可。 2 梯度下降的几何形式 下图为梯度下降的目的,找到J(θ)的最小值。 其实,J(θ)的真正图形是类似下面这样的,因为其是一个凸函数,只有一个全局最优解,所以不必担心像上图一样找到局部最优解 直到了要找到图形中的最小值之后,下面介绍自动求解最小值的办法,这就是梯度下降法 对参数向量θ中的每个分量θ j ,迭代减去速率因子a* (dJ(θ)/dθ j )即可,后边一项为J(θ)关于θ j 的偏导数 3 梯度下降的原理 导数的概念 由公式可见,对点x 0 的导数反映了函数在点x 0 处的瞬时变化速率,或者叫在点x 0 处的斜度。推广到多维函数中,就有了梯度的概念

生成对抗网络学习——WGAN

笑着哭i 提交于 2019-12-17 03:46:13
文章目录 一、WGAN原理 第一部分:原始GAN究竟出了什么问题? 第一种原始GAN形式的问题 第二种原始GAN形式的问题 第三部分:Wasserstein距离的优越性质 第四部分:从Wasserstein距离到WGAN WGAN,全称是Wasserstein GAN。 【paper】: https://arxiv.org/abs/1701.07875 【GitHub】: 参考资料: 原理: 1、 令人拍案叫绝的Wasserstein GAN 2、 李弘毅GAN网络MOOC 代码解读: 【1】WGAN-GP代码及注释 https://blog.csdn.net/qq_20943513/article/details/73129308 【2】包括了DCGAN,LSAGN,WGAN,以及WGAN-GP的代码 https://blog.csdn.net/Diana_Z/article/details/87184465 【3】WGAN代码解读及实验总结 https://blog.csdn.net/CLOUD_J/article/details/94392474 一、WGAN原理 自从2014年Ian Goodfellow提出以来, GAN就存在着训练困难、生成器和判别器的loss无法指示训练进程、生成样本缺乏多样性等问题 。从那时起,很多论文都在尝试解决,但是效果不尽人意

Adam优化器算法

六眼飞鱼酱① 提交于 2019-12-16 21:32:52
上图就是Adam算法在深度学习中更新参数时应用的详细过程,下面对一些参数进行一下说明: 1、t:更新的步数(steps) 2、 :学习率,用于控制参数更新的步幅(stepsize) 3、 :要求解更新的参数 4、 :带有参数 的目标函数,通常指损失函数 5、g:目标函数对 求导的梯度 6、 :一阶矩衰减系数 7、 :二阶矩衰减系数 8、s:梯度g的一阶矩,即梯度g的期望 9、r:梯度g的二阶矩,即梯度 的期望 10、s三角:s的偏置矫正,考虑到s在零初始值情况下向零偏置 11、r三角:r的偏置矫正,考虑到r在零初始值情况下向零偏置 上图中while循环实现了整个Adam算法在梯度下降中的优化过程 1、计算目标函数对 的梯度 2、更新steps 3、计算梯度的一阶矩s,即过往梯度与当前梯度的平均,如上图s即是steps=t时的梯度一阶矩 4、计算梯度的二阶矩r,即过往梯度与当前梯度平方的平均,如上图r即是steps=t时的梯度二阶矩 5、修正梯度的一阶矩s,因为s的初始值为零,它容易向零偏置,这样处理后会减少这种偏置的影响,其公式中的 是指beat1的t次方 6、修正梯度的二阶矩r,因为r的初始值为零,它容易向零偏置,这样处理后会减少这种偏置的影响。 7、更新参数 ,可以将 看成更新参数 的学习率,s三角:看成更新 参数的梯度 来源: CSDN 作者: 生命的呼喊 链接: https

sp2.2 优化算法 加快训练

筅森魡賤 提交于 2019-12-16 20:26:17
batch批梯度下降法:以前是所有的x1到xn之和减去yi到yn之和整体一遍算梯度下降 假设数据特别多 上亿只为了求个微分 还要重复 mini-batch:把训练集分成几个部分,假设500 万个样本,分成5000个小部分 每个1000样本 x^(i)第几个样本 x^[l]第几层的X x^{t}第几个部分的y^{t} 假设样本1000个每部分 则x^{t}为(n,1000)n是特征值数 每次梯度下降取一块即可 这里X{}大括号表示 第几组(代) 原本5,000,000分为 5000组 每组1000个训练样本 这里一个for循环 称为1代,这里一代也就是整个训练集,他就能做5000个梯度下降了, 外面可以在加个大循环 循环几代 在整体的批梯度下降每次都是减少的J 只要步子选的对 但是在mini-batch中是曲折的,可能部分批次难算 里面的样本有些不同 每次更新Θ只用一个样本 随机梯度下降不会停止 只会最后在最小附近一直 失去向量化带来的加速 效率慢 所以mini-batch还是选个不大不小的:训练集小的话直接批梯度 2000一下 大的话64-1024,最好是2的次方 卧槽玄学 和cpu运行有关 SGD每个样本都算个损失和反向传播 SGD三个循环 一个整个样本的循环几遍 一个循环每个样本反向传播 一个循环每一层 SGD和minibatch 这三种的区别就是 the number of