以下内容是3b1b频道视频《But what is a neural network》的学习笔记。 ## 点:神经元 ![](https://image.harryrou.wiki/2025-05-16-1.png) 神经网络的最小基本单位是神经元。每个神经元存储着一个数字,这个数字称为“激活值”,用以表示神经元的活跃程度。过去常用的激活函数如sigmoid,会将激活值压缩到0到1之间,但现代网络最常用的是ReLU(线性整流函数),它允许激活值范围从0到正无穷,完全不受上限限制。这篇文章主要介绍的是 sigmoid 函数的神经网络。 人工神经元和我们大脑中神经元的开关类似:激活的神经元对应于某个概念或特征,比如当我们看到苹果🍎时,一组特定的神经元就会同时活跃起来。 ## 线:权重 ![](https://image.harryrou.wiki/2025-05-16-CleanShot%202025-05-16%20at%2021.42.15%402x.png) 神经元之间的联结被称为权重(weight),类似我们大脑中突触的连接。实际上,人类大脑每个皮层神经元大约拥有7000个突触。神经网络通过这些联结决定下一层的激活值,其计算方法如下: $σ(w_1a_1+w_2a_2+w_3a_3+...+w_na_n+b_0)$ - $w$: 权重,这些联结一开始是一些参数,但是随着机器的学习,这些参数会不断优化,直到得到一组正确的权重。 - $a$: 神经元中的激活值,由上一层的输出提供。 - σ:sigmoid,也被称为 s 型函数或逻辑函数,它能够让后面的权重和保持在 0~1之间,因为如前面所说,激活值是一个 0-1 之间的数字。但是现代更常用ReLU。 - ![](https://image.harryrou.wiki/2025-05-16-133605.png) - $b_0$: 决定神经元激活的敏感性和阈值。它不仅决定神经元激活的难易程度,还能在训练过程中更快地收敛。例如,如果我们希望神经元在加权总和大于10时才激活,可以将偏差$b$设为-10。这样,小于10的值即便经过权重相乘,也不会触发激活。 ## 面:神经网络 ![](https://image.harryrou.wiki/2025-05-16-144332.png) 神经网络由大量神经元和权重组成,可简单分为输入层、隐藏层和输出层。这个结构受人脑启发,模拟人类神经元之间相互连接的工作方式。 输入数据经过网络,权重不断调整,最终形成能够精准识别模式的网络,就像大脑通过学习不断强化或弱化突触连接一样。 刚刚我们知道了一个神经元激活值的函数,但是对于神经网络来说更加简洁的写法是: $ neural network(function) = σ(\begin{bmatrix} w_0,_0 w_0,_1...w_0,_n \\ w_1,_0 w_1,_1...w_1,_n \\ .\\ .\\ .\\ w_k,_0 w_k,_1...w_k,_n \end{bmatrix} * \begin{bmatrix} a_0(^0)\\ a_1(^0)\\ .\\ .\\ .\\ a_n(^0)\\ \end{bmatrix} + \begin{bmatrix} b_0\\ b_1\\ .\\ .\\ .\\ b_n \end{bmatrix}= \begin{bmatrix} ?\\ ?\\ .\\ .\\ .\\ ?\\ \end{bmatrix})$ ## 神经网络如何识别图像? 以经典的手写数字识别([[MNIST 数据集]])为例:一个 28×28 像素的图片(共 784 个像素),比如写着数字“9”,我们一看就懂,但机器如何学会识别呢? 首先,这 784 个像素对应网络的输入层,共 784 个神经元。输出层为 10 个神经元,分别对应数字 0 到 9。最终目标是机器准确地点亮代表数字“9”的那个输出神经元。 如果我们用的是简单的多层神经网络(全连接网络),机器其实是在隐藏层内自动学习哪些组合模式更可能是数字 9。但现代更加有效的做法,是使用[[CNN 卷积神经网络]]。CNN 会专门处理图像数据,通过卷积核自动地找出边缘、线条和图案,逐层组合为更复杂的图案: 1. 第一层(卷积层)找出数字“9”的边缘特征; 2. 第二层组合这些特征为更明确的结构(比如圆弧、竖线); 3. 再下一层把结构组合成完整数字“9”。 这个过程也是受到人类视觉识别的启发,运用了类似人类的视觉系统识别图像的步骤。