从0开始手算神经网络
创始人
2025-05-06 07:54:00
0

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

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

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

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

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

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

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

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

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

假设初始权重为:

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

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

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

还会用到它的导数:

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

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

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

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

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

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

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

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

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

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

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

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

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

首先计算输出层误差项:

然后计算隐藏层误差项:

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

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

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

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

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

见下图:

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

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

相关内容

热门资讯

市场监督管理总局将调查评估外卖... 2026年1月9日,国家市场监督管理总局发布公告,国务院反垄断反不正当竞争委员会办公室将对外卖平台服...
【科技资讯】6、4、5、6、1... 1月8日,中国载人航天工程办公室面向全社会发布2025年度《中国空间站科学研究与应用进展报告》。 中...
DIGIERA宣布模块化全闪N... IT之家 1 月 9 日消息,康佳系半导体企业康盈旗下消费级存储企业 DIGIERA 在 CES 2...
中国厂商包揽前六!2025年全... 2025年全球人形机器人总出货量预计达13318台,市场进入快速增长阶段。 近日,全球权威市场研究机...
浪潮申请一种多核系统的内存优化... 国家知识产权局信息显示,山东浪潮科学研究院有限公司申请一项名为“一种多核系统的内存优化方法、装置、设...
小米申请数据获取方法专利,能够... 国家知识产权局信息显示,北京小米移动软件有限公司申请一项名为“数据获取方法、装置及存储介质”的专利,...
原创 钻... 大家好呀,我是瑜瑜。在王者荣耀中,有些英雄对于中低分段的玩家来说,是绝对不能碰的。除非你真的很热爱这...
古墓一下,马上摸金!《和平精英... 新年伊始,精英集结!1月7日,《和平精英》“古墓迷途”玩法概念片正式发布,该片围绕四位核心探险家及其...
什么?摸鱼玩手机也能实现零花钱... 全体搬砖党快看过来!《天下贰·经典版》今日开服直接炸锅,服务器都爆满了,登录队伍排的望不到头,弹窗预...
仅49克!乐奇AI眼镜黑科技刷... 大象新闻记者 李莉 金晓利 1月6日-9日,在拉斯维加斯LVCC Central Hall 1721...
博通集成亮相CES 2026:... 2026年1月,全球消费电子盛会CES 2026在美国拉斯维加斯盛大举行。博通集成(RiseLink...
松下、未野、小米迷你mini剃... 迷你剃须刀因追求小巧,常陷入“性能陷阱”:动力孱弱刮不净、刀网粗糙易扯须、反复刮剃致泛红。这些难点让...
嘉实基金:锚定产业本质,解锁科... 2026 年 “春季躁动” 行情中,科创主线一马当先,让科技投资再次成为市场焦点。但科技行业技术迭代...
“人工智能+制造”重磅部署,五... 来源:21世纪经济报道 1月7日,工业和信息化部、中央网信办、国家发展改革委、教育部、商务部、国务院...
深读 | 烟火深处,书香漫卷—... 《福建日报》2026年1月9日08版 核心提示 当手机成为阅读新宠,碎片化“屏读”填满了闲暇时光,对...
中山三院发布人工智能医生,辅助... 1月9日,中山大学附属第三医院(简称“中山三院”)举办“数智融合·医研共进”主题发布会,重磅推出智能...
原创 拳... 在不到两年前,拳头游戏官方正式宣布推出“英雄联盟名人堂”,设立这一奖项的目的则是为了表彰那些为英雄联...
国家互联网信息办公室关于发布2... 促进生成式人工智能服务创新发展和规范应用,网信部门会同有关部门按照《生成式人工智能服务管理暂行办法》...
深圳市俱进纸品包装申请耐黄变测... 国家知识产权局信息显示,深圳市俱进纸品包装有限公司申请一项名为“一种耐黄变测试装置”的专利,公开号C...