基于深度Q学习的真实机器人模拟研究(Matlab代码实现)

  💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

奖励变化

层的变化

训练集更长,更多

其他创新点

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、文档下载


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

与Q-learning不同,在Q-learning中,状态-动作对的Q(s,a)存储在表中,深度Q-learning涉及使用深度学习模型预测给定状态下所有动作的Q值(深度)神经网络。如果状态被表示为图像,那么卷积
可以使用神经网络。
因此,对于CNN来说,这本质上是一个回归问题,也称为深度Q-网络(DQN),其中DQN预测所有动作的Q值对应于输入状态图像。

  1. 初始化:初始化状态空间,执行一些随机动作来收集数据,用于初始化神经网络/填充经验回放记忆。最后,定义神经网络层并用随机数据训练网络的重要步骤(相当于用随机权重初始化)
  2. 训练期:在此处初步定义网络和其他参数的训练选项,从而对网络进行逐步的情景训练(学习)。初始位置将在此处定义。
  3. 验证/评估:通过运行特定数量的情节实验来验证学习(训练好的网络)。此处需要定义验证的初始位置。

更棒的创新点可以做的改进:

  1. 奖励变化:该程序可以尝试使用+ve目标周围的高斯/概率分布和负概率分布围绕矿场,造成不同的奖励场。
  2. 层的变化:层的尺寸受GPU的限制,一些变化可以在初始卷积层中尝试使用更大的过滤器尺寸。一些详细可以分析哪些期望的功能应作为目标在卷积层中识别。还应注意到,在后面的实验中,使用16个大小为8的滤波器的单个卷积层获得了类似的结果。此外,在最后一个卷积层之间还可以有一个更大的全连接层该层和最后一个完全连接层。
  3. 训练集更长,更多:训练集的最大步数和训练期内的剧集数量应增加探索状态空间。

您的描述已经非常详细地概述了深度Q-网络(DQN)的基本概念、初始化、训练、验证/评估过程,以及可能的改进方向。下面我将进一步扩展这些点,特别是针对提出的改进建议进行详细说明:

奖励变化

使用高斯/概率分布的奖励场

  • 目的:通过引入不确定性,使模型能够学习更加鲁棒的策略,以应对环境中可能的奖励波动。
  • 实现方式
    • 在正奖励(如到达目标)周围设置高斯噪声,使得偶尔即使达到目标也可能获得较低的奖励,反之亦然。
    • 对于负奖励(如撞到障碍物),可以设定一个固定的惩罚值,但也可以考虑根据障碍物类型或位置给予不同程度的惩罚。
    • 这样的设计可以模拟现实世界中奖励的不确定性,使模型更加健壮。

层的变化

调整卷积层和网络结构

  • 更大的过滤器尺寸
    • 初始卷积层使用较大的过滤器可以帮助模型捕捉更多的全局特征,尤其是在处理较大尺寸的图像时。
    • 但需要注意,过大的过滤器可能会导致计算成本增加,并且可能引入不必要的冗余信息。
  • 详细分析功能目标
    • 根据任务的具体需求(如识别特定对象、跟踪移动目标等),分析哪些特征是必要的,并据此设计卷积层的结构和参数。
  • 增加全连接层
    • 在卷积层之后增加更多的全连接层可以增强网络的非线性处理能力,有助于更好地拟合复杂的Q值函数。
    • 但同样需要注意过拟合和计算成本的问题。

训练集更长,更多

扩展训练数据集

  • 增加最大步数
    • 每个训练情节(episode)的最大步数增加,可以使得模型在更长的序列中学习,有助于捕捉长期依赖关系。
  • 增加训练期内的剧集数量
    • 通过增加训练集中的剧集数量,模型可以探索更多的状态空间,减少因数据不足而导致的过拟合问题。
  • 数据多样性
    • 在训练过程中,可以尝试引入不同的初始位置、环境设置或难度级别,以增加数据的多样性,帮助模型学习到更加通用的策略。

其他创新点

  • 优先经验回放
    • 不是简单地均匀地从经验回放池中采样,而是根据样本的重要性(如TD误差)进行优先采样,以提高训练效率。
  • 双网络结构
    • 使用两个独立的神经网络:一个用于选择动作(行为网络),另一个用于评估Q值(目标网络)。这有助于稳定训练过程,减少由于目标值频繁变化而导致的训练波动。
  • 噪声注入
    • 在网络的输入或参数中注入适量的噪声,以增加模型的泛化能力,防止过拟合。

通过上述改进和创新点的应用,可以进一步提升DQN的性能和鲁棒性,使其更好地适应复杂多变的环境和任务。

详细文档见第4部分。

📚2 运行结果

部分代码:

%Initialize the environment:
clear all
close all
X=[20;25;pi/4];
%figure('Position',[0 0 631 600]) %size to get 489x489 image saved from fig
figure('Position',[0 0 316 300]) %size to get 245x245 image saved from fig
F = getframe;    
[I,Map] = frame2im(F);
while(1) %forcing to get a image of 489x489
close all;
figure('Position',[0 0 316 300]);

F = getframe;    
[I,Map] = frame2im(F);
    if(size(I,1)==245 && size(I,2)==245)
        break;
    end
end
%figure('Position',[0 0 526 500])
%figure('Position',[0 0 316 300])
rectangle('Position',[0,0,50,50]);
rectangle('Position',[25,25,2,2],'EdgeColor','k');

rectangle('Position',[10,40,2,2],'Curvature',[1 1]);
rectangle('Position',[20,30,2,2],'Curvature',[1 1]);
rectangle('Position',[20,5,2,2],'Curvature',[1 1]);
rectangle('Position',[40,30,2,2],'Curvature',[1 1]);
%plot(X(1),X(2));

hold on

p = plot(X(1),X(2),'k*');

%p=plot(X(1),X(2),'r*');
hold off
%%
% Perform random actions to generate Get Data for Training the CNN first
% time, This is analogous to Initializing the CNN with random weights.
for i=1:10
    action=choose_random_action_old();
       % X=[10;10;pi/4]; %can be randomized later
                X=[randi([4 46]);randi([4 46]);randi([1 6])*rand()]; %randomized state

    X=stateUpdate_DQN(X,action);%timestep of 1 unit
    reward(:,:,:,i)=get_reward_old(X,action);%reward must be a(1x1x4) output here, for 4 actions, (as required by CNN-MATLAB)
    %rewards act as random targets!

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码、文档下载

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值