强化学习 reinforcement learning
强化学习
与监督/无监督学习的对比
监督学习:数据为(x,y),目标式学习x到y的映射(如分类、回归等)
无监督学习:数据仅为x,目标是学习数据的潜在结构(如聚类、降维等)
强化学习定义
研究智能体Agent与环境Environment交互的问题,环境会提供数值奖励信号;
目标是学习如何采取行动以最大化累积奖励
核心要素
智能体通过状态State感知环境,采取行动Action,环境反馈奖励Reward,并转换到下一个状态,形成循环
强化学习实例与数学形式化
典型实例
- cart-Pole问题:通过施加水平力保持杆直立,状态包括角度、角速度等,每保持直立一步得1分
- 机器人运动:目标是让机器人前进,状态为关节角度和位置,奖励与直立和前进距离相关
- Atari游戏:状态为游戏画面像素,动作是游戏控制(如左右移动),奖励为分数变化
- 围棋:目标是获胜,状态为棋子位置,动作是落子位置,获胜得1分否则得0分
马尔可夫决策过程MDP(我们如何从数学上形式化强化学习问题?)
是强化学习问题的数学形式化,具有马尔可夫性(当前状态完全描述环境)
由状态集、动作集、奖励分布、状态转移概率、折扣因子定义
过程:环境采样初始状态,智能体选择动作,环境采样奖励和下一状态,循环直至结束;策略是从状态到动作的映射,目标是找到最大化累计折扣奖励的最优策略
价值函数与贝尔曼方程(用于求解最优策略)(我们希望找到最优策略π ∗,以最大化奖励的总和。)
价值函数与Q值函数
价值函数V(s):遵循某策略时,从状态s出发的期望累积奖励
Q值函数 Q(s,a):在状态s采取动作a后,遵循某策略的期望累积奖励
最优Q值函数与贝尔曼方程
最优Q值函数 Q*是从(状态,动作)对出发能获得的最大期望累积奖励
贝尔曼方程:
,即当前最优Q值取决于即时奖励和下一状态的最优Q值值迭代算法:通过迭代更新Q值直至收敛到Q*,但存在局限性——需计算所有(状态,动作)对的Q值,在高维状态空间(如游戏像素)中不可行
Q学习与深度Q学习
Q学习原理:使用函数逼近器(如神经网络)估计Q值函数,解决值迭代的scalability问题;若使用深度神经网络,则为深度Q学习
损失函数与更新
通过最小化Q值预测与目标值(基于贝尔曼方程)的差距更新网络参数
案例:Atari游戏
经验回放 Experience Replay:
问题:连续样本相关且受当前网络参数影响,可能导致学习不稳定
解决:存储(s, a, r, s’)转换样本到回放内存,随机采样小批量样本训练,提高数据效率并打破相关性
深度Q学习算法流程:初始化回放内存和Q网络,在每轮游戏中选择动作(ε- 贪心策略),存储转换样本,采样训练并更新网络
策略梯度
基本思想:直接学习策略(参数化的从状态到动作的映射),通过梯度上升最大化策略的期望奖励
REINFORCE算法
策略价值J(θ)是策略θ下的期望奖励,通过蒙特卡洛采样估计梯度
梯度估计:基于轨迹奖励r (τ)调整动作概率,奖励高则提高动作概率,反之降低。
方差缩减技术
基于状态的累积未来奖励调整动作概率
使用折扣因子γ忽略延迟影响
引入基线(如奖励移动平均值、价值函数),仅当动作奖励高于预期时提高其概率
Actor-Critic算法
结合策略梯度(Actor,学习策略)和Q学习(Critic,评估动作价值),Critic指导Actor调整策略,可结合经验回放等技巧
策略梯度实例
循环注意力模型RAM:
目标:图像分类,通过选择性瞥见图像区域减少计算
状态:已瞥见的区域,动作:下一瞥见的坐标,奖励:最终分类正确得1分
利用REINFORCE学习瞥见策略,通过RNN建模状态并输出动作
AlphaGo:
结合监督学习(从专业棋局初始化策略网络)和强化学习(自我对弈训练)
融合策略网络、价值网络和蒙特卡洛树搜索选择动作,击败围棋世界冠军
方法对比
策略梯度:通用性强,但方差高,需大量样本,挑战在于样本效率
Q学习:样本效率高,但不总是有效,挑战在于探索
收敛性:策略梯度收敛到局部最优(通常足够好);Q学习因函数逼近器复杂,无收敛保证
深度学习的方法及硬件
模型正变得更大 challenges
model size
大型模型难以通过无线更新分发
speed
长时间训练限制了机器学习研究者的生产力
energe efficiency
更大的模型会导致更多的内存访问,从而消耗更多能量
通过算法与硬件协同设计Algorithm-Hardware Co-Design提高深度学习效率
打破算法和硬件之间的界限:
高效推理算法;
高效训练算法;
高效推理硬件;
高效训练硬件
Hardware 101
分类
通用硬件
CPU: latency oriented 面向延迟
GPU: throughput oriented 面向吞吐量
专用硬件
FPGA:programmable logic 编程逻辑
ASIC: fixed logic 固定逻辑
数值变化
浮点数(FP32 FP16)
整数(int32 int16 int8)
fixed point
能量消耗和面积消耗呈正相关
不同数值表示方式在能量消耗上差异显著,选择合适的表示方式可优化硬件效率
高效推理算法
pruning 剪枝
流程:训练连接性、剪枝连接、训练权重
仅剪枝 vs 剪枝+重新训练 vs 迭代剪枝与重新训练
三种剪枝方法从左到右:在模型压缩过程中被移除的神经网络参数变多,达到的效果better
(所以可以通过重新训练恢复精度的效果)
可以对RNN和LSTM剪枝
修剪改变了权重分布
剪枝前、剪枝后、剪枝并重新训练后权重分布都不同
剪枝能够有效减少模型参数两,通过重新训练可以减少精度损失,适用于多种网络结构
weight sharing 权重共享
流程:权重聚类、生成码本、量化权重、重新训练码本
权重聚类 训练量化
在训练量化前,参数呈连续状态;在训练量化后,参数呈离散状态
4 位量化可减少 8 倍内存
剪枝 + 训练量化
训练量化能够减少每个权重的位数,与剪枝结合可进一步压缩模型,且保持精度
deep compression 深度压缩
深度压缩技术能够大幅减小模型大小,在保持精度的同时便于部署,已在工业界得到应用
quantization 量化
流程:浮点训练、统计信息收集(权重和激活)、选择基数点、微调、转换为定点
量化可在适当牺牲精度的情况下,降低模型计算和存储需求,定点量化是有效的优化手段
low rank approximation 低秩近似
包括卷积层和全连接层的低秩近似方法,低秩近似能在一定误差范围内提升模型计算速度
binary / ternary net 二进制/三进制网络
二进制 / 三进制网络能极大简化计算,训练三进制量化在保证一定精度的同时大幅提升效率
winograd transformation winograd变换
Winograd 变换能有效减少卷积操作的计算量,提升卷积层的计算速度
高效推理硬件
专用硬件(如 TPU)在推理效率上优于通用硬件(CPU、GPU),模型压缩是提升硬件效率的重要途径
EIE: Efficient Inference Engine
针对稀疏压缩模型,利用稀疏特性减少计算和内存访问,在速度和能量效率上远超传统 CPU、GPU
高效训练算法
parallelization 并行化
深度神经网络中存在大量并行计算机会,单个全连接层包含1600万次独立乘法运算,实际只能利用其中部分算力(受限于系统开销)
数据并行:同时处理多个训练样本, 受批量大小限制
模型并行:
模型并行卷积——按输出区域(x,y)划分
模型并行卷积——按输出映射j(滤波器)
模型并行全连接层(M x V)
将模型拆分到多个处理器, 按层级划分, 卷积层按特征图区域划分,全连接层按输出激活值划分
超参数并行:并行尝试多种替代网络
轻松实现16-64块GPU并行训练单个模型
mixed precision with FP16 and FP32 混合精度训练(FP16与FP32)
model distillation 模型蒸馏
- 核心概念
- 教师 - 学生范式:教师模型通常是大型、训练充分、具有丰富语义理解和推理能力的模型,如 DeepSeek R1(671B 参数) ,能生成高精度的结果。学生模型则是小型轻量化模型,如小型 BERT(110M 参数),旨在模仿教师模型的行为和知识,在减少计算需求的同时,实现与教师模型相当的性能和理解能力。
- 知识转移:模型蒸馏的核心是知识转移,学生模型通过学习教师模型的输出概率(软标签)以及真实标签(硬标签)进行联合训练。软标签包含了教师模型对不同类别之间相对关系的判断,能帮助学生模型更好地理解决策逻辑,提升准确性和可靠性。
- 技术方法
◦ 知识蒸馏(KD):最经典的技术,学生模型利用教师模型的软标签和硬标签进行训练,通过最小化软标签与自身预测之间的差异(常用 Kullback-Leibler 散度或交叉熵),同时结合硬标签监督,优化自身参数。
◦ 数据增强:教师模型生成额外训练数据,如对日志数据进行语义变体扩展,丰富数据集规模,提升学生模型的泛化性能。
◦ 中间层蒸馏:学生模型学习教师模型中间层的输出,捕获更详细的结构信息,提升整体性能。
◦ 多教师蒸馏:学生模型同时学习多个教师模型的知识,聚合不同视角的洞见,增强鲁棒性和综合理解能力。
- 核心概念
DSD:Dense-Sparse-Dense Training 稠密-稀疏-稠密训练
Dense-Sparse-Dense (DSD) 训练是一种新的神经网络训练方法,旨在通过在训练过程中使用稀疏性和重新初始化来提高模型的性能。该方法主要分为三个步骤:
- 初始密集训练(D步骤):首先,使用标准的密集训练方法来学习连接权重及其重要性。
- 稀疏训练(S步骤):接着,根据权重的重要性进行剪枝,去掉不重要的连接,并在稀疏约束下重新训练网络。
- 重新密集训练(re-Dense步骤):最后,解除稀疏约束,重新初始化剪枝的参数,并再次训练整个网络以获得最终结果。
这种方法在多个数据集和模型上进行了实验,结果表明,DSD训练能够显著提升模型的性能。例如,在ImageNet上,DSD训练使得GoogLeNet的Top-1准确率提高了1.1%,VGG-16提高了4.3%,ResNet-18提高了1.2%,ResNet-50提高了1.1%。
总的来说,DSD训练通过在训练过程中引入稀疏性,能够有效地避免过拟合,提高模型的泛化能力和整体性能。
多种算法可提升训练效率,并行化加速训练过程,混合精度在保证精度的同时提高效率,模型蒸馏和 DSD 训练能提升模型性能或减小模型规模
高效训练硬件
如Intel Knights Landing CPU、Nvidia Pascal、Volta GPU(Tensor Core 提升性能)、Google Cloud TPU(180 teraflops,TPU pod 达 11.5 petaflops)。
结论:专用训练硬件(如 Volta GPU、TPU)能大幅提升深度学习训练速度,满足大规模模型训练需求
(你所牵挂的,正在朝着熟悉的方向挪动,耐心等待,转角会有重逢的惊喜)(因为我的玄风小鸡丢了 三天每天睡四个小时寻找也没找到 已经是很伤心很伤心了 一想到我的小鸟毛茸茸的 在外面挨饿淋雨 真的很难受 小鸡快回家)