当前位置: 首页 > news >正文

网站后台管理系统cms只做二手奢侈品的网站

网站后台管理系统cms,只做二手奢侈品的网站,如何做网站优化,0基础做下载网站来源#xff1a;图灵人工智能深度学习中的优化是一项极度复杂的任务#xff0c;本文是一份基础指南#xff0c;旨在从数学的角度深入解读优化器。深度学习中的优化是一项极度复杂的任务#xff0c;本文是一份基础指南#xff0c;旨在从数学的角度深入解读优化器。一般而言…来源图灵人工智能深度学习中的优化是一项极度复杂的任务本文是一份基础指南旨在从数学的角度深入解读优化器。深度学习中的优化是一项极度复杂的任务本文是一份基础指南旨在从数学的角度深入解读优化器。一般而言神经网络的整体性能取决于几个因素。通常最受关注的是网络架构但这只是众多重要元素之一。还有一个常常被忽略的元素就是用来拟合模型的优化器。为了说明优化的复杂性此处以 ResNet 为例。ResNet18 有 11,689,512 个参数。寻找最佳参数配置也就是在 11,689,512 维的空间中定位一个点。如果暴力搜索的话可以把这个空间分割成网格。假设将每个维度分成十格那么就要检查 10^1168951210 的 11689512 次方组可能的配置对每一组配置都要计算损失函数并找出损失最小的配置。10 的 11689512 次方是一个什么概念已知宇宙中的原子才只有 10^83 个宇宙的年龄只有 4.32 x 10^17 秒约 137 亿年。如果从大爆炸开始每秒检查 10^83 个原子我们现在才检查了 4.32*10^1411 个远远小于上述网格可能的配置数。所以优化器非常重要。它们就是用来处理这种难以理解的复杂性的。有了它你就可以将训练网络的时间压缩在几天内而不是数十亿年间。下文将从数学角度深入研究优化器并了解它们是如何完成这一看似不可能的任务的。优化的基础我们从简单的地方开始。假设要最大化单变量函数。在机器学习中通常以最小化损失函数为目标不过最小化就等同于最大化函数的负值。定义对函数作图最直观的方法是将这条线划分成网格检查每个点的值然后选择函数值最大的点。正如引言中所说这是不可扩展的因此要找其他解决方案。将这条线想象成一座要爬到顶峰的山。假设位于红点处如果要到达山峰该往哪个方向走当然应该向斜率增加的地方前进。这个概念对应的是函数的导数。在数学上导数定义为乍看之下导数非常神秘但它的几何意义非常简单。仔细看一下求导的点对任何 x 和 y通过 f(x) 和 f(y) 的这条线定义为一般而言如果用 atb 定义一条直线那称 a 为这条线的斜率。这个值既可以是正值也可以是负值斜率为正直线向上走斜率为负直线向下走。绝对值越大直线越陡。如果像导数定义中一样让 y 越来越接近 x那么这条线就会成为 x 处的切线。图注在 x-2.0 时f(x)的切线和逼近线。切线为切线方向记为向量(1,f’(x))。如果从 x_0-2.0 的位置开始登山应该沿切线上升的方向前进。如果切线的斜率较大可以大步迈进如果斜率接近零应该小步小步往上爬以免越过峰值。如果用数学语言表示我们应该用下面这种方式定义下一个点式中 λ 是个参数设置前进的步长。这就是所谓的学习率。通常后续步骤定义为正导数意味着斜率在增加所以可以前进而负导数意味着斜率在减少所以要后退。可视化这个过程如你所见这个简单的算法成功地找到了峰值。但如图所示这并非函数的全局最大值。在所有的优化算法中这都是一个潜在的问题但还是有解决办法的。在这个简单的例子中我们只最大化了单变量函数。这样虽然可以有效地说明这个概念但在现实生活中可能存在数百万变量神经网络中就是如此。下一部分将会介绍如何将这样简单的算法泛化到多维函数的优化。多维优化在单变量函数中可以将导数视为切线的斜率。但遇到多个变量则不能如此。先来看个具体的例子。定义函数这个函数将是这部分的 toy example 。对 f(x,y)作图。这是一个有两个变量的函数图像是一个曲面。马上可以发现这样很难定义切线的概念因为与曲面上一个点相切的线有很多。事实上可以做一个完整的平面。这就是切平面。f(x,y)在点 (0,0) 处的切平面。但切平面有两个非常特别的方向。以点 (0,0) 处的切平面为例。对每一个多变量函数来说先固定所有变量只取一个能动的变量这样这个函数基本上就变成单变量函数了。示例函数变为和可以用垂直于坐标轴的平面分割曲面来可视化上面这两个函数。平面和曲面相交处就是 f(x,0) 或 f(0,y)这取决于你用哪个平面。用垂直的平面切割曲面可视化 f(0,x)。对这些函数就可以像上文一样定义导数了。这就是所谓的偏导数。要泛化之前发现峰值的算法偏导数起着至关重要的作用。用数学语言定义每个偏导数表示切平面上的一个方向。切平面上偏导数的方向。偏导数的值是特殊切线的斜率。最陡的方向根据梯度确定定义为注意梯度是参数空间中的方向。可以轻松在二维平面中绘制出梯度如下图所示f(x,y)的梯度。综上所述发现峰值的算法现在成为这就是所谓的梯度上升gradient ascent。如果要求函数最小值就要沿负梯度的方向迈出一步也就是下降最陡的方向这就是所谓的梯度下降gradient descent你可能会很频繁地看到它因为在机器学习中实际上是要最小化损失。为什么梯度指向最陡的上升方向在这种情况下要知道为什么梯度给出的是最陡峭的上升方向。为了给出精确的解释还要做一些数学计算。除了用垂直于 x 轴或 y 轴的垂直平面切割曲面外还可以用 (a,b) 任意方向的垂直平面切割曲面。对于偏导数有可以将它们视为 f(x,y) 沿 (1,0) 和(0,1)方向的导数。尽管这些方向特别重要但也可以任意规定这些方向。也就是说假设方向为这个方向的导数定义为注意最后一个等式就是方向向量和梯度的点积这可能和高中几何课堂上遇到的点积是相同的。所以问题是哪个方向的方向导数最大答案是上升程度最陡峭的方向所以如果要优化得先知道这个特定的方向。这个方向就是之前提过的梯度点积可以写作式中的 |.| 表示向量长度α是两向量间的夹角这在任意维数上都是成立的不只是二维。显而易见当 cosα1即 α0 时表达式取最大值。这就意味着这两个向量是平行的所以 e 的方向和梯度方向是相同的。训练神经网络现在要从理论转战实践了了解如何训练神经网络。假设任务是将有 n 维特征向量的图像分成 c 类。从数学角度看神经网络代表将 n 维特征空间映射到 c 维空间的函数 f神经网络本身是参数化的函数。方便起见将参数标记为 m 维向量为了表现出对参数的依赖习惯记为将神经网络的参数空间映射为实数。损失函数记为式中的是观测值为的第 i 个数据点L 是损失函数项。例如如果 J 是交叉熵损失则式中这看似简单但难以计算。在真实世界中有数百万个数据点 N更别说参数 m 的数量了。所以一共有数百万项因此要计算数百万个导数来求最小值。那么在实践中该如何解决这一问题随机梯度下降要用梯度下降得先计算如果 N 很大那么计算量就很大而一般都希望 N 大一点因为想要尽量多的数据。可以化简吗一种方式是忽略一部分。尽管这看起来像个不靠谱的方案但却有坚实的理论基础。要理解这一点首先注意 J 其实可以写成期望值式中的是训练数据给出的经验概率分布。可以将序列写成这样就成了独立同分布的随机变量。根据大数定律式中是真正的总体分布这是未知的。再详细点说因为增加了训练数据损失函数收敛到真实损失。因此如果对数据二次采样并计算梯度对某些 i如果计算足够仍然可以得到合理的估计。这就是所谓的随机梯度下降记为 SGD Stochastic Gradient Descent。我认为研究人员和数据科学家能有效训练深度神经网络依赖于三个基础发展将 GPU 作为通用的计算工具、反向传播还有随机梯度下降。可以肯定地说如果没有 SGD就无法广泛应用深度学习。与几乎所有新方法一样SGD 也引入了一堆新问题。最明显的是二次采样的样本量要有多大太小可能会造成梯度估计有噪声太大则会造成收益递减。选择子样本也需要谨慎。例如如果所有子样本都属于一类估计值可能会相差甚远。但在实践中这些问题都可以通过实验和适当随机化数据来解决。改善梯度下降梯度下降以及 SGD 变体存在一些问题因此这些方法在某些情况下可能会无效。例如学习率控制着梯度方向上前进的步长。在这个参数上一般会犯两个错误。第一步长太大以至于损失无法收敛甚至可能分散第二步长太小可能因为前进太慢永远都无法到达局部最小值。为了阐明这个问题以 f(x)xsin x 函数为例进行研究假设从 x_02.5 开始进行梯度下降学习率 α 分别为 1、0.1 和 0.01。理解起来可能不够直观所以对每个学习率的 x-s 绘图当 α1 时图像在两点间震荡无法收敛到局部最小值当 α0.01 时收敛得似乎很慢。在本例中α0.1 似乎是合适的。那在一般情况下该如何确定这个值呢这里的中心思想是学习率不一定是恒定的。同理如果梯度幅度很大就应该降低学习率避免跳得太远。另一方面如果梯度幅度较小那可能意味着接近局部最优值了所以要避免超调overshooting的话学习率绝对不能再增加了。动态改变学习率的算法也就是所谓的自适应算法。最流行的自适应算法之一是 AdaGrad。它会累积存储梯度幅度和大小并根据记录调整学习率。AdaGrad 定义了累积变量 r_00 并根据规则进行更新式中的表示两个向量的分量乘积。将其用于度量学习率式中的 δ 是为了保持数据稳定的数值平方根是根据分量取的。首先当梯度大时累积变量会很快地增长学习率会下降。当参数接近局部最小值时梯度会变小学习率会停止下降。当然AdaGrad 是一种可能的解决方案。每一年都会有越来越多先进的优化算法来解决梯度下降相关的问题。但即便是最先进的方法使用并调整学习率都是很有好处的。另一个关于梯度下降的问题是要确定全局最优值或与之接近的局部最优值。看前面的例子梯度下降通常会陷入局部最优值。为了更好地了解这一问题和更好的解决办法建议您阅读 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 所著的《深度学习》Deep Learning第八章https://www.deeplearningbook.org/。深度神经网络的损失函数什么样前面的例子只可视化了非常简单的玩具示例比如 f(x)25sin x-x^2。这是有原因的绘制超过两个变量的函数图像很难。考虑到固有的局限性我们最多只能在三个维度上进行观察和思考。但为了了解神经网络中的损失函数可以采取一些技巧。Hao Li 等人发表的论文《Visualizing the Loss Landscape of Neural Nets》https://arxiv.org/pdf/1712.09913.pdf就是有关这个的他们选择两个随机方向对二变量函数绘图从而可视化损失函数。为了避免因尺度不变而引起的失真他们还在随机方向中引入了一些归一化因素。他们的研究揭示了在 ResNet 架构中残差连接是如何影响损失让优化变得更容易的。图像来源Hao Li 等人所著《Visualizing the Loss Landscape of Neural Nets》https://arxiv.org/pdf/1712.09913.pdf。无论残差连接做出了多显著的改善我在这里主要是想说明多维优化的难度。在图中的第一部分可以看出有多个局部最小值、峰值和平稳值等。好的架构可以让优化变得更容易但完善的优化实践可以处理更复杂的损失情况。架构和优化器是相辅相成的。总结我们在前文中已经了解了梯度背后的直观理解并从数学角度以精确的方式定义了梯度。可以看出对于任何可微函数无论变量数量如何梯度总是指向最陡的方向。从概念上来讲非常简单但当应用在有数百万变量的函数上时存在着很大的计算困难。随机梯度下降可以缓解这个问题但还存在陷入局部最优、选择学习率等诸多问题。因此优化问题还是很困难的需要研究人员和从业人员多加关注。事实上有一个非常活跃的社区在不断地进行改善并取得了非常惊人的成绩。未来智能实验室的主要工作包括建立AI智能系统智商评测体系开展世界人工智能智商评测开展互联网城市大脑研究计划构建互联网城市大脑技术和企业图谱为提升企业行业与城市的智能水平服务。每日推荐范围未来科技发展趋势的学习型文章。目前线上平台已收藏上千篇精华前沿科技文章和报告。  如果您对实验室的研究感兴趣欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”
http://www.pierceye.com/news/311819/

相关文章:

  • 网站建设设计培训班南昌广告公司
  • 网站问责建设书企业网站建设 百度文库
  • 佛山网站建设seo优化建设电子商务系统网站
  • 网站建设功能分为几种购物网站的后台做哪些东西
  • 2017网站建设费用wordpress不使用ip访问
  • 水务 网站建设宁波建站模板系统
  • 方正集团网站是谁做的北京最新发布信息
  • iis7.5添加php网站wordpress内容页自定义字段
  • 设计公司做网站价格图片网站收录
  • 网站做315认证广州中医药资源门户网站
  • 线上营销网站设计网站着陆页有多少个
  • 天津通用网站建设方案聊城做网站的地方
  • 政务网站建设合同dw个人网站模板下载
  • 广州网站优化服务商企业网站建设一站式服务
  • 蓝海电商怎么做广州短视频seo哪家好
  • 泸州住房和城乡建设厅网站怎么自己做微网站吗
  • 做网站上传图片自己怎么建设网站首页
  • 西安空调销售网站建设wordpress 谷歌地图
  • 网站建设投标书范本wordpress防广告屏蔽
  • 设计个人网站的步骤建设工程合同无效的情形有哪些
  • 网站竞争对手的选定一般参考什么标准的建设网站长沙
  • 通州个人做网站营销型网站建设开发
  • 乌海市网站建设基于asp的网络课程网站开发
  • 关掉自己做的网站网页设计与制作服务公司
  • 视频相亲网站开发成本分类信息网站推广的意义
  • 域名和网站网站开发项目视频
  • 色流网站怎么做东营建筑信息网
  • 做能支付的网站贵吗网络安全工程师考证
  • 下载类网站开发条件环球资源网成立时间
  • 客户如何找到做网站宣传的律师免费虚拟主机空间