当前位置: 首页 > news >正文

用DQN实现Atari game(Matlab代码实现)

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码

💥1 概述

强化学习研究的是Agent和环境交互中如何学习最优策略,以获得最大收益。Agent需要能够观察环境(observe)所处的状态,评判(value)状态下每个动作的价值,并选出最优的动作(act)来和环境交互。因此,observe,value和act是强化学习Agent必不可少的元素。

对于复杂的问题,state维度非常大,我们很难基于tabular method来判断每一个(state, action)的价值。这种情况下,我们利用function approximation方法,构建一个深度神经网络(Deep-Q Network, DQN),来估计(state, action)的价值。value()中Deep-Q Network模块就是一个神经网络,输入是atari game中的一帧图像,输出是每个action的价值。

强化学习,指的就是Agent与环境交互,不断强化,不断学习,最终找到解决问题的最优策略,那么学习(learn)就是强化学习必不可少的元素。在深度强化学习中,主要关注的就是DQN权重的学习,与深度神经网络的学习很相近,都是算一个loss,然后通过back-prop更新权重。

📚2 运行结果

主函数部分代码:

% RunDQN.m

clear; clc; close all;

tic;

% First specify if you use Octave (true) or Matlab (false)

Octave = false;

% Set State for Random Generator

if Octave

 rand('state', 895647); % 895647

else

 rng(895647);

end

global fieldHeight

global fieldWidth

global Memory

% Fix size of the Pong Field

fieldHeight = 64;

fieldWidth = 32;

% ---------------------- Step 1: Initializazion ------------------------ %

% ---------------------- 1. Setup Learning Parameters ------------------ %

if Octave

 StartLearning = 1600 ;   % # of Random Episodes before Learning starts

 NEpisodes   = 20000;   % Octave is much slower but this works as well (at least on Windows?)

 LearningRate  = 6e-1 ;

 MaxMemory   = 1e4  ;   % Size of the Memory (Again smaller for Octave)

 UpdateTarget  = 4001 ;   % Periode with which Target is updated

else

 StartLearning = 5000 ;   % # of Random Episodes before Learning starts

 NEpisodes   = 46000; 

 LearningRate  = 4e-1 ;

 MaxMemory   = 1e5 ;   % Size of the Memory

 UpdateTarget  = 10001;   % Periode with which Target is updated

end

🎉3 参考文献

​[1]董永峰,杨琛,董瑶等.基于改进的DQN机器人路径规划[J].计算机工程与设计,2021,42(02):552-558.DOI:10.16208/j.issn1000-7024.2021.02.037.

👨‍💻4 Matlab代码

http://www.lryc.cn/news/38472.html

相关文章:

  • 【JavaSE专栏11】Java的 if 条件语句
  • 【opensea】opensea-js 升级 Seaport v1.4 导致的问题及解决笔记
  • JS语法(扫盲)
  • 归并排序的学习过程(代码实现)
  • add_header重写的坑
  • 跑步耳机入耳好还是不入耳好,最适合运动的蓝牙耳机
  • 深度学习知识点简单概述【更新中】
  • 【编程基础】009.输入两个正整数m和n,求其最大公约数和最小公倍数。
  • Golang错误处理
  • English Learning - L2 语音作业打卡 复习对比 [ɑ:] [æ] Day18 2023.3.10 周五
  • LabVIEW中以编程方式获取VI克隆名称
  • Mysql count(*)的使用原理以及InnoDb的优化策略
  • 一文入门HTML+CSS+JS(样例后续更新)
  • 【STL】Vector剖析及模拟实现
  • 数据库建表的一些技巧
  • 线程(一)
  • [深入理解SSD系列 闪存实战2.1.8] NAND FLASH Multi Plane Program(写)操作_multi plane 为何能提高闪存速度
  • 计算机网络(第八版)——第一章知识总结
  • Linux学习笔记
  • 树与二叉树(概念篇)
  • C++回顾(二十五)—— map/multimap容器
  • 7.3 向量的数量积与向量积
  • Qt静态扫描(命令行操作)
  • 【Hadoop】配置文件
  • python进程池
  • 笔记本固态盘数据丢失怎么办?笔记本固态盘怎么恢复数据
  • 堆的结构与实现
  • Pandas快速入门
  • LVGL学习笔记18 - 表Table
  • 嵌入式安防监控项目——html框架分析和环境信息刷新到网页