class_docstr: Update rule of the M-SVAG optimization algorithm.
  
  See: `Dissecting Adam: The Sign, Magnitude and Variance of Stochastic
  Gradients <https://arxiv.org/abs/1705.07774>`_
  
  Modified for proper weight decay.
  
  See: `Fixing Weight Decay Regularization in Adam
  <https://openreview.net/forum?id=rk6qdGgCZ>`_
  
  See :class:`~chainer.optimizers.MSVAG` for the default values
  of the hyperparameters.
  
  Args:
      parent_hyperparam (~chainer.optimizer.Hyperparameter): Hyperparameter
          that provides the default values.
      lr (float): Learning rate.
      beta (float): Exponential decay rate of the first and second order
                    moment.
      eta (float): Schedule multiplier, can be used for warm restarts.
      weight_decay_rate (float): Weight decay rate.
code: def __init__(
      self,
      parent_hyperparam=None,
      lr=None,
      beta=None,
      eta=None,
      weight_decay_rate=None,
  ):
      super(MSVAGRule, self).__init__(
          parent_hyperparam or _default_hyperparam
      )
      if lr is not None:
          self.hyperparam.lr = lr
      if beta is not None:
          self.hyperparam.beta = beta
      if eta is not None:
          self.hyperparam.eta = eta
      if weight_decay_rate is not None:
          self.hyperparam.weight_decay_rate = weight_decay_rate
  
      self.beta_power = self.hyperparam.beta
  
file_path: chainer/chainer/optimizers/msvag.py
imports: from __future__ import division
  import numpy
  import chainer
  from chainer.backends import cuda
  from chainer import optimizer
  from chainer import types
label_desc: Use image node_id 1 to create a new MSVAGRule object from inherited base classes: optimizer with example: obj = MSVAGRule(parent_hyperparam, lr, beta, eta, weight_decay_rate)