nuget server logo nuget api documents
↑

API Docs / SMRUCC.genomics.Analysis.HTS.P-NET / AdamOptimizer

AdamOptimizer

Full name SMRUCC.genomics.Analysis.HTS.P_NET.AdamOptimizer Assembly SMRUCC.genomics.Analysis.HTS.P-NET Members 9

Adam 优化器(自适应矩估计)

00 Remarks

论文使用 Adam 作为 P-NET 的优化器,并配合每 50 个 epoch 主动衰减的学习率策略。 Adam 对每个参数维护梯度的一阶矩估计与二阶矩估计,并做偏置校正, 对 P-NET 这种大量梯度恒为 0 的稀疏梯度场景尤其稳健。

参数更新规则为:

 m_t = beta1 · m_(t-1) + (1 - beta1) · g_t
 v_t = beta2 · v_(t-1) + (1 - beta2) · g_t²
 m̂_t = m_t / (1 - beta1^t),  v̂_t = v_t / (1 - beta2^t)
 θ_t = θ_(t-1) - lr · m̂_t / (sqrt(v̂_t) + eps)
 

由于被掩码屏蔽的连接其梯度恒为 0,对应位置的 m 与 v 也恒为 0, 因此参数更新量恒为 0,即这些权重永远不会被更新。

01 Syntax

SMRUCC.genomics.Analysis.HTS.P_NET.AdamOptimizer

02 Methods

NameOverloadsSummary
.ctor 1 创建 Adam 优化器
Step 1 执行一次参数更新
ZeroGrad 1 清零全部梯度
ToString 1 生成优化器的字符串描述

03 Properties

NameOverloadsSummary
LearningRate 1 学习率,可以在训练过程中被外部修改以实现学习率衰减
Beta1 1 一阶矩估计的指数衰减率
Beta2 1 二阶矩估计的指数衰减率
Epsilon 1 数值稳定性常数
StepCount 1 当前已经执行的更新步数

04 Members

method .ctor #
#ctor(List(Of Tensor), List(Of Tensor), Double, Double, Double, Double)

创建 Adam 优化器

Parameters
NameTypeDescription
parametersList(Of Tensor)

待优化的参数列表

gradientsList(Of Tensor)

与 parameters 一一对应的梯度列表

learningRateDouble

初始学习率,论文取 0.001

beta1Double

一阶矩衰减率

beta2Double

二阶矩衰减率

epsilonDouble

数值稳定性常数

method Step #
Step

执行一次参数更新

method ZeroGrad #
ZeroGrad

清零全部梯度

method ToString #
ToString

生成优化器的字符串描述

Returns

形如 Adam[lr=0.001, step=120] 的描述文本

property LearningRate #
LearningRate

学习率,可以在训练过程中被外部修改以实现学习率衰减

Returns

当前学习率

property Beta1 #
Beta1

一阶矩估计的指数衰减率

Returns

beta1,默认 0.9

property Beta2 #
Beta2

二阶矩估计的指数衰减率

Returns

beta2,默认 0.999

property Epsilon #
Epsilon

数值稳定性常数

Returns

epsilon,默认 1e-8

property StepCount #
StepCount

当前已经执行的更新步数

Returns

时间步 t