欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > 神经网络模型的统计学具现

神经网络模型的统计学具现

2025/6/20 1:32:13 来源:https://blog.csdn.net/weixin_50460971/article/details/148740706  浏览:    关键词:神经网络模型的统计学具现

        之前写过一篇文章,把神经网络模型定义为就是对数据的多维度、多层次的统计学曲线计算过程,本文将具现一个简单的例子来描述这个过程。

        目前有A、B、C、D四个物体,已知如下信息,这些信息其实可以看作是训练的数据。

       D + A = 3

       D + B = 5

       D + C = 4

       A + C = 5

       B + C = 7

        训练之后,期待模型能够自动计算任意两个字母相加等于几?

        为了更好的说明这个过程,上面并没有给出冗余的和错误的学习信息量,从方程式来看,它其实具有唯一解A=2、B=4、C=3、D=1,但本文不从逻辑思维来解答这个题目,而是从统计学方法上来解答这个题目。

        假设每个字母只有一个纬度的信息量,假设A=1、B=2、C=3、D=4,这个类似神经网络模型,对输入的信息进行信息纬度的分类。

        而后采用神经网络的一层算法,我们知道D+A在已有的属性数值下,不可能等于3,所以要对属性数值进行变化,先简单的采用一个二次函数进行变化,定义本层如下的变换函数:

        

from scipy.optimize import curve_fitdef func_2(X, a, b, c):x, y = X  return (a*x*x+b*x+c)+(a*y*y+b*y+c)x=[4,4,4,1,2]
y=[1,2,3,3,3]
z=[3,5,4,5,7]popt, pcov = curve_fit(func_2, (x,y), z, p0=[1,1,1])print(popt)

运行上面的代码,能够得到统计学上最小结果误差的a,b,c的值:[-1.          4.69230767 -1.76923074]

所以这一层的转换函数为z=-(x*x+y*y)+4.69230767*(x+y)-2*1.76923074

把已知的几个xy代入可得如下结果:

3=z=-(4*4+1*1)+4.69230767*(4+1)-2*1.76923074=2.923

5=z=-(4*4+2*2)+4.69230767*(4+2)-2*1.76923074=4.615

4=z=-(4*4+3*3)+4.69230767*(4+3)-2*1.76923074=4.307

5=z=-(1*1+3*3)+4.69230767*(1+3)-2*1.76923074=5.230

7=z=-(2*2+3*3)+4.69230767*(2+3)-2*1.76923074=6.923

评估计算:6=A+B=-(1*1+2*2)+4.69230767*(1+2)-2*1.76923074=5.538

        可以看到,通过统计学评估出来的参数,能够让答案和真实接近,但是无法完全正确,那么具体往下的介绍,才是神经网络模型的核心。

        如何选择合适的函数,也就是把信息量如何进行变换,才能让结果更接近真实,下面我们更换一个函数:

        

from scipy.optimize import curve_fitdef func_3(X, a, b, c, d):x, y = X  return a*(x*x*x+y*y*y)+b*(x*x+y*y)+c*(x+y)+2*dx=[4,4,4,1,2]
y=[1,2,3,3,3]
z=[3,5,4,5,7]popt, pcov = curve_fit(func_3, (x,y), z, p0=[1,1,1,1])print(popt)

运行上面的代码,能够得到统计学上最小结果误差的a,b,c的值:[ 0.33333333 -3.5        10.16666667 -5.        ]

那么转换函数为z=0.33333333*(x*x*x+y*y*y)-3.5*(x*x+y*y)+10.16666667*(x+y)-2*5

把已知的几个xy代入可得如下结果:

3=z=0.33333333*(4*4*4+1*1*1)-3.5*(4*4+1*1)+10.16666667*(4+1)-2*5=2.9999997

5=z=0.33333333*(4*4*4+2*2*2)-3.5*(4*4+2*2)+10.16666667*(4+2)-2*5=4.9999997

4=z=0.33333333*(4*4*4+3*3*3)-3.5*(4*4+3*3)+10.16666667*(4+3)-2*5=3.9999997

5=z=0.33333333*(1*1*1+3*3*3)-3.5*(1*1+3*3)+10.16666667*(1+3)-2*5=4.99999992

7=z=0.33333333*(2*2*2+3*3*3)-3.5*(2*2+3*3)+10.16666667*(2+3)-2*5=6.9999999

评估计算:6=A+B=0.33333333*(1*1*1+2*2*2)-3.5*(1*1+2*2)+10.16666667*(1+2)-2*5=5.99999998

        可以看到,通过这个三次函数统计学评估出来的参数,能够让答案和真实基本一致。

        所以,如何定义函数,取决了定义模型的人,对数据维度信息和意义的了解,并且能够把这种了解转换到函数,是模型定义的根本。

        以上只是描述了连续函数和单一信息量,而对于现实中的实际模型,还会出现非连续函数以及多信息纬度(上百上千的维度)的情况,在这种情况下,作为一个神经网络模型定义师,需要能够有效的定义函数,并定义这个函数的输入信息量。

        如果采用非连续函数,只需要对数字1234到对应数字的转换,一个非连续函数即可,数据准确度可以达到100%。

       

        以上是通过一个简单二元曲线,通过一个三次函数,模拟了一个简单的神经网络层,通过统计函数完成了训练,并使用训练参数,对新的预期计算得到了正确的结果。

        希望本文能让各位对神经网络模型有进一步的认识。虽然真实使用会更复杂,但它的核心其实就是最优的函数统计系数。

        神经网络模型师,划分输入信息维度,定义各层的计算函数,通过训练,把这个函数的几万到几亿个的参数统计优化出来,而模型的推理,则是基于这些系数和函数,把输入转化到输出,从而得到结果。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词