文章目录
深度学习基础
深度学习(Deep Learning)是包含多层神经元的结构,与人脑神经元的结构类似。
- 深度学习是Seq2Seq的计算,从输入到输出;
- 深度学习是一个有向计算图,图的节点表示计算过程;
人工神经元模拟了生物神经元的信息处理机制,是神经网络的基本组成单元。
- 基本结构(感知机模型)
- 输入(Inputs) :对应生物神经元的树突输入,通常为特征向量或前一层神经元的输出。
- 权重(Weights) :对应突触连接强度,决定输入信号的重要性。
- 偏置(Bias) :调整神经元的激活阈值,增加模型的灵活性。
- 激活函数(Activation Function) :对应生物神经元的阈值特性,引入非线性变换(如ReLU、Sigmoid、Tanh)。
- 输出(Output) :对应轴突传递的信号,作为下一层神经元的输入。
网络结构
人工神经网络主要由大量的神经元以及它们之间的有向连接构成。因此考虑三方面:
- 神经元的激活规则:主要是指神经元输入到输出之间的映射关系,一般为非线性函数。
- 网络的拓扑结构:不同神经元之间的连接关系。
- 学习算法:通过训练数据来学习神经网络的参数
在前馈神经网络中,各神经元分别属于不同的层。整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示。
1. 前馈神经网络 (Feed-Forward Neural Network)
- 结构特点 :信息单向流动,从输入层经过隐藏层到输出层,无反馈连接。神经元仅与前一层神经元相连。
- 典型代表 :多层感知机(MLP)、卷积神经网络(CNN)。
- 工作原理 :输入数据通过各层神经元的加权求和与激活函数处理,最终在输出层得到结果。训练阶段采用误差反向传播(BP)算法调整权重。
- 应用场景 :适合处理静态数据,如图像分类、手写数字识别、房价预测等模式识别和函数逼近任务。
- 特点 :结构简单、易于理解和实现,但不具备记忆能力,无法处理序列数据。
2. 反馈神经网络 (Feedback Neural Network)
- 结构特点 :存在反馈连接,神经元的输出可反馈到自身或前面的层,形成循环回路。
- 典型代表 :循环神经网络(RNN)、霍普菲尔德网络(Hopfield Network)、玻尔兹曼机(Boltzmann Machine)。
- 工作原理 :信息可循环传播,网络状态随时间动态变化。神经元具有记忆功能,输出不仅取决于当前输入,还与历史状态有关。训练常采用Hebb学习规则。
- 应用场景 :适合处理时间序列数据,如文本生成、语音识别、视频分析等。
- 特点 :具有动态性和记忆性,但需考虑收敛性问题,训练复杂度较高。
3. 图网络 (Graph Network)
- 结构特点 :定义在图结构上,节点间连接可双向或无向。每个节点可接收相邻节点或自身的信息。
- 典型代表 :图卷积网络(GCN)、图注意力网络(GAT)。
- 工作原理 :通过聚合邻居节点信息更新自身状态,能够捕捉图结构中的依赖关系。
- 应用场景 :适合处理具有图结构的数据,如社交网络分析、分子结构预测、推荐系统等。
- 特点 :能有效建模复杂关系,但结构和计算复杂度较高。
核心区别总结
维度 | 前馈神经网络 | 反馈神经网络 | 图网络 |
---|---|---|---|
信息流向 | 单向流动 | 循环流动 | 基于图结构的多向流动 |
记忆能力 | 无 | 有 | 依赖图结构 |
典型应用 | 静态数据处理 | 时间序列数据 | 图结构数据 |
训练方法 | BP算法 | Hebb规则等 | 图卷积、图注意力等 |
这些网络结构各有优势,在实际应用中,常根据数据特性和任务需求选择合适的网络架构,或结合多种结构形成更复杂的模型
激活函数
激活函数是神经网络不可或缺的组件,通过引入非线性特性赋予网络处理复杂任务的能力
- 引入非线性 :使神经网络能够学习复杂的数据模式和非线性关系
- 加速学习过程 :影响梯度传播效率,进而影响模型收敛速度
- 提高表达能力 :通过非线性变换,帮助网络逐层提取高级特征
- 控制输出范围 :将输出限制在特定范围内(如概率任务需输出0-1之间的值)
机器学习和深度学习
传统机器学习(浅层学习) 和深度学习(深层学习) 最根本的区别:特征处理方式的不同。
机器学习: :“特征学习”和“模型学习”是分离的。人类专家负责前半部分的“特征学习”,模型只负责后半部分的“模型学习”。模型的性能高度依赖于人工特征的好坏。
深度学习: :“特征学习”和“模型学习”是一体化的、端到端的。我们只需要输入原始数据和最终目标,模型会自动学习从原始数据到目标结果的最佳映射关系,其中包括了最适合当前任务的特征表示。
方面 | 传统机器学习(浅层学习) | 深度学习(深层学习) |
---|---|---|
特征来源 | 人工设计(依赖专家知识) | 自动学习(模型从数据中自行获得) |
过程特点 | 特征提取与模型预测分离 | 端到端学习,特征与模型一体化 |
所需数据 | 相对较少,但对特征工程要求高 | 需要大量数据来学习有效的特征表示 |
计算资源 | 相对较少 | 巨大,需要强大的GPU进行训练 |
可解释性 | 特征含义明确,可解释性较强 | 特征高度抽象,是“黑箱”,可解释性差 |
深度学习非线性问题
在深度学习中数据和模型输出之间的关系无法用简单的直线或超平面来描述,而是复杂的曲线、曲面或更复杂的结构。
深度学习模型,特别是神经网络,解决非线性问题的关键在于两个核心要素:多层结构和激活函数。而激活函数是引入非线性的根本所在。
如果没有激活函数,无论神经网络有多少层,它最终都等价于一个线性模型。这是因为多个线性变换(y = Wx + b
)的叠加仍然是线性变换(y = W3(W2(W1x + b1) + b2) + b3
可以合并为一个大的 y = W'x + b'
)。
激活函数的作用就是在每一层线性计算之后,引入一个非线性的变换,从而使得神经网络能够拟合任何复杂的非线性函数。
常见的激活函数:
-
(Logistic)Sigmoid:
σ(x) = 1 / (1 + e^(-x))
- 将输入压缩到(0, 1)之间,常用于二分类问题的输出层。
- 缺点:容易导致梯度消失(当输入很大或很小时,梯度接近0,无法有效更新网络权重)。
-
Tanh(双曲正切函数):
tanh(x) = (e^x - e^(-x)) / (e^x + e^(-x))
- 将输入压缩到(-1, 1)之间,输出以0为中心,通常比Sigmoid表现更好。
- 但仍然存在一定的梯度消失问题。
-
ReLU(修正线性单元):
f(x) = max(0, x)
- 这是目前最常用、最重要的激活函数。
- 优点:计算非常简单高效,极大地缓解了梯度消失问题(在正区间梯度恒为1),加速了模型的收敛。
- 缺点:Dead ReLU问题(当输入为负数时,梯度为0,神经元可能永远无法被激活)。后来有了一些变体如 Leaky ReLU 和 Parametric ReLU 来解决这个问题。
-
ELU函数 (指数线性单元)
-
函数: f(x)={xif x>0γ(exp(x)−1)if x≤0f(x)={x**γ(exp(x)−1)if x>0if x≤0 (γ是一个超参数,通常设为1)
-
导数: f′(x)={1if x>0f(x)+γif x≤0f′(x)={1f(x)+γif x>0if x≤0 (表中的形式是其等价写法)
-
特点与解释:
- 功能:ReLU的一个改进版本。在正区间与ReLU完全相同,但在负区间使用一个指数曲线平滑地过渡,而不是硬生生地截断为0。
- 优点:
- 缓解死区问题:在负区间也有非零的输出和梯度,减少了神经元“死亡”的可能性。
- 输出更接近以0为中心,有助于加速训练。
- 缺点:由于引入了指数运算,计算量比ReLU大。
-
-
SoftPlus函数
-
函数: f(x)=ln(1+ex)f(x)=ln(1+e**x)
-
导数: f′(x)=11+e−xf′(x)=1+e−x1 (这恰好就是Sigmoid函数)
-
特点与解释:
- 功能:可以看作是ReLU的平滑、可微的版本。它的形状非常接近ReLU,但在原点附近是平滑的曲线,而不是ReLU的尖锐转折点。
- 优点:处处可微,数学性质非常好。
- 缺点:计算量远大于ReLU(涉及对数和指数运算),并且由于其导数就是Sigmoid,它同样存在梯度消失的倾向(虽然比Sigmoid轻一些)。因此在实际应用中远不如ReLU及其变体(如Leaky ReLU, ELU)流行。
-