多层感知机(MLP)是一种经典的人工神经网络结构,由输入层、一个或多个隐藏层以及输出层组成。每一层中的神经元与前一层的所有神经元全连接,且各层间的权重是可学习的。MLP 是深度学习的基础模型之一,主要用于处理结构化数据、分类任务和回归任务等。
特点
- 全连接层:每个神经元与前一层的所有神经元连接,能学习复杂的非线性关系。
- 激活函数:隐藏层和输出层的每个神经元使用非线性激活函数(如 ReLU(/ray-loo/)、Sigmoid(/ˈsɪɡˌmɔɪd/)、Tanh(/tænʃ/))来增加模型的表达能力。
- 前向传播和反向传播:
- 前向传播:输入数据经过各层加权求和并通过激活函数计算输出。
- 反向传播:根据损失函数计算梯度,并通过优化算法(如 SGD、Adam)更新权重。
- 通用逼近性:理论上,MLP 可以逼近任意连续函数。
MLP 的结构
- 输入层:接受输入数据的特征向量,大小等于数据的维度。
- 隐藏层:一个或多个隐藏层,每层由若干神经元组成,负责特征提取和非线性映射。
- 输出层:根据任务类型输出结果,例如分类问题中每类的概率或回归问题中的预测值。
代码示例
以下是一个使用 TensorFlow/Keras(/'kɜːrəz/或/'kiərəz/) 实现简单 MLP 的代码示例:
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Input
# 定义多层感知机模型
def build_mlp(input_dim, hidden_units, output_dim):
model = Sequential()
# 输入层和第一层隐藏层
model.add(Input(shape=(input_dim,)))
model.add(Dense(hidden_