目录
💥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.