强化学习概念
1.在线强化学习和离线强化学习在技术和应用场景上有什么区别?
从技术上看
在线强化学习:智能体与环境进行实时交互、实时获得反馈并学习更新策略。
离线强化学习:智能体与环境无实时交互,通过事先收集的离线数据集学习。
从应用场景上看
在线强化学习:机器控制(避开障碍物等)、游戏、实时交通控制
离线强化学习:医疗治疗、金融风险、推荐系统等需要依赖历史数据的应用场景
【注意】这里引申一下,其实除了分为离线与在线学习,强化学习还可以从以下几个方面去区分:
model-free & model-based
基于概率 & 基于价值
回合更新 & 单步更新
强化学习算法
1.PPO算法和DQN算法的区别是什么?
PPO算法(Proximal Policy Optimization)与 DQN(Deep Q-Network)算法可以从目标、方法、状态空间以及实际应用四个方面进行区分:
目标
PPO:属于策略优化算法,目标是直接学习最佳策略,使智能体能够在环境中执行最优的动作。通过最大化累积奖励来训练策略网络。
DQN:属于值函数近似算法,目标是学习状态-动作对的价值函数,通常表示为Q值。通过估计每个状态和动作的长期奖励,选择具有最高Q值的动作来训练策略网络。
方法
PPO:使用策略梯度方法,通过迭代地改进策略来学习最佳策略。通过重要性采样来确保策略改进是渐进的,同时使用克隆策略来估计策略改进的目标。PPO在训练期间会不断更新策略网络。
DQN:使用深度神经网络来逼近Q值函数。利用经验回放来存储并随机采样以前的经验,以减小数据的相关性,并基于目标网络来稳定目标Q值的估计(将目标Q网络的参数定期更新,而不是与主Q网络同步更新)
状态空间
PPO:用于连续状态和动作空间的问题,不需要明确估计Q值,而是直接优化策略。
DQN:用于离散状态和动作空间的问题,估计离散状态-动作对的Q值。
实际应用
PPO:工程实践中一般就是在PPO、SAC、TD3当中选,由于PPO对调参要求最低,因此选择PPO的比较多。
DQN:一般适合初学者入门基于价值和基于策略梯度的算法,工程实践中很少用。
2.PPO算法中使用GAE的好处以及参数 gamma 和 lambda 的作用是什么?
GAE(Generalized Advantage Estimation)的主要好处
改进对优劣行为的估计,提高训练稳定性和收敛速度。
减小训练中的方差,并更准确地估计动作的优劣性。
参数gamma 和 lambda的作用
- gamma(γ)
含义:一个重要的强化学习超参数,通常用于衡量未来奖励的重要性,其控制了在计算奖励时对未来奖励的折扣程度。
取值的影响:当gamma接近1时,智能体更关注未来的奖励,即长期奖励,而当gamma接近0时,智能体更关注即时奖励,即短期奖励。
作用:在PPO中,gamma被用来计算GAE,即GAE的折扣因子。通常,合理的gamma值可以帮助平衡长期和短期奖励,使策略学习更加稳定。
- lambda(λ)
含义:GAE中的另一个重要参数,用于平衡多个时间步上的奖励估计。
取值的影响:lambda介于0和1之间,它决定了在计算GAE时考虑多个时间步的奖励。具体来说,它平衡了在单个时间步上估计的TD(时差)误差和多个时间步的估计之间的权衡。
作用:选择合适的lambda值可以帮助平衡方差和偏差,以获得更准确的优劣行为估计。
在PPO中,使用GAE结合gamma和lambda的好处
可以更准确地估计每个时间步上的优劣行为,改进策略梯度的估计。
有助于提高PPO算法的稳定性和训练性能,使其能够更好地处理复杂的强化学习问题。
因此选择合适的gamma和lambda值可能因任务而异,通常需要经验和调试。
3.有哪些PPO算法的调参经验?
PPO(Proximal Policy Optimization)算法的性能受到各种超参数和配置的影响,因此在训练时需要进行调参,可以分为十个方面:
学习率
策略更新步数:PPO进行多次策略更新,通常在每一轮训练中迭代多次。这个数量通常在2到10之间,可以根据任务和性能进行调整。
价值函数更新步数:PPO还会训练一个价值函数,以估计状态值或Q值,因此价值函数更新步数也需要进行调整。通常在2到10之间。
GAE参数(gamma和lambda):如之前所述,gamma和lambda用于计算GAE,影响优劣行为的估计。这些值可以根据任务的奖励特性进行调整,以平衡长期和短期奖励。
神经网络架构:略和价值网络的神经网络架构是关键因素。通常,深层神经网络在PPO中表现良好。还可以尝试不同的层数、隐藏单元数和激活函数,以找到最适合任务的架构。
价值函数系数:PPO中通常有一个系数,用于控制价值函数在总损失函数中的权重。这个系数通常在0.5到1之间,可以根据任务的特性进行微调。
优劣行为的剪切幅度:PPO使用一个剪切幅度来限制策略更新的大小,以确保策略改进是渐进的。通常,这个剪切幅度在0.1到0.3之间,但可以根据任务进行微调。
经验回放:对于连续状态空间的任务,入经验回放可以提高PPO的性能,减小数据的相关性。
环境奖励正则化:引入奖励正则化或额外的奖励工程来加速训练和改善性能。
奖励缩放:对环境的奖励进行缩放可以帮助改善训练的稳定性。
强化学习与大模型
1.强化学习和大模型之间的关联是什么?
怎么做的先不细讲,关联可以分为三个层面:直接指导、控制或者选择,他们的实质区别就是是否调整了大模型的参数:
直接指导:直接通过奖励或惩罚机制来指导大模型生成更符合预期的内容,这个需要微调参数。
控制:可以控制词汇选择、句法结构、内容表达等一些细节偏好,这个可能也需要调参数。
选择:只从大模型生成的多个候选结果选择最佳结果,这个不需要动大模型参数。
2.目前国内一般选择基于哪些基座模型继续训练?
目前比较常见的:LLaMA系列、ChatGLM系列、Baichuan系列。
3.国内做大模型的主要工作是哪几个部分?
多模态
垂直领域
上下文窗口:最近的Baichuan2-192K,很猛
4.如何评估大模型中数据集的质量?
多样性:包括不同的情境、背景和语境以及模态等
数量
质量:无噪声无歧义
平衡性:标签均衡
时效性
可解释性:这里指数据集特征与标签之间的关系
代表性:匹配实际使用场景
采集方式:随机无偏差
其他:数据的隐私和伦理考虑、预处理和清洗等
5.除了数据之外,还有哪些方向的工作可以进一步优化大模型的效果?
架构设计:包括选择适当的神经网络层次结构、模型深度、宽度、注意力机制、卷积核大小、适配特定任务等
参数调整:调整超参数,如学习率、批量大小、正则化强度提升模型的性能,用自动化超参数搜索方法如网格搜索、随机搜索和贝叶斯优化寻找最佳超参数配置
预训练模型
知识蒸馏:这个还比较重要,chatGPT也是蒸馏过的
量化:减少模型中权重和激活的精度,以减小模型的内存和计算需求做性能优化
模型压缩:剪枝、量化、低秩近似和权重共享来减小模型的大小和计算成本
自监督学习:模型自动生成目标或标签,从大规模未标记数据中学到有用的表示
多模态融合
迁移学习
强化学习
硬件优化:利用专用硬件(如GPU、TPU、MLU等等)来加速模型的推断和训练