当前位置: 首页 > news >正文

【人工智能 | 机器学习】神经网络

文章目录

  • 1. 神经元模型
  • 2. 感知机与多层网络
  • 3. 误差逆传播算法(BP)
  • 4. 全局最小与局部极小
  • 5. 其他常见神经网络
  • 6. 深度学习


1. 神经元模型

神经网络:具有适应性的 简单单元(神经元)组成的广泛并行互连的网络,其组织能够模拟生物神经系统对真实世界物体作出的交互反应

M-P神经元模型:每个神经元与其他神经元相连。当神经元接收到来自 n 个其他神经元传递过来的 输入信号 ,信号通过 带权重的连接 进行传递,神经元接收到的总输入值与神经元的 阈值 进行比较,通过 激活函数 处理神经元输出
在这里插入图片描述

a 为理想激活函数。将输入值映射为输出值 0 或 1,0 对应神经元抑制,1 对应兴奋。
阶路函数不连续、不光滑,因此常用 Sigmoid 函数 作为激活函数。
b 为典型的 Sigmoid 函数,把可能在较大范围内变化的输入值挤压到(0,1)输出范围内,因此也称为 挤压函数
将许多个这样的神经元按一定层次结构连接,得到神经网络
在这里插入图片描述


2. 感知机与多层网络

感知机 (Perceptron):也称 阈值逻辑单元 (threshold logic unit)。由两层神经元组成。输入层接收外界输入信号后传递给输出层,输出层是 M-P神经元
在这里插入图片描述在这里插入图片描述

x1,x2 可能是上一层神经元传递过来的,也可能是从数据集中获取的。取值范围为 0到1。由 Sigmoid 函数可知
y = 1 ← Σ i w i x i − θ ≥ 0 y = 0 ← Σ i w i x i − θ ≤ 0 y = 1 \leftarrow \Sigma_iw_ix_i-\theta \geq 0 \newline y = 0 \leftarrow \Sigma_iw_ix_i-\theta \leq 0 y=1Σiwixiθ0y=0Σiwixiθ0

在这里插入图片描述

线性可分问题:
在这里插入图片描述
在这里插入图片描述
非线性可分问题:使用多层功能神经元,中间层称为隐层(隐含层)。隐含层与输出层神经元都是拥有激活函数的功能神经元

简单的两层神经元构成的感知机多层前馈神经网络 (multi-layer feedforward neural networks)。常见神经网络的层级结构。每层神经元与下一层神经元全互连,同层级之间神经元不存在连接,也不跨层连接
在这里插入图片描述

输出层神经元:接收外界输入
隐层与输出层神经元:处理加工信号
输出层神经元:输出结果
神经网络的学习过程,就是根据训练数据调整神经元之间的 连接权(connection weight),经及每个功能神经元的 阈值


3. 误差逆传播算法(BP)

多层网络的学习能力比单层感知机强。要训练多层网络,需要更强大的学习算法。

误差逆传播算法(error BackPropagation,BP):用于多层前馈神经网络训练(BP网络通常指),也可用于例如递归神经网络。

数学流程
在这里插入图片描述在这里插入图片描述在这里插入图片描述

E k E_k Ek 要剩 1 2 \frac{1}{2} 21 是为了后面方便求导
感知机学习算法的权重 Δ w i \Delta w_i Δwi 与 BP算法不同。
权重更新的方向损失函数梯度的负方向,可以 最小化损失。在多层神经网络中,误差的传播需要使用 链式法则 来计算每个权重对最终输出误差的贡献。这涉及到对损失函数进行求导,得到每个权重的梯度。通过使用损失函数的梯度,BP算法可以更好地 泛化到未见过的数据 上,因为它 考虑了整个训练集的误差,而不仅仅是单个样本的误差。在 多层网络中,误差不是线性可分的,非线性激活函数的使用使得直接使用误差更新权重不适用。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

通常学习率设为 0.1

BP 算法工作流程
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

累积BP算法 与 标准BP算法:标准 BP 针对单个样例 E k E_k Ek 推导。累积 BP 先读取整个训练集一遍再对参数更新。
累积 BP 更新频率低,但很多任务累积误差达到一定程度后再进步会很慢。标准 BP 更新频率高,但不同样例 E k E_k Ek之间可能出现更新效果相互抵消的情况

万能近似定理(universal approximation theorem) (Hornik et al., 1989;Cybenko, 1989) 证明,只需要一个包含足够多神经元隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数。但是隐层的个数未明确得出,通常只能试错调整

由于 BP 算法太过强大,因此经常导致过拟合。训练误差持续降低,测试误差却可能上升。

通常用 早停正则化 缓解过拟合
早停(early stopping):将数据分成 训练集 和 验证集。用验证集估计训练。若训练集误差降低但验证集误差升高,则停止训练,返回最小验证集误差的连接权的阈值
正则化(regularization):
在这里插入图片描述在这里插入图片描述


4. 全局最小与局部极小

E E E 表示神经网络在训练集上的误差,是关于连接权 w w w 和 阈值 θ \theta θ 的函数。神经网络的训练可看作参数寻优过程。

两种最优:局部极小,全局最小
在这里插入图片描述我们要找的是全局最小。基于梯度的搜索,从某些初始解出发,迭代找局部极小。每次迭代都沿负梯度方向搜索找最优解。若误差函数只有一个局部极小,则局部极小为全局最小;若误差函数有多个局部极小,不能保证找到的解是全局最小。
通常用以下策略试图找到全局最小:

  1. 多组不同参数值初始化多个神经网络,取误差最小的解作为最终参数,从中进行选择
  2. 模拟退火。以一定的概率接受比当前解更差的 “次优解”。站在初始条件找另一组解。若新解比当前解更优,选择新解。若新解比当前解更差,温度高时,以一定概率接受更差的解。随时间推移,搜索范围变窄,减少接受更差解的概率。最终找到全局最优更近似最优解。模拟退火找到的不一定是全局最优,只是多次尝试增加了找到更优解的概率
  3. 随机梯度下降。计算梯度时加入随机因素,即使陷入局部极小点,计算出的梯度仍可能不为零,有机会跳出局部极小继续搜索

上述方式理论上尚缺乏保障


5. 其他常见神经网络

神经网络模型算法繁多,以下为常见的几种

作为了解,原文并未解释太多

  1. 径向基函数网络,RBF
  2. 竞争型学习,ART
  3. 自组织映射,SOM
  4. 级联相差网络
  5. Elman 网络
  6. Boltzmann 机

6. 深度学习

理论上,参数越多,模型复杂度越高,容量越大,能完成更复杂的学习任务。但复杂模型的训练效率低,容易过拟合

深度学习,用大量数据降低过拟合的风险,云计算计算能力的大幅提高缓解训练低效

典型深度学习模型:增加隐层数目。增加隐层数目比增加隐层神经元数目更有效。因为神经元连接权、阈值等参数会更多,还会增加激活函数嵌套的层数。但是多隐层神经网络难以直接用经典算法进行训练。因为误差在多隐层逆传播时,往往会发散,而不能收敛到稳定状态

无监督逐层训练(unsupervised layer-wise training):预训练:每训练一层隐结点,将上一层隐结点的输出作为输入,本层输出作为下一层输入,也可用于重构上一层的输出。微调:通常使用监督学习对整个网络微调。例如:深度信念网络 DBN

权共享(weight sharing):让一组神经元使用相同的连接权
以卷积神经网络 CNN 为例:

在这里插入图片描述在这里插入图片描述
总结深度学习就是把关联不密切的输入的数据逐层提取特征转化为关联更密切的输出目标

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java算法之循环排序(Cyclic Sort)
  • 【Xcode】Xcode基本使用指引
  • java项目运行时提示process finished with exit code 1;只显示错误代码,没有显示具体错误信息;解决方案
  • 《工程机械》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • 在ubuntu系统上使用Hadoop搭建集群
  • 向量数据库Faiss的搭建与使用
  • vivado 定义时间约束
  • 七,Spring Boot 当中的 yaml 语法使用
  • 虚幻地形高度图生成及测试
  • 数据结构树(C语言版)
  • 华为OD机试 - 猜数字 - 穷举搜索(Java 2024 E卷 100分)
  • docker实战基础三(Docker基础命令)
  • 深度学习100问54:什么是自动图像描述
  • Pyspark中的ROW对象使用
  • [Doc][px4][ros2][gazebo][yolov8]PX4-ROS2-Gazebo-YOLOv8
  • java2019面试题北京
  • JavaScript 基础知识 - 入门篇(一)
  • Linux各目录及每个目录的详细介绍
  • magento 货币换算
  • RxJS: 简单入门
  • vue2.0项目引入element-ui
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 聊聊flink的BlobWriter
  • 如何编写一个可升级的智能合约
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 小而合理的前端理论:rscss和rsjs
  • 白色的风信子
  • # Maven错误Error executing Maven
  • #define
  • #预处理和函数的对比以及条件编译
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (ibm)Java 语言的 XPath API
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (安卓)跳转应用市场APP详情页的方式
  • (补)B+树一些思想
  • (二)PySpark3:SparkSQL编程
  • (一)SpringBoot3---尚硅谷总结
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .net core 依赖注入的基本用发
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @SuppressWarnings(unchecked)代码的作用
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [20180224]expdp query 写法问题.txt
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记