梯度下降中,计算完各个参数的导数之后就需要更新参数值了,最常用的更新参数方法就是:
【SGD】:
x += - learning_rate * dx
但是这种方法收敛速度非常慢,其实除了这个更新参数的方法,还有很多的方法可以进行参数更新。
【Momentum update】:
这个方法对于深度学习的网络参数更新往往有不错的效果。本质意思是,在更新新的参数的时候需要考虑前一个时刻的“惯性”,其更新参数如下:
# Momentum update v = mu * v - learning_rate * dx # integrate velocity x += v # integrate position
上面计算方法和下面的等价(其中的ρ等价于上面的mu):
其中一般的,v初始为0,mu是优化参数,一般初始化参数为0.9,当使用交叉验证的时候,参数mu一般设置成[0.5,0.9,0.95,0.99],在开始训练的时候,梯度下降较快,可以设置mu为0.5,在一段时间后逐渐变慢了,mu可以设置为0.9、0.99。也正是因为有了“惯性”,这个比SGD会稳定一些。
【Nesterov Momentum】
这是一个和上面的Momentum update有点不一样的方法,这种方法最近得到了较为广泛的运用,对于凸函数,它有更为快的收敛速度。
计算公式:
x_ahead = x + mu * v # evaluate dx_ahead (the gradient at x_ahead instead of at x) v = mu * v - learning_rate * dx_ahead x += v
其基本思路如下:(参考自各种优化方法的比较)
首先,按照原来的更新方向更新一步(x_ahead,也就是棕色线),然后在该位置计算梯度值(也就是dx_ahead,红色线),然后用这个梯度值修正最终的更新方向(绿色线)。上图中描述了两步的更新示意图,其中蓝色线是标准momentum更新路径
【Adagrad】
adagrad是一种自适应学习率的更新方法,计算方法如下:
# Assume the gradient dx and parameter vector x cache += dx**2 x += - learning_rate * dx / (np.sqrt(cache) + eps)
这个方法其实是动态更新学习率的方法,其中cache将每个梯度的平方和相加,而更新学习率的本质是,如果求得梯度距离越大,那么学习率就变慢,而eps是一个平滑的过程,取值通常在(10^-4~10^-8 之间)
【RMSprop】
RMSpro是还没有发布的方法,但是已经使用的额相当广泛,其和Adagrad的方法差不多,计算方法如下:
cache = decay_rate * cache + (1 - decay_rate) * dx**2 x += - learning_rate * dx / (np.sqrt(cache) + eps)
其中,decay_rate取值通常在[0.9,0.99,0.999]
【Adam】
adam现在已经被广泛运用了,adam的更新参数方法如下:
m = beta1*m + (1-beta1)*dx v = beta2*v + (1-beta2)*(dx**2) x += - learning_rate * m / (np.sqrt(v) + eps)
m,v一般初始化为0,而这篇论文中,eps取值为1e-8 beta1=0.9 beta2=0.9999
【几种常见参数更新方法的比较】:
相关推荐
基于人工神经网络的参数化CAD方法是一种将人工智能技术应用于计算机辅助设计(CAD)的创新技术,旨在提升CAD系统在设计产品时的自动化、系列化和概念设计能力。这种方法特别注重提高参数化设计的柔性和创新性,以...
基于BP神经网络的无约束优化方法主要包括以下几个步骤: 1. **网络输出极小化数学模型**:首先建立一个以网络输出极小化为目标的数学模型。该模型的目标是最小化网络输出,即找到一组输入参数使得网络输出最小。 ...
卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习算法,广泛应用于图像识别、自然语言处理等领域。近年来,卷积神经网络在语音识别和情感识别方面也取得了很好的效果。 卷积神经网络的基本结构...
全连接神经网络(Fully Connected Neural Network,简称FCNN)是深度学习中的一种基本模型,它在许多机器学习任务中扮演着重要角色,如图像分类、自然语言处理等。FCNN的特点在于每一层神经元都与前一层的所有神经元...
MATLAB(矩阵实验室)是一种强大的数值计算软件,广泛应用于科学计算、数据分析以及工程问题的求解,其中包括神经网络的建模和仿真。在"神经网络模型及其MATLAB仿真程序设计"这个主题中,我们将深入探讨以下几个关键...
本资源包含几种神经网络算法的实例,这些实例对于学习和理解MATLAB中的神经网络实现非常有帮助。 1. **BP神经网络(Backpropagation Neural Network)** BP神经网络是最常见的多层前馈网络,通过反向传播误差来...
在IT领域,尤其是在数据分析、信号处理和机器学习中,卡尔曼滤波器和神经网络是两种重要的技术。本文将深入探讨这两种技术的结合——基于卡尔曼滤波器的神经网络优化,以及它如何在实际应用中产生良好的效果。 首先...
1. **BP神经网络**:这是一种多层前馈网络,通过梯度下降法和反向传播算法更新权重,以最小化预测输出与实际输出之间的误差。在网络训练完成后,可以用于预测未知输入的输出。 2. **PID控制器原理**:PID控制器由...
本文主要介绍了一种基于遗传算法和人工神经网络的冷水机组模型参数辨识及误差补偿方法。该方法旨在解决冷水机组模型参数辨识的困难问题,即在有限的传感器实测数据的情况下,如何对某特定冷水机组DOE-2模型的参数...
随着人工智能技术的发展,尤其是人工神经网络(Artificial Neural Networks, ANN)的应用越来越广泛,将人工神经网络用于估计Logistic方程参数成为了一种新的研究方向。 #### 二、Logistic方程简介 Logistic方程的...
课程中提到了几种经典的神经网络模型,如感知机(Perceptron)、线性神经网络(Adaline)和后向传播网络(Backpropagation)。感知机是一种简单的二分类模型,能解决线性可分问题;Adaline网络通过在线学习调整权重,能够...
在本项目中,"粒子群BP神经网络参数实现"是将粒子群优化算法应用于BP(Back Propagation)神经网络的权重和阈值参数调整,以提高神经网络的训练效果和预测精度。 BP神经网络是一种广泛应用的多层前馈神经网络,其...
BP神经网络整定PID参数是自动化控制领域中一个重要的应用,它利用了人工神经网络的非线性映射能力和自我学习特性,对传统的PID控制器进行参数优化,以提高控制系统性能。MATLAB作为强大的数学计算软件,提供了丰富的...
标题中的"DOARBF.rar"指的是一个关于方向-of-arrival (DOA)估计的压缩文件,其中使用了径向基函数(Radial Basis Function, RBF)神经网络的方法。DOA估计是信号处理领域的一个重要课题,特别是在多天线或阵列接收...
前向神经网络(Forward Propagation Neural Networks,简称FNN)是一种基本的人工神经网络模型,其结构简单,易于理解和实现,广泛应用于各种机器学习任务,如分类、回归、预测等。MATLAB作为强大的数学计算软件,是...
这三种神经网络方法各有特点,BP网络简单易实现,遗传神经网络具有较好的全局优化能力,退火神经网络则兼顾全局搜索和局部优化。在实际应用中,应根据数据特性和精度要求选择合适的方法。论文通过对这些方法的比较...
接下来,我们将深入探讨与神经网络设计相关的几个关键知识点。 ### 一、神经网络的基本概念 神经网络是一种模仿人脑神经元结构的计算模型,用于处理复杂的输入输出关系。它由大量的节点(类似于生物神经元)组成,...