如何为PPO pretrain随机演员网络培训?

12个视图(30天)
我想创建一个输出操作数组的随机演员网络10 0和1之间的值观察28归一化值的数组。我指定如下上限和下限,以确保演员的输出是在0和1之间:
ActionInfo = rlNumericSpec (numActions [1],“LowerLimit”,(0,0,0,0,0,0,0,0,0,0),“UpperLimit”,(1;1;1;1;1;1;1;1;1;1]);
我的随机网络看起来如下:
我已经创建了一个标准化的训练数据集(目标尺寸输入维度28日10)。我怎么使用这个数据集pretrain以上网络?
澄清:我想训练开始前PPO代理培训网络。

接受的答案

安特兰
安特兰 2021年5月13日
嗨,简,
你可以pretrain随机演员与深度学习工具箱 trainNetwork 一些额外的工作。Emmanouil最初给了一些好的建议,但我想添加这些步骤:
您需要一个自定义层损失自随机演员网络输出均值和标准差,而你的目标行动。你可以试试最大日志可能损失。你可以按照指令 在这里 创建一个定制的损失层(你不必实现向后通过自动分化会照顾)
%我们想最大化的目标日志f (x), f (x)是概率密度函数遵循正常的(意思是,σ)
% =损失目标日志(f (x)) = - = 1/2 *日志(2 *π)+日志(σ)+ 1/2 * ((xμ)/σ)^ 2;
记住,你必须防止日志(0),增加每股收益是充分的。x是你的行动目标。
4评论
安特兰
安特兰 2021年5月17日
正如前面提到的错误消息,价值区分必须是一个标量。因此,你需要计算的意思在每一批的损失。另外,我不明白为什么你需要一个for循环计算损失。我们可以vectorize计算之后(因为σ,T,μ具有相同的大小)
% vectorize损失计算
损失= 0.5 *日志(2 *π)+日志(σ+ eps) + 0.5 * ((tμ)。/(σ+ eps)) ^ 2;
%的意思是在每一批的损失
损失=总和(损失,“所有”);
损失= / batchSize损失;

登录置评。

答案(1)

Emmanouil Tzorakoleftherakis
Emmanouil Tzorakoleftherakis 2021年5月13日
你好,
既然你已经有了一个数据集,你将不得不使用深度学习工具箱来获得你最初的政策。看看下面的例子来了解:
1评论
Jan Dewez
Jan Dewez 2021年5月13日
你好Emmanouil,
谢谢你的回应,但我怎么训练随机演员与输出维度20当火车数据维度10 ?我需要把我的火车,这样我获得意味着&圣开发者吗?

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!