【小目标】
这一节点回答:神经网络到底是什么?它和大脑的神经元有什么关系?一层一层的网络是怎么工作的?
关键判断:神经网络不是"人造大脑",只是"借鉴了大脑的一些想法"的数学结构。 不要被名字吓到——它本质上就是一个超级复杂的函数,输入一些数,输出一些数。
【方法论】
一句话结论:神经网络 = 很多个"神经元"一层一层连起来,每个神经元做一件很简单的事——把输入加权求和,再过一个激活函数。 简单的事情重复很多次、连很多层,就能做非常复杂的事情。
神经网络的层次结构
输入层 → 隐藏层 1 → 隐藏层 2 → ... → 输出层
(数据进来)(中间处理,可有很多层)(给出结果)
① 一个神经元在做什么?
一个神经元 = 一次加权求和 + 一次激活函数。
输入1 × 权重1 + 输入2 × 权重2 + ... + 偏置 → 激活函数 → 输出
用人话讲:
每个输入都有一个"权重"(重要程度)
把所有输入按重要程度加起来,再加上一个"偏置"(基准值)
然后过一个"激活函数"——决定这个神经元"激不激活、激活到什么程度"
权重(Weight):每个输入的重要程度——是神经网络里"可学习"的参数,训练就是在调权重
偏置(Bias):神经元的"基准活跃度"——也是可学习的参数
激活函数(Activation Function):给神经网络引入"非线性"——没有它,多层神经网络就退化成一层了
为什么需要激活函数?因为如果只是加权求和,不管多少层都等于一层(线性变换的组合还是线性的)。有了激活函数(非线性),神经网络才能拟合复杂的规律。
② 一层神经元:从一个到一堆
- 同一层的神经元:接收相同的输入,各自有不同的权重,输出不同的结果
- 一层的输出 = 一堆数(每个神经元输出一个数)
- 下一层把这堆数当作输入,继续处理
③ 深度神经网络:很多层叠起来
输入层:数据进来的地方
隐藏层:中间处理的层,可以有很多层
- 越深的层,处理的特征越抽象
- 比如识别图片:第一层学边缘 → 第二层学形状 → 第三层学部件 → 第四层学整体物体
输出层:给出最终结果
为什么"深度"很重要?
- 深层网络可以分层提取特征——从简单到复杂
- 同样的能力,深层网络比浅层网络参数少得多
- 但不是越深越好——太深了难训练、容易过拟合
④ 神经网络是怎么训练的:反向传播
前向传播:数据从输入层传进去,一层一层往前传,最后得到输出——这是"预测"的过程。
反向传播:
- 先算预测值和真实值的差距(损失)
- 从输出层开始,反着往回算——每层的权重对最终误差贡献了多少
- 根据贡献大小,调整每个权重——让误差变小
- 一直传到输入层
- 反向传播 + 梯度下降 = 神经网络训练的基本方法
- 每次训练都是:前向传播算结果 → 算误差 → 反向传播调权重 → 再前向传播……
⑤ 为什么神经网络直到最近才火?
三个原因:
- 数据多了:互联网时代有了海量数据,足够喂饱大网络
- 算力够了:GPU 让神经网络训练速度提升成千上万倍
- 技巧多了:更好的激活函数、更好的初始化方法、残差连接……让深层网络能训练得动
【知识点】
- 神经网络不是人造大脑——只是借鉴了一些想法的数学结构,本质是复杂函数。
- 一个神经元 = 加权求和 + 激活函数——很简单,但很多个堆起来就很强大。
- 激活函数的作用是引入非线性——没有它,多少层都等于一层。
- 深度网络的优势是分层提取特征——从简单到复杂,越深越抽象。
- 训练靠的是反向传播 + 梯度下降——先往前传算结果,再往回传调权重。
- 神经网络最近才火不是偶然——数据、算力、算法技巧三个条件同时成熟。
【名词卡】
| 名词 | 一句话解释 |
|---|---|
| Neural Network / 神经网络 | 由大量神经元连接组成的数学结构,用来学习数据中的复杂规律 |
| Neuron / 神经元 | 神经网络的基本单元——做一次加权求和 + 一次激活函数 |
| Weight / 权重 | 每个输入的重要程度,是神经网络要学习的参数 |
| Bias / 偏置 | 神经元的基准值,也是可学习参数 |
| Activation Function / 激活函数 | 给神经元引入非线性的函数,让神经网络能拟合复杂规律 |
| Hidden Layer / 隐藏层 | 输入层和输出层之间的层,数据在其中逐层变换 |
| Deep Learning / 深度学习 | 用深层神经网络来学习的方法——层数多了就是"深度" |
| Backpropagation / 反向传播 | 神经网络训练的核心算法——从后往前算每层该调整多少 |
| Perceptron / 感知机 | 最简单的神经网络(一层),是神经网络的基础单元 |
| CNN / 卷积神经网络 | 专门处理图像的神经网络,用"卷积"操作提取空间特征 |
易混对比: 权重 vs 偏置(一个管输入重要性、一个管基准值);前向传播 vs 反向传播(一个算结果、一个调参数)
【练一练】
目标: 用一个超简单的例子,手动模拟一个神经元的工作过程。
实验: 假设我们有一个神经元,用来判断"今天要不要去公园玩"。
- 输入 1:天气好不好(0 = 不好,1 = 好)
- 输入 2:有没有朋友一起(0 = 没有,1 = 有)
- 权重 1:天气的权重是 3(天气很重要)
- 权重 2:朋友的权重是 2(朋友也重要,但不如天气)
- 偏置:-4(基准是不太想去,需要足够的理由才去)
- 激活函数:如果结果 > 0,输出 1(去);否则输出 0(不去)
请计算以下四种情况:
| 情况 | 天气 | 朋友 | 加权求和(3×天气 + 2×朋友 - 4) | 激活输出(去 / 不去) |
|---|---|---|---|---|
| A | 1(好) | 1(有) | ||
| B | 1(好) | 0(没) | ||
| C | 0(不好) | 1(有) | ||
| D | 0(不好) | 0(没) |
思考题:
- 如果我觉得"朋友比天气更重要",应该怎么改权重?
- 如果我是个"宅男",标准更高,应该怎么改偏置?
- 如果激活函数不是"要么 0 要么 1",而是"0 到 1 之间的一个数"(表示想去的程度),会不会更合理?为什么?