【问题标题】:Need clarification regarding SGD Optimizer需要澄清有关 SGD 优化器的信息
【发布时间】:2021-05-21 12:31:55
【问题描述】:

我有一个关于SGD Optimizer的问题。

Gradient Descent Algorithm有3种类型:

  1. 批量梯度下降
  2. 小批量梯度下降和
  3. 随机梯度下降

Stochastic Gradient Descent 是一个Algorithm,其中来自Training SetInstance 是在Random 获取的,而Weights 会相应更新到那个Instance

SGD Optimizer 与上述定义略有偏差,它可以接受大于 1 的 batch_size。有人可以澄清这种偏差吗?

下面的代码似乎符合Stochastic Gradient Descent的定义:

model.compile(optimizer = 'sgd', loss = 'mse')
model.fit(x, y,epochs = 500, batch_size = 1,verbose=1)

但是,下面的代码似乎令人困惑/偏离(因为batch_size > 1):

model.compile(optimizer = 'sgd', loss = 'mse')
model.fit(x, y,epochs = 500, batch_size = 32, verbose=1)

提前感谢您的澄清。

【问题讨论】:

    标签: tensorflow keras tf.keras


    【解决方案1】:

    引用自维基百科:

    它可以被视为梯度下降优化的随机近似,因为它用实际梯度(从整个数据集计算)替换为实际梯度(从随机选择的数据子集计算)

    所以你提到的三种类型都是SGD。即使您使用所有数据来执行 SGD 迭代,它仍然是 实际 梯度的随机估计;在收集新数据时(您的数据集不包括 Universe 中的所有数据),您的估计会发生变化,因此是随机的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 2012-07-18
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多