梯度下降与随机梯度下降算法

2023-12-31

我尝试在 MNIST 手写数字数据集(包括 60K 训练样本)上训练前馈神经网络。

我每次都迭代所有训练样本,表演反向传播对于每个时期的每个这样的样本。运行时间当然太长了。

  • 我运行的算法是否命名为梯度下降?

我读到对于大型数据集,使用随机梯度下降可以显着提高运行时间。

  • 我应该做什么才能使用随机梯度下降?我应该随机挑选训练样本,执行反向传播在每个随机选取的样本上,而不是我当前使用的纪元上?

我会尝试给你一些关于这个问题的直觉......

最初,更新是在您(正确)调用的内容中进行的(批量)梯度下降。这确保了权重的每次更新都是在“正确”的方向上完成的(图 1)。1 https://i.stack.imgur.com/dHlJE.png):最小化成本函数的函数。

随着数据集大小的增长以及每一步计算的复杂化,随机梯度下降在这些情况下成为首选。在这里,权重的更新是在处理每个样本时完成的,因此,后续计算已经使用“改进的”权重。尽管如此,正是这个原因导致它在最小化误差函数时出现了一些误导(图 1)。2 https://i.stack.imgur.com/yBk3p.png).

因此,在许多情况下,最好使用小批量梯度下降,结合了两全其美:权重的每次更新都是使用一小批数据完成的。这样,与随机更新相比,更新的方向在某种程度上得到了纠正,但更新的频率比(原始)的情况要频繁得多梯度下降.

[UPDATE]根据要求,我在下面提供了伪代码batch二元分类中的梯度下降:

error = 0

for sample in data:
    prediction = neural_network.predict(sample)
    sample_error = evaluate_error(prediction, sample["label"]) # may be as simple as 
                                                # module(prediction - sample["label"])
    error += sample_error

neural_network.backpropagate_and_update(error)

(在多类标签的情况下,错误表示每个标签的错误数组。)

该代码将运行给定的迭代次数,或者当误差高于阈值时。对于随机梯度下降,调用神经网络.backpropagate_and_update()被称为内部for循环,以样本误差作为参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

梯度下降与随机梯度下降算法 的相关文章

  • Microsoft 认知服务 - 计算机视觉:订阅密钥无效

    我正在尝试使用计算机视觉API https azure microsoft com en us services cognitive services computer vision 来自微软的认知服务 但是 我的钥匙似乎不起作用 我使用该
  • 查找彼此接近的对象边界

    我正在研究一个计算机视觉问题 其中问题的第一步是找到物体彼此靠近的位置 例如 在下图中 我感兴趣的是找到灰色标记的区域 Input Output 我目前的方法是首先反转图像 然后通过侵蚀进行形态梯度跟随 然后删除一些不感兴趣的轮廓 脚本如下
  • Keras 获取中间层的输出

    what my model looks like defining the model archictecture model Sequential 1st conv layer model add Conv2D 32 5 5 activa
  • 如何在 Caffe 的网络中出现多次损失?

    如果我在网络中定义多个损失层 从这些末端到网络的开头是否会发生多个反向传播 我的意思是 他们真的是这样工作的吗 假设我有这样的事情 Layer1 Layer2 Layer n Layer cls1 bottom layer n top cl
  • 随机森林修剪

    我有 sklearn 随机森林回归器 它非常重 有 1 6 GB 并且在预测值时工作很长时间 我想把它修剪一下 让它变得更轻 据我所知 决策树和森林没有实施修剪 我无法自己实现它 因为树代码是用 C 编写的 而我不知道 有谁知道解决方案吗
  • scikit-learn RandomForestClassifier 中的子样本大小

    如何控制用于训练森林中每棵树的子样本的大小 根据 scikit learn 的文档 随机森林是一种适合许多决策的元估计器 数据集的各个子样本上的树分类器并使用 平均以提高预测准确性并控制过度拟合 子样本大小始终与原始输入样本相同 大小 但如
  • LSTM 批次与时间步

    我按照 TensorFlow RNN 教程创建了 LSTM 模型 然而 在这个过程中 我对 批次 和 时间步长 之间的差异 如果有的话 感到困惑 并且我希望得到帮助来澄清这个问题 教程代码 见下文 本质上是根据指定数量的步骤创建 批次 wi
  • 用于神经网络模型预测的数据的缺失值

    我目前有大量数据将用于训练预测神经网络 美国主要机场的千兆字节天气数据 我几乎每天都有数据 但有些机场的数据中存在缺失值 例如 机场在 1995 年之前可能不存在 因此在此之前我没有该特定位置的数据 此外 有些还缺少整年 可能跨度为 199
  • 如何反转 dropout 来补偿 dropout 的影响并保持期望值不变?

    我正在学习神经网络中的正则化deeplearning ai课程 在dropout正则化中 教授说 如果应用dropout 计算出的激活值将比不应用dropout时 测试时 更小 因此 我们需要扩展激活以使测试阶段更简单 我理解这个事实 但我
  • 如何在 Keras 中将多个数据集与一个模型一起使用?

    我正在尝试使用 LSTM 网络通过 Keras 和 Tensorflow 进行外汇预测 我当然希望它能够在很多天的交易中进行训练 但要做到这一点 我必须给它提供具有大跳跃和无运动阶段的连续数据 当市场收盘时 这并不理想 因为它变得由于这些跳
  • 将索引数组转换为 NumPy 中的 one-hot 编码数组

    给定一个一维索引数组 a array 1 0 3 我想将其一次性编码为二维数组 b array 0 1 0 0 1 0 0 0 0 0 0 1 创建归零数组b有足够的列 即a max 1 然后 对于每一行i 设置a i 第 列 至1 gt
  • 选择 c 和 gamma 值

    您好 我正在使用 SMO 执行 SVM 分类 其中我的内核是 RBF 现在我想选择c and sigma值 使用网格搜索和交叉验证 我是内核函数的新手 请帮助 一步一步的过程 选择一些您认为有趣的 C 和 sigma 值 例如 C 1 10
  • 预训练 inception v3 模型的层名称(tensorflow)[重复]

    这个问题在这里已经有答案了 任务是获取a的每层输出预训练的 cnn inceptionv3 https www tensorflow org versions master tutorials image recognition index
  • 在监督分类中,使用partial_fit() 的MLP 比使用fit() 的表现更差

    我正在使用的学习数据集是灰度图像flatten让每个像素代表一个单独的样本 第二张图像在训练后将被逐像素分类Multilayer perceptron MLP 前一个分类器 我遇到的问题是MLP当它一次接收到所有训练数据集时表现更好 fit
  • 神经网络中的时间序列提前预测(N点提前预测)大规模迭代训练

    N 90 使用神经网络进行提前预测 我试图预测提前 3 分钟 即提前 180 点 因为我将时间序列数据压缩为每 2 个点的平均值为 1 所以我必须预测 N 90 超前预测 我的时间序列数据以秒为单位给出 值在 30 90 之间 它们通常从
  • 如何确定与视频中物体的距离?

    我有一个从行驶中的车辆前面录制的视频文件 我将使用 OpenCV 进行对象检测和识别 但我停留在一方面 如何确定距已识别物体的距离 我可以知道我当前的速度和现实世界的 GPS 位置 但仅此而已 我无法对我正在跟踪的对象做出任何假设 我计划用
  • ValueError:请使用“Layer”实例初始化“TimeDistributed”层

    我正在尝试构建一个可以在音频和视频样本上进行训练的模型 但出现此错误ValueError Please initialize TimeDistributed layer with a Layer instance You passed Te
  • McNemar 在 Python 中的测试以及分类机器学习模型的比较 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有用 Python 实现的好的 McNemar 测试 我在 Scipy stats 或 Scikit
  • NumPy 相当于 Keras 函数 utils.to_categorical

    我有一个使用 Keras 进行机器学习的 Python 脚本 我正在构建 X 和 Y 它们分别是特征和标签 标签的构建方式如下 def main depth 10 nclass 101 skip True output True video
  • 为什么LeNet5使用32×32图像作为输入?

    我知道mnist数据集中的手写数字图像是28 28 但是为什么LeNet5中的输入是32 32 您的问题已在原纸 http yann lecun com exdb publis pdf lecun 98 pdf 卷积步骤始终采用比前一层的特

随机推荐