【机器学习】13、梯度下降方法对比

2023-11-07

一、梯度下降法介绍

梯度下降法(Gradient Descent Algorithm,GD)是以负梯度方向求解目标函数 J ( θ ) J(\theta) J(θ)的全局最小值的一种迭代方法。

参数更新的步骤:

  • 随机初始化一组参数 θ \theta θ
  • 将目标函数 J ( θ ) J(\theta) J(θ)分别对每个参数 θ i \theta_i θi求偏导
  • 每个参数的更新,是在对所有样本点都求得对该参数的偏导之后,求和取平均,作为该参数梯度更新的方向
  • 每轮中对每个参数都要求偏导和更新

示例:

h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2 hθ(x)=θ0+θ1x1+θ2x2

J ( θ ) = 1 2 m ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2m} \sum_i^m(h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=2m1im(hθ(x(i))y(i))2

每个样本 X X X是一个 1 × n 1\times n 1×n的向量,即$X=[x1,x2,x3,…,xn],每个向量代表一个特征,每个参数对应一个特征的权重,所以每个样本对应的参数也是n维的。

对参数 θ 1 \theta_1 θ1的更新:

∂ J ( θ ) ∂ θ 1 = 1 m ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x ( 1 ) \frac{\partial J(\theta)}{\partial _{\theta_1}}=\frac{1}{m}\sum_i^m(h_\theta(x^{(i)})-y^{(i)})\cdot x^{(1)} θ1J(θ)=m1im(hθ(x(i))y(i))x(1)

θ 1 = θ 1 − η ⋅ 1 m ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x ( 1 ) \theta_1=\theta_1-\eta\cdot \frac{1}{m}\sum_i^m(h_\theta(x^{(i)})-y^{(i)})\cdot x^{(1)} θ1=θ1ηm1im(hθ(x(i))y(i))x(1)

对参数 θ 2 \theta_2 θ2的更新:

∂ J ( θ ) ∂ θ 2 = 1 m ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x ( 2 ) \frac{\partial J(\theta)}{\partial _{\theta_2}}=\frac{1}{m}\sum_i^m(h_\theta(x^{(i)})-y^{(i)})\cdot x^{(2)} θ2J(θ)=m1im(hθ(x(i))y(i))x(2)

θ 2 = θ 2 − η ⋅ 1 m ∑ i m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x ( 2 ) \theta_2=\theta_2-\eta\cdot \frac{1}{m}\sum_i^m(h_\theta(x^{(i)})-y^{(i)})\cdot x^{(2)} θ2=θ2ηm1im(hθ(x(i))y(i))x(2)

二、批量梯度下降法

参数 θ \theta θ的每次更新,需要 计算全部数据集的样本的负梯度方向,取均值作为下一次梯度下降的方向。

特点:

  • 计算量大,参数更新慢,对内存的要求很高,不能以在线的形式训练模型,也就是运行时不能加入新样本

  • 理论上讲,可以得到全局最优解,参数更新比较稳定,收敛方向稳定

三、随机梯度下降法

每次只选择一个样本来求得偏导,进行参数 θ \theta θ的更新。

特点:

  • 运算速度很快,同时能够在线学习

  • 随机梯度下降参数更新的过程震荡很大,目标函数波动剧烈,参数更新方向有很大的波动

  • 其较大的波动可能收敛到比批量梯度下降更小的局部极小值,因为会从一个极小值跳出来

目标函数下降很波动:

这里写图片描述

梯度更新的方向
这里写图片描述

示例:

h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2 hθ(x)=θ0+θ1x1+θ2x2

J ( θ ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2} (h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=21(hθ(x(i))y(i))2

对参数 θ 1 \theta_1 θ1的更新:

∂ J ( θ ) ∂ θ 1 = ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x ( 1 ) \frac{\partial J(\theta)}{\partial _{\theta_1}}=(h_\theta(x^{(i)})-y^{(i)})\cdot x^{(1)} θ1J(θ)=(hθ(x(i))y(i))x(1)

θ 1 = θ 1 − η ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x ( 1 ) \theta_1=\theta_1-\eta(h_\theta(x^{(i)})-y^{(i)})\cdot x^{(1)} θ1=θ1η(hθ(x(i))y(i))x(1)

四、小批量梯度下降法(mini-batch GD)

该方法集合了批量梯度下降和随机梯度下降两者的优势,每次的参数更新利用一小批数据来完成。

特点:

  • 降低了更新参数的方差,使得收敛过程更加的稳定
  • 能够利用高度优化的矩阵运算,很高效的求得每小批数据的梯度

上述方法面临的主要挑战:

  • 选择合适的学习率较为困难,太小的学习率会导致收敛缓慢,太大的学习率导致波动较大,可能跳出局部最小值

  • 目前可采用的方法是在训练过程中调整学习率的大小,例如模拟退火法:预定义一个迭代次数m,每次执行完m次训练便减小学习率,或者当损失函数的值低于一个阈值时,减小学习率,迭代次数和损失函数的阈值必须事先定义。

  • 上述方法中,每个参数的学习率都是相同的,但这种方法是不合理的,如果训练数据是稀疏的,并且不同特征的出现频率差异较大,那么比较合理的做法是对于出现频率较低的特征设置较大的学习率,对于出现频率较大的特征设置较小的学习率。

  • 近期研究表明,深层网络之所以比较难以训练,并不是因为容易进入局部最优,因为网络结构十分复杂,即使进入了局部最优也可以得到很好的效果,难以训练的原因在于学习的过程很容易落入鞍点,也就是在一个维度是极小值,另一个维度却是极大值的点,而这种情况比较容易出现在平坦区域,在这种区域中,所有方向的梯度几乎都是0,但有的方向的二阶导小于0,即出现极大值。

五、动量法(Momentum)

SGD(一般指小批量梯度下降)的一个缺点在于,其更新的方向完全依赖于当前batch计算出的梯度,因而十分不稳定。

Momentum算法借用了物理中的动量的概念,模拟物体运动时候的惯性,即在更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度对之前的梯度进行微调,这样一来,可以在一定程度上增加稳定性,从而学习的更快,并且有一定的摆脱局部最优的能力。

更新后的梯度 = 动量项 / 折损系数(gamma) x 更新前的梯度+当前的梯度

v t = γ v t − 1 + η ∂ J ( θ ) ∂ θ v_t=\gamma v_{t-1}+\eta\frac{\partial J(\theta)}{\partial \theta} vt=γvt1+ηθJ(θ)

θ = θ − v t \theta=\theta-v_t θ=θvt

这里写图片描述

上图中,红色为SGD+momentum,黑色为SGD,

注意:

  • 动量项是表示在多大程度上保留原来的更新方向,值在0~1之间,是自己设置的超参数,训练开始时,由于梯度可能会很大,所以初始值一般选为0.5,当梯度慢慢减小的时候,改为0.9。

刚开始的时候,梯度方向变化很大,原始梯度起的作用较小,当前时刻的梯度方向减弱,则动量项较小,动量小则步长小

后面的时候,梯度方向变化较小了,原始梯度起的作用大,当前时刻的梯度方向增强,则动量项较大,动量大则步长大

  • 学习率 η \eta η,当前batch的梯度以多大的程度加到之前的梯度上去

  • 动量项的解释:物体运动都是有惯性的,随机梯度下降和批量梯度下降的梯度之和本时刻的梯度有关,可以立刻改变方向,但如果加上动量的话,方向不可能骤转。

  • 当动量项分别设置为0.5,0.9,0.99的时候,分别表示最大速度2倍、10倍、100倍于SGD的算法

六、Nesterov Momentum

但当一个小球从山谷滚落的时候,盲目的沿着斜率方向前行,其效果并不令人满意,我们需要有一个更聪明的小球,能够知道往哪里前行,并知道斜率再度上升的时候减速。

在预测参数下一次的位置之前,我们已有当前的参数和动量项,先用 ( θ − γ v t − 1 ) (\theta-\gamma v_{t-1} ) (θγvt1)作为参数下一次出现位置的预测值,虽然不准确,但是大体方向是对的,之后用我们预测到的下一时刻的值来求偏导,让优化器高效的前进并收敛。

v t = γ v t − 1 + η ∂ J ( θ − γ v t − 1      ) ∂ θ v_t=\gamma v_{t-1}+\eta\frac{\partial J(\theta-\gamma v_{t-1} \,\,\,\,)}{\partial \theta} vt=γvt1+ηθJ(θγvt1)

θ = θ − v t \theta=\theta-v_t θ=θvt

Momentum更新方式:

计算当前的梯度值(小蓝色方向向量)    ⟹    \implies 在更新后的累积方向上前进一大步

Nesterov Momentum更新方式:

按照原来的更新方向更新一步(棕色线)

   ⟹    \implies 然后在该位置计算梯度值(红色线)

   ⟹    \implies 利用该梯度值修正最终的更新方向(绿色线)

这里写图片描述

这里写图片描述

七、Adagrad法

该方法是基于梯度的优化方法,其主要功能是:对于不同的参数使用不同的学习率,适合于处理稀疏数据。

  • 对低频出现的参数进行大的更新

  • 对高频出现的参数进行小的更新

对迭代次数为 t t t时,对参数 θ i \theta_i θi求目标函数的梯度: g t , i = ∂ J ( θ t , i    ) ∂ θ t , i g_{t,i}=\frac{\partial J(\theta_{t,i}\,\,)}{\partial \theta_{t,i}} gt,i=θt,iJ(θt,i)

Adagrad将学习率 η \eta η进行了修正,对迭代次数t,基于每个参数之前计算的梯度值,将每个参数的学习率 η \eta η按如下方式修正: θ t + 1 , i = θ t , i − η G t , i i + ξ ⋅ g i , t \theta_{t+1,i}=\theta_{t,i}-\frac{\eta}{\sqrt {G_{t,ii}+\xi}} \cdot g_{i,t} θt+1,i=θt,iGt,ii+ξ ηgi,t

其中,$G_ t ∈R^{ d×d} $ 为对角矩阵,每个对角线位置$i,i 为对应参数 为对应参数 为对应参数θ_ i$ 从第1轮到第t轮梯度的平方和。 ϵ ϵ ϵ是平滑项,用于避免分母为0,一般取值1e−8。

特点:

  • Adagrad的缺点是在训练的中后期,分母上梯度平方的累加将会越来越大,从而梯度趋近于0,使得训练提前结束。

  • 对于每个参数而言,随着其更新的总距离增多,其学习速率也随之变慢。

存在的问题:

  • 学习率是单调递减的,后期的学习率非常小

  • 需要手工设置一个全局的初始学习率

  • 更新时,左右两边的单位不统一

八、Adadelta

Adadetla是Adagrad的一个延伸,它旨在解决Adagrad学习率不断单调下降的问题,Adagrad是利用之前所有梯度的平方和,Adadelta法仅计算在一个时间区间内的梯度值的累积和。

此处的梯度累积和定义为:关于过去梯度值的衰减均值,当前时间的梯度均值是基于过去梯度的均值好当前梯度值平方的加权平均, γ \gamma γ是类似于动量项的权重。

E [ g 2 ] t = γ E [ g 2 ] t − 1 + ( 1 − γ ) g t 2 E[g^2]t=\gamma E[g^2]_{t-1}+(1-\gamma)g_t^2 E[g2]t=γE[g2]t1+(1γ)gt2

Adagrad 法中的参数更新规则如下:

Δ θ t = − η G t + ξ ⋅ g t \Delta \theta_t=-\frac{\eta}{\sqrt {G_t+\xi}} \cdot g_{t} Δθt=Gt+ξ ηgt

Adadelta法的参数更新如下,将上面的对角矩阵利用基于过去的梯度平方的衰减均值替换:

Δ θ t = − η E [ g 2 ] t + ξ ⋅ g t \Delta \theta_t=-\frac{\eta}{\sqrt {E[g^2]_t+\xi}} \cdot g_{t} Δθt=E[g2]t+ξ ηgt

Adadelta方法不用预设学习率

九、RMSprop

RMSprop是Geoff Hinton提出的一种自适应学习率方法。Adagrad会累加之前所有的梯度平方,而RMSprop仅仅是计算对应的平均值,因此可缓解Adagrad算法学习率下降较快的问题。

这里写图片描述

十、Adam法

适应性动量估计法,是能对不同参数进行适应性学习率的方法,Adam存储了:

  • 指数衰减的过去梯度的平方均值(一阶矩)

m t = β 1 m t − 1 + ( 1 − β 1 ) g t m_t=\beta_1m_{t-1}+(1-\beta_1)g_t mt=β1mt1+(1β1)gt

  • 也存储了指数衰减的过去梯度的均值(二阶矩)

v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2 vt=β2vt1+(1β2)gt2

使用偏差纠正系数,来修正一阶矩和二阶矩的偏差,可以近似为对期望的无偏估计:

KaTeX parse error: Got group of unknown type: 'internal'

KaTeX parse error: Got group of unknown type: 'internal'

参数的更新: θ t + 1 = θ t − η v ^ t + ξ m ^ t \theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{\hat v_t}+\xi}\hat m_t θt+1=θtv^t +ξηm^t

算法的提出者建议β 1 的默认值为0.9,β 2 的默认值为.999,ϵ默认为10 −8 。

特点:经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。

Adam 算法和传统的随机梯度下降不同。随机梯度下降保持单一的学习率(即 alpha)更新所有的权重,学习率在训练过程中并不会改变。而 Adam 通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。

Adam 算法的提出者描述其为两种随机梯度下降扩展式的优点集合,即:

适应性梯度算法(AdaGrad)为每一个参数保留一个学习率以提升在稀疏梯度(即自然语言和计算机视觉问题)上的性能。

均方根传播(RMSProp)基于权重梯度最近量级的均值为每一个参数适应性地保留学习率。这意味着算法在非稳态和在线问题上有很有优秀的性能。

Adam 算法同时获得了 AdaGrad 和 RMSProp 算法的优点。Adam 不仅如 RMSProp 算法那样基于一阶矩均值计算适应性参数学习率,它同时还充分利用了梯度的二阶矩均值(即有偏方差/uncentered variance)。具体来说,算法计算了梯度的指数移动均值(exponential moving average),超参数 beta1 和 beta2 控制了这些移动均值的衰减率。

移动均值的初始值和 beta1、beta2 值接近于 1(推荐值),因此矩估计的偏差接近于 0。该偏差通过首先计算带偏差的估计而后计算偏差修正后的估计而得到提升。

十一、如何选择优化器

1、如果你的输入数据较为稀疏(sparse),那么使用适应性学习率类型的算法会有助于你得到好的结果。

2、Adam 也许是总体来说最好的选择

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【机器学习】13、梯度下降方法对比 的相关文章

  • Ant-design-vue框架学习。

    1 安装教程 npm install ant design vue save 2 运用vue cli3 0版本搭建脚手架 3 样式布局layout插件布局快速实现整体布局 4 lib flexible实现屏幕适配 安装 npm instal
  • Tomcat

    关于Tomcat和Tomcat的面试问题 一 Tomcat的缺省是多少 怎么修改 Tomcat的缺省端口号是8080 修改Tomcat端口号 1 找到Tomcat目录下的conf文件夹2 进入conf文件夹里面找到server xml文件3
  • Java线程池ThreadPoolExecutor应用(Spring Boot微服务)

    记录 475 场景 在Spring Boot微服务中使用Java线程池ThreadPoolExecutor 实现Runnable接口提交线程任务到线程池 版本 JDK 1 8 Spring Boot 2 6 3 1 使用注解配置线程池Thr
  • EMC定义 +EMC问题定位整改

    参考链接 强烈推荐 1 有源医疗器械电磁兼容入门知识汇总 2 电磁兼容EMC测试 电磁兼容整改 EMC整改 深圳第三方检测认证机构 3 EMC设计和整改 定位 专题 最重要 https blog csdn net lyh290188 cat
  • MATLAB的Structure数组

    数组的定义与调用 gt gt s struct a 1 4 7 2 9 3 Anne b James pi c magic 3 1 7 使用struct函数创建结构数组 gt gt s 1 1 a 1 2 ans 1 1 cell 数组 4
  • jdk和java什么关系_Java中JDK和JRE的区别是什么?它们的作用分别是什么?

    JDK和JRE是Java开发和运行工具 其中JDK包含了JRE 但是JRE是可以独立安装的 它们在Java开发和运行的时候起到不同的作用 1 JDK JDK是Java Development Kit的缩写 是Java的开发工具包 主要包含了
  • http的get请求如何传递一个对象

    原文链接 https www longkui site program frontend httpget 4366 0 前言 以前前台往后台对象时 后台都用POST请求 前台有时候通过拼接参数传参 会显得比较长 所以考虑前台GET请求能否直
  • Linux (Centos)下pip命令出现错误bash: pip: 命令未找到..解决方案

    今天在服务器上跑程序 提示没有XX模块 我就用pip install XX 安装了一下 结果竟然提示pip命令找不到了 pip3能安装 但是pip3 list一看 里面都没有torch包 之前应该都是用pip安装的才对 去网上找了一通 发现
  • 【算法】分支定界

    一 基本描述 类似于回溯法 也是一种在问题的解空间树T上搜索问题解的算法 但在一般情况下 分支限界法与回溯法的求解目标不同 回溯法的求解目标是找出T中满足约束条件的所有解 而分支限界法的求解目标则是找出满足约束条件的一个解 或是在满足约束条
  • React组件的生命周期

    1 组件生命周期概述 什么是组件的生命周期 组件从被创建到挂载到页面中运行 再到组件不用时卸载的过程 这个过程就叫做组件的生命周期 react在组件的生命周期中提供了一系统的钩子函数 可以让开发者在函数中注入代码 这些代码会在适当的时候运行
  • java ip解析_java域名解析

    DNS原理 http amon org dns introduction html 根域 就是所谓的 根域服务器只是具有13个IP地址 但机器数量却不是13台 因为这些IP地址借助了 域的划分 根域下来就是顶级域或者叫一级域 每个域都会有域
  • [element-ui] el-dropdown下拉菜单禁用项没有鼠标悬浮禁用样式

    鼠标移入出现禁用样式 如下图 就是我们想要的效果
  • Blender3.5 - 快捷键

    图形移动 框选 gt 刷选 gt 套索选择 W 游标 相当于形状的中心点 shitf 空格 空格 游标回到世界中心 shift C 移动 移动 G 随意移动 选中图形 G 沿 X 轴移动 选中图形 G X 沿 Y 轴移动 选中图形 G Y
  • 动态内存(智能指针与new)

    文章目录 一 引言 二 动态内存管理 1 使用动态内存的原因 2 智能指针 2 1 shared ptr 2 1 1 shared ptr定义与初始化 2 1 2 shared ptr操作 2 1 3 make shared操作 2 1 4
  • 【剑指 Offer】(四种解法)数组中重复的数字

    剑指 Offer 03 数组中重复的数字 题目描述 在一个长度为 n 的数组 nums 里的所有数字都在 0 n 1 的范围内 数组中某些数字是重复的 但不知道有几个数字重复了 也不知道每个数字重复了几次 请找出数组中任意一个重复的数字 示

随机推荐

  • 微信公众号与企业号的TOKEN验证与使用

    上图是 微信客户端与微信服务端与公众号 企业号的服务器的原理架构 首先 我们如果使用应用服务器 则需要告诉微信服务器 它在哪里 所以TOKEN就是一个标识的作用 TOKEN是一个参数 是一个自定义的值 负责标识微信服务器和应用服务是不是一一
  • unity狼模型、山谷模型

    unity狼模型 山谷模型 模型如下图 下载链接在文末 点我下载资源 https download csdn net download weixin 43474701 60362226
  • 如何使用文件作为参数,调用接口并获取返回数据?

    String path picture 20220420 1 doc 指定文件的路径 或相对路径 File file new File path System out println 文件名 file getName 文件绝对路径 file
  • 百度AI攻略:增值税发票识别

    1 功能描述 在日常工作中经常要用到增值税发票 在使用的时候需要对增值税发表进行检查 验真 录入等很多工作 使用增值税发票识别技术 实现对增值税普票或专票各字段信息的识别和录入 可应用于企业税务核算及内部报销等场景 能够有效减少人工核算工作
  • Tensorflow与Python、CUDA、cuDNN的版本对应表

    1 官方配置 官网只有英文版的才更新到了TensorFlow 2 12 0 中文版只更新到了2 6 0 所以要想看到下面的内容需要进入官网之后将语言更改为英文 经过测试的构建配置 Linux CPU Version Python versi
  • Spring Cloud简介:构建分布式微服务架构的利器

    标题 Spring Cloud简介 构建分布式微服务架构的利器 摘要 本文介绍了Spring Cloud作为构建分布式微服务架构的利器 我们将深入探讨Spring Cloud的重要组件和功能 并通过代码示例展示Spring Cloud的强大
  • 非线性控制1——经典控制和现代控制的区别

    经典控制和现代控制的区别
  • 三次登录验证和验证码功能实现

    三次登录验证和验证码功能实现 最近手头上的事忙的差不多了 就想着自己写写小demo玩一下 结果突然看到我们旧系统的登录好像有点拉胯 然后就自己写了个小demo 指不定哪天就用上了呢 一 pom文件 首先当然是pom文件啦 这里写的比较简单
  • chatgpt赋能python:Python中的三角函数:了解sin、cos和tan

    Python中的三角函数 了解sin cos和tan Python是一种强大的编程语言 可以应用于处理各种数据类型和数学计算 包括三角函数 在这篇文章中 我们将深入了解Python中的三角函数 包括sin cos和tan 什么是三角函数 在
  • 嵌入式平台memcpy实验总结

    1 概述 最近项目中性能比较吃紧 经过跟踪发现 memcpy操作的性能存在一定问题 于是 做了一些尝试去验证一些想法 记录一下 环境 MDK530 Cortex M0芯片 主频80MHz左右 2 优化手段 在优化之前 我们要先确定基本的性能
  • 【MATLAB第37期】 #保姆级教程 XGBOOST模型参数完整且详细介绍,调参范围、思路及具体步骤介绍

    MATLAB第37期 保姆级教程 XGBOOST模型参数完整且详细介绍 调参范围 思路及具体步骤介绍 一 XGBOOST参数介绍 一 模型参数 1 XGBoost模型 default gbtree 有两种模型可以选择gbtree和gblin
  • 【Git】git概述

    00 目录 文章目录 00 目录 01 关于版本控制 1 1 本地版本控制系统 1 2 集中化的版本控制系统 1 3 分布式版本控制系统 02 Git简史 03 Git 是什么 3 1 直接记录快照 而非差异比较 3 2 所有操作都是本地执
  • Java GC 及HBase RegionServer GC调优

    1背景 1 1问题描述 HBase RegionServer由于GC等原因Stop World超过40s RS在ZK上创建的临时节点被删除 造成Master认为RS已经下线 重新分配该RS上的Region RS恢复后 由于种种原因 WAL被
  • 警察没收虚拟服务器,因为那次服务器被没收了,以前做的所有东西都不存在了。...

    因为那次服务器被没收了 以前做的所有东西都不存在了 相关句子 2 没什么 就是不希望大家太委屈自己 罗昊 你知不知道 为了多一点强化资本而拼命压缩自己的生存需要 其实也是一种恐惧方式 这种恐惧让你把所有的注意力都集中在每月一次的任务上 使你
  • Leetcode之160. 相交链表

    提交记录 执行结果 题目 解题思路 假设A前段为x B前段为y 共同段为z 则 A x z B y z 将链表A尾部接链表B 则 A A B x z y z 将链表B尾部接链表A 则 B B A y z x z 即使x与y长度不相同 但前三
  • Finereport自定义数据连接配置,日志配置的位置

    Finereport自定义数据连接的配置信息 在 webapps webroot WEB INF embed finedb下的db script这个文件中 另外 系统日志的设置的配置文件也在这个文件夹中 所以建议是直接复制embed这一整个
  • python期末考试题库pdf_python期末复习题(必考)

    python期末复习题 必考 由会员分享 可在线阅读 更多相关 python期末复习题 必考 6页珍藏版 请在金锄头文库上搜索 1 2018 2019学年第一学期python练习专业 班级 学号 姓名 Python语言基础一 单选题1 在P
  • 架构模型

    软件架构模式 分层架构 Layered Architecture 转载于 http www tuicool com articles uuuiEbZ 0 tsina 1 19589 397232819ff9a47a7b7e80a40613c
  • 文献学习-联合抽取-Joint entity and relation extraction based on a hybrid neural network

    目录 1 Introduction 2 Related works 2 1 Named entity recognition 2 2 Relation classification 2 3 Joint entity and relation
  • 【机器学习】13、梯度下降方法对比

    文章目录 一 梯度下降法介绍 二 批量梯度下降法 三 随机梯度下降法 四 小批量梯度下降法 mini batch GD 五 动量法 Momentum 六 Nesterov Momentum 七 Adagrad法 八 Adadelta 九 R