neural-network - 使用神经网络的线性回归
问题描述
我正在使用以下示例训练数据解决回归问题。
如图所示,我只有 4 个参数的输入,其中只有一个在变化,即 Z,因此其余参数没有实际值,而 124 个参数的输出表示从 O1 到 O124 注意 O1 以 20 [1000 然后1020 然后 1040 ...] 虽然 O2 以不同的速率变化,即 30 但仍然是恒定的,并且同样适用于所有 124 个输出,所有这些都以恒定的方式线性变化。
我相信这是一个微不足道的问题,一个非常简单的神经网络模型将在测试数据上达到 100% 的准确度,但结果却恰恰相反。
- 我使用线性回归器达到了 100% 的测试准确度,使用 KNN 回归器达到了 99.99997% 的测试准确度
- 我在使用 relu 激活的 10 层神经网络中达到了 41% 的测试数据准确率,而所有其余的激活函数都失败了,浅层 relu 也失败了
- 使用具有线性激活函数且没有隐藏层的简单神经网络,我在测试数据上达到了 92%
我的问题是如何让神经网络获得 100% 的测试数据,如线性回归器?假设使用具有线性激活的浅层网络与线性回归器等效,但结果不同,我是否遗漏了什么?
解决方案
如果您使用线性激活,深层模型原则上与线性回归/具有 1 层的 NN 相同。例如,具有线性激活的深度神经网络,预测为 y = W_3(W_2(W_1 x))),可以重写为 y = (W_3 (W_2 W_1))x,与 y = (W_4 x ),这是一个线性回归。
鉴于检查没有隐藏层的 NN 是否收敛到与线性回归相同的参数。如果不是这种情况,那么您的实现可能是错误的。如果是这种情况,那么您较大的 NN 可能会收敛到某个问题的解决方案,其中测试准确度会更差。然后尝试不同的随机种子。
推荐阅读
- python - 如何在 golang 中加载 Python sklearn 一个热门编码器?
- java - 将来自 Api 响应的数据添加到 Android 中的 Firebase 数据库中
- excel - 从条件创建数组
- php - DateTime 类的对象无法转换为 int
- tomcat - 如何在Tomcat上添加健康检查?
- java - 如何为 Postman 二进制类型的请求正文构建 RestTemplate?
- ios - 在 Swift 上以编程方式设置时,配置文件标签栏图像像素化
- javascript - 当我的 xmlhttprequest 被 CORS 阻止时,如何连接 api
- java - 在java泛型中获取字符串的长度
- raspberry-pi3 - 安装 pylibmodbus 和 cffi 的问题