线性函数是神经网络的基础组件,但存在固有的局限性。以线性回归模型为例,其本质是一个拟合自变量与因变量关系的函数。由于线性函数只能表示直线关系,因此函数预测值与真实数值之间必然存在误差,我们只能通过调整参数来使这个误差尽量减小。
线性函数的一般形式可以表示为:
$$y = wx + b$$
其中,$w$ 是权重(斜率),$b$ 是偏置(截距)。这种线性关系虽然简单直观,但无法捕捉变量之间的复杂非线性关系。
神经网络本质上是由线性函数和非线性激活函数构成的复杂非线性函数。神经网络的核心优势在于其处理非线性关系的能力,这也是它能够解决复杂问题的根本原因。
神经网络之所以强大,是因为它可以通过堆叠多层神经元来拟合任意复杂的函数关系。这种强大的表达能力使神经网络成为处理图像识别、自然语言处理、语音识别等复杂任务的理想工具。
如果神经网络只包含线性变换,那么无论网络有多少层,最终都可以被简化为一层线性变换,失去了深层网络的优势。因此,非线性变换是神经网络能够拟合复杂函数的关键。
激活函数(Activation Function)是引入非线性的关键组件。常见的激活函数包括:
| 激活函数 | 公式 | 特点 |
|---|---|---|
| Sigmoid | $f(x) = \frac{1}{1 + e^{-x}}$ | 输出范围(0,1),常用于二分类 |
| Tanh | $f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$ | 输出范围(-1,1),零中心化 |
| ReLU | $f(x) = \max(0, x)$ | 计算简单,缓解梯度消失 |
| Leaky ReLU | $f(x) = \max(0.01x, x)$ | 解决ReLU的"死神经元"问题 |
通过在线性变换后加入激活函数,可以将线性函数转变为非线性函数。数学表达式为:
$$f(x) = g(wx + b)$$
其中,$g(\cdot)$ 是激活函数。通过这种变换,神经网络能够拟合各种复杂的非线性关系。
对于多个输入的情况:
$$f(x_1, x_2) = g(w_1 x_1 + w_2 x_2 + b)$$
通过叠加多层非线性变换,网络的表达能力进一步增强:
$$f(x_1, x_2) = g(w_3 \cdot g(w_1 x_1 + w_2 x_2 + b_1) + b_2)$$
这种多层结构可以画出更加复杂的曲线,使模型更贴合真实数据。
神经网络通常由三部分组成:输入层、隐藏层和输出层。
输入层 → 隐藏层 → 输出层
每个神经元的基本计算过程如下:
每个神经元的输出 = 激活函数(输入 × 权重 + 偏置)
数学表达式为:
$$y = g\left(\sum_{i} w_i x_i + b\right)$$
其中:
数据从输入层经过隐藏层传递到输出层的过程称为前向传播(Forward Propagation)。一个典型的前向传播过程可以表示为:
$$y = g(w_3 \cdot g(w_1 x_1 + w_2 x_2 + b_1) + b_2)$$
通过增加隐藏层的数量和每层神经元的数量,可以构建更深、更复杂的神经网络。深层网络具有更强的特征提取和表示能力,能够学习数据的多层次抽象特征。
神经网络训练的核心目标是:根据所有已知的样本数据,找出最优的权重 $W$ 和偏置 $b$,使模型预测值尽可能接近真实值。
损失函数(Loss Function) 是衡量模型预测值与真实值之间差距的指标。常见的损失函数包括:
适用于回归任务:
$$L = \frac{1}{n} \sum_{i=1}^{n}(y_i - \hat{y}_i)^2$$
或者更常见的形式(带系数):
$$L = \frac{1}{2n} \sum_{i=1}^{n}(y_i - \hat{y}_i)^2$$
适用于分类任务:
$$L = -\sum_{i} y_i \log(\hat{y}_i)$$
神经网络的训练过程可以概括为以下几个步骤:
梯度下降算法(Gradient Descent) 是优化神经网络参数的核心方法。其基本思想是:沿着损失函数梯度的反方向更新参数,使损失函数值逐渐减小。
梯度是由损失函数对各个参数的偏导数组成的向量。对于函数 $L(w, b)$,梯度可以表示为:
$$\nabla L = \left[\frac{\partial L}{\partial w}, \frac{\partial L}{\partial b}\right]$$
参数更新的公式为:
$$w = w - \alpha \cdot \frac{\partial L}{\partial w}$$ $$b = b - \alpha \cdot \frac{\partial L}{\partial b}$$
其中 $\alpha$ 是学习率(Learning Rate),它控制参数更新的步长。
| 算法 | 特点 |
|---|---|
| 批量梯度下降(Batch GD) | 使用全部数据计算梯度,梯度准确但计算量大 |
| 随机梯度下降(SGD) | 每次使用一个样本更新参数,效率高但不稳定 |
| 小批量梯度下降(Mini-batch GD) | 每次使用一小批样本,是工程中常用的方法 |
反向传播(Backpropagation) 是计算神经网络梯度的核心算法。它利用链式法则,从输出层开始,依次计算每个参数对损失函数的梯度。
反向传播的计算过程遵循以下逻辑链:
输入x → 隐藏层a → 输出层y → 损失值L
具体步骤如下:
反向传播的核心是链式法则(Chain Rule)。对于复合函数:
$$y = g(w \cdot x + b)$$
参数 $w$ 的偏导数需要逐层计算:
$$\frac{\partial L}{\partial w} = \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial w}$$
这种计算方式使得梯度能够有效地从输出层传播到输入层,因此称为"反向传播"。
神经网络需要经过多轮训练(Epoch)才能收敛。每一轮训练包括:
这个过程会不断重复,直到损失值降至可接受的范围或达到预设的训练轮次。
过拟合(Overfitting) 是机器学习中常见的问题,指模型在训练数据上表现很好,但在测试数据(或新数据)上表现较差。
过拟合的本质是模型"记住"了训练数据的噪声和细节,而没有学习到数据的一般规律。
| 现象 | 说明 |
|---|---|
| 训练误差很小 | 模型在训练集上拟合得很好 |
| 测试误差很大 | 模型在新数据上表现差 |
| 模型过于复杂 | 参数过多,拟合能力过强 |
| 方法 | 说明 |
|---|---|
| 增加数据量 | 更多样本有助于学习真实规律 |
| 正则化(L1/L2) | 惩罚大的权重,限制模型复杂度 |
| Dropout | 随机丢弃神经元,减少共适应 |
| 早停(Early Stopping) | 监控验证集性能,及时停止训练 |
| 数据增强 | 通过变换增加训练样本多样性 |
最基础的神经网络类型,信息从输入层向前流动到输出层,没有循环连接。适用于基本的分类和回归任务。
专门用于处理网格结构数据(如图像)的神经网络。核心操作是卷积,能够有效提取空间特征。
主要特点:
应用领域:图像分类、目标检测、图像分割等
专门用于处理序列数据的神经网络。与前馈神经网络不同,RNN 具有"记忆"功能,能够记住之前输入的信息。
结构特点:
数学表达式:
$$h_t = g(W \cdot x_t + U \cdot h_{t-1} + b)$$
其中 $h_t$ 是时刻 $t$ 的隐藏状态,$h_{t-1}$ 是上一时刻的隐藏状态。
应用领域:
LSTM 是 RNN 的一种变体,能够解决标准 RNN 的长程依赖问题和梯度消失问题。
核心组件:
近年来最流行的神经网络架构,完全基于注意力机制(Attention Mechanism),摒弃了循环结构。
主要特点:
神经网络是深度学习的核心组件,其基本原理可以概括为:
理解这些基本概念是深入学习深度学习的基础。随着技术的发展,神经网络在计算机视觉、自然语言处理、语音识别等众多领域取得了突破性进展,已成为人工智能时代的核心技术之一。
本文档根据课堂笔记整理,内容涵盖神经网络与深度学习的基础概念、训练原理和常见网络类型。