1. 从神经元到感知机:神经网络的基础单元
1943年,心理学家McCulloch和数学家Pitts提出了M-P神经元模型,这成为后来感知机的理论基础。这个模型模拟了生物神经元的工作方式:当输入信号的总和超过某个阈值时,神经元被激活,否则保持抑制状态。
感知机(Perceptron)是Frank Rosenblatt在1957年提出的第一个可学习的神经网络模型。它由输入层和输出层组成,输入层的每个节点通过权重连接到输出节点。数学表达式为:
code复制y = f(∑(w_i * x_i) + b)
其中f是激活函数,早期感知机使用阶跃函数(Step Function)作为激活函数。这个简单的结构却蕴含着强大的学习能力——通过调整权重w_i和偏置b,感知机可以学习输入数据的线性模式。
注意:单层感知机只能解决线性可分问题,这是它的根本局限。1969年Minsky和Papert在《Perceptrons》一书中明确指出了这一点,这直接导致了第一次AI寒冬。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 多层感知机(MLP)的突破
为了克服单层感知机的局限,研究者提出了多层感知机(Multilayer Perceptron, MLP),即在输入层和输出层之间加入隐藏层。这种结构理论上可以逼近任何连续函数,关键突破在于:
- 使用可微的激活函数(如Sigmoid、tanh)替代阶跃函数
- 反向传播算法(Backpropagation)的出现,使得多层网络训练成为可能
一个典型的三层MLP网络结构如下:
python复制import torch
import torch.nn as nn
class MLP(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(MLP, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size) # 输入层到隐藏层
self.relu = nn.ReLU() # 激活函数
self.fc2 = nn.Linear(hidden_size, output_size) # 隐藏层到输出层
def forward(self, x):
out = self.fc1(x)
out = self.relu(out)
out = self.fc2(out)
return out
3. 激活函数的选择与比较
激活函数是神经网络能够学习非线性关系的关键。常用的激活函数包括:
| 激活函数 | 公式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| Sigmoid | 1/(1+e^-x) | 输出范围(0,1) | 容易梯度消失 | 二分类输出层 |
| tanh | (e^x-e^-x)/(e^x+e^-x) | 输出范围(-1,1) | 梯度消失问题 | 隐藏层 |
| ReLU | max(0,x) | 计 |
