《机器学习算法与实现》6、神经网络
<p> <strong>一、多层神经网络</strong></p><p>基于生物神经元模型可得到多层感知机(MLP)的基本结构,最典型的MLP包括三层:输入层、隐藏层和输出层。</p>
<p>感知机是神经网络的基础或者说是原型,书中前面也讲了感知机的原理和代码实现。</p>
<p>MLP神经网络不同层之间是全连接的。(全连接的意思就是:上一层的任何一个神经元与下一层的所有神经元都有连接)</p>
<p> </p>
<div style="text-align: left;"></div>
<p>神经元和感知机本质上是一样的,感知机的激活函数是阶跃函数,而神经元的激活函数往往选择sigmoid函数或tanh函数。</p>
<p>下面就是神经元的一个模型</p>
<div style="text-align: left;"></div>
<p>神经网络就是按照一定规则连接起来的多个神经元。下图展示了一个全连接神经网络。</p>
<p>可以看到,下面的神经网络确实是由多个神经元组成的。</p>
<div style="text-align: left;"></div>
<p>神经网络主要有三个基本要素:权重、偏置和激活函数。</p>
<p>权重:神经元之间的连接强度由权重控制,权重的大小表示可能性的大小</p>
<p>偏置:偏置的设置是为了正确分类样本,是模型中的一个重要参数,即保证通过输入算出的输出值不能随便激活。</p>
<p>激活函数:起非线性映射的作用,其可将神经元的输出幅度限制在一定范围内,一般限制在(-1~1)或(0~1)之间。</p>
<p> </p>
<p> <strong>二、神经网络的输出</strong></p>
<p>神经网络实际上就是一个输入向量x到输出向量y的函数,即:</p>
<p>y = f(x)</p>
<p> </p>
<p>根据输入计算神经网络的输出:</p>
<ul>
<li>首先将输入向量<nobr aria-hidden="true">x⃗ </nobr>的每个元素的值 xi 赋给神经网络的输入层的对应神经元</li>
<li>然后根据式(a = signoid(w*x))依次向前计算每一层的每个神经元的值,直到最后一层输出层的所有神经元的值计算完毕</li>
<li>最后,将输出层每个神经元的值串在一起就得到了输出向量<nobr aria-hidden="true">y⃗ </nobr></li>
</ul>
<div>
<p>接下来举一个例子来说明这个过程,我们先给神经网络的每个单元写上编号。</p>
<div style="text-align: left;"></div>
<ul>
<li>输入层有三个节点,我们将其依次编号为1、2、3;</li>
<li>隐藏层的4个节点,编号依次为4、5、6、7;</li>
<li>最后输出层的两个节点编号为8、9。</li>
</ul>
<p>因为这个神经网络是全连接网络,所以可以看到每个节点都和上一层的所有节点有连接。比如,隐藏层的节点4,它和输入层的三个节点1、2、3之间都有连接,其连接上的权重分别为 w41 , w42 , w43 。那么,怎样计算节点4的输出值 a4 呢?</p>
<div>
<p>为了计算节点4的输出值,必须先得到其所有上游节点(也就是节点1、2、3)的输出值。节点1、2、3是输入层的节点,所以,他们的输出值就是输入向量<nobr aria-hidden="true">x⃗ </nobr>本身。按照上图画出的对应关系,可以看到节点1、2、3的输出值分别是 x1 , x2 , x3 。要求输入向量的维度和输入层神经元个数相同,而输入向量的某个元素对应到哪个输入节点是可以自由决定的。</p>
</div>
<div style="text-align: left;">一旦有了节点1、2、3的输出值,就可以根据式1计算节点4的输出值 a4 :</div>
<div style="text-align: left;">
<div style="text-align: left;"></div>
</div>
<div style="text-align: left;">上式的 w4b 是节点4的偏置项,图中没有画出来。而 w41 , w42 , w43 分别为节点1、2、3到节点4连接的权重,在给权重 wji 编号时,目标节点的编号 j 放在前面,把源节点的编号 i
<div>
<p>放在后面。</p>
</div>
<div>
<p>同样,可以继续计算出节点5、6、7的输出值<nobr aria-hidden="true">a5</nobr>, a6 , a7 。这样,隐藏层的4个节点的输出值就计算完成了,就可以接着计算输出层的节点8的输出值 y1 :</p>
</div>
</div>
<div style="text-align: left;"></div>
<p>同理,我们还可以计算出 y2 的值。这样输出层所有节点的输出值计算完毕,就得到了在输入向量 x⃗ =(x1,x2,x3)T 时,神经网络的输出向量 y⃗ =(y1,y2)T 。可以看出:输出向量的维度和输出层神经元个数相同。</p>
<p> </p>
<p>以上就算神经网络的正向计算也叫推理。</p>
<p> </p>
</div>
<p>因为这个神经网络是全连接网络</p>
<p>楼主分享的神经网络的技术知识内容很清晰,易懂,图文并茂,对我这样的初学者理解神经网络有很大的帮助</p>
<p>谢谢分享,虽然大模型很流行,基础还是不可少的。</p>
<p>记得坛子里是不是有个机器学习分类的思维导图,说,机器学习分浅层学习和深度学习的?</p>
<p>遍翻坛子,怎么没找到呢?????就差翻个底朝天了,哪位XDJM发现了,给个链接?<img height="63" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/victory.gif" width="61" /></p>
<p>wit的这篇,先关注,在细细品一品。。。。。。<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/loveliness.gif" width="48" />,跟着wit和仙哥走一走</p>
chejm 发表于 2024-7-26 11:56
楼主分享的神经网络的技术知识内容很清晰,易懂,图文并茂,对我这样的初学者理解神经网络有很大的帮助
<p>感谢大佬缪赞,一起学习</p>
freebsder 发表于 2024-7-26 14:08
谢谢分享,虽然大模型很流行,基础还是不可少的。
<p>现在各种深度学习框架都集成了神经网络算法,完全不用自己实现。</p>
<p>只是了解一下原理<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/handshake.gif" width="48" /></p>
hellokitty_bean 发表于 2024-7-26 16:56
记得坛子里是不是有个机器学习分类的思维导图,说,机器学习分浅层学习和深度学习的?
<p>我好像记得是有一个list的</p>
<p>这篇值得细细品尝,新科技出来真的要从基本开始学</p>
tryisbest 发表于 2024-8-1 13:03
这篇值得细细品尝,新科技出来真的要从基本开始学
<p>一起学习</p>
页:
[1]