从0开始手算神经网络

今日霍州(www.jrhz.info)©️

What I cannot create, I do not understand. -Richard Feynman

如果我无法创造某物,那么我就没有理解它。 -理查德·费曼

今日霍州(www.jrhz.info)©️

神经网络对人工智能来说非常非常重要,但光看着神经网络的概念和逻辑发现如同天书,难以理解?更不用说它是怎么回事和有怎么用?没关系,让我们回到原始人的状态,用最笨的办法,从0开始在“石板”上手算整个神经网络吧! Let`s go!(⁎˃ᴗ˂⁎)

假设我们需要要训练一个神经网络,帮助农民伯伯通过颜色硬度两个特征来预测一个苹果成熟情况,我们该怎样完成这个过程呢?

今日霍州(www.jrhz.info)©️

首先我们确定知道了有两个输入特征(颜色和硬度)和一个输出结果(成熟)。所以输入层有2个神经元,输出层有1个神经元。还剩下中间的隐藏层(隐藏层的意思就是从面上看不到信息输入和输出,但是却在进行信息处理的部分。举个例子,你去兰州拉面店点了碗拉面,付钱下单是输入层,老板把面端出来给你是输出层,老板在后厨做面就是隐藏层。你看不见这个过程,但是对整个分析过程来说非常重要)这里我们可以根据自己的需要来设置有多少个神经元,假设我们在这里设置隐藏层有2个神经元。那么我们就得到了我们的神经网络的样式,长这样。

今日霍州(www.jrhz.info)©️

要训练这个神经网络,我们得先做一些准备:

我们把训练数据中成熟的苹果记为1,不成熟记为0。在结果上把最终输出的值>0.5的苹果记为成熟。

比如说我们要用这样一个苹果样本X来训练这个神经网络,颜色值 x1= 0.8,硬度值 x2 = 0.2,然后该苹果实际成熟度记为1。

在一开始,因为没有经过训练,所以只能随机初始化输出层到隐藏层的权重W1和隐藏层到输出层的权重W2。为了便于计算,权重是以矩阵形式呈现的,里面的每一个数字对应着上图里的一条线。权重的意思就是一个神经元往下一个神经元传多少数据,权重大就代表传的数据多,直白来说就是说明这个神经元更重要一些,对整体的计算过程影响更大。

假设初始权重为:

今日霍州(www.jrhz.info)©️

那么各个神经元之间初始状态对应的权重就如下:

今日霍州(www.jrhz.info)©️

下面我们就可以通过训练来更新这个权重了。这里正常来说,会有一个偏置项,用来应对一些特殊情况,比如说有的苹果可能最终计算出的值<0.5,但是实际是成熟的。原因可能是有一些我们这里没有考虑到的特征影响了对其成熟状态的判断,偏置项的作用就是为了应对那些我们考虑不到的特征。当然,在实际情况中你永远也无法考虑完全一个事物的所有特征。(看来我是不可知论者(ーー;))

在这里我们会用到一个激活函数,叫 Sigmoid 函数。长这样:

今日霍州(www.jrhz.info)©️

还会用到它的导数:

今日霍州(www.jrhz.info)©️

在这里稍微解释一下,这个函数在这里的作用是把要计算的数值非线性地映射到0~1范围内,(这里的非线性的作用说白了就是稍微增加一点预测过程的不确定性,一定程度上缓解出现训练的结果非常好,但是实际应用中非常糟糕,这种一板一眼的情况)看一下下面它的函数图像你就知道什么意思了。

今日霍州(www.jrhz.info)©️

然后这里用到的导数,就涉及到梯度递降的内容了,要过多解释篇幅就太长了。可以想象一下你在一个山谷里,然后要走到谷底(这里的谷底一般是损失值最小的位置,也就是预测结果和实际结果差距最小的状态)。你会怎么走?你选择走的方向其实就是这个导数的方向(回忆一下导数的基本定义)。然后你迈出的步伐长度,就是这个导数的大小,也就是说越陡峭的地方你下山的步子越大。(想要学习的朋友建议去B站上搜索吴恩达机器学习,里面关于梯度递降的概念讲得很好)

今日霍州(www.jrhz.info)©️

下面我们就可以开始计算这个神经网络了,上面的知识铺垫完了之后,下面就是很简单的计算了。首先我们需要大致了解一下训练神经网络的基本逻辑:

用当前状态下的权重去计算一下输出值,看一下输出值跟实际值差距多少,然后再根据这个差距去更新神经网络的权重。好了,说完了,我们开始吧。

建议拿出纸笔和计算器,让我们一步步地跟着去算一下,算完了你对神经网络的理解将会更深入。

首先计算隐藏层输入,简单的矩阵乘法:

Z1= XW1,X就是前面的那个颜色为0.8,硬度为0.2的样本,W1就是输入层到隐藏层的初始权重,下同。

今日霍州(www.jrhz.info)©️

进而利用上面提到的Sigmoid函数去计算得到隐藏层输出:

今日霍州(www.jrhz.info)©️

然后把隐藏层的输出乘以对应的隐藏层到输出层的权重,就得到了输出层输入Z2 = HW2

今日霍州(www.jrhz.info)©️

进而就可以计算得到,输出层输出

今日霍州(www.jrhz.info)©️

这是我们根据初始随机权重计算出的输出值,也就是目前这个神经网络,根据0.8的颜色值和0.2的硬度值预测的苹果的成熟情况。而我们的实际值是1,这两者之间仍存在着一些差距,所以我们还需要去进行反向传播,根据这个差距去更新神经网络中的权重。

补充:在这里有一个判断权重是否准确的参考指标,可以使用均方误差损失函数来计算,这里自己算一下就行了,约等于0.0627,我们可以利用这个值来判断权重更新的效果。

今日霍州(www.jrhz.info)©️

下面开始计算反向传播(有点类似于机器学习里的梯度递降),用到的就是前面提到过的导数的公式:

今日霍州(www.jrhz.info)©️

首先计算输出层误差项:

今日霍州(www.jrhz.info)©️

今日霍州(www.jrhz.info)©️

然后计算隐藏层误差项:

今日霍州(www.jrhz.info)©️

其中的那个圆圈代表逐元素相乘(注意不是矩阵的乘法),Z1为上面计算的隐藏层输入:

今日霍州(www.jrhz.info)©️

当我们计算出隐藏层的误差项了之后,我们就可以更新权重了。假设学习率为 η=0.1,(学习率就是我们前面提到的下山的时候的步长,你如果步子迈的太小了可能会导致下山太慢,太大又可能会导致会在接近谷底的时候在山谷两侧来回移动,始终无法抵达谷底,见下图)。

今日霍州(www.jrhz.info)©️

首先,我们更新隐藏层到输出层的权重W2 ,这个地方的HT是我们在前面计算出的隐藏层输出。W2就是隐藏层到输出层的原来的权重。

今日霍州(www.jrhz.info)©️

同理,我们这里还需要继续更新输入层到隐藏层的权重W1。这里就省去过程,计算过程很简单,你可以试着自己算一下,检验一下是不是听懂了。

这样,我们就得到了更新后的输出层到隐藏层的权重W1,和隐藏层到输出层的权重W2

见下图:

今日霍州(www.jrhz.info)©️

也就是说,我们的神经网络,经过这个样本的学习了之后,权重更新成了下面的样子:

今日霍州(www.jrhz.info)©️

这就是神经网络计算和更新权重的全过程了,之后就是引入新的样本,然后再正向传播和负向传播来回几趟,一直到样本训练完了之后得到最终的权重,然后就可以拿去进行预测了。

特别声明:[从0开始手算神经网络] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

她曾是清纯玉女,因名气不高风格大变,龚玥菲『柳岩』都没她敢穿(她曾经也是个小姑娘)

青年演员陈雅婷的突围之路,犹如一部精心编排的戏剧——从初出道时被贴上“清纯小花”标签,到如今以大胆造型屡登热搜的时尚达人,她的每一次转身都精准地踩在了话题引爆点上。 这一成功转型的背后,是『柳岩』多年来在表演上…

她曾是清纯玉女,因名气不高风格大变,龚玥菲『柳岩』都没她敢穿(她曾经也是个小姑娘)

海南这一夜,被丰满有料的『陈乔恩』惊艳,瘦了很多整个人面相都变了(海南晚上视频)

就像身边那些日子过得还不错的姐姐们,她们身上总会有种微妙的、既相似又不同的劲儿。 看着这几位姐姐的状态,我似乎也能从中领悟到一些道理:女人到了某个阶段,美的定义早已不止是五官的精致了。但从她们现在的样子来…

海南这一夜,被丰满有料的『陈乔恩』惊艳,瘦了很多整个人面相都变了(海南晚上视频)

自然堂喜马年聚福礼盒节日限定 点亮冬日美肌(自然堂喜马拉雅公益活动)

国风美学融合:自然堂的“喜马拉雅风马旗IP”、HBN的“彩马祥纹”、后Whoo的“传统草本配方”,均将“节日”与“传统文化”绑定,满足消费者对“有温度的礼物🎁”的需求; 周边仪式感:喜马年聚福手绳、『龚俊』台历…

自然堂喜马年聚福礼盒节日限定 点亮冬日美肌(自然堂喜马拉雅公益活动)

梅婷:与鄢颇离婚不是因为他吃软饭,嫁普通丈夫如愿当妈妈(梅婷与鄢颇为什么离婚)

然而,电影的票房成绩却惨不忍睹,鄢颇承受了来自外界的猛烈抨击,软饭男的帽子也因此紧紧扣在了他的头上,这一标签几乎伴随了他十几年之久。那个时期,梅婷渴望的是热烈而充满激情的生活,她欣赏鄢颇的才华,并且愿意为他…

梅婷:与鄢颇离婚不是因为他吃软饭,嫁普通丈夫如愿当妈妈(梅婷与鄢颇为什么离婚)

著名演员颜世魁,一生苦难69岁单身无子嗣,老母亲直言不敢老去(颜世芹简介)

这并非是他的退场,而是一种更加深沉的在场;不是事业的让位,而是将自己的孝心化作最绵长的演绎——你别怕,我就在这里,一步不离。2025年,他在一档纪实类访谈节目中首次敞开心扉,表达了对爱情与家庭的期待——他希望…

著名演员颜世魁,一生苦难69岁单身无子嗣,老母亲直言不敢老去(颜世芹简介)