news 2026/4/15 14:32:19

神经网络(从感知机到神经网络)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
神经网络(从感知机到神经网络)

从感知机到神经网络

神经网络和上一章介绍的感知机有很多共同点。这里,我们主要以两者
的差异为中心,来介绍神经网络的结构。

神经网络的例子

用图来表示神经网络的话,如图3-1 所示。我们把最左边的一列称为
输入层,最右边的一列称为输出层,中间的一列称为中间层。中间层有时也称为隐藏层。“隐藏”一词的意思是,隐藏层的神经元(和输入层、输出
层不同)肉眼看不见。另外,本书中把输入层到输出层依次称为第0 层、第
1 层、第2 层(层号之所以从0 开始,是为了方便后面基于Python 进行实现)。
图3-1 中,第0 层对应输入层,第1 层对应中间层,第2 层对应输出层。

图3-1 中的网络一共由3 层神经元构成,但实质上只有2 层神经
元有权重,因此将其称为“2 层网络”。请注意,有的书也会根据
构成网络的层数,把图3-1 的网络称为“3 层网络”。本书将根据
实质上拥有权重的层数(输入层、隐藏层、输出层的总数减去1
后的数量)来表示网络的名称。

只看图3-1 的话,神经网络的形状类似上一章的感知机。实际上,就神
经元的连接方式而言,与上一章的感知机并没有任何差异。那么,神经网络
中信号是如何传递的呢?

复习感知机

在观察神经网络中信号的传递方法之前,我们先复习一下感知机。现在来思考一下图3-2 中的网络结构。

图3-2 中的感知机接收x1x_1x1x2x_2x2两个输入信号,输出y。如果用数学式来
表示图3-2 中的感知机,则如式(3.1)所示。
y={0(b+w1x1+w2x2⩽0)1(b+w1x1+w2x2>0)\begin{align*} y = \begin{cases} 0 & (b + w_1 x_1 + w_2 x_2 \leqslant 0) \\ 1 & (b + w_1 x_1 + w_2 x_2 > 0) \end{cases} \end{align*}y={01(b+w1x1+w2x20)(b+w1x1+w2x2>0)
b 是被称为偏置的参数,用于控制神经元被激活的容易程度;而w1w_1w1w2w_2w2
是表示各个信号的权重的参数,用于控制各个信号的重要性。

顺便提一下,在图3-2 的网络中,偏置b 并没有被画出来。如果要明确
地表示出b,可以像图3-3 那样做。图3-3 中添加了权重为b 的输入信号1。这
个感知机将x1x_1x1x2x_2x2、1 三个信号作为神经元的输入,将其和各自的权重相乘后,
传送至下一个神经元。在下一个神经元中,计算这些加权信号的总和。如果
这个总和超过0,则输出1,否则输出0。另外,由于偏置的输入信号一直是1,
所以为了区别于其他神经元,我们在图中把这个神经元整个涂成灰色。

现在将式(3.1)改写成更加简洁的形式。为了简化式(3.1),我们用一个
函数来表示这种分情况的动作(超过0 则输出1,否则输出0)。引入新函数
h(x),将式(3.1)改写成下面的式(3.2)和式(3.3)
y=h(b+w1x1+w2x2)\begin{align*} y=h(b+w_1x_1+w_2x_2) \end{align*}y=h(b+w1x1+w2x2)

h(x)={0(x⩽0)1(x>0)\begin{align*} h(x) = \begin{cases} 0 & (x \leqslant 0) \\ 1 & (x > 0) \end{cases} \end{align*}h(x)={01(x0)(x>0)

式(3.2)中,输入信号的总和会被函数h(x) 转换,转换后的值就是输出y。
然后,式(3.3)所表示的函数h(x),在输入超过0 时返回1,否则返回0。因此,
式(3.1)和式(3.2)、式(3.3)做的是相同的事情。

激活函数登场

刚才登场的h(x)函数会将输入信号的总和转换为输出信号,这种函数
一般称为激活函数(activation function)。如“激活”一词所示,激活函数的
作用在于决定如何来激活输入信号的总和。

现在来进一步改写式(3.2)。式(3.2)分两个阶段进行处理,先计算输入
信号的加权总和,然后用激活函数转换这一总和。因此,如果将式(3.2)写
得详细一点,则可以分成下面两个式子。
a=b+w1x1+w2x2(3.4)a = b + w_1 x_1 + w_2 x_2 \tag{3.4}a=b+w1x1+w2x2(3.4)

y=h(a)(3.5)y = h(a) \tag{3.5}y=h(a)(3.5)

首先,式(3.4)计算加权输入信号和偏置的总和,记为a。然后,式(3.5)
用h()函数将a转换为输出y。

之前的神经元都是用一个○表示的,如果要在图中明确表示出式(3.4)
和式(3.5),则可以像图3-4 这样做。

如图3-4 所示,表示神经元的○中明确显示了激活函数的计算过程,即
信号的加权总和为节点a,然后节点a被激活函数h() 转换成节点y。本书中,“神
经元”和“节点”两个术语的含义相同。这里,我们称a和y 为“节点”,其实
它和之前所说的“神经元”含义相同。

通常如图3-5 的左图所示,神经元用一个○表示。本书中,在可以明确
神经网络的动作的情况下,将在图中明确显示激活函数的计算过程,如图3-5
的右图所示。

下面,我们将仔细介绍激活函数。激活函数是连接感知机和神经网络的
桥梁。

本书在使用“感知机”一词时,没有严格统一它所指的算法。一
般而言,“朴素感知机”是指单层网络,指的是激活函数使用了阶
跃函数A 的模型。“多层感知机”是指神经网络,即使用sigmoid
函数(后述)等平滑的激活函数的多层网络。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 10:22:50

10分钟快速上手:用Docker搭建Obsidian知识管理环境终极指南

10分钟快速上手:用Docker搭建Obsidian知识管理环境终极指南 【免费下载链接】awesome-obsidian 🕶️ Awesome stuff for Obsidian 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-obsidian 想要快速搭建个人知识管理平台吗?Obs…

作者头像 李华
网站建设 2026/4/15 10:25:35

Pyenv与Miniconda对比:哪个更适合管理Python3.11和PyTorch?

Pyenv与Miniconda对比:哪个更适合管理Python3.11和PyTorch? 在深度学习项目日益复杂的今天,一个常见的场景是:你在本地用 Python 3.11 跑通了 PyTorch 模型,结果换到服务器上却因为 CUDA 版本不兼容、Python 编译选项…

作者头像 李华
网站建设 2026/4/7 6:25:00

SSH远程访问TensorFlow 2.9深度学习镜像的操作步骤

SSH远程访问TensorFlow 2.9深度学习镜像的操作实践 在AI研发日益工程化的今天,一个常见的痛点浮出水面:我们能在Jupyter Notebook里轻松跑通模型,却总在训练到第100个epoch时因为网络波动断开连接,任务戛然而止。更不用说团队协作…

作者头像 李华
网站建设 2026/4/7 23:13:48

SSH远程开发指南:连接云端TensorFlow深度学习环境

SSH远程开发指南:连接云端TensorFlow深度学习环境 在现代AI研发中,一个常见的场景是:你手头只有一台轻薄笔记本,却需要训练一个包含上亿参数的深度学习模型。本地算力捉襟见肘,而云服务器上的GPU资源空闲待命——如何…

作者头像 李华
网站建设 2026/4/15 16:00:02

学术自动化新纪元:AI论文评审工具的终极指南

学术自动化新纪元:AI论文评审工具的终极指南 【免费下载链接】paper-reviewer Generate a comprehensive review from an arXiv paper, then turn it into a blog post. This project powers the website below for the HuggingFaces Daily Papers (https://hugging…

作者头像 李华
网站建设 2026/4/4 5:05:29

Multisim14使用教程:图解说明原理图绘制步骤

Multisim14实战入门:从零开始画出你的第一张电路图你有没有过这样的经历?想验证一个简单的运放电路,却因为搭错一根线,烧了芯片;或者设计了一个滤波器,结果实测和理论差得离谱。最后才发现——问题根本不在…

作者头像 李华