神经网络立即过拟合

2024-03-19

我有一个带有 2 个隐藏层的 FFNN,用于几乎立即过拟合的回归任务(epoch 2-5,取决于 # 个隐藏单元)。 (ReLU、Adam、MSE、每层相同的隐藏单元数、tf.keras)

32 个神经元:

128 个神经元:

我将调整隐藏单元的数量,但为了限制搜索空间,我想知道上限和下限应该是多少。

Afaik 最好是拥有一个太大的网络并尝试通过 L2-reg 或 dropout 进行正则化,而不是降低网络的容量 - 因为较大的网络将具有更多的局部最小值,但实际损失值会更好。

尝试对从一开始就过度拟合的网络进行正则化(例如通过 dropout)是否有任何意义?

如果是这样,我想我可以增加这两个界限。如果没有,我会降低它们。

model = Sequential()
model.add(Dense(n_neurons, 'relu'))
model.add(Dense(n_neurons, 'relu'))
model.add(Dense(1, 'linear'))
model.compile('adam', 'mse')

超参数调整通常是机器学习中最困难的步骤,通常我们随机尝试不同的值并评估模型并选择提供最佳性能的一组值。


回到你的问题,你有一个高方差问题(训练良好,测试糟糕)。

您可以按顺序做八件事

  1. 确保您的测试和训练分布相同。
  2. 确保将数据打乱然后将其分成两组(测试和训练)
  3. 一个好的火车:测试分配将是 105:15K
  4. 使用带有 Dropout/L2 正则化的更深网络。
  5. 增加训练集大小。
  6. 尝试提前停止
  7. 改变你的损失函数
  8. 更改网络架构(切换到 ConvNet、LSTM 等)。

根据您的计算能力和时间,您可以设置您可以拥有的隐藏单元和隐藏层的数量。


因为更大的网络将有更多的局部最小值。

不,这并不完全正确,实际上,随着输入维度数量的增加,陷入局部最小值的机会就会减少。所以我们通常会忽略局部极小值的问题。这是非常罕见的。对于局部/全局最小值,工作空间中所有维度的导数必须为零。因此,在典型模型中这是极不可能的。


另一件事,我注意到你在最后一层使用线性单位。我建议你改用 ReLu。一般来说,我们不需要回归中的负值。它将减少测试/训练错误

拿着它 :

In MSE 1/2 * (y_true - y_prediction)^2

because y_prediction可以为负值。当 y_predicted 变得高度负或高度正时,整个 MSE 项可能会膨胀到很大的值。

最后一层使用 ReLu 可确保y_prediction是积极的。因此,预计误差较低。

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

神经网络立即过拟合 的相关文章

随机推荐

  • couchdb 视图使用另一个视图?

    我对 couchdb 中的视图有疑问 目前 我有许多视图 例如 view A view B view Z 对于每个视图 它们包含相同范围的键但具有不同的值 IE view A key key 1 value 10 key key 2 val
  • 作为函数输入传递的 python 字典在该函数中的作用类似于全局函数,而不是局部函数

    我对下面的行为感到非常困惑 情况 1 3 和 4 的表现符合我的预期 但情况 2 却没有 为什么情况 2 允许函数全局更改字典条目的值 即使函数从未返回字典 我使用函数的一个主要原因是将函数中的所有内容与代码的其余部分隔离 但如果我选择在函
  • VBA Excel Outlook 电子邮件正文格式

    我有自动发送电子邮件的 useform 我想更改电子邮件的正文 其中一些将基于带有文本的单元格 因此它可以是动态的 有些将在代码中修复 现在 在运行我需要对象的错误 我将感谢您的帮助 我希望电子邮件正文中的每一行都是分开的 Sub send
  • Erlang编译器错误

    我有以下代码 loop Data gt receive Key Value gt Key Value Data Key gt member Key Data 14 loop Data stop gt io format server sto
  • 在 Snow Leopard 上安装 Mac OS X SDK 10.5

    有没有一种简单的方法可以在 Snow Leopard 上安装 下载 Mac OS X 10 5 SDK 我通过 Mac App Store 安装了 Xcode 4 0 如果需要的话我也可以从开发者网站下载它 但我不知道它是否包含10 5 S
  • 如何定义C结构:c-linkage和udt

    我有用 C ABI 接口用 X 语言编写的 dll 我想在我的 C 程序中使用这个 C ABI 我在main cpp中写道 extern C struct Foo const char const data unsigned len str
  • 如何在 Jenkins WEB GUI 中显示生成的 trx 文件?

    我有一堆测试结果文件 trx 在目录中构建完成后TestResults 是否可以在 Jenkins 中显示这些测试结果 如何 我尝试了 MSTest Jenkins 插件 但它只允许一个trx每个作业的文件 trx文件在每次构建后生成 并以
  • 初始化 log4j 文件时出现异常

    当尝试从配置文件初始化 hibernate 时 我得到 NullPointerException 根本原因如图所示 Caused by org apache commons logging LogConfigurationException
  • 为什么Tomcat需要安装JDK? [复制]

    这个问题在这里已经有答案了 据我所知 JRE是运行时 JDK是用于Java代码的开发 但在生产中的 Tomcat 服务器上 将无法开发 Java 应用程序 所以 我的问题是为什么我们不能只安装 JRE 来运行 Tomcat 为什么运行 To
  • Ruby on Rails 3 中的类方法 — 我完全迷失了!

    背景here http www railway at 2010 03 09 named scopes are dead 在上面的链接中 给出了以下示例 class lt lt self def by author author where
  • 为什么 OpenJDK 将私有方法放入 vtable 中?

    看起来开放JDK 8 http hg openjdk java net jdk8 jdk8 hotspot file 87ee5ee27509 src share vm oops klassVtable cpp l575放置非私有方法fin
  • 如何在 Delphi 7 中的文件中保存 UTF-16(Little Endian)和字符串值?

    我想将编辑框中的值和 UTF 16 Little Endian 值保存在文件中 我将举一个简单的例子来更好地理解我的问题 Edit Box Value gt Good Hex value FFFEFF15410042004300 which
  • 如何将环境变量添加到 Azure Devops 管道中

    我正在为 Node 应用程序设置 Azure 管道 并使用 Jest 来测试 API 和集成 源代码位于 Azure DevOps 上 代码部署在 Azure 门户中 当我运行测试时 它在管道中失败 因为 env 从未在远程存储库中检查 环
  • 在 C++ 中将 HTTP 响应正文与标头分离

    我目前正在为某个项目编写自己的 C HTTP 类 我正在尝试找到一种方法将响应正文与标头分开 因为这是我需要返回的唯一部分 如果您不熟悉 这里是原始 http 标头的示例 HTTP 1 1 200 OK Server nginx 0 7 6
  • 如何对不同形状使用同一组修改器

    作为我学习 SwiftUI 项目的一部分 我做了一些形状旋转 下面有代码 我想知道如何避免每个形状使用相同的三行修饰符 func getShape shape Int i Int gt AnyView switch shape case 0
  • 为什么当我“使用”BinaryReader 对象时我的 FileStream 对象被释放?

    考虑以下函数 private int GetSomethingFromFile FileStream fs using BinaryReader br new BinaryReader fs fs Seek 0 SeekOrigin Beg
  • 线程和多处理模块之间有什么区别?

    我正在学习如何使用threading和multiprocessingPython 中的模块可并行运行某些操作并加速我的代码 我发现这很难 也许是因为我没有任何理论背景 来理解threading Thread 对象和一个multiproces
  • 如何检查可见 DOM 中是否存在元素?

    如何在不使用getElementById method 我已经设置了一个现场演示 http jsbin com apawi5 3以供参考 我还将在这里打印代码
  • 如何在 python 中实现“#ifdef”?

    编程于C我曾经有代码部分仅用于调试目的 记录命令等 通过使用这些语句可以完全禁用生产 ifdef预处理器指令 如下所示 ifdef MACRO controlled text endif MACRO 做类似事情的最好方法是什么python
  • 神经网络立即过拟合

    我有一个带有 2 个隐藏层的 FFNN 用于几乎立即过拟合的回归任务 epoch 2 5 取决于 个隐藏单元 ReLU Adam MSE 每层相同的隐藏单元数 tf keras 32 个神经元 128 个神经元 我将调整隐藏单元的数量 但为