excel学习库

excel表格_excel函数公式大全_execl从入门到精通

用一个真实案例揭秘:神经网络如何用反向传播训练出智能

随着人工智能技术的飞速发展,大模型AI正以其惊人的能力重塑世界。它们撰写文章、绘制画作、创作音乐、导演电影,甚至驾驶汽车——几乎无所不能。这些奇迹般的能力,源自于大模型中数以亿计的参数。

今天,我们将通过一个简化的反向传播实例,揭示这些参数如何赋予神经网络识别和理解的能力。

神经元与神经网络的直观模拟

在前文《》中,我们用一个简单的瓶子模型形象地模拟了神经元的工作原理,收获了网友的好评:“真形象!”现在,让我们继续以直观的方式,深入探索神经网络的功能。

这是一个神经元,左侧接收输入信号,右侧产生输出结果。这是神经元的基本工作模式。当我们将多个这样的神经元首尾相连,就形成了一个复杂的神经网络。

这个神经网络由三层构成:

  1. 输入层:最左侧,包含4个神经元,负责接收外部信号。

  2. 隐藏层:中间层,包含3个神经元,负责处理和转换输入层的信息。

  3. 输出层:最右侧,包含2个神经元,根据隐藏层的处理结果产生最终输出。

在这个网络中,信号从左向右传播称为“正向传播”,而从右向左传播则称为“反向传播”。正向传播是网络进行推理和判断的过程,反向传播则用于调整神经元的参数,即学习和训练的过程。

大自然的启示:大树的养分传输

让我们用一棵大树来形象地理解这两种传播过程。大树的枝杈可以看作是神经元之间的连接,尖端的树叶可以看作是神经网络的输入端。在阳光的照射下,树叶进行光合作用生成有机物,并向树干和树根传送——这是“正向传输”的生动写照。

反过来,树根吸收的水分和矿物质沿树干向上输送至树叶的过程,则可称为“反向传输”。

在这个过程中,养分的分配并不均匀。阳光充足的一侧,树枝得以获得更多养分,从而长得更粗壮,树叶更茂盛;而阳光不足的一侧,树枝则细弱,树叶较稀疏

神经网络也通过类似的方式调整参数。在训练过程中,网络根据输入数据判断哪些连接对于准确输出更为重要,进而加强这些连接的权重,这与大树对树枝的养分分配有着异曲同工之妙。

神经网络的参数调节过程

下面,我们具体了解一下神经网络如何通过学习调节参数。以一个瓶子模型为例,该模型对神经元的模拟非常精准。

假设瓶子上插的管子截面积用w表示,水流长度用x表示,则流入总水量z为:

当瓶子内部的上下两条水位线之间的体积为V时,如果流入总水量z小于V,则不出水;只有当z超过V时,出水口才会出水。

用公式表示为:

如果 不出水。

如果 出水。

为了计算方便,把V移到公式左边,即:

如果 不出水。

如果 出水。

为了计算方便,我们用b表示−V,于是z的值变为:

如此变换后,出水条件变为:

如果 z<0 不出水。

如果 z0 出水。

以上公式称为激活函数,该激活函数的曲线如下图:

图中,y=0代表不出水,y=1代表出水。

为了使激活函数在0点处更光滑,我们对其进行了调整,变为S曲线(Sigmoid)形式。如图:

这样的改变是为了有利于后面进行的反向传播的计算。

实际示例:字符识别器

下面我们演示一个实际的例子。我们用前述的三层神经网络做一个简单的字符识别器,它能识别两个符号:横和竖。符号只有4个像素,两个像素横向连接代表“横”,竖向连接代表“竖”。共有4种点阵排列方式。

我们用神经网络的4个输入端连接点阵图形的四个像素。

经过神经网络的推理,输出结果为“横”或“竖”的概率。为方便表达,我们用数字“0”代表“横”,数字“1”代表“竖”。

下图把神经网络的每一条连接的参数标注出来:

每条连接线旁都标有一个参数,x代表输入参数,共有4个。w代表神经元之间的连接参数,代表该连接的权重。权重w的数量很多,用数字下标区分,如w231 。其中数字的含义是:大的2代表是第2层神经元的参数,第一个下标3代表上一层神经元的序号,第二个下标1代表下一层神经元的序号。

z是某个神经元所有输入的累加和,a是对累加和z计算激活函数的值。o代表最终的输出值。

本例中间层的神经元有4个输入,z值的计算公式为:

其中b可以写作 b*1,从计算规则上说,可以把b当做一个特殊的神经元,其输入值恒为1。所以,上图中第一层和第二层神经元下方各有一个虚线画的神经元,代表b*1这个神经元。

把所有参数汇集在一起列成一张表,把图中相同颜色的参数列为一行,如下图:

作为示例,我们手工计算一下中间层第一个神经元的输入累加和:z21(下图紫色部分)。

= (-2.032)*1+3.450*1+(-1.395)*0+4.097*0+1.071*1 = 2.48915

再计算第三层第一个神经元的输入累加和:z31(下图橙色部分)。

z31 = (-4.313)*0.923+3.857*0.333+2.910*0.166+(-0.335)*1 = -2.549

由于参数数量众多,手工计算工作量巨大。为此,我在Excel中编写了一段程序,让电脑自动完成这些计算。各位读者不会编程也没关系,只需把代码复制粘贴到Excel中,按下面的步骤操作ABC三步,计算过程就自动完成了。程序代码附在本文末尾。

使用Excel进行神经网络计算

首先打开Excel软件,新建一个空白表格。然后按 Alt+F11 组合键,打开编程窗口。

右侧的窗口是程序窗口,请按照图中标示①②的顺序,点开小框中的“+”号变为“-”号,再双击“Sheet1”,把光标移到③处单击,就可以向里面粘贴程序代码了。复制成功后是这个样子:

A),向上滚动屏幕窗口,找到Sub开头的第一个程序:“A准备数据()”,如上图中红框内所示。把鼠标移到红框下面一行,点击左键确保光标保持在红框下方按F5功能键即可运行这段程序

程序会向左侧的Excel表格中写入原始数据,参数用随机数赋值。

B),继续向下滚动屏幕窗口,找到Sub开头的第二个程序:“B开始训练()”,如下图中红框内所示。把鼠标移到红框下面一行,点击左键确保光标保持在红框下方按F5功能键即可运行这段程序

这个程序设定训练500次,所以程序需要运行十几秒钟。你可以点击屏幕左半部的表格,即可看到完整的运行界面,如下图:

界面中间有个小窗口,显示当前已完成的训练次数和总误差。随着训练次数的上升,总误差会不断下降。下图显示实际训练100次、300次、500次时,总误差的变化情况:

训练500次后,参数基本调整到位,可以识别出点阵符号是横还是竖了。

C),检查识别的准确性。按 Alt+F11 组合键,重新打开编程窗口,向下滚动屏幕窗口,找到Sub开头的第三个程序:“C开始推理()”。

黄框内的数据可以修改,你可以给出任意排列的4个横或竖的数据,看神经网络能否正确识别。

把鼠标移到红框下面一行,点击左键确保光标保持在红框下方按F5功能键即可运行这段程序

识别结果在中间的窗口中,右侧的输出数据和答案表明,识别正确!

“正向传播”的程序代码

在“B开始训练()”程序中,利用了Excel中的矩阵乘法功能,可以一把完成正向传播过程中某一层的所有z值的计算。比如,计算第二层的z2,使用以下语句完成:

看上图中的程序代码:

第一个Set语句设定输入矩阵x1的区块大小(粉色圈内);

第二个Set语句设定参数矩阵w2的区块大小(橙色圈内);

第三个Set语句设定结果矩阵z2的区块大小(棕色圈内);

然后调用Excel函数:Application.MMult(w2, x1),三个z2值即可一并计算完成,并输出到z2指定的区块中。是不是非常简单?

后两行计算激活函数:首先设定激活函数值a2的区块大小(蓝色圈内),

然后调用函数:S曲线激活函数(z2),结果就自动填写到蓝色圈内了。

第三层神经元的正向传播过程也是同样,这里就不重复了。

神经网络通过正向传播得到结果后,通常识别精度不高,误差值较大。所以,需要通过反向传播逐步调整参数,目标是把误差值降到最低。

通过计算标准答案和实际输出之间的差值得到误差值,以下语句计算误差值:

其中ei是对单个点阵符号的输出误差,CT是4个点阵符号的总误差,又称为损失函数。

根据数学原理,当一个函数的导数等于0时,是函数取得最小值的必要条件。因此,为了使损失函数的值尽可能小,需要计算参数的导数

“反向传播”的程序代码

下图显示了在第3层进行反向传播的过程:

首先根据误差e、输出o3记忆o3的导数do3计算出δ3(粉色圈内)。

δ3对应于正向传播中的z3,是为了减小总误差,z3需要调整的量。这是反向传播的第一步。

之后,根据δ3,计算出第三层每个参数的调整量δw3(蓝色圈内)。

不过,δw3只是针对一个点阵符号的误差所对应的参数调整量,实际有4个点阵符号,所以应计算出4个参数调整量并累加。

这样就计算出本轮第三层每个参数的调整量Δw3(棕色圈内)。这是反向传播的第二步。

最后把参数w3与调整量Δw3相加,即可得到新的参数,这是反向传播的第三步,同时完成了一轮的训练过程。

通常,单凭一轮训练不可能得到最恰当的参数,使误差最小。所以需要使用新的参数重新进行“正向传播”和“反向传播”,不断重复上述过程,直至达成目标。此方法称为“梯度下降法”。本程序设置重复训练500次,误差基本达到较小的水平。

第2层进行反向传播的过程同理,就不再赘述了。

更多Excel编程的基本操作可参阅以下文章,零基础讲起:

《》

请点击以下链接获取完整源代码

《》

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接