导数

导数,方向导数,梯度(Gradient)与梯度下降法(Gradient Descent)的介绍(非原创)

早过忘川 提交于 2019-12-01 02:48:59
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原作者:WangBo_NLPR 原文:https://blog.csdn.net/walilk/article/details/50978864 原作者:Eric_LH 原文:https://blog.csdn.net/eric_lh/article/details/78994461 --------------------- 前言  机器学习中的大部分问题都是优化问题,而绝大部分优化问题都可以使用梯度下降法处理,那么搞懂什么是梯度,什么是梯度下降法就非常重要!这是基础中的基础,也是必须掌握的概念!  提到梯度,就必须从导数(derivative)、偏导数(partial derivative)和方向导数(directional derivative)讲起,弄清楚这些概念,才能够正确理解为什么在优化问题中使用梯度下降法来优化目标函数,并熟练掌握梯度下降法(Gradient Descent)。  本文主要记录我在学习机器学习过程中对梯度概念复习的笔记,主要参考《高等数学》《简明微积分》以及维基百科上的资料为主,文章小节安排如下:  1)导数  2)导数和偏导数  3)导数与方向导数  4)导数与梯度  5)梯度下降法 导数  一张图读懂导数与微分:    这是高数中的一张经典图

机器学习 - 线性回归 - 详细数学

て烟熏妆下的殇ゞ 提交于 2019-11-30 22:34:12
线性回归建模 数据集 结构 简述 存在   name - 姓名   sex - 性别   wgt - 体重   smoke - 是否吸烟 预测   sys - 收缩压 建模 训练, 预测 表示一个训练样本, x 表示输入, y 表示输出, 训练数据的 x , y 都是给定的现有数据 则表示训练样本集, 1....N 表示有 N 个样本 当然每个样本可能存在多个特征对结果 y 的影响因素 因此将其简化为 粗体的 X , X 以向量的形式展示, 内部存放多维度的特征值 于此得到的模型为 输入一个 X # , X # 内部存在多个特征值, 然后期望获得一个 y # 的预测结果 线性模型 将模型转化成线性模型的方式, 线性模型作为最经典最简单的模型也是最适用的模型 日后当然也可以使用更复杂的模型, 这里线性模型基本上就可以满足我们的要求实现我们的目的 标量的情况, 拟定的线性方程, 使得每一个原始数据 X (i) 的输出 y (i) 的输出近似于真实的 y (i) ω 是系数, 而 b 为偏置 向量的情况则是这样, 拟定的线性方程, 则是输入的向量进行转置后乘以一个向量 , 既内积 w T 是系数, 而 b 为偏置 最终的结果也是一个标量 , 于此, 这里的问题就是怎么找出这个 ω / w T 以及 b 简单总结 简化为标量线性模型, 转化为向量线性模型, 缺失参数和偏置,

方向导数及梯度

时光怂恿深爱的人放手 提交于 2019-11-30 16:31:39
z = f(x,y) x,y属于集合D,M0(x0,y0)属于集合D 见图可知,可以类比于上山下山的过程,在M0点是此时在p0点的一个向下的投影,在p0点存在上山下山情况,可以去各个方向。过m0点做一条射线l,上面存在m点(x0+Δx,y0+Δy)在l上在l上,Δz = f(x0+Δx,y0+Δy)-f(x0,y0) , m0到m的距离为k=√Δx^2+Δy^2 , k→0时 if 极限存在 lim ΔZ /k 此极限为z=f(x,y)在m0点沿射线l的方向导数,∂z/∂l 在m0点的方向导数。在其他空间上诉仍然成立, (cosα ,cosβ) 为方向角是在向量a(x,y)方向上的单位向量,cosα=x/|a|,cosβ=y/|a| ,方向余弦,方向导数为∂z/∂x *cosα + ∂z/∂y *cosβ=(∂z/∂x,∂z/∂y)*(cosα,cosβ),前面固定的向量为数值在m0点,后面的是在l方向上的单位向量,利用向量公式展开 a*b=|a|*|b|*cosθ ,因为前面展开是常数,所以只是和cosθ 有关,当θ=0时,cosθ去最大为1,因此(∂z/∂x,∂z/∂y)为在该点的梯度,梯度方向是方向导数最大的方向,上升降低最快的方向。 来源: https://www.cnblogs.com/limingqi/p/11604346.html

图像求导及模糊

僤鯓⒐⒋嵵緔 提交于 2019-11-30 16:15:38
在很多应用中,图像强度的变化情况是非常重要的信息。强度的变化可以灰度图像的 \(x\) 和 \(y\) 方向导数 \(I_x\) 和 \(I_y\) 进行描述。图像的梯度向量为 \(\nabla I = [I_x, I_y]^T\) 。梯度有两个重要属性,一个是梯度的大小: \[ | \nabla I | = \sqrt{I_x^2+I_y^2} \] 它描述了图像强度变化的强弱,另一个是梯度的角度: \[ \alpha = arctan2(I_y, I_x) \] 描述了图像中每个像素点上强度变化最大的方向。我们可以使用离散近似的方式来计算图像的导数。图像导数大多数可以通过卷积简单地实现: \[ I_x = I*D_x \ 和\ I_y = I*D_y \] 对于 \(D_x\) 和 \(D_y\) ,通常选择Priwitt滤波器: \[ D_x = \left[ \begin{matrix} -1 & 0 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 1 \end{matrix} \right] 和D_y=\left[ \begin{matrix} -1 & -1 & -1 \\ 0 & 0 & 0 \\ 1 & 1 & 1 \end{matrix} \right] \] 或者Sobel滤波器: \[ D_x = \left[ \begin{matrix} -1

导数求函数最值

眉间皱痕 提交于 2019-11-30 15:11:44
导数求函数最值 本文作者@guodongLovesOi 没有将导数用法规范,如果被数学老师打作者概不负责 首先对于二次函数 \(f(x)=x^2+3x+1\) 我们可以很方便的求出导数: \[ 设 \triangle=\lim_{\triangle->0} ,x'=x-\triangle\\ 那么f'(x)=\frac{f(x)-f(x')}{x-x'} \\ 即 \\ \frac{x^2+3x+1-{x'}^2-3x'-1}{x-x'}= \\ \frac{(x+x')(x-x')+3(x-x')}{x-x'}=\\ 即 \quad{2x+3} \] 设定点为坐标为 \((v,f(v))\) ,由图可知,在 \(f'(v)=0\) \(\therefore v=-\frac{3}{2}\) 将 \(v\) 代入: \[ (-\frac{3}{2},{(-\frac{3}{2})}^2-3\times \frac{3}{2}+1)\\ (-\frac{3}{2},-\frac{5}{4}) \] 通过可爱的顶点式可以验算上面是对的。 那么扩展到二次函数 \(f(x)=ax^2+bx+c\) \[ 设\triangle=\lim_{\triangle->0},x'=x-\triangle\\ 所以f(x)的导数f'(x)可以这样计算:\\ \frac{ax^2+bx+c-a{x'}

梯度下降法及其理论基础

 ̄綄美尐妖づ 提交于 2019-11-30 13:34:59
梯度下降法又称最速下降法,是求解无约束最优化问题的一种最常用的方法,在对损失函数最小化时经常使用。梯度下降法是一种迭代算法。选取适当的初值x (0) ,不断迭代,更新x的值,进行目标函数的极小化,直到收敛。由于负梯度方向时使函数值下降最快的方向,在迭代的每一步,以负梯度方向更新x的值,从而达到减少函数值的目的。提到梯度下降法,就不得不提到方向导数与梯度了。 1.方向导数 设函数z=f(x,y)在点p(x,y)的某一邻域U(P)内有定义,自点P引射线l。 设x轴 正向到射线l的转角为φ, 并设P '(x+Δx, y+Δy)为l上的另一个点且P'也在邻域U(P)内 。 考虑若 ,若此极限存在,则称此极限为函数f(x,y)在点P沿方向l的方向导数,记作 ,即 2.方向导数与偏导数的关系 定理 : 如果函数z=f(x,y)在点p(x,y)是可微分的,那么函数在该点沿任一方向l的方向导数都存在,且有 ,其中φ为x轴到方向l的转角。 简要证明: 由此可将该定理推向更高维的函数,例如对于三元函数u=f(x,y,z),定义它在空间一点P(x,y,z)向某方向(设方向的方向角为α,β,γ)的方向导数如下 , 故有 3.梯度 设函数z=f(x,y)在平面区域D内有一阶连续偏导数,则对于区域D内的任一点p(x,y)及任一方向l,有 其中向量 称为函数f(x,y)在点P的梯度,记作 grad f(x,y)

矩阵求导(二)

混江龙づ霸主 提交于 2019-11-30 00:52:25
本文承接上篇 https:// zhuanlan.zhihu.com/p/24 709748 ,来讲矩阵对矩阵的求导术。使用小写字母x表示标量,粗体小写字母 表示列向量,大写字母X表示矩阵。矩阵对矩阵的求导采用了向量化的思路,常应用于二阶方法求解优化问题。 首先来琢磨一下定义。矩阵对矩阵的导数,需要什么样的定义?第一,矩阵F(p×q)对矩阵X(m×n)的导数应包含所有mnpq个偏导数 ,从而不损失信息;第二,导数与微分有简明的联系,因为在计算导数和应用中需要这个联系;第三,导数有简明的从整体出发的算法。我们先定义向量 (p×1)对向量 (m×1)的导数 (m×p),有 ;再定义矩阵的(按列优先)向量化 (mn×1),并定义矩阵F对矩阵X的导数 (mn×pq)。导数与微分有联系 。几点说明如下: 按此定义,标量f对矩阵X(m×n)的导数 是mn×1向量,与上篇的定义不兼容,不过二者容易相互转换。为避免混淆,用记号 表示上篇定义的m×n矩阵,则有 。虽然本篇的技术可以用于标量对矩阵求导这种特殊情况,但使用上篇中的技术更方便。读者可以通过上篇中的算例试验两种方法的等价转换。 标量对矩阵的二阶导数,又称Hessian矩阵,定义为 (mn×mn),是对称矩阵。对向量 或矩阵 求导都可以得到Hessian矩阵,但从矩阵 出发更方便。 ,求导时矩阵被向量化,弊端是这在一定程度破坏了矩阵的结构

神经网络中的梯度消失

送分小仙女□ 提交于 2019-11-30 00:47:58
什么是梯度消失? 神经元的权重w和偏置b是和激活函数的梯度成正比的,激活函数导数越大,则w,b调整越快,如果激活函数梯度很小,在反向传播时,多个小于0的导数相乘,随着神经网络层数的加深,梯度方向传播到浅层网络时,基本无法引起全职的波动,也就是没有将loss的信息传递到浅层网络,这样网络就无法训练学习了。这就是所谓的梯度消失。 以sigmoid激活函数为例: sigmoid(x)=1/1+e^−x 该函数可以将实数压缩到开区间(0,1),其导数为: σ′(x)=e^−x/(1+e^−x)^2=σ(x)/(1−σ(x)) 函数图像如下: <ignore_js_op> 数两侧十分平滑,两端无限接近0和1,只有中间一段导数较大。当x=0时,其导数取最大值0.25。选择sigmoid函数作为激活函数的优势:1)可以引入非线性;2)容易求导;3)可以将实数压缩至(0,1) 神经网络主要的训练方法是BP算法,BP算法的基础是导数的链式法则,也就是多个导数的乘积。而sigmoid的导数最大为0.25,且大部分数值都被推向两侧饱和区域,这就导致大部分数值经过sigmoid激活函数之后,其导数都非常小,多个小于等于0.25的数值相乘,其运算结果很小。 梯度消失的解决方式主要有: 1)其它激活函数 激活函数对神经网络有显著的影响,现行常见的激活函数有ReLU、Leaky ReLU。 ReLU f(x)

PTA1010一元多项式求导

半腔热情 提交于 2019-11-29 19:33:26
设计函数求一元多项式的导数。 ​ n ​​( n为整数)的一阶导数为 n x ​ n − 1 ​​。) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。 数字间以空格分隔 。 输出格式: 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但 结尾不能有多余空格 。注意 “零多项式”的指数和系数都是 0,但是表示为 0 0 。 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0刚看到这道题的时候,我很天真的写了split(" "),结果总有两测试点不通过。题目中有3个坑:1.末尾不能有多余空格2.分隔数字的空格可能不止一个3.如果多项式为0多项式,输出0 0code: import java.util.Scanner; public class Main{//success public static void main(String[] args) { Scanner in = new Scanner(System.in); boolean flag = true;//这个flag用来判断是否为0多项式且还能判断是否for循环一次。 String s = in.nextLine();//用nextLine()方法输入下一行内容存储为字符串 in.close();/