近似的最小可能网络辛_ _sin功能

人工智能 神经网络 激活函数 函数逼近 通用逼近定理
2021-10-30 03:14:45

主要目标是:找到尽可能小的神经网络来逼近sin功能。

此外,我想找到一个定性的原因,为什么这个网络是最小的网络。

我已经创建了 8000 个随机数x具有相应目标值的值sin(x). 目前正在考虑的网络由 1 个输入神经元、两个隐藏层中的 3 个神经元和 1 个输出神经元组成:

网络架构:

网络架构

神经网络可以写成函数

y=sig(w3sig(w1x)+w4sig(w2x)),
在哪里sig是 sigmoid 激活函数。

tanh激活功能:
当我使用tanh作为激活函数,网络能够达到 2 个极值sin功能:

*<跨度类=tanh激活函数" />

Sigmoid 激活函数:
但是,当我使用 sigmoid 激活函数时sig,只有第一个极值被击中。网络输出不是周期函数而是收敛的:

Sigmoid 激活函数

我现在的问题是:

  • 为什么一个更好的近似值tanh激活函数?对此有何定性论据?
  • 为什么一个人至少需要 3 个隐藏神经元?近似值的原因是什么tanh不再起作用了,如果一个人只使用 2 个隐藏的神经元?

我真的很感谢你对这个问题的所有想法!

1个回答

首先,您为网络编写的函数缺少偏差变量(我确信您使用偏差来获得那些漂亮的图像,否则您的tanh网络必须从零开始)。

一般来说,我会说只有 3 个神经元不可能很好地近似窦,但如果你想考虑一个窦期,那么你可以做点什么。为了清楚起见,请看这张图片:

在此处输入图像描述

我已经在 colab 中编写了这个任务的代码,你可以在这里找到它,如果你愿意,你可以玩它。

如果你多次运行网络,你可能会得到不同的结果(因为不同的初始化),你可以在上面链接的结果部分看到其中的一些。您在上图中向我们展示的只是两种可能性。但有趣的是,你可以得到更好的结果tanh而不是sigmoid,如果你想知道为什么,我强烈建议你看看这个CS231n 的讲座。总之,这是因为tanh有负面的部分,网络可以更好地学习它。

但实际上它们的逼近能力几乎相似,因为2*sigmoid(1.5*x) - 1看起来几乎相同tanh(x),您可以通过查看下图找到它: 在此处输入图像描述

那么为什么你不能得到与 相同的结果tanh呢?那是因为tanh更适合问题,如果网络想要获得tanhsigmoid它相同的结果,应该学习它们的转换参数,学习这些参数会使学习任务变得更加困难。因此,获得相同的结果并非不可能,sigmoid但更难。为了向您展示它的可能,我已经sigmoid手动设置了网络的参数并得到了以下结果(如果您有更多时间,您可以获得更好的结果): 在此处输入图像描述

最后,如果你想知道为什么用 2 个神经元而不是 3 个神经元不能得到相同的结果,最好了解网络用 3 个神经元做了什么。
如果您查看第一层的输出,您可能会看到类似这样的内容(这是它具有的两个神经元的输出):

在此处输入图像描述

然后下一层得到这两个神经元(就像窦)的输出之间的差异,并应用sigmoidtanh到它,这就是你得到一个好的结果的方式。但是当你在第一层只有一个神经元时,你无法想象这样的场景并且近似一个窦性周期超出了它的能力(欠拟合)。