机器学习——第五章

embedded/2024/9/23 4:42:51/

目录

  • 1 神经元模型
  • 2 感知机与多层网络
  • 3 误差逆传播算法(BP)
  • 4 全局最小与局部极小
  • 5 其他常见神经网络
    • 5.1 RBF网络
    • 5.2 ART网络
    • 5.3 SOM网络
    • 5.4 级联相关网络
    • 5.5 Elman网络
    • 5.6 Boltzmann机
  • 6 深度学习

1 神经元模型

神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。
神经元模型是神经网络中最基本的成分。
M-P神经元模型如下:
在这个模型中,神经元接收到来自几个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的值进行比较,然后通过激活函数处理以产生神经元的输出
在这里插入图片描述
理想中的激活函数是阶跃函数,将输入值映射为输出值0或1。由于阶跃函数的不连续,不光滑等不好的性质,实际用Sigmoid函数作为激活函数,Sigmoid函数将较大范围内变化的输入值映射到(0,1)输出值范围内。
在这里插入图片描述
多个神经元按照层次来连接起来,得到了神经网络。

2 感知机与多层网络

感知机由两层神经元组成,输入层接受外界输入信号后传递给输出层,输出层是M-P神经元(阈值逻辑单元)。
感知机能实现逻辑与或非运算,给定训练数据集,权重 w i w_i wi以及阈值 θ \theta θ可通过学习得到。阈值 θ \theta θ可看作一个固定输入为-1.0的哑结点所对应的连接权重 w n + 1 w_{n+1} wn+1。感知机的学习规则,对训练样例(x,y),若当前感知机的输出为 y ^ \widehat{y} y ,则感知机权重调整为:
w i ← w i + △ w i w_i\gets w_i+\triangle wi wiwi+wi
△ w i = η ( y − y ^ ) x i \triangle wi=\eta (y-\widehat{y})x_i wi=η(yy )xi
其中 η \eta η称为学习率。
注意:感知机只有输出层神经元进行激活函数处理,只拥有一层功能神经元,学习能力有限。
若两类模式是线性可分的,即为存在一个线性超平面将他们分开,感知机的学习过程一定会收敛而求得适当的权向量w,否则感知机学习过程将会发生振荡,w难以稳定,不能求得合适解。

解决非线性可分问题,需要使用多层功能神经元。

多层前馈神经网络:每层神经元与下一层神经元全互联,神经元之间不存在同层连接和跨层连接。输入层神经元仅接受输入,不进行函数处理,隐含层和输出层包含功能神经元。
在这里插入图片描述

3 误差逆传播算法(BP)

可适用于多种类型的神经网络。一般BP网络指BP算法训练的多层前馈神经网络。

在这里插入图片描述
如上图中的网络需要确定 ( d + l + 1 ) q + l (d+l+1)q+l (d+l+1)q+l个参数,其中:输入层到隐层的 d ∗ q d*q dq个权值、隐层到输出层的 q ∗ l q*l ql个权值、 q q q个隐层神经元的值、1个输出层神经元的阈值。
对训练例子 ( x k , y k ) (x_k,y_k) (xk,yk),假定神经网络的输出为 y ^ k \widehat{y}_k y k,即 y ^ j k = f ( β j − θ j ) \widehat{y}_j^k=f(\beta_j-\theta_j) y jk=f(βjθj)
则网络在 ( x k , y k ) (x_k,y_k) (xk,yk)上的均方误差为
E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) 2 E_k=\frac{1}{2}\sum_{j=1}^{l}(\widehat{y}_j^k-y_j^k)^2 Ek=21j=1l(y jkyjk)2

BP是一个迭代学习算法,再迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计。参数v的更新估计式为:
v ← v + △ v v\gets v+ \triangle v vv+v.
BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整。
学习率 η \eta η控制算法每一轮迭代的更新步长,太大容易振荡,太小收敛过慢。BP算法工作流程如下:先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差(第4-5行),再将误差逆向传播至隐层神经元(第6行),最后根据隐层神经元的误差来对连接权和值进行调整(第7行)该迭代过程循环进行,直到达到某些停止条件为止。
在这里插入图片描述
如果推导出基于累积误差最小化的更新规则,就可得到累积误差逆传播算法。
标准BP算法每次更新只针对单个样例,对不同样例进行更新的效果可能出现抵消现象。
BP神经网络经常过拟合,有两种策略可以缓解BP网络的过拟合
1.早停:数据分为训练集和验证集,若训练集误差降低但验证集误差升高,停止训练,同时返回具有最小验证集误差的连接权和阈值。
2.正则化:在误差目标函数中增加一个用于描述网络复杂度的部分。

4 全局最小与局部极小

用E表示神经网络在训练集上的误差,它是关于连接权w和阈值 θ \theta θ的函数,神经网络的训练过程可看作一个参数寻优过程,在参数空间中,寻找一组最优参数使E最小。

"局部极小"和 “全局最小”.。对 w ∗ w^{*} w θ ∗ \theta^{*} θ, 若存在 ϵ > 0 \epsilon>0 ϵ>0 使得

∀ ( w ; θ ) ∈ { ( w ; θ ) ∣ ∥ ( w ; θ ) − ( w ∗ ; θ ∗ ) ∥ ⩽ ϵ } \forall(\boldsymbol{w} ; \theta) \in\left\{(\boldsymbol{w} ; \theta) \mid\left\|(\boldsymbol{w} ; \theta)-\left(\boldsymbol{w}^{*} ; \theta^{*}\right)\right\| \leqslant \epsilon\right\} (w;θ){(w;θ)(w;θ)(w;θ)ϵ},

都有 E ( w ; θ ) ⩾ E ( w ∗ ; θ ∗ ) E(\boldsymbol{w} ; \theta) \geqslant E\left(\boldsymbol{w}^{*} ; \theta^{*}\right) E(w;θ)E(w;θ) 成立, 则 ( w ∗ ; θ ∗ ) \left(\boldsymbol{w}^{*} ; \theta^{*}\right) (w;θ) 为局部极小解;
若对参数空间中的任意 ( w ; θ ) (\boldsymbol{w} ; \theta) (w;θ) 都有 E ( w ; θ ) ⩾ E ( w ∗ , θ ∗ ) E(\boldsymbol{w} ; \theta) \geqslant E\left(\boldsymbol{w}^{*}, \theta^{*}\right) E(w;θ)E(w,θ) , 则 ( w ∗ ; θ ∗ ) \left(\boldsymbol{w}^{*} ; \theta^{*}\right) (w;θ) 为全局最小解。

参数空间内梯度为零的点,只要其误差函数值小于邻点的误差函数值,就是局部极小点;可能存在多个局部极小值,但却只会有一个全局最小值。

基于梯度的搜索是使用最广泛的参数寻优方法。从某些初始解出发,迭代寻找最优参数值,每次迭代,先计算误差函数在当前点梯度,然后根据梯度确定搜索方向。
在这里插入图片描述
如何跳出局部极小,而找到全局极小,有以下策略:
1.以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数。
2.使用模拟退火技术,模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于找到全局极小。
3.使用随机梯度下降。

遗传算法也常用来训练神经网络来更好逼近全局最小。

5 其他常见神经网络

5.1 RBF网络

一种单隐层前馈神经网络,使用径向基函数作为隐层神经元激活函数,输出层是对隐层神经元输出的线性组合。
该网络可表示为:
φ ( x ) = ∑ i = 1 q w i ρ ( x , c i ) \varphi(x)=\sum_{i=1}^{q}w_i\rho(x,c_i) φ(x)=i=1qwiρ(x,ci)
其中 q q q是隐层神经元个数, c i 和 w i c_i和w_i ciwi分别是第i个神经元对应的中心和权重, ρ ( x , c i ) \rho(x,c_i) ρ(x,ci)是径向基函数,定义为样本x到数据中心 c i c_i ci之间欧氏距离的单调函数。

训练步骤:
1.确定神经元中心 c i c_i ci。方法有随机采样,聚类等。
2.利用BP算法等确定参数 w i 和 β i w_i和\beta_i wiβi

5.2 ART网络

竞争型学习:神经网络中一种常用的无监督学习策略,网络中输出神经元相互竞争,每一时刻只有一个竞争获胜的神经元被激活,其他神经元的状态被抑制。
ART网络是竞争型学习的重要代表,由比较层,识别层,识别阈值和重置模块构成。比较层负责接收输入样本,并将其传递给识别层神经元.识别层每个神经元对应一个模式类,神经元数目可在训练过程中动态增长以增加新的模式类。在接收到比较层的输入信号后,识别层神经元之间相互竞争产生获胜神经元。

对于ART网络的性能,识别阈值影响很大,识别阈值过高,输入样本将会分为多且精细的模式类,识别阈值较低,会产生少且粗略的模式类。

ART网络优点:可进行增量学习或在线学习。

5.3 SOM网络

SOM网络是一种竞争学习型的无监督神经网络,将高维输入数据映射到低维空间,同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层的邻近神经元。
在这里插入图片描述

训练过程:接受到训练样本,每个输出层神经元计算该样本与自身携带的权向量之间的距离,距离最近的神经元成为竞争获胜者(最佳匹配单元),最佳匹配单元及其邻近神经元的权向量被调整,使权向量与当前输入样本的距离缩小,上述过程不断迭代直到收敛。

5.4 级联相关网络

结构自适应网络将网络结构当作学习目标之一,希望在训练过程中找到最符合数据特点的网络结构,级联相关网络是结构自适应网络的重要代表。

  • 两个主要成分
    级联:指建立层次连接的层级结构。
    相关:指通过最大化新神经元的输出与网络误差之间的相关性来训练相关的参数。

优点:相对于一般的前馈神经网络,级联相关网络无需设置网络层数,隐层神经元数目,训练速度较快。
缺点:数据较小时容易过拟合。

5.5 Elman网络

递归神经网络允许网络中出现环形结构,从而可让一些神经元的输出反馈回来作为输入信号。
Elman网络是常用的递归神经网络之一结构如下图:
在这里插入图片描述
训练常通过推广的BP算法进行。

5.6 Boltzmann机

基于能量的模型:该模型为网络状态定义一个能量,能量最小化时网络达到理想状态,网络的训练就是在最小化这个能量函数。
Boltzmann机就是一种基于能量的模型,神经元分为:显层(用于表示数据输入和输出)与隐层(理解为数据的内在表达),神经元都是布尔型。
在这里插入图片描述
常用CD算法进行训练。

6 深度学习

典型深度学习模型是很深层的神经网络,增加隐层的数目比增加隐层神经元的数目更有效。然而,多隐层神经网络难以直接用经典算法进行训练,因为误差在多隐层内逆传播,会因为发散而不能收敛到稳定状态。

无监督逐层训练是多隐层网络训练的有效手段,思想:
先进行预训练(每次训练一层隐结点,将上一层隐结点的输出作为输入,本层隐结点的输出作为下一层隐结点的输入),然后对整个网络进行微调训练。预训练+微调节省了训练开销。

另一种策略权共享也可以节省训练开销,让一组神经元使用相同的连接权,这个策略在CNN中发挥了重要作用。

深度学习即通过多层处理,将初始的低层特征表示转化为高层特征表示后,用简单模型完成复杂的分类等学习任务。


http://www.ppmy.cn/embedded/92850.html

相关文章

Golang——逃逸分析

逃逸分析是指由编译器决定内存分配到堆上还是栈上。当我们在函数中申请了一个新的对象: 如果分配到栈中,则函数执行结束后可自动将内存回收。如果分配到堆中,则函数执行结束后,不会自动将内存释放掉,需要GC在进行清除…

PHP简单零售收银台系统源码小程序

🛒轻松上手!简单零售收银台系统,让经营更省心💸 🚀 开篇:告别繁琐,拥抱高效收银新时代 嘿,小店主们!👋 还在为每天繁琐的收银工作头疼吗?是时候…

贵阳高新区:加强数字人才培育 引领数字经济未来

在近期举行的贵阳高新区(贵州科学城)2024年科技创新与成果交流夏季活动中,来自清华大学2022级大数据(贵州)全日制工程硕士专业的学生们展示了他们在城市公交数据挖掘、通勤线路优化、场景数据的稳定训练以及营运车辆风…

如何在Java、C、Ruby语言中使用Newscatcher API

Newscatcher 世界实时新闻聚合API 一款强大的数据服务工具,它通过先进的网络爬虫技术,实时从全球超过70,000个新闻源聚合新闻内容。这个API能够提供全面、多角度的新闻报道,包括但不限于标题、作者、发布日期、全文内容以及媒体资源链接。它使…

centos 安装nacos

nacos官网下载安装包(安装nacos之前,先下载安装好jdk) 概览 | Nacos 官网 2.下载好nacos压缩包之后,上传到linux目录中(在/opt/目录下建好一个文件夹) 将nacos解压 uzip nacos-server-1.4.7.zip 进入naco…

GoLang 安装

golang学习笔记 goland 安装 To use Go programming language in Visual Studio Code (VSCode), you can follow these steps: 1. Install Go: Download and install the latest version of Go from the official Go website (https://golang.org/dl/). 2. Install VSCode:…

av.codec.codec.UnknownCodecError: libx264

遇到 av.codec.codec.UnknownCodecError: libx264 这个错误通常意味着 PyAV 库尝试使用 libx264 编码器来编码或解码视频,但该编码器在你的系统中不可用。 libx264 是一个广泛使用的 H.264 视频编码库。如果你正在使用 PyAV 来处理视频,特别是当你尝试读…

《Redis设计与实现》读书笔记-复制

目录 1.概述 2.复制命令 3.部分重同步过程 4.部分重同步实现 4.1复制偏移量 4.2复制积压缓冲区 4.3服务器运行ID 5.总结 1.概述 在redis 通过向从服务器发送命令:SLAVE OF,让从服务器复制主服务器,成为复制。 复制的目的 让从服务器…