以下内容是3b1b频道视频《But what is a neural network》的学习笔记。
点:神经元

神经网络的最小基本单位是神经元。每个神经元存储着一个数字,这个数字称为“激活值”,用以表示神经元的活跃程度。过去常用的激活函数如sigmoid,会将激活值压缩到0到1之间,但现代网络最常用的是ReLU(线性整流函数),它允许激活值范围从0到正无穷,完全不受上限限制。这篇文章主要介绍的是 sigmoid 函数的神经网络。
人工神经元和我们大脑中神经元的开关类似:激活的神经元对应于某个概念或特征,比如当我们看到苹果🍎时,一组特定的神经元就会同时活跃起来。
线:权重

神经元之间的联结被称为权重(weight),类似我们大脑中突触的连接。实际上,人类大脑每个皮层神经元大约拥有7000个突触。神经网络通过这些联结决定下一层的激活值,其计算方法如下:
- : 权重,这些联结一开始是一些参数,但是随着机器的学习,这些参数会不断优化,直到得到一组正确的权重。
- : 神经元中的激活值,由上一层的输出提供。
- σ:sigmoid,也被称为 s 型函数或逻辑函数,它能够让后面的权重和保持在 0~1之间,因为如前面所说,激活值是一个 0-1 之间的数字。但是现代更常用ReLU。
- : 决定神经元激活的敏感性和阈值。它不仅决定神经元激活的难易程度,还能在训练过程中更快地收敛。例如,如果我们希望神经元在加权总和大于10时才激活,可以将偏差设为-10。这样,小于10的值即便经过权重相乘,也不会触发激活。
面:神经网络

神经网络由大量神经元和权重组成,可简单分为输入层、隐藏层和输出层。这个结构受人脑启发,模拟人类神经元之间相互连接的工作方式。
输入数据经过网络,权重不断调整,最终形成能够精准识别模式的网络,就像大脑通过学习不断强化或弱化突触连接一样。
刚刚我们知道了一个神经元激活值的函数,但是对于神经网络来说更加简洁的写法是:
w_{0,0} & w_{0,1} & \cdots & w_{0,n} \\ w_{1,0} & w_{1,1} & \cdots & w_{1,n} \\ \vdots & \vdots & \ddots & \vdots \\ w_{k,0} & w_{k,1} & \cdots & w_{k,n} \end{bmatrix} \begin{bmatrix} a_0^{(0)} \\ a_1^{(0)} \\ \vdots \\ a_n^{(0)} \end{bmatrix} \; + \; \begin{bmatrix} b_0 \\ b_1 \\ \vdots \\ b_n \end{bmatrix}\right)$$ ## 神经网络如何识别图像? 以经典的手写数字识别([[MNIST 数据集]])为例:一个 28×28 像素的图片(共 784 个像素),比如写着数字“9”,我们一看就懂,但机器如何学会识别呢? 首先,这 784 个像素对应网络的输入层,共 784 个神经元。输出层为 10 个神经元,分别对应数字 0 到 9。最终目标是机器准确地点亮代表数字“9”的那个输出神经元。 如果我们用的是简单的多层神经网络(全连接网络),机器其实是在隐藏层内自动学习哪些组合模式更可能是数字 9。但现代更加有效的做法,是使用[[CNN 卷积神经网络]]。CNN 会专门处理图像数据,通过卷积核自动地找出边缘、线条和图案,逐层组合为更复杂的图案: 1. 第一层(卷积层)找出数字“9”的边缘特征; 2. 第二层组合这些特征为更明确的结构(比如圆弧、竖线); 3. 再下一层把结构组合成完整数字“9”。 这个过程也是受到人类视觉识别的启发,运用了类似人类的视觉系统识别图像的步骤。