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

计算机视觉CS231n学习(8)

强化学习 reinforcement learning
  1. 强化学习

    1. 与监督/无监督学习的对比

      监督学习:数据为(x,y),目标式学习x到y的映射(如分类、回归等)

      无监督学习:数据仅为x,目标是学习数据的潜在结构(如聚类、降维等)

    2. 强化学习定义

      研究智能体Agent与环境Environment交互的问题,环境会提供数值奖励信号;

      目标是学习如何采取行动以最大化累积奖励

    3. 核心要素

      智能体通过状态State感知环境,采取行动Action,环境反馈奖励Reward,并转换到下一个状态,形成循环

      在这里插入图片描述

  2. 强化学习实例与数学形式化

    1. 典型实例

      1. cart-Pole问题:通过施加水平力保持杆直立,状态包括角度、角速度等,每保持直立一步得1分
      2. 机器人运动:目标是让机器人前进,状态为关节角度和位置,奖励与直立和前进距离相关
      3. Atari游戏:状态为游戏画面像素,动作是游戏控制(如左右移动),奖励为分数变化
      4. 围棋:目标是获胜,状态为棋子位置,动作是落子位置,获胜得1分否则得0分
    2. 马尔可夫决策过程MDP(我们如何从数学上形式化强化学习问题?)

      是强化学习问题的数学形式化,具有马尔可夫性(当前状态完全描述环境)

      由状态集、动作集、奖励分布、状态转移概率、折扣因子定义

      过程:环境采样初始状态,智能体选择动作,环境采样奖励和下一状态,循环直至结束;策略是从状态到动作的映射,目标是找到最大化累计折扣奖励的最优策略

  3. 价值函数与贝尔曼方程(用于求解最优策略)(我们希望找到最优策略π ∗,以最大化奖励的总和。)

    1. 价值函数与Q值函数

      价值函数V(s):遵循某策略时,从状态s出发的期望累积奖励

      Q值函数 Q(s,a):在状态s采取动作a后,遵循某策略的期望累积奖励

    2. 最优Q值函数与贝尔曼方程

      最优Q值函数 Q*是从(状态,动作)对出发能获得的最大期望累积奖励

      贝尔曼方程:在这里插入图片描述
      ,即当前最优Q值取决于即时奖励和下一状态的最优Q值

    3. 值迭代算法:通过迭代更新Q值直至收敛到Q*,但存在局限性——需计算所有(状态,动作)对的Q值,在高维状态空间(如游戏像素)中不可行

  4. Q学习与深度Q学习

    1. Q学习原理:使用函数逼近器(如神经网络)估计Q值函数,解决值迭代的scalability问题;若使用深度神经网络,则为深度Q学习

    2. 损失函数与更新

      通过最小化Q值预测与目标值(基于贝尔曼方程)的差距更新网络参数

    3. 案例:Atari游戏

    4. 经验回放 Experience Replay:

      问题:连续样本相关且受当前网络参数影响,可能导致学习不稳定

      解决:存储(s, a, r, s’)转换样本到回放内存,随机采样小批量样本训练,提高数据效率并打破相关性

    5. 深度Q学习算法流程:初始化回放内存和Q网络,在每轮游戏中选择动作(ε- 贪心策略),存储转换样本,采样训练并更新网络

  5. 策略梯度

    1. 基本思想:直接学习策略(参数化的从状态到动作的映射),通过梯度上升最大化策略的期望奖励

    2. REINFORCE算法

      策略价值J(θ)是策略θ下的期望奖励,通过蒙特卡洛采样估计梯度

      梯度估计:基于轨迹奖励r (τ)调整动作概率,奖励高则提高动作概率,反之降低。

    3. 方差缩减技术

      基于状态的累积未来奖励调整动作概率

      使用折扣因子γ忽略延迟影响

      引入基线(如奖励移动平均值、价值函数),仅当动作奖励高于预期时提高其概率

    4. Actor-Critic算法

      结合策略梯度(Actor,学习策略)和Q学习(Critic,评估动作价值),Critic指导Actor调整策略,可结合经验回放等技巧

  6. 策略梯度实例

    1. 循环注意力模型RAM:

      目标:图像分类,通过选择性瞥见图像区域减少计算

      状态:已瞥见的区域,动作:下一瞥见的坐标,奖励:最终分类正确得1分

      利用REINFORCE学习瞥见策略,通过RNN建模状态并输出动作

    2. AlphaGo:

      结合监督学习(从专业棋局初始化策略网络)和强化学习(自我对弈训练)

      融合策略网络、价值网络和蒙特卡洛树搜索选择动作,击败围棋世界冠军

  7. 方法对比

    策略梯度:通用性强,但方差高,需大量样本,挑战在于样本效率

    Q学习:样本效率高,但不总是有效,挑战在于探索

    收敛性:策略梯度收敛到局部最优(通常足够好);Q学习因函数逼近器复杂,无收敛保证

深度学习的方法及硬件
  1. 模型正变得更大 challenges

    1. model size

      大型模型难以通过无线更新分发

    2. speed

      长时间训练限制了机器学习研究者的生产力

    3. energe efficiency

      更大的模型会导致更多的内存访问,从而消耗更多能量

  2. 通过算法与硬件协同设计Algorithm-Hardware Co-Design提高深度学习效率

    打破算法和硬件之间的界限:

    高效推理算法;

    高效训练算法;

    高效推理硬件;

    高效训练硬件

  3. Hardware 101

    1. 分类

      1. 通用硬件

        CPU: latency oriented 面向延迟

        GPU: throughput oriented 面向吞吐量

      2. 专用硬件

        FPGA:programmable logic 编程逻辑

        ASIC: fixed logic 固定逻辑

    2. 数值变化

      浮点数(FP32 FP16)

      整数(int32 int16 int8)

      fixed point

      能量消耗和面积消耗呈正相关

      不同数值表示方式在能量消耗上差异显著,选择合适的表示方式可优化硬件效率

  4. 高效推理算法

    1. pruning 剪枝

      流程:训练连接性、剪枝连接、训练权重

      在这里插入图片描述

      1. 仅剪枝 vs 剪枝+重新训练 vs 迭代剪枝与重新训练

        三种剪枝方法从左到右:在模型压缩过程中被移除的神经网络参数变多,达到的效果better

        (所以可以通过重新训练恢复精度的效果)

      2. 可以对RNN和LSTM剪枝

      3. 修剪改变了权重分布

        剪枝前、剪枝后、剪枝并重新训练后权重分布都不同

      剪枝能够有效减少模型参数两,通过重新训练可以减少精度损失,适用于多种网络结构

    2. weight sharing 权重共享

      流程:权重聚类、生成码本、量化权重、重新训练码本

      在这里插入图片描述

      1. 权重聚类 训练量化

        在这里插入图片描述

        在训练量化前,参数呈连续状态;在训练量化后,参数呈离散状态

        4 位量化可减少 8 倍内存

      2. 剪枝 + 训练量化

        训练量化能够减少每个权重的位数,与剪枝结合可进一步压缩模型,且保持精度

      3. deep compression 深度压缩

        深度压缩技术能够大幅减小模型大小,在保持精度的同时便于部署,已在工业界得到应用

        在这里插入图片描述

    3. quantization 量化

      流程:浮点训练、统计信息收集(权重和激活)、选择基数点、微调、转换为定点

      量化可在适当牺牲精度的情况下,降低模型计算和存储需求,定点量化是有效的优化手段

    4. low rank approximation 低秩近似

      包括卷积层和全连接层的低秩近似方法,低秩近似能在一定误差范围内提升模型计算速度

    5. binary / ternary net 二进制/三进制网络

      二进制 / 三进制网络能极大简化计算,训练三进制量化在保证一定精度的同时大幅提升效率

    6. winograd transformation winograd变换

      Winograd 变换能有效减少卷积操作的计算量,提升卷积层的计算速度

  5. 高效推理硬件

    1. 专用硬件(如 TPU)在推理效率上优于通用硬件(CPU、GPU),模型压缩是提升硬件效率的重要途径

    2. EIE: Efficient Inference Engine

      针对稀疏压缩模型,利用稀疏特性减少计算和内存访问,在速度和能量效率上远超传统 CPU、GPU

  6. 高效训练算法

    1. parallelization 并行化

      深度神经网络中存在大量并行计算机会,单个全连接层包含1600万次独立乘法运算,实际只能利用其中部分算力(受限于系统开销)

      1. 数据并行:同时处理多个训练样本, 受批量大小限制

      2. 模型并行:

        模型并行卷积——按输出区域(x,y)划分

        模型并行卷积——按输出映射j(滤波器)

        模型并行全连接层(M x V)

        将模型拆分到多个处理器, 按层级划分, 卷积层按特征图区域划分,全连接层按输出激活值划分

      3. 超参数并行:并行尝试多种替代网络

      轻松实现16-64块GPU并行训练单个模型

    2. mixed precision with FP16 and FP32 混合精度训练(FP16与FP32)

    3. model distillation 模型蒸馏

      1. 核心概念
        • 教师 - 学生范式:教师模型通常是大型、训练充分、具有丰富语义理解和推理能力的模型,如 DeepSeek R1(671B 参数) ,能生成高精度的结果。学生模型则是小型轻量化模型,如小型 BERT(110M 参数),旨在模仿教师模型的行为和知识,在减少计算需求的同时,实现与教师模型相当的性能和理解能力。
        • 知识转移:模型蒸馏的核心是知识转移,学生模型通过学习教师模型的输出概率(软标签)以及真实标签(硬标签)进行联合训练。软标签包含了教师模型对不同类别之间相对关系的判断,能帮助学生模型更好地理解决策逻辑,提升准确性和可靠性。
      2. 技术方法
        ◦ 知识蒸馏(KD):最经典的技术,学生模型利用教师模型的软标签和硬标签进行训练,通过最小化软标签与自身预测之间的差异(常用 Kullback-Leibler 散度或交叉熵),同时结合硬标签监督,优化自身参数。
        ◦ 数据增强:教师模型生成额外训练数据,如对日志数据进行语义变体扩展,丰富数据集规模,提升学生模型的泛化性能。
        ◦ 中间层蒸馏:学生模型学习教师模型中间层的输出,捕获更详细的结构信息,提升整体性能。
        ◦ 多教师蒸馏:学生模型同时学习多个教师模型的知识,聚合不同视角的洞见,增强鲁棒性和综合理解能力。
    4. DSD:Dense-Sparse-Dense Training 稠密-稀疏-稠密训练

      Dense-Sparse-Dense (DSD) 训练是一种新的神经网络训练方法,旨在通过在训练过程中使用稀疏性和重新初始化来提高模型的性能。该方法主要分为三个步骤:

      1. 初始密集训练(D步骤):首先,使用标准的密集训练方法来学习连接权重及其重要性。
      2. 稀疏训练(S步骤):接着,根据权重的重要性进行剪枝,去掉不重要的连接,并在稀疏约束下重新训练网络。
      3. 重新密集训练(re-Dense步骤):最后,解除稀疏约束,重新初始化剪枝的参数,并再次训练整个网络以获得最终结果。

      这种方法在多个数据集和模型上进行了实验,结果表明,DSD训练能够显著提升模型的性能。例如,在ImageNet上,DSD训练使得GoogLeNet的Top-1准确率提高了1.1%,VGG-16提高了4.3%,ResNet-18提高了1.2%,ResNet-50提高了1.1%。

      总的来说,DSD训练通过在训练过程中引入稀疏性,能够有效地避免过拟合,提高模型的泛化能力和整体性能。

    多种算法可提升训练效率,并行化加速训练过程,混合精度在保证精度的同时提高效率,模型蒸馏和 DSD 训练能提升模型性能或减小模型规模

  7. 高效训练硬件

    如Intel Knights Landing CPU、Nvidia Pascal、Volta GPU(Tensor Core 提升性能)、Google Cloud TPU(180 teraflops,TPU pod 达 11.5 petaflops)。
    结论:专用训练硬件(如 Volta GPU、TPU)能大幅提升深度学习训练速度,满足大规模模型训练需求

(你所牵挂的,正在朝着熟悉的方向挪动,耐心等待,转角会有重逢的惊喜)(因为我的玄风小鸡丢了 三天每天睡四个小时寻找也没找到 已经是很伤心很伤心了 一想到我的小鸟毛茸茸的 在外面挨饿淋雨 真的很难受 小鸡快回家)
真的是毛茸茸的很可爱的很亲人的咬人跟挠痒痒一样真的很可惜

http://www.lryc.cn/news/620613.html

相关文章:

  • 飞算 JavaAI 云原生实践:基于 Docker 与 K8s 的自动化部署架构解析
  • 水印消失术!JavaAI深度学习去水印技术深度剖析
  • Product Hunt 每日热榜 | 2025-08-14
  • wpf 保姆级实现visual studio里面的属性窗口 深度解析属性网格(PropertyGrid)实现原理与高级定制
  • NineData云原生智能数据管理平台新功能发布|2025年7月版
  • DOCKER设置日志轮转
  • 爬虫逆向之滑块验证码加密分析(轨迹和坐标)
  • Redis 03 redis 缓存异常
  • 嵌入式学习笔记--MCU阶段--DAY12实时操作系统rt_thread1
  • C语言零基础第16讲:内存函数
  • 华为实验WLAN 基础配置随练
  • 【奔跑吧!Linux 内核(第二版)】第6章:简单的字符设备驱动(三)
  • 使用AI编程自动实现自动化操作
  • 考研408《计算机组成原理》复习笔记,第三章(6)——Cache(超级重点!!!)
  • [免费]基于Python的影视数据可视化分析系统(Flask+echarts)【论文+源码+SQL脚本】
  • 财务自动化软件敏感数据泄露风险评估与防护措施
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘arviz’问题
  • Flutter 顶部导航标签组件Tab + TabBar + TabController
  • Polyak-Ruppert 平均
  • 第四天~什么是ARXML?
  • Eureka故障处理大汇总
  • Java研学-RabbitMQ(八)
  • 李沐-第六章-LeNet训练中的pycharm jupyter-notebook Animator类的显示问题
  • 【LeetCode 热题 100】295. 数据流的中位数——最大堆和最小堆
  • 基于Django的福建省旅游数据分析与可视化系统【城市可换】
  • AI 编程实践:用 Trae 快速开发 HTML 贪吃蛇游戏
  • 【经验分享】如何在Vscode的Jupyter Notebook中设置默认显示行号
  • vscode的wsl环境,ESP32驱动0.96寸oled屏幕
  • 【面板数据】各省及市省级非物质文化遗产数据合集(2005-2024年)
  • 【JavaEE】多线程 -- 初识线程