Multi-linear classification(MLP)多层神经网络基础原理

本文深入探讨了多层感知器(MLP)的原理,作为深度学习中的一种基本模型,MLP通过多层非线性变换处理复杂的数据分类任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

感知器vol.2

线性分类不能分隔非线性的边界,可以用多个超平面来取代单个超平面


如图简单示意合并两个超平面对数据进行分类
对hyperplane A和B的输出zA和zB,计算 以0为临界值
取h+1个神经元可以构成一个multi-linear classifier,其中h个hyperplane作边界分割,1个作为h个hyperplane的混合器

用不同的方式将神经元组合在一起,所形成的感知器就叫做 multi-layer perceptron (MLP)


xi是点X输入的各方向的坐标,yi是第一层的输出,z是整个感知器的输出,vi,j是从xi到yj的系数,wi是从yi到z的系数,由此我们得到一个MLP模型

MLP learning
多层的学习方式和单层类似:
每次取单点计算Error并通过改变hyperplane来降低error,并重复该过程

我们将两层的系数分别计为vb,a和wb,通过这两个系数的偏导数来减小eout
下面的表达式中v的下标b,a,b
### 感知机在神经网络中的工作原理及实现 感知机是一种基本的人工神经元模型,其核心思想是通过加权求和的方式处理输入信号并输出结果。具体而言,感知机接收多个输入值 \(x_1, x_2, \ldots, x_n\) 并赋予它们对应的权重 \(w_1, w_2, \ldots, w_n\),随后计算这些输入与权重的线性组合加上偏置项 \(b\) 的总和,并通过激活函数决定最终输出[^1]。 #### 数学表达形式 感知机的数学表示可以写成: \[ y = f(\sum_{i=1}^{n} w_i x_i + b) \] 其中: - \(f\) 是激活函数, - \(w_i\) 表示第 \(i\) 个输入特征的权重, - \(x_i\) 表示第 \(i\) 个输入特征, - \(b\) 是偏置项。 常见的激活函数包括阶跃函数、Sigmoid 函数、ReLU(Rectified Linear Unit)等。对于单层感知机来说,通常采用的是阶跃函数作为激活函数[^1]。 #### 多层感知机的工作机制 当将多个单层感知机按照前馈结构连接在一起时,便构成了多层感知机(Multi-Layer Perceptron, MLP)。这种架构允许引入隐藏层来增强模型的学习能力。每一层的神经元都会对其接收到的输入执行类似的加权求和操作,并传递给下一层直到输出层[^4]。 为了训练这样的网络使其能够完成特定的任务(比如分类或回归),需要利用误差反向传播算法调整各层之间的参数——即权重矩阵和偏置向量。这一过程被称为 **反向传播** (Backpropagation),它基于梯度下降法优化目标损失函数以最小化预测值与真实标签间的差距[^3]。 以下是使用 Python 实现一个简单的单层感知机的例子: ```python import numpy as np class Perceptron: def __init__(self, learning_rate=0.01, epochs=50): self.learning_rate = learning_rate self.epochs = epochs def fit(self, X, y): n_samples, n_features = X.shape # 初始化权重和偏差 self.weights = np.zeros(n_features) self.bias = 0 for _ in range(self.epochs): for idx, x_i in enumerate(X): linear_output = np.dot(x_i, self.weights) + self.bias predicted_class = int(linear_output >= 0) update = self.learning_rate * (y[idx] - predicted_class) self.weights += update * x_i self.bias += update def predict(self, X): linear_output = np.dot(X, self.weights) + self.bias return np.where(linear_output >= 0, 1, 0) # Example usage if __name__ == "__main__": from sklearn.model_selection import train_test_split from sklearn.datasets import make_classification X, y = make_classification( n_samples=100, n_features=2, n_informative=2, n_redundant=0, random_state=42 ) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) p = Perceptron(learning_rate=0.1, epochs=100) p.fit(X_train, y_train) predictions = p.predict(X_test) accuracy = np.mean(predictions == y_test) print(f"Accuracy: {accuracy:.2f}") ``` 此代码定义了一个名为 `Perceptron` 的类用于模拟单层感知机的行为模式。该程序还包括如何创建虚拟数据集并通过分割测试验证准确性的一个例子演示部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值