打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
神经网络实验:万能函数拟合器
userphoto

2022.12.06 浙江

关注

概述

都说神经网络是一个万能的函数拟合器,如何理解这句话呢?让我们做一些实验,去获取更直观的理解。
为了直观与方便理解,我们用神经网络去拟合一元函数,也就是 y = f ( x ) y=f(x) y=f(x)

实验

1. 函数 y = x y=x y=x

训练样本

如图所示:

  • 蓝色点代表训练样本,它们都是从函数 y = x y=x y=x中取样获得
  • 橙色的直线代表神经网络所表示的函数,目前未训练,与样本偏离较大

思路

拟合一条直线,我们需要使用什么结构的神经网络去拟合它呢?为了理解透彻,我们需要理解单个神经元

单个神经元的形式为: y = σ ( w x + b ) y = \sigma(wx+b) y=σ(wx+b)

  • w w w和 b b b为待确定的参数
  • σ \sigma σ为激活函数

如果去掉 σ \sigma σ,其形式就是 y = w x + b y = wx+b y=wx+b,刚好就是一条直线。也就是说,我们使用一个不带激活函数的神经元,就可以拟合该函数。

实验

如上图所示,使用单个输出神经元,经过20步的训练,神经网络就与目标函数拟合的很好了。所得到的参数如下图所示:

对应的函数为 y = 1.0 x + 0.1 y=1.0x+0.1 y=1.0x+0.1,与目标函数极为接近,再多训练几步即可更为接近。

2. 函数y=|x|

训练样本

该函数是一个分段函数
y = { x x ≥ 0 − x x < 0 y =

{xx0xx<0
y={x−xx0x<0

思路

由于这里不是直线,这就需要用到非线性激活函数了,它可以将直线弯折。由于不涉及曲线,ReLU是比较合适的激活函数:

观察ReLU函数的曲线,一边是水平直线,另一个是一条斜线。如果能够获得2条ReLU曲线,让他们反向叠加,是不是就可以得到目标曲线了?

最终结果如下:

其中2个隐藏神经元为:

  • y 1 = R e L U ( − x ) y_1=\mathrm{ReLU}(-x) y1=ReLU(−x)
  • y 2 = R e L U ( x ) y_2=\mathrm{ReLU}(x) y2=ReLU(x)

输出神经元为: y = y 1 + y 2 y=y_1 + y_2 y=y1+y2,刚好得到目标曲线。

(以上结果未经参数训练,直接通过手工设置参数获得)

3. 函数

y = { x + 3 − 3 ≤ x < 0 3 − x 0 ≤ x < 3 0 o t h e r y =

{x+33x<03x0x<30other
y=x+33x0−3x<00x<3other

所需隐藏神经元上升到4个。

4. 函数 y = 1.8 ∗ sin ⁡ ( 3 ∗ x ) / x ) y = 1.8 * \sin(3 * x) / x) y=1.8sin(3x)/x)

网络更加复杂,拟合的曲线也不再完美。

总结

随着目标函数变得更加复杂:

  • 对应的神经网络也更加复杂
  • 所需的训练数据量也更多
  • 训练难度越来越大
  • 越来越不直观,越来越难以解释

反过来说,更复杂神经网络、更多的数据量,可以用来拟合更复杂的函数。理论上可以拟合任意函数,当然,网络要无限大,数据量也要无限多。

参考软件


神经网络

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
从卷积层、激活层、池化层到全连接层深度解析卷积神经网络的原理
神经网络你了解多少?今天我们来深度了解一下.....
TF之DNN:TF利用简单7个神经元的三层全连接神经网络【2-3-2】实现降低损失到0.000以下
深度学习与神经网络入门
超越ReLU却鲜为人知,3年后被挖掘:BERT、GPT-2等都在用的激活函数
【精度】「自归一化神经网络」提出新型激活函数SELU
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服