原创|一文读懂强化学习的Q 学习算法

9ca76910a533b8558bbfd257f476d5da.png

作者:陈之炎‍‍‍‍
本文约4800字,建议阅读9分钟
本文介绍一篇收录在《IEEE TRANSACTIONS ON INFORMATION THEORY》的论文。

强化学习中的价值学习算法是一类重要的强化学习算法,它们通过学习价值函数来指导智能体的行为选择。价值函数表示在特定状态下,智能体采取不同行动所能获得的长期累积回报的期望值。Q学习是一种基于状态-行动值函数(Q函数)的强化学习算法。在每个时间步,Q学习通过更新Q函数来改善策略。该算法通过不断地更新Q函数来估计状态-行动值函数的最优值,并利用该函数来制定最优策略。

b8c998fa3df60b33cf3fbd0d30a53333.png

图片来源:网络

Q-Learning算法用于在未知环境中训练一个智能体(agent)做出最优决策。该算法的核心思想是学习一个价值函数Q(s,a),其中s表示当前状态,a表示智能体在该状态下采取的行动。Q(s,a)表示在当前状态下采取行动a所能获得的期望奖励值。Q值越高,则说明该行动对获得最大奖励的贡献越大。

在训练过程中,智能体不断地探索环境,通过观察每个状态下采取不同行动所获得的奖励来更新Q值。具体来说,智能体采取当前状态下Q值最高的行动,然后观察该行动带来的奖励,根据奖励值更新Q值,以此来不断优化Q值函数,使其逐渐收敛到最优值。更新Q值的公式为:   

Q(s,a) = Q(s,a) + α(r + γ max Q(s',a') - Q(s,a))

其中,Q(s,a)表示在状态s下采取行动a的Q值,α是学习率(控制每次更新的权重),r是执行行动a后,智能体能够得到的立即奖励,γ是折扣因子(控制未来奖励的权重,表示对未来奖励的重视程度),s'和a'表示执行当前行动后进入的新状态和新的行动,max(Q(s',a'))表示在下一个状态s'中采取所有可能行动中的最大Q值。

通过不断地迭代更新Q值,智能体最终可以学习到在不同状态下采取不同行动的最优策略,从而实现自主决策。

下面通过一个具体的例子详细解读Q-Learning算法。

问题的提出:智能体需要学习一张迷宫地图,其中包含起点和终点,并且智能体只能根据自己的当前位置和周围环境信息,采取一些行动。在每个时间步骤,智能体都需要根据其当前状态(位置)和执行的行动,更新其Q值,Q值表示采取该行动能够带来的长期回报(预期收益)。通过迭代地更新Q值,智能体可以逐渐学习到每个状态下采取每个行动的预期收益,进而找到从起点到终点的最短路径。

下面是求解迷宫问题的源代码:

import numpy as np
import random
# 迷宫环境,0表示可以走的路,1表示墙
maze = np.array([[0, 0, 0, 1, 0],
                 [1, 1, 0, 1, 0],
                 [0, 0, 0, 0, 0],
                 [0, 1, 1, 1, 0],
                 [0, 0, 0, 1, 0]])    
           
# 定义Q表,初始值为0
Q = np.zeros([5, 5, 4])
# 定义参数
alpha = 0.1   # 学习率
gamma = 0.9   # 折扣因子
epsilon = 0.1 # 探索率
num_episodes = 1000  # 训练次数
# 定义行动
actions = ['up', 'down', 'left', 'right']
# Q-Learning算法主循环
for i in range(num_episodes):
    # 随机选择起始状态
    state = [random.randint(0, 4), random.randint(0, 4)]
        # 一直循环,直到到达终点或超过最大步数
    while state != [2, 4]:
        # 探索或利用策略选择行动
        if random.uniform(0, 1) < epsilon:
            action = random.choice(actions)
        else:
            action = actions[np.argmax(Q[state[0], state[1]])]
               # 执行行动并观察奖励和新状态    
        if action == 'up' and state[0] > 0 and maze[state[0]-1, state[1]] == 0:
            new_state = [state[0]-1, state[1]]
            reward = 0
        elif action == 'down' and state[0] < 4 and maze[state[0]+1, state[1]] == 0:
            new_state = [state[0]+1, state[1]]
            reward = 0
        elif action == 'left' and state[1] > 0 and maze[state[0], state[1]-1] == 0:
            new_state = [state[0], state[1]-1]
            reward = 0
        elif action == 'right' and state[1] < 4 and maze[state[0], state[1]+1] == 0:
            new_state = [state[0], state[1]+1]
            reward = 0
        else:
            new_state = state
            reward = -1
              # 更新Q值
        Q[state[0], state[1], actions.index(action)] = (1 - alpha) * Q[state[0], state[1], actions.index(action)] + \
                                              alpha * (reward + gamma * np.max(Q[new_state[0], new_state[1]]))
                # 更新状态
        state = new_state
        # 打印每100次训练的结果
    if i % 100 == 0:
        print("Episode {}: Steps = {}".format(i, -Q[0, 0, 0]))
``

Q-learning算法可以在迭代的过程中不断更新Q-table,直到Q值收敛为止。在Q值收敛后,智能体可以根据Q-table选择在每个状态下采取的最优行动,从而找到从起点到终点的最短路径。 

Q-Learning算法可以应用于多种场景,包括但不限于以下几个示例:

l游戏智能体训练:通过Q-Learning算法训练游戏智能体,使其学会在游戏中采取最优的行动策略,以获得最高的得分。例如,在经典的Atari游戏中,Q-Learning算法可以被用来训练游戏智能体,在不断地尝试中学会如何最优化地操作游戏控制器。

  • 机器人路径规划:Q-Learning算法可以应用于机器人路径规划领域。通过学习机器人在不同状态下采取不同行动的最优策略,可以实现机器人在复杂环境中快速、准确地找到最优路径。

  • 自然语言处理:Q-Learning算法可以应用于自然语言处理领域。例如,可以将自然语言问题转化为状态,将回答问题的语句转化为行动,使用Q-Learning算法来学习最优的回答策略。

  • 股票交易决策:Q-Learning算法可以应用于股票交易决策领域。例如,可以将不同股票价格和市场指数作为状态,将不同的交易行为(例如买进或卖出)作为行动,使用Q-Learning算法来学习最优的交易策略。

结论:Q-learning算法是一种无模型(model-free)强化学习方法,无需提前获取完备的模型,通过不断地迭代更新Q值,智能体最终可以学习到在不同状态下采取不同行动的最优策略,从而实现自主决策。   

编辑:王菁‍‍‍

作者简介

陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位。

数据派研究部介绍

数据派研究部成立于2017年初,以兴趣为核心划分多个组别,各组既遵循研究部整体的知识分享实践项目规划,又各具特色:

算法模型组:积极组队参加kaggle等比赛,原创手把手教系列文章;

调研分析组:通过专访等方式调研大数据的应用,探索数据产品之美;

系统平台组:追踪大数据&人工智能系统平台技术前沿,对话专家;

自然语言处理组:重于实践,积极参加比赛及策划各类文本分析项目;

制造业大数据组:秉工业强国之梦,产学研政结合,挖掘数据价值;

数据可视化组:将信息与艺术融合,探索数据之美,学用可视化讲故事;

网络爬虫组:爬取网络信息,配合其他各组开发创意项目。

点击文末“阅读原文”,报名数据派研究部志愿者,总有一组适合你~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派THUID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

未经许可的转载以及改编者,我们将依法追究其法律责任。

关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。

bb497897f466e32c278912140b97f005.png

新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

点击“阅读原文”拥抱组织

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值