为什么Optimization会失败(一)?

when gradient is small…

一、为什么Optimization会失败?

1.1 local minima 局部最小值

image-20211124141047799

1.2 saddle point 鞍点

一个不是局部最小值的驻点(一阶导数为0的点)称为鞍点。沿着马脊背方向是稳定的,是极小值,但沿着左右方向,是极大值。例如,函数y=x^3就有一个鞍点在原点,在鞍点的一次导数等于零,二次导数换正负符号。

  1. 在微分方程中,指沿着某一方向是稳定的另一条方向是不稳定的奇点。
  2. 在泛函中,指既不是极大值点也不是极小值点的临界点。
  3. 在矩阵中,一个数在所在行中是最小值而在所在列中是最大值的点。
  4. 在物理上,指在一个方向是极大值而另一个方向是极小值的点。
image-20211124141135819

这种gradient is close to zero—一阶导数为0,就称critical point驻点

因此,gradient无法下降,也许是因为critical point,但是不能说是卡在local minima .

1.3 如何鉴别

local minima

no way to go, 四周都比较高,现在位置是Loss最低点

saddle point

只要沿着左右方向逃离saddle point, 还是有可能更低的

二、Warning of math

2.1 Tayler Series Approximation

2.1.1 泰勒级数相关

了解Loss function 的形状。由于Loss function非常复杂,我们没法知道整个函数,但是可以知道给定参数θ‘的附近的Loss function的估计。

大一学的泰勒级数当时就没懂,因此在补课时意外发现以下视频,然后收藏了该系列…泰勒公式如下。

https://www.bilibili.com/video/BV1Gx411Y7cz?from=search&seid=13272137787140378575&spm_id_from=333.337.0.0

image-20211124154242070

2.1.2 近似函数如下所示。

image-20211124155427552

上图转置的原因可能是因为,θ是一个一维的列向量,g也是一个一维列向量,相乘的话必须将θ转置。

当出现critical point,意味着绿色部分为0(一阶导数为0)。所以,根据红色部分来看地貌长啥样,判断是local min、local max、saddle point.

image-20211124155755442
2.1.3 根据hessian矩阵是否正定来判断。
image-20211124161903579

正定矩阵

https://zhuanlan.zhihu.com/p/119185996

例子——计算hessian
image-20211126144731396 image-20211126145527549

2.2 如何对付saddle point

image-20211126150848549

例子,使用上面那个史上最糟糕的神经网络来逃离鞍点。找到小于0的入,计算出对应的一个特征向量u,即可更新鞍点。但是实际上,由于求二阶导计算量非常复杂,因此很少有人用此方法逃离鞍点。

image-20211126151629699
2.2.1 鞍点和局部最小值出现频率

实际上来看,鞍点的出现频率要高于局部最小值的。如下图所示。Loss处在很高或者很低时,都有可能出现critical point

image-20211126154004445

三、Tips for training:Batch and Momentum

3.1 Optimization with Batch

这里注意一下shuffle,每个batch都训练完了,1 个epoch结束以后,我们会对整个data重新shuffle,得到的每个batch和上一轮是不一样的。

image-20211126155400206
3.2 为什么要用batch?
3.2.1 batch大小比较
image-20211126162206552

大:蓄力时间长,威力比较大 小:等待时间短,乱枪打鸟

比较大的batch size不一定需要花费更多的时间去计算gradient。因为GPU 平行运算的能力使得大小1000的batch和1的batch计算时间不是1000倍的关系。除非当数据真的非常大了。

image-20211126160359796

比较小的batch update一次的时间虽然很短,但是需要更长的时间去跑完一次epoch。

image-20211126161043489

如果只看validation acc可能会认为是过拟合的问题,实际上同时看training acc,整个趋势差不多,因此不是过拟合。而是对于更大的batch,模型的表现力可能会变差。batch过大,可能会使得optimization出现问题。

3.2.2 小的batch会带来更好地结果
image-20211126161812325

为什么在小的batch size会出现更好地结果,“noisy”的update会表现更好?

解释1:不同的batch的Loss函数是不完全一致的,因此也很难在同一个点卡主,降低出现local minima的可能。

image-20211126162516292

解释2(暂代研究):小的batch更倾向于走到平原minima,而大的batch更倾向于走到峡谷minima。实线代表训练集,虚线代表测试集,由于种种原因(可能训练数据和测试数据分布不一样)导致其函数会有些微差别,峡谷minima在面对函数变化时会产生较大的误差。

image-20211126163943509 image-20211126163315559 image-20211126164134869
3.3 动量momentum

考虑物理问题,由于小球具有动量,所以一般的local minima或者saddle minima很难困住小球。

image-20211126164751547

记录一下参数更新步骤。一般情况如下所示。

image-20211126165549666

结合gradient的反方向和前一步的方向综合确定下一步的方向。注意,这里的入和学习率一样是人为设定的参数。

image-20211126165348569

形象表达:

image-20211126165348569

形象表达:

image-20211126170150753
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: .NET Runtime Optimization Service(CLR_optimization_v2.0.50727_32)是一个运行在Windows操作系统上的服务,用于对.NET应用程序进行优化和加速。该服务在安装.NET应用程序时自动启动,并在后台进行优化处理。 当出现“.NET Runtime Optimization Service(CLR_optimization_v2.0.50727_32) - failed”错误时,说明该服务在优化.NET应用程序时遇到了问题,无法正常完成任务。 这个错误可能有多种原因。一种可能的原因是在启动该服务时遇到了文件损坏或缺失的情况。您可以尝试重新安装.NET Framework,以修复可能存在的文件问题。 另一种可能的原因是服务正在尝试优化的应用程序包含了不兼容的代码或依赖项。这可能是由于应用程序在不兼容的操作系统版本上运行,或者应用程序使用了过时的.NET Framework版本。您可以尝试更新您的操作系统和.NET Framework版本,并确保您的应用程序和依赖项是兼容的。 此外,还有一些其他可能的解决方法,如重启计算机、禁用安全软件或重新注册服务等。但在执行这些操作之前,请务必先备份您的计算机和应用程序。 总结起来,.NET Runtime Optimization Service(CLR_optimization_v2.0.50727_32)- failed错误是由于Windows操作系统上的.NET优化服务无法正常完成任务所导致的。解决这个问题的方法可能包括重新安装.NET Framework、更新操作系统和.NET Framework版本、以及排除其他可能的问题。 ### 回答2: .net Runtime Optimization Service (clr_optimization_v2.0.50727_32) - failed 是一个常见的错误消息,通常出现在 Windows 操作系统中的事件查看器中。 这个错误消息通常与.NET Framework相关的一些问题有关。.NET Framework是一个由微软开发的框架,用于在Windows操作系统上开发和运行各种应用程序。.NET Runtime Optimization Service (clr_optimization_v2.0.50727_32) 则是.NET Framework中的一个服务,负责在安装和更新.NET Framework时进行一些优化操作,以提高应用程序的性能和运行速度。 当用户在系统事件查看器中看到此错误消息时,可能是由于以下原因之一导致的: 1. 安装或更新.NET Framework过程中出现了错误:某些.NET Framework安装或更新操作可能中断或失败,导致优化服务无法正常完成其任务。 2. 损坏的.NET Framework组件或文件:如果系统中的.NET Framework组件或相关文件已损坏,则优化服务可能出现故障。 3. 安装的.NET Framework版本不兼容:某些应用程序需要特定版本的.NET Framework,如果安装的.NET Framework版本与应用程序要求的版本不兼容,则可能导致优化服务失败。 解决这个问题的方法可以包括: 1. 确保系统是最新的:确保系统上安装的.NET Framework是最新版本,并且已经安装了所有可用的更新。 2. 重新安装.NET Framework:如果.NET Framework存在损坏的组件或文件,可以尝试重新安装.NET Framework来修复问题。 3. 更新应用程序依赖的.NET Framework版本:如果应用程序要求特定版本的.NET Framework,请确保已安装了正确的版本。 4. 运行系统文件检查工具:可以使用Windows自带的sfc /scannow命令来检查并修复系统中的损坏文件。 5. 获取专业帮助:如果以上方法都无法解决问题,建议向技术支持团队或专业人士寻求帮助,他们可以进一步分析并解决该问题。 总之,.NET Runtime Optimization Service (clr_optimization_v2.0.50727_32) - failed 是一个指示.NET Framework相关问题的错误消息,可以通过更新.NET Framework、重新安装.NET Framework或与专业人士寻求帮助来解决该问题。 ### 回答3: .net runtime optimization service (clr_optimization_v2.0.50727_32) - failed是指.NET运行时优化服务在执行时发生了错误或失败。首先,CLR指的是Common Language Runtime,是.NET Framework中的核心组件之一,用于管理和执行.NET应用程序的代码。而CLR优化服务则是CLR在安装和更新时执行的一个过程,它优化和预编译应用程序的托管代码,以提高应用程序的性能和响应时间。 由于CLR优化服务通常在后台运行,因此很少直接与用户交互。出现CLR优化服务失败的原因可能有多种,例如: 1. 版本冲突:CLR优化服务需要匹配正确的.NET Framework版本,如果出现版本不匹配或冲突,就可能导致失败。 2. 文件损坏:CLR优化服务执行所需的文件可能已损坏或丢失,导致无法正常运行。 3. 硬件或系统问题:可能存在硬件或系统问题,例如内存不足、磁盘空间不足、操作系统错误等,导致CLR优化服务失败。 解决CLR优化服务失败的方法可以尝试以下几个步骤: 1. 从官方网站下载并安装最新的.NET Framework版本,确保版本匹配。 2. 运行Windows Update,确保操作系统和相关组件已更新到最新版本。 3. 执行系统文件检查器(sfc /scannow),以检查和修复可能损坏的系统文件。 4. 清理磁盘空间,确保足够的可用空间供CLR优化服务使用。 5. 尝试重新启动计算机,有时候重新启动可以解决临时的系统问题。 如果以上步骤仍然无法解决问题,建议搜索并访问相关技术论坛或咨询专业技术支持,以获取更准确和详细的解决方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值