这节课主要讲解了感知器(Perceptron)和多层感知器(Multi-layer Perceptron, MLP)在机器学习中的应用。以下是更详细的内容总结:
### 1. 感知器(Perceptron)
- **基本概念**:
- 感知器是一种线性分类器,最早由Rosenblatt在1957年提出。
- 感知器模型模拟了神经元的工作方式,输入层接受输入特征,经过加权求和和激活函数后输出结果。
- **感知器模型**:
- 输入层(Input layer):接收输入特征向量 \( x \)。
- 加权求和(Weighted sum):将输入特征与权重 \( w \) 相乘后求和。
- 激活函数(Activation function):通常使用符号函数(sign function),将加权和结果转换为输出。
- 输出层(Output layer):输出分类结果。
- **训练算法**:
- 初始化权重 \( w \)。
- 对每个训练样本 \( x \),计算输出 \( y = \text{sign}(w \cdot x) \)。
- 如果预测错误(即 \( y \neq \text{真实标签} \)),更新权重:
- 如果真实标签为 +1: \( w \leftarrow w + x \)
- 如果真实标签为 -1: \( w \leftarrow w - x \)
- 重复上述步骤,直到所有样本分类正确或达到最大迭代次数。
- **等效关系**:
- 感知器训练算法等效于批量大小为1的随机梯度下降(SGD)与铰链损失(hinge loss)。
### 2. 多层感知器(Multi-layer Perceptron, MLP)
- **基本概念**:
- MLP 是一种包含一个或多个隐藏层的神经网络,每层由多个神经元组成。
- 每个神经元通过非线性激活函数(如ReLU)处理输入。
- **模型结构**:
- 输入层:接受输入特征向量 \( x \)。
- 隐藏层(Hidden layers):每层包含多个神经元,应用非线性激活函数。
- 输出层:输出最终预测结果。
- **激活函数**:
- 常见的激活函数有Sigmoid、Tanh、ReLU、Leaky ReLU等。
- ReLU 是大多数问题的默认选择,因为其计算效率高且能够缓解梯度消失问题。
- **前向传播(Forward Propagation)**:
- 输入特征通过每层神经元的加权求和和激活函数,逐层传递,最终输出结果。
- **反向传播(Backpropagation)**:
- 计算损失函数相对于每个权重的梯度,并更新权重以最小化损失函数。
- **优化算法**:
- 梯度下降(Gradient Descent):通过迭代优化权重,最小化损失函数。
- 随机梯度下降(SGD):在每次迭代中使用一个样本或一个小批量样本计算梯度,更新权重。
### 3. 线性和非线性模型
- **线性模型**:
- 输入和输出之间的关系是线性的,如线性回归和线性分类器。
- 感知器是一种线性分类器,无法处理非线性可分的数据集。
- **非线性模型**:
- MLP通过引入非线性激活函数和隐藏层,能够处理非线性可分的数据集。
- XOR问题:感知器无法解决,但一个包含隐藏层的MLP可以通过非线性激活函数解决。
### 4. 神经网络的架构
- **全连接层(Fully-connected layers)**:
- 每个神经元与前一层的所有神经元相连。
- 两层神经网络(包含一个隐藏层)称为两层神经网络。
- **通用近似定理(Universal Approximation Theorem)**:
- 一个具有有限宽度隐藏层的感知器能够逼近任何连续函数。
- 更复杂的函数可能需要更多的隐藏层或更大的隐藏层。
### 5. 总结
- 神经网络是线性函数和非线性激活函数的堆叠,具有比线性分类器更强的表示能力。
- 包含两层或更多隐藏层的神经网络是通用函数逼近器,能够表示任何数学函数。
通过本次课,你将了解感知器和多层感知器的基本原理、结构、训练算法,以及它们在解决线性和非线性分类问题中的应用。