Month: September 2024
-
强化学习基础技术系列原理摘要总结
最近在制作强化学习方面的分享内容,这里做一个文字的摘要总结版本,可以方便关键知识的复习和记忆检索。也希望对相关方向感兴趣的读者有所帮助,同时引文的链接中有详细的视频内容分享,欢迎从事相关方向的读者朋友们多提意见和建议。 1、MDP,马尔可夫决策过程,是基于状态(state, observation)、行为(action)、状态行为转移概率矩阵(state transition probability, 可以定义为维度为3的多维数组,如第1个维度为当前状态,第2个维度为下一个状态,第3个维度为所有行为)以及即时奖励reward,和策略pi(policy),马尔可夫决策过程描述了一个随机过程控制的场景,有actor,agent,environment等,actor和environment进行交互,agent是actor背后的大脑,负责帮助actor进行决策。当马尔可夫决策过程中状态行为转移概率矩阵和即时reward已知的时候,我们可以采用bellman方程的动态规划迭代方法去采用策略迭代或价值迭代去求解最优决策。当模型状态未知时,也可以采用免模型的算法,如蒙特卡咯和时间差分的方法去求解。 2、当马尔可夫决策过程的状态未知时,我们一般采用免模型法,如基于蒙特卡洛的基于整个回合序列的统计近似方法,以及基于更小step的时间差分方法,如Sarsa和q learning都可以基于时间差分法去迭代优化Q函数,不同点在于Sarsa为on policy的方法,也就是同策略方法,而Q learning为异策略方法。同策略(on policy)可以理解为基于当前的同一个训练的网络去学习error(如Sarsa中下一个状态也会通过智能体执行当前策略行为获取相应的Q值),而异策略(off policy)可以理解为当前训练网络(训练网络)和基于之前的网络获取的动作价值函数的状态(目标网络)结合去学习error。 3、DQN网络算法,介绍了其目标网络和训练网络的异策略训练方法以及算法代码流程描述,并基于CartPole模拟器环境用MLP网络进行了DQN算法的实现,这里有基于队列实现的一个ReplayBuffer(经验回放池,基于双端队列数据结构实现),经验回放池的数据进行采样会随机抽取数据返回,保证训练时数据之间的独立性,易于网络的训练,不会使得网络过于拟合最近的采样数据(经验回放池的早期数据在池满被移除之前也可以复用多次),早期的数据将会自动从队列中移除也满足了采样数据的时效性。在实现过程中,训练网络用于采集收据放入ReplayBuffer,目标网络顾名思义用于计算训练网络所需要回归的目标,其基于回放池中取出的reward和nextstate,并将nextstate输入给目标网络并计算出最大的action的输出,经过公式计算得出训练网络需要回归的target。具体的相关代码实现可以参考引文3 4、PolicyGradient和actor-critic算法,基于Policy network的基于期望回报的最大化,根据蒙特卡洛采样方式将完整回合轨迹的累积回报与其概率进行加权,通过采集很多个轨迹得出回报的期望,并使期望最大化来优化策略网络。原始的公式中,是对整个轨迹的回报进行的期望的计算,整个轨迹中每一个时刻的状态行为分配相同的权重会存在一些不合理的因素,关于具体的推导过程可以参考视频分享,其中要说明的是基于蒙特卡洛的REINFORCEMENT算法中的公式通过一些列的考虑进行的调整,比如对于某个状态下的行为的“好坏”将考虑其从该状态下执行行为后的期望回报作为因子(之前发生的事情与执行这个动作没有关系,和-logp_theta(s|a)去相乘去算损失,如果期望回报较大,增大概率p_theta(s|a)会获得更大的回报,这是-logp_theta(s|a)为正值而且会随着p_theta(s|a)增大变小,所以总体的loss变小,达到我们期望回报增大的目的。在策略梯度算法中,为了减小回报的方差,引入了基线的概念,可以理解对回报做了归一化处理,使得训练的结果更加稳定(有的游戏中所有步骤的即时回报都是正值),而将价值函数作为基线的策略梯度的改进算法称为actor-critic算法。actor-critic算法为一种框架算法,后续的PPO以及TRPO都用到了策略网络和价值网络进行的联合的训练,也归属于这一类算法。 5、PPO算法,策略梯度是同策略算法,其采集的数据只能利用一次,采集数据的成本过高,为了能够更高效率复用数据,PPO算法采用了异策略的方案,提供了训练网络和参考网络,并且对参考网络上采集的数据进行了多次复用,为了限制训练网络和参考网络的参数差异不要太大(能更好利用重要性采样进行数据复用),这里采用了一种软约束(加了KL散度约束两个网络的参数,同时还可以动态调整设置重要性因子阈值对KL散度约束项进行自适应的调整)。广义优势函数基于多步时序差分的思想,将不同步骤的优势函数进行加权求和。 6、TRPO算法,TRPO算法出现在PPO算法之前,和PPO算法有不少的思想是相同的(也基于重要性采样原理多次复用采集数据),为了限制新旧策略网络的参数不要差异太大,这里使用了硬约束,和软约束不同,硬约束显示要求两个策略网络参数的差异范围(亦即Trust Region一词的由来)。大体的思路是分别基于目标函数和约束函数的一阶和二阶泰勒展开,采用共轭梯度的方法去求解(共轭梯度用于求解大规模对称正定的线性方程组,这里为H(detlta_theta)=g),最终求得更新的方向delta_theta,用于更新策略参数。 以上内容内容的视频分享内容请参考引文1,相关代码实现请参考引文2。 References
-
EmbodiedAI原理和技术摘要汇总
这篇文章对最近学习的关于具身智能相关的技术原理和实现知识做一下摘要汇总,欢迎大家提出意见和建议,具体详细的介绍请参考文末的链接参考1。 1、TR-1模型算法,基于Transformer decoder结构,对结构稍微具体一点的分解为:输入数据预处理模块:输入为ImageToken(经过基于ImageNet预训练的efficientnet-b3的feature extractor提取成9*9*512的张量,flatten为81*512的imagetoken表示)和instruction文本通过FiLM layer(Feature wise Linear Modulation)进行融合,然后经过TokenLearner进行压缩形成8*512的张量形状。然后6张图片(a short history of images)concat一起形成48个token,和positional embedding结合作为Transformer解码器的输入,输出层的多个token进行平均池化,如8个token的hidden_state取平均池化,接出11(action的个数)* action_vocab_size(256)然后计算loss。 2、TR-2模型算法,基于web的图像文本对数据集预训练的Vision Language Model将web数据和robot数据一起进行co-finetune。并且将action建模为值为数字或词汇表中最少用的256个token的文本输出,形成Vision Language Action model用于机器人的闭环控制。 3、多模态大模型ViLT算法,文本和图像分别通过linear projection浅层网络转换为text embedding和visual embedding,然后通过concat不同模态的embedding以单流模式(Single Stream,要区分不同模态的类型,类似于BERT里的segment embedding,还有两个模态开始的special token等),其预测任务为ITM和MLM,其中ITM任务为是否匹配的分类任务和WPA(文本对齐任务,采用的是OT算法去优化文本视觉对齐信息,开源代码实现中任务的loss_weight分别为1和0.1)的结合,通过可视化可以观察高亮的文本和对应的视觉patch的关联度。ViLT可以用于VQA视觉问答任务,以及文本图片(text-to-image retrival and image-to-text retrival)检索任务等。 4、openx-embodiment数据集及TR-X算法及实验,openx-embodiment收集了来自全球20多家机构的20多种机器人的60个子数据集,并将其按照RLDS格式进行了统一格式化处理(episodes[steps[step[observation, action, reward….]]]处理,文章中对收集的机器人数据的特性做了分析,并在此基础上基于9个数据集对RT-1和RT-2模型进行了扩展训练,并回答了相关的模型泛化,模型完成新出现任务,以及模型得参数量,训练迭代次数等相关模型得能力和模型设计决策时的参考量。 5、occupancy networks. 一类以预测连续三维点坐标位置的占用状态的网路,通过学习函数映射的方式预测三维点的占用值(occupancy value)。一般包括编码器和解码器,也可能包含隐空间编码器。编码器对输入的observation状态进行编码,如图像,RGBD,点云数据等,解码器接受预测点的三维坐标以及编码器的输出,输出输入点的预测occ值,如果有隐空间编码器,则解码器同时还要对隐空间进行采样作为输入参数之一给解码器。训练的样本点需要对三维空间目标进行采样,可以针对三维目标的表面mesh及采样数据均衡特性进行采样,这些样本点可以在训练之前通过数据集预处理提前生成。 关于具身智能方面的技术介绍将在后续的分享中进行不定期的更新,我们将会将前言的相关的最新的论文和开源技术向大家持续分享,这些相关内容如有理解上的出入欢迎读者联系我们进行勘误纠正。也欢迎其他方面使得我们做的更好的建议。 References