强化学习(PG)

PG——策略梯度(Policy Gradient)

基于策略的强化学习,通过神经网络来输出预测的动作,相较于基于价值的强化学习,PG最大的优势在于可以在一个区间内挑选动作。也就适合连续动作

用参数化概率分布\pi _{\theta }\left ( a|s \right )=P\left ( a|s;\theta \right )代替基于价值函数的强化学习中的确定性策略\pi :s\rightarrow a,在返回的动作概率列表中对不同的动作进行抽样选择。

如何评价网络的好坏?
基于价值函数的强化学习有一个目标Q网络,通过输入下一时刻的状态和动作可以获得目标Q,然后计算损失

要利用日度上升来寻找最优的梯度,首先就要找到一个可以优化的函数目标,最简单的优化目标就是初始状态收获的期望,但是有的问题是没有明确的初始状态的,那么优化目标可以定义为平均价值,或者是每一时间步的平均奖励

最终目的是决策后获得最大的期望,可以根据最终的回报和决策轨迹的概率求出期望回报来代表作为一个轨迹的回报,根据回报的大小,可以对网络进行优化。

以策略梯度作为损失来优化神经网络

\triangledown \bar{R}_{\theta }=\frac{1}{N}\sum_{n=1}^{N}R\left ( \tau ^{n} \right )\triangledown logp_{\theta }\left ( \tau ^{n} \right )=\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_{n}}R\left ( \tau ^{n} \right )\triangledown log\pi _{\theta} \left ( a_{t}^{n}|s_{t}^{n} \right )(对\theta的求导的梯度)

根据:\triangledown f\left ( x \right )=f\left ( x \right )\triangledown logf\left ( x \right )
最大化\bar{R}_{\theta }就是最大化\frac{1}{N}\sum_{n=1}^{N}R\left ( \tau ^{n} \right )\log p_{\theta }\left ( \tau ^{n} \right ),由于每个episode更新一下神经网络,所以前面的\frac{1}{N}\sum_{n=1}^{N}可以省略,最后最大化的目标就是R\left ( \tau ^{n} \right )\log p_{\theta }\left ( \tau ^{n} \right )

更新:\theta \leftarrow \theta +\alpha \triangledown \bar{R}_{\theta }

策略函数\pi _{\theta }\left ( s,a \right )的设计:

最常用的策略函数是softmax策略函数,主要应用于离散空间中,softmax策略使用描述状态和行为的特征\phi \left ( s, a \right )与参数\theta的线性组合来权衡一个行为发生的几率:

\pi _{\theta }\left ( s, a \right )=\frac{e^{\phi \left ( s, a \right )^{T_{\theta }}}}{\sum_{b}^{}e^{\phi \left ( s, b\right )T_{\theta }}}

求导:\triangledown _{\theta }log\pi _{\theta }\left ( s, a \right )=\phi \left ( s, a \right )-E_{\pi _{\theta }}\left [ \phi \left (s,. \right ) \right ]

另一种是高斯策略,是应用于连续空间的,求导后为:\triangledown _{\theta }log\pi _{\theta }\left ( s, a \right )=\frac{\left ( a-\phi \left ( s \right )^{T_{\theta }} \right )\phi \left ( s \right )}{\sigma ^{2}}

策略梯度的采样方式:①MC蒙特卡洛;②TD时序差分

MC蒙特卡洛:\triangledown \bar{R}_{\theta }=\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_{n}}G_{t}^{n}\triangledown log\pi _{\theta} \left ( a_{t}^{n}|s_{t}^{n} \right ),在每个回合结束后去更新参数——Reinforce

PG利用带有权重的梯度上升方法更新策略,在Reinforce算法中,权重是有蒙特卡洛方法来计算未来总体回报,会带来待优化的策略参数\theta只能在与环境交互完成一个epsiode后,才能进行更新,这种更新方式方差大,学习效率低。

为了提高PG的性能,通常会让未来回报G_{t}减去一个baseline,使得权重部分有正有负,如果为正,增加该动作的概率,反之减小概率。

\triangledown \bar{R}_{\theta }=\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_{n}}\left ( \sum_{t^{'=t}}^{T_{n}}\gamma ^{t^{'}-t}r_{t^{'}}^{n}-b \right )\triangledown log\pi _{\theta} \left ( a_{t}^{n}|s_{t}^{n} \right )

TD时序差分:\triangledown \bar{R}_{\theta }=\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_{n}}Q^{n}\left ( s_{t}^{n}, a_{t}^{n} \right )\triangledown log\pi _{\theta} \left ( a_{t}^{n}|s_{t}^{n} \right ),在每一个step后更新参数,更新的频率高于MC蒙卡洛——actor-critic

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,我们可以了解到强化学习智能体训练需要使用算法和情节管理器来保存候选智能体,并且可以通过并行计算和GPU加速来加快训练速度。同时,如果您具有Parallel Computing Toolbox™软件或MATLAB Parallel Server™软件,则可以在多核计算机、计算机群集或云资源上运行并行仿真。 针对您的问题,如果您想使用MATLAB实现强化学习平衡车,可以使用Policy Gradient (PG)算法。PG算法是一种基于梯度的强化学习算法,它通过优化策略来最大化累积奖励。在平衡车问题中,智能体需要学习如何控制平衡车以保持平衡。 以下是一个使用PG算法训练平衡车的MATLAB示例代码: ```matlab % 设置环境 env = rlPredefinedEnv("RLCopter"); % 创建神经网络 statePath = [ imageInputLayer([4 1 1],'Normalization','none','Name','observation') fullyConnectedLayer(16,'Name','fc1') reluLayer('Name','relu1') fullyConnectedLayer(16,'Name','fc2') reluLayer('Name','relu2') fullyConnectedLayer(2,'Name','output')]; actionPath = [ imageInputLayer([2 1 1],'Normalization','none','Name','action') fullyConnectedLayer(16,'Name','fc3')]; criticNetwork = [ statePath additionLayer(2,'Name','add') actionPath fullyConnectedLayer(1,'Name','CriticOutput')]; actorNetwork = [ statePath additionLayer(2,'Name','add') actionPath tanhLayer('Name','ActorOutput')]; criticOpts = rlRepresentationOptions('LearnRate',1e-03,'GradientThreshold',1); critic = rlValueRepresentation(criticNetwork,env.getObservationInfo, ... 'Observation',{'observation'},'Action',{'action'},criticOpts); actorOpts = rlRepresentationOptions('LearnRate',1e-03,'GradientThreshold',1); actor = rlStochasticActorRepresentation(actorNetwork,env.getActionInfo, ... 'Observation',{'observation'},'Action',{'ActorOutput'},actorOpts); % 创建代理 agentOpts = rlPGAgentOptions(... 'DiscountFactor',0.99, ... 'ExperienceHorizon',256, ... 'EntropyLossWeight',0.02, ... 'UseBaseline',true, ... 'BaselineMode',"moving-average", ... 'BaselineHorizon',1e4, ... 'NumStepsToLookAhead',128, ... 'AdvantageEpsilon',1e-5, ... 'MiniBatchSize',64); agent = rlPGAgent(actor,critic,agentOpts); % 训练代理 trainOpts = rlTrainingOptions(... 'MaxEpisodes',10000, ... 'MaxStepsPerEpisode',500, ... 'Verbose',false, ... 'Plots','training-progress', ... 'StopTrainingCriteria','AverageReward', ... 'StopTrainingValue',1000, ... 'ScoreAveragingWindowLength',50); trainingStats = train(agent,env,trainOpts); ``` 在这个示例中,我们首先设置了环境,然后创建了一个神经网络,包括一个状态路径和一个动作路径。接下来,我们创建了一个评论家和一个演员,并将它们传递给一个PG代理。最后,我们使用训练选项来训练代理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值