美文网首页神经网络与深度学习
神经网络如何模拟任意函数?

神经网络如何模拟任意函数?

作者: ddup | 来源:发表于2021-08-04 11:10 被阅读0次

    概述


    神经网络之所以强大,在于它强大的模拟能力。理论上,它可以以无限小的误差模拟任意函数。

    也就是说,我们可以利用神经网络构建任意函数,得到任意算法。

    我们这里使用一些可视化的样例,帮助大家获得一些直观的理解。

    一元函数的模拟


    直线

    这个是最简单的情况,我们使用一个不带激活函数的神经元即可模拟。

    f(x) = wx+b

    通过调整w, b参数,即可模拟任意直线。

    阶跃函数Step Function

    我们使用一个带Sigmoid激活函数的神经元来模拟。


    随着w参数继续增大,神经网络就会逐步逼近该函数。

    矩形脉冲函数

    我们分成几步来模拟:

    1. 使用1个神经元来模拟函数的左半部分。

    f_1(x) = \text{sigmoid}(w_1x+b_1)

    1. 使用1个神经元来模拟函数的右半部分(上下颠倒)。

    f_2(x) = \text{sigmoid}(w_2x+b_2)

    1. 再使用一个神经元将前2步的图像进行合成

    f_3(x, y) = \text{sigmoid}(w_{31}x + w_{32}y + b_3)

    得到的结果很好地近似了目标函数。

    其它一元函数

    利用矩形脉冲函数,我们很容易近似其它任意函数,就像积分原理一样。


    二元函数的模拟

    平面

    这个是最简单的情况,我们使用一个不带激活函数的神经元即可模拟。


    f(x, y) = w_1x + w_2y + b

    通过调整w_1, w_2, b参数,即可模拟任意平面。

    二元阶跃函数Step Function

    我们使用一个带Sigmoid激活函数的神经元来模拟。
    f(x) = \text{sigmoid}(w_1x + w_2y + b)

    二元矩形脉冲函数

    与一元函数的情况类似,我们分步实现它:

    1. 使用一个神经元来模拟函数的一个边缘

    f_1(x, y) = \text{sigmoid}(w_{11}x + w_{12}y + b_1)

    1. 然后我们可以得到以下函数:
    1. 最后,可以合成以下函数

    最终的神经网络结构如下图所示:

    其它二元函数

    利用二元矩形脉冲函数,我们很容易近似其它任意二元函数,就像积分原理一样。

    n元函数的模拟


    原理一样,自己想象!😥

    问题


    我们已经拥有了数字电路以及软件程序算法,为什么还需要神经网络?

    构建与数字电路之上的软件程序也可以模拟任意函数,那为什么还要发明人工神经网络呢?

    参考软件


    更多内容及可交互版本,请参考App:


    神经网络与深度学习

    相关文章

      网友评论

        本文标题:神经网络如何模拟任意函数?

        本文链接:https://www.haomeiwen.com/subject/ktquvltx.html