找回密码
 立即注册
查看: 166|回复: 0

基于动量的梯度下降算法

[复制链接]
发表于 2022-12-19 11:31 | 显示全部楼层 |阅读模式
系列文章概览

  • 从头开始简单理解线性回归(附Python 实现)
  • 线性回归中的梯度下降法(Python实现)
  • 理解局部加权线性回归
  • 简单理解朴素贝叶斯分类器实现
  • 使用Tensorflow简单实现线性回归
  • 梯度下降的优化技术
  • 基于动量的梯度下降算法
梯度下降是机器学习框架中用于训练不同模型的优化技术。训练过程由一个目标函数(或误差函数)组成,它决定了机器学习模型在给定数据集上的误差。
在训练时,该算法的参数被初始化为随机值。随着算法的迭代,参数会被更新,使得我们越来越接近函数的最优值。
然而,自适应优化算法因其快速收敛的能力而越来越受欢迎。与传统的梯度下降相反,所有这些算法都使用先前迭代的统计数据来加强收敛过程。
基于动量的优化

自适应优化算法使用先前迭代的梯度指数加权平均值来稳定收敛,从而实现更快的优化。例如,在大多数深度神经网络的实际应用中,训练是在有噪声的数据上进行的。 因此,在优化期间分批输入数据时,有必要减少噪声的影响。 这个问题可以使用指数加权平均数(或指数加权移动平均数)来解决。
实施指数加权平均值:



为了近似大小为N的嘈杂数据集中的趋势 \theta_{0}, \theta_{1}, \theta_{2}, ..., \theta_{N},我们维护一组参数 v_{0}, v_{1}, v_{2}, v_{3}, ..., v_{N}。当我们遍历数据集中的所有值时,我们计算参数如下:
On iteration t:
Get next\theta_{t}
v_{\theta} = \beta v_{\theta} + (1 - \beta) \theta_{t}
该算法 v_{\theta}对先前 \frac{1}{1 - \beta}迭代的值取平均值。这种平均可确保仅保留趋势并平均掉噪声。该方法被用作基于动量的梯度下降的策略,以使其对数据样本中的噪声具有鲁棒性,从而加快训练速度。
例如,如果您要优化参数f(x)的 函数X,以下伪代码说明了该算法:
On iteration t:
On the current batch,
compute \frac{\partial f(x)}{\partial x} v := v + (1 - \beta) \frac{\partial f(x)}{\partial x} x := x - \alpha v
此优化算法的超参数是a,称为学习率和,\beta类似于力学中的加速度。
代码实现

以下是基于动量的梯度下降函数的实现, f(x) = x ^ 2 - 4 x + 4:
import math

# HyperParameters of the optimization algorithm
alpha = 0.01
beta = 0.9

# Objective function
def obj_func(x):
return x * x - 4 * x + 4

# Gradient of the objective function
def grad(x):
return 2 * x - 4

# Parameter of the objective function
x = 0

# Number of iterations
iterations = 0

v = 0

while (1):
iterations += 1
v = beta * v + (1 - beta) * grad(x)

x_prev = x

x = x - alpha * v

print("Value of objective function on iteration", iterations, "is", x)

if x_prev == x:
  print("Done optimizing the objective function. ")
  break
欢迎关注(fork),我会不间断、持续分享一些统计学习方法知识和有趣的内容。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-12 11:28 , Processed in 0.116630 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表