neural-network - 通过神经网络回归最大函数

标签 neural-network deep-linking deeplearning4j

我正在通过学​​习神经网络来训练自己。有一个函数我无法让我的神经网络学习:f(x) = max(x_1, x_2)。这似乎是一个非常简单的函数,有 2 个输入和 1 个输入,但是一个 3 层神经网络训练了超过 1000 个样本和 2000 个时期,却完全错误。我正在使用 deeplearning4j

对于神经网络来说,max 函数很难学习是什么原因,还是我只是调错了它?

最佳答案

只是想指出:如果你使用 relu 而不是 tanh 实际上有一个精确的解决方案,我猜你是否会将网络缩小到这个完全相同的大小(1 个隐藏层和 3 个节点),你总是会得到这些权重(节点的模块排列和权重的缩放(第一层按 gamma 缩放,第二层按 1/gamma 缩放):

max(a,b) = ((1, 1, -1)) * relu( ((1,-1), (0,1), (0,-1)) * ((a,b)) )

其中 * 是矩阵乘法。

这个等式将以下人类可读的版本翻译成神经网络语言:

max(a,b) = relu(a-b) + b = relu(a-b) + relu(b) - relu(-b)

我还没有实际测试过它,我的观点是,从理论上讲,网络应该很容易学习这个功能。

编辑: 我刚刚对此进行了测试,结果如我所料:

[[-1.0714666e+00 -7.9943770e-01  9.0549403e-01]
 [ 1.0714666e+00 -7.7552663e-08  2.6146751e-08]]

[[ 0.93330014]
 [-1.250879  ]
 [ 1.1043695 ]]

那里对应第一层和第二层。转置第二个并与第一组权重相乘,最终得到一个标准化版本,可以很容易地与我的理论结果进行比较:

[[-9.9999988e-01  9.9999988e-01  1.0000000e+00]
 [ 9.9999988e-01  9.7009000e-08  2.8875675e-08]]

关于neural-network - 通过神经网络回归最大函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35623995/

相关文章:

python - Keras 中 ANN 每次迭代的权重值

java - Deeplearning4j应该如何对数据进行标准化

iOS 关联域 - 子域似乎被忽略

xamarin.ios - 深层链接 Xamarin iOS

java - DeepLearning4j k-均值非常慢

android - 使用 deeplearning4j 加载 keras 模型时出错

machine-learning - 检查输入 : expected conv2d_27_input to have 4 dimensions, 但获得形状为 (55000, 28, 28) 的数组时出错

python - 将 CNN 模型转化为类

python - 即使使用最新的 Keras/Theano,ValueError : Invalid argument 'metric' passed to K. 也会起作用

react-native - react 导航 : Utilizing deep linking with Redux