目录
4.4 多层前馈网络(Multilayer Feedforward Neural Network)
五、支持向量机(Support Vector Machine,SVM)
四、神经网络
4.1 什么是神经网络 ?
神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。
4.2“简单单元”神经元模型
神经元是神经网络中的基本构建块。在“简单单元”神经元模型中,每个神经元接收来自其它神经元或外部输入的信息,并进行处理后输出一个结果。
以下为神经元模型的几个重要组成部分:
- 输入:神经元接收来自上一层神经元或外部输入的信号。
- 权重:每个输入信号都与一个权重相关联,权重决定了每个输入对神经元的影响程度。权重可以调整,通过这种方式神经网络学习适应不同的任务和数据模式。
- 激活函数:神经元接收加权输入后,将其作为输入传递给激活函数。激活函数决定神经元是否应该被激活,这种非线性映射是神经网络能够学习非线性函数的关键。
- 输出:激活函数处理后的结果成为神经元的输出,可能会传递到网络中的下一层神经元或作为最终的网络输出。
4.3 神经元的"激活函数"
理想的激活函数是阶跃函数,0表示抑制神经元而1表示激活神经元
常见激活函数:
- Sigmoid函数:
特点:将输入压缩到 (0, 1) 的范围内,输出是一个平滑的曲线。在早期的神经网络中广泛使用,但现在由于存在梯度消失和输出非零均值的问题,使用已经有所减少。
- ReLU函数
特点:在输入为正时,输出与输入相等;在输入为负时,输出为零。简单高效,能够加速训练过程。但可能会导致“神经元死亡”问题(某些神经元在训练过程中永远不会被激活)。
- Leaky ReLU函数
特点:解决了ReLU可能出现的神经元死亡问题,对负值有一个小的斜率,使得即使是负数输入,也能有一个非零的梯度。
4.4 多层前馈网络(Multilayer Feedforward Neural Network)
多层前馈神经网络是一种经典的神经网络结构,通常包括多个隐藏层。这种网络结构是指数据流只朝一个方向传播,不形成环路或循环连接。
4.4.1 结构
1.输入层:接收外部输入数据,每个输入节点对应一个输入特征。
2.隐藏层:位于输入层和输出层之间,负责处理输入数据并提取特征。隐藏层可以有一个或多个,每个隐藏层包含若干个神经元(或称节点)。
3.输出层:生成最终输出,如分类结果或预测值。输出层的神经元数量通常取决于任务的需求。
4.4.2 工作原理
1.输入数据:数据从输入层进入网络,每个特征对应一个输入节点。
2.权重和偏置:每个连接(即每个神经元之间的连接)都有一个权重,初始时这些权重是随机分配的。每个神经元还有一个偏置值。
3.激活函数:输入数据经过权重和偏置的线性变换后,通过激活函数(如Sigmoid、ReLU等)处理,引入非线性因素,使得神经网络能够学习复杂的模式。
3.前向传播:数据从输入层经过隐藏层逐层传递到输出层,层与层之间通过激活函数处理后的值传递。
4.损失函数:输出层的输出与真实值进行比较,通过损失函数(如均方误差)计算误差。
5.反向传播:根据误差,通过反向传播算法(Back Propagation, BP)调整权重和偏置,以减少误差。这个过程通过梯度下降等优化算法实现。
五、支持向量机(Support Vector Machine,SVM)
5.1 定义和历史
支持向量机是一种由Vladimir Vapnik等人提出的监督学习算法,最初用于解决分类问题,后来也扩展到回归问题。其主要思想是在特征空间中找到一个最优的超平面,用于对数据进行分类或回归。
5.2 数学原理
5.2.1 线性可分
在理想情况下,如果训练数据可以被一个超平面完全分开,即线性可分,那么支持向量机的任务就是找到一个最大间隔超平面,来实现分类。
- 数学形式(求解凸二次优化问题)
- 对偶形式
通过拉格朗日对偶性质,可以将原始优化问题转化为对偶问题。
对偶形式的目标是最大化关于拉格朗日乘子的函数
其中约束条件为:
解出后,求出
和b即可得
5.2.2 非线性问题
线性SVM只能处理线性可分的情况,为了处理非线性问题,引入了核函数的概念。
核函数能够将输入特征映射到更高维的空间中,使得原本线性不可分的问题在新的空间中变得线性可分。
常见的核函数包括:
- 线性核(Linear Kernel):
,对应于原始的线性支持向量机。
- 多项式核(Polynomial Kernel):
- 径向基函数核(RBF Kernel):
通过使用核函数,可以将对偶问题中的内积 替换为核函数
,从而将线性SVM扩展到非线性情况,提高了模型的适应能力和灵活性。