神经网络是怎么工作的?从神经元到多层感知机

神经网络是怎么工作的?从神经元到多层感知机
上篇我们聊了深度学习是什么、能做什么。你可能还记得它的核心就是"从数据中自动学习规律"。但问题是:它到底是怎么学的?怎么从一堆乱七八糟的图片里,认出哪只是猫哪只是狗?
答案就在神经网络里。这名字听着玄乎,但其实原理没那么复杂。今天我们就把它拆开来看,一层层扒干净。
神经网络本质上就是个数学公式
别被"人工智能"、"深度学习"这些词吓到。
说白了,神经网络就是一道数学题。
你给它一个输入,它给你一个输出。图片进去,标签出来。语音进去,文字出来。不管多花哨的应用,底层都是"输入→处理→输出"这一套。
但这道题和我们数学课上的不一样。它有成千上万个参数,就像一个超级复杂的公式。这些参数决定了输入怎么变成输出。

打个比方。神经网络就像一个巨型工厂。原材料进去(数据),流水线处理(神经网络),成品出来(预测结果)。
工厂里的每个工人都记着自己的小任务。所有工人配合起来,就能完成单独一个人根本搞不定的事。
单个神经元长什么样?
工厂由工人组成,神经网络由神经元组成。
一个神经元长这样:
它左边有好多输入。每个输入都带个数字,叫权重。权重越大,这个输入越重要。
神经元把所有的输入乘以对应权重,加起来。再加上一个偏置,就像微调螺丝。
最后过一道激活函数,出来一个输出。
听起来复杂?做个决定就懂了。
比如你决定今天中午吃什么。考虑因素:钱包鼓不鼓(输入1)、饿不饿(输入2)、想不想吃辣(输入3)。
钱包影响大,你就给它高权重。想不想吃辣无所谓,权重就低。
这就是神经元在做的事:加权求和 + 微调。

每个神经元的输出,又可以成为下一个神经元的输入。一层一层传下去,信息就这样被处理了。
激活函数是干啥的?
刚才说神经元最后要过激活函数。这步到底有什么用?
没激活函数的话,神经网络就是个线性公式。输入放大两倍,输出就放大两倍。永远学不会复杂的东西。
激活函数负责打破线性。
它让网络能够处理"不是A就是B"这种情况,也能处理"在A和B之间徘徊"的模糊地带。
常见的激活函数有三种:
Sigmoid:输出在0到1之间,适合做概率预测。但梯度容易消失,深层网络不好用。
ReLU:大于0输出原值,小于0输出0。简单高效,是现在的主流。
Tanh:输出在-1到1之间,中心是0。比Sigmoid好用一点。
怎么选?先记住ReLU最常用就行。后面我们专门讲激活函数的选择。

多层结构:从看局部到看全局
一个神经元能做的事很有限。把很多神经元堆成层,层再堆成网络,能力就上来了。
典型的多层感知机长这样:输入层接收数据,几个隐藏层处理数据,输出层给出结果。
各层学的东西不一样。
底层学边缘、纹理这些简单特征。中层把它们组合成局部模式。高层最终识别出整体是什么。
就像你认识一个人。
你先看到他的眼睛、鼻子、嘴巴。然后组合起来知道这是个"人脸"。最后和记忆对比,发现"哦,这是老王"。
单层网络做不到这个。它只能看局部,或者只能看整体,没有层次。
多层结构让网络真正"看懂"了东西。

训练过程:神经网络是怎么学习的?
现在有个问题:网络参数一开始是随机的,乱七八糟的。它怎么变成能正确认猫认狗的?
靠训练。
训练分两步:前向传播和反向传播。
前向传播很简单。数据从左边进去,一层层计算,最后出来一个预测结果。
问题来了:第一次预测肯定不准。错多少?怎么改?
这就需要损失函数。它能量化预测和真实答案之间的差距。差距越大,损失越高。
然后是反向传播。网络从右往左看:输出错了很多,那倒数第二层责任多大?倒数第三层呢?一层层算下来,每个参数都知道自己该背多少锅。
最后根据这个"锅"来调整参数。调整完了,再来一轮前向传播,看看损失有没有下降。
反复几千几万次,损失越来越低,网络越来越准。
这就好比你学投篮。投一个,偏了。看看偏了多少,调整力度和角度。再投,还偏。继续调。直到投进。

整个训练过程就是:前向计算→算损失→反向传播→更新参数→再来一遍。周而复始,直到满意为止。
手写数字识别:MLP的实战
说这么多,来个实际例子。
MNIST数据集是深度学习的"Hello World"。
它包含上万张手写数字图片。每张是28×28像素,灰度图。
任务是让网络学会识别这些数字是0到9中的哪一个。
输入层有784个神经元(28×28=784)。每个像素一个输入。
输出层有10个神经元,分别代表0到9。哪个输出值最高,预测就是哪个数字。
中间加几个隐藏层,网络就能学得很好。
训练完成后,你随便写个"3",网络能认出来。就算你写的歪歪扭扭,和训练集里的都不一样,它也能认出来。
这就是泛化能力。学会了规律,就能处理没见过的数据。

最后
现在你应该清楚了。
神经网络从单个神经元开始,每个神经元做加权求和、加偏置、过激活函数。把很多神经元堆成多层,网络就能提取层级特征。看局部、看整体,全部搞定。
训练则是前向传播和反向传播的循环。数据进去,算损失,反向调整参数,一遍遍迭代,直到网络学会。
说起来好像挺简单?但这只是基础。
真实的深度学习网络动不动几百层,参数几十亿。训练时还有各种技巧:怎么防止过拟合、怎么加速收敛、怎么选择优化器……
就拿激活函数来说,我们今天只是简单提了一下。Sigmoid、ReLU、Tanh各有各的特点,不同场景选错了,性能能差好几倍。
所以下篇我们就来细聊:激活函数到底怎么选?
