ANN:用神经网络逼近非线性函数

时间:2016-11-18 04:52:21

标签: neural-network regression supervised-learning

我正在学习为回归问题构建神经网络。它适用于近似线性函数。在隐藏层和输出层中使用1-5-1单元设置线性激活功能可以实现快速可靠的技巧。但是,当我尝试提供简单的二次数据(f(x)= x * x)时,会发生以下情况:

使用线性激活功能,它会尝试通过数据集

拟合线性函数

enter image description here

使用TANH功能,它会尝试通过数据集拟合TANH曲线。

enter image description here

这使我相信当前的设置本质上无法学习除线性关系之外的任何东西,因为它在图表上重复激活函数的形状。但这可能不是真的,因为我已经看到其他实现完全学习曲线。所以我可能做错了什么。请提供您的指导。

关于我的代码

我的权重是随机的(-1,1)输入未规范化。数据集以随机顺序输入。改变学习速度或添加图层不会改变图片。

我创建了jsfiddle

玩这个地方的是这个功能:

function trainingSample(n) {
    return [[n], [n]]; 
}

它生成一个训练样本:输入矢量数组和目标矢量数组的数组。 在此示例中,它生成f(x)=x函数。将其修改为[[n], [n*n]]并且您已获得二次函数。

播放按钮位于右上方,还有两个输入框可手动输入这些值。如果目标(右)框保留为空,则只能通过前馈测试网络输出。

代码中还有一个网络配置文件,您可以在其中设置学习速率和其他内容。 (搜索var Config

1 个答案:

答案 0 :(得分:0)

我想到,在我描述的设置中,由于功能的选择,不可能学习非线性函数。在前向传递中我们没有输入高于1的功率依赖性,这就是我在输出中看到激活函数的快照的原因。咄。