【强化学习】使用迷宫的强化学习 (Q-Learning) 算法(Matlab实现)

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

一、引言

在人工智能和机器学习领域,强化学习是让智能体通过与环境交互,不断试错以学习最优策略的重要方法。其中,Q - Learning 算法作为一种经典的无模型强化学习算法,以其简单有效、易于实现的特点,在诸多领域得到广泛应用。迷宫问题是强化学习中一个经典且直观的测试场景,它模拟了智能体在复杂环境中寻找最优路径的过程,通过在迷宫中应用 Q - Learning 算法,能够深入理解强化学习的基本原理和工作机制,同时为解决更复杂的实际问题提供理论基础和实践经验。

二、迷宫问题描述

迷宫是一个由多个格子组成的二维空间,其中包含起点、终点、障碍物以及可通行的路径。智能体初始位于起点,其目标是在不触碰障碍物的前提下,以最短的步数或最少的代价到达终点。在每一步行动中,智能体可以选择向上下左右等方向移动,每次移动后,环境会根据其行动结果给予相应的奖励或惩罚,如成功到达终点获得正奖励,撞到障碍物或远离目标受到负奖励。智能体需要根据这些奖励反馈不断调整自己的行动策略,最终找到从起点到终点的最优路径。

三、Q - Learning 算法原理

核心概念 Q - Learning 算法的核心是一个名为 Q 表(Q - table)的数据结构,它存储了智能体在每个状态(迷宫中的每个格子位置)下采取不同动作(上下左右移动)的价值估计值,即 Q 值。Q 值代表了在特定状态下选择某个动作后,智能体未来所能获得的累积奖励的期望。智能体的目标就是通过不断与环境交互,更新 Q 表中的值,使得每个状态下选择的动作对应的 Q 值最大,从而逐步学习到最优策略。 算法流程 1. 初始化:将 Q 表中的所有 Q 值初始化为零或随机值,同时设定学习率(控制每次更新 Q 值的步长)、折扣因子(表示对未来奖励的重视程度)等参数。智能体被放置在迷宫的起点。 2. 选择动作:智能体根据当前所在状态和 Q 表,采用一定的策略(如 ε - 贪婪策略)选择一个动作。ε - 贪婪策略以大概率(1 - ε)选择当前 Q 值最大的动作,以小概率(ε)随机选择一个动作,这样既能利用已有的经验,又能探索新的路径。 3. 执行动作并获取反馈:智能体执行选定的动作,移动到新的位置。环境根据智能体的新位置给予相应的奖励,并将新状态反馈给智能体。 4. 更新 Q 表:根据当前状态、选择的动作、获得的奖励以及新状态下的最大 Q 值,使用 Q - Learning 的更新公式更新当前状态 - 动作对的 Q 值。更新公式的基本思想是将当前 Q 值朝着考虑即时奖励和未来可能获得的最大奖励的方向调整。 5. 循环迭代:将新状态作为当前状态,重复上述选择动作、执行动作、获取反馈和更新 Q 表的过程,直到智能体到达终点或达到最大迭代次数。

四、Q - Learning 在迷宫中的优势

1. 无模型学习:Q - Learning 算法不需要预先知道迷宫的具体结构和状态转移概率,只通过与环境的交互来学习最优策略。这使得它在面对复杂且未知的迷宫环境时具有很强的适应性,能够在不断探索中找到解决方案。 2. 通用性强:该算法可以应用于各种类型的迷宫,无论是简单的小型迷宫还是复杂的大型迷宫,只要定义好状态、动作和奖励机制,都可以使用 Q - Learning 算法进行求解。 3. 收敛性好:在满足一定条件下,Q - Learning 算法能够保证收敛到最优策略,即智能体最终能够找到从起点到终点的最优路径。这为解决迷宫问题提供了理论上的保证。

五、局限性与改进方向

局限性 1. 状态空间问题:当迷宫规模较大时,状态空间会急剧增加,Q 表的大小也会相应增大,导致存储和计算成本大幅上升,甚至可能出现维度灾难问题,使得算法效率低下。 2. 收敛速度慢:在复杂迷宫中,Q - Learning 算法可能需要进行大量的迭代才能收敛到最优策略,学习过程耗时较长。 改进方向 1. 函数逼近:使用神经网络等函数逼近器来代替 Q 表,将高维状态映射到动作价值,减少存储和计算开销,提高算法在大规模状态空间中的性能。 2. 探索策略优化:设计更高效的探索策略,如基于信息增益的探索策略,能够在保证探索效果的同时,加快收敛速度。

六、应用与前景

Q - Learning 算法在迷宫问题中的应用不仅有助于理解强化学习的基本原理,还为解决实际问题提供了借鉴。在机器人导航、游戏开发、资源分配等领域,都可以将问题抽象为类似迷宫的环境,使用 Q - Learning 算法寻找最优解决方案。随着人工智能技术的不断发展,Q - Learning 算法有望在更多复杂场景中发挥重要作用,为实现智能决策和自动化控制提供有力支持。

七、结论

通过在迷宫问题中应用 Q - Learning 算法,我们可以清晰地看到强化学习的魅力和潜力。尽管该算法存在一些局限性,但通过不断的改进和优化,它在解决复杂问题方面具有广阔的应用前景。未来,随着研究的深入和技术的进步,Q - Learning 算法将不断完善,为推动人工智能领域的发展做出更大贡献。

📚2 运行结果

主函数部分代码:

function Random_Maze_Walk
clear all;
close all;

global maze2D;
global tempMaze2D;

DISPLAY_FLAG = 1; % 1 means display maze and 0 means no display
NUM_ITERATIONS = 10; % change this value to set max iterations 

% initialize global variable about robot orientation
currentDirection = 1; % robot is facing up
% row col will be initalized with the position of starting point 
% in the loop in which maze is read below
fileName = 'maze-9-9.txt';
[maze2D,row,col] = Read_Maze(fileName);
% show the maze
imagesc(maze2D),colorbar

% make some copies of maze to use later for display
orgMaze2D = maze2D;
orgMaze2D(row,col) = 50;
[goalX,goalY,val] = find(orgMaze2D == 100);
tempMaze2D = orgMaze2D;

% robots starting position
startX = row;
startY = col;

% Direction selection
% 0 means turn left
% 1 means turn right
% 2 means Move Ahead in current direction 
% if this value is set to 2 then random walker will have one more action 
NUM_DIRECTIONS = 1; % 1, 2

for j=1:NUM_ITERATIONS
    status = -1;
    countActions = 0;
    countSteps = 0;
    tempMaze2D(goalX,goalY) = 100;
    row = startX; col = startY;
    currentDirection = 1;
    
    while status ~= 3
        % select whether to call Turn Left or Turn Right below
        direction = round(rand*NUM_DIRECTIONS);
                
        % get a rand number between 0 - 3 to turn left right in selected direction
        % that many times
        randMove = round(rand*3);
        
        for i=0:randMove
            if direction == 0
                % Turn Left and then move ahead                
                currentDirection = TurnLeft(currentDirection);            
            elseif direction == 1
                % Turn Right and then move ahead                
                currentDirection = TurnRight(currentDirection);            
            end                
        end

🎉3 参考文献

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

[1]陈晓轩.先验知识启发的Q-learning势能奖励在线学习技术[D].国防科技大学,2022.DOI:10.27052/d.cnki.gzjgu.2022.000220.

[2]褚建华.Q-learning强化学习算法改进及其应用研究[D].北京化工大学,2009.

🌈4 Matlab代码实现

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值