神经网络与深度学习基础教程笔记(附案例讲解)
引言
神经网络和深度学习是人工智能领域中最重要的技术之一,它们在图像识别、自然语言处理、语音识别等领域取得了巨大的成功。本教程将从基础概念出发,逐步深入到高级主题,帮助你全面理解并掌握这些强大的工具。本文是神经网络与深度学习笔记,要想深入了解相关理论和算法知识请参考神经网络从入门到精通、matlab从入门到精通教程、matlab2020从入门到精通、ACM入门教程资料、MATLAB语言常用算法程序集、matlab通俗讲讲“小波变换”、精通MATLAB最优化计算源码、MATLAB小波分析高级技术、基于MATLAB的系统分析与设计-小波分析、小波分析基础、时间序列的小波分析。
1. 神经网络基础
什么是神经网络?
神经网络是一种模拟人脑神经元结构的计算模型。它由多个节点(或称为神经元)组成,这些节点通过连接权重相互连接。每个节点接收输入信号,经过处理后传递给下一层节点。神经网络通过调整连接权重来学习数据中的模式。
感知机
感知机是最简单的神经网络形式,由 Frank Rosenblatt 在 1957 年提出。它只有一个输入层和一个输出层,没有隐藏层。感知机用于解决二分类问题。
数学表示:
y = f ( ∑ i = 1 n w i x i + b ) y = f(\sum_{i=1}^{n} w_i x_i + b) y=f(∑i=1nwixi+b)
其中,( y ) 是输出,( w_i ) 是权重,( x_i ) 是输入,( b ) 是偏置项,( f ) 是激活函数(通常是阶跃函数)。
训练过程:
- 初始化权重 ( w_i ) 和偏置 ( b )。
- 对于每个训练样本,计算输出 ( y )。
- 如果预测错误,更新权重和偏置:
w i = w i + η ( t − y ) x i w_i = w_i + \eta (t - y) x_i wi=wi+η(t−y)xi
b = b + η ( t − y ) b = b + \eta (t - y) b=b+η(t−y)
其中,( \eta ) 是学习率,( t ) 是目标值。
多层感知机(MLP)
多层感知机(MLP)是包含一个或多个隐藏层的前馈神经网络。每个隐藏层可以有多个神经元,每个神经元都使用非线性激活函数(如 Sigmoid 或 ReLU)。
结构:
- 输入层:接收原始数据。
- 隐藏层:对数据进行特征提取。
- 输出层:产生最终结果。
数学表示:
假设有一个 MLP,输入层有 ( n ) 个节点,第一个隐藏层有 ( h_1 ) 个节点,第二个隐藏层有 ( h_2 ) 个节点,输出层有 ( m ) 个节点。
对于第 ( l ) 层的第 ( j ) 个节点:
z j ( l ) = ∑ i = 1 n l w i j ( l ) a i ( l − 1 ) + b j ( l ) z_j^{(l)} = \sum_{i=1}^{n_l} w_{ij}^{(l)} a_i^{(l-1)} + b_j^{(l)} zj(l)=∑i=1nlwij(l)ai(l−1)+bj(l)
a j ( l ) = f ( z j ( l ) ) a_j^{(l)} = f(z_j^{(l)}) aj(l)=f(zj(l))
其中,( z_j^{(l)} ) 是加权输入,( a_j^{(l)} ) 是激活值,( w_{ij}^{(l)} ) 是从第 ( l-1 ) 层的第 ( i ) 个节点到第 ( l ) 层的第 ( j ) 个节点的权重,( b_j^{(l)} ) 是偏置项,( f ) 是激活函数。
2. 激活函数
激活函数为神经网络引入非线性,使得网络能够学习复杂的模式。常见的激活函数包括:
-
Sigmoid 函数:
f ( x ) = 1 1 + e − x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+e−x1- 输出范围:(0, 1)
- 缺点:容易导致梯度消失。
-
Tanh 函数:
f ( x ) = tanh ( x ) = e x − e − x e x + e − x f(x) = \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} f(x)=tanh(x)=ex+e−xex−e−x- 输出范围:(-1, 1)
- 缺点:同样容易导致梯度消失。
-
ReLU 函数:
f ( x ) = max ( 0 , x ) f(x) = \max(0, x) f(x)=max(0,x)- 输出范围:[0, +∞)
- 优点:计算简单,有效缓解梯度消失问题。
-
Leaky ReLU 函数:
f ( x ) = { x if x > 0 α x if x ≤ 0 f(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha x & \text{if } x \leq 0 \end{cases} f(x)={ xαxif x>0if x≤0- 输出范围:(-∞, +∞)
- 优点:解决了 ReLU 的“死神经元”问题。
-
Softmax 函数:
softmax ( z ) i = e z i ∑ j = 1 K e z j \text{softmax}(z)_i = \frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}} softmax(z)i=∑j=1Kezjezi- 输出范围:(0, 1)
- 通常用于多分类任务的输出层,确保输出的概率之和为 1。
3. 损失函数
损失函数衡量模型预测值与真实值之间的差异。常见的损失函数包括:
-
均方误差(MSE):
L = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 L = \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2 L=N1∑i=1N(yi−y^