Reinforcement Learning - Q-learning

2. Q learning

Q-learning是我们将讨论的第一个可以解决 MDP 中最优策略的技术。Q-learning 的目标是找到一个最优策略,即所有连续步骤的总奖励的期望值是可实现的最大值。因此,换句话说,Q-learning 的目标是通过学习每个状态-动作对的最优 Q 值来找到最优策略。

初始我们需要一个Q-Table来记录所有更新后的值,该表的行表示所有的位置,而列表示所有有限的行为,数字表示执行该行为后的reward.

以下是 3 个基本步骤:

  1. 代理开始于状态 (s1) 采取行动 (a1) 并获得奖励 (r1)
  2. 代理通过参考具有最高值 (max)随机 (epsilon, ε)的 Q 表来选择动作
  3. 更新 q 值

初始时,所有的值都为0.那么如何进行第一个动作的选择? 使用下面两个方法

2 ways

  • follow Q table and choice one action by max future reward - exploiting 
  • act randomly to explore new states - exploring + can balance using epsilon (ε)

为了在利用和探索之间取得平衡,我们使用了所谓的 epsilon 贪婪策略。通过这种策略,我们定义了一个 探索率 ε我们最初设定的1. 这个探索率是我们的代理将探索环境而不是利用它的概率。和ε=1, 这是100% 确定代理将从探索环境开始。

随着代理对环境的了解更多,在每个新剧集开始时,ε将以我们设置的某个速率衰减,因此随着代理对环境的了解越来越多,探索的可能性变得越来越小。一旦有机会探索和了解环境, 代理将在利用环境方面变得 “贪婪” 。

为了确定代理在每个时间步是选择探索还是利用,我们生成一个随机数0和1. 如果这个数字大于 epsilon,那么代理将通过利用来选择其下一个动作,即它将从 Q 表中为其当前状态选择具有最高 Q 值的动作。否则,它的下一个动作将通过探索来选择,即随机选择它的动作并探索环境中发生的事情。

if random_num > epsilon:
 # 通过开发选择动作
else :
 # 通过探索选择动作

学习率

学习率是一个介于0和1,这可以被认为是代理为新的 Q 值放弃给定状态-动作对的 Q 表中先前 Q 值的速度。

因此,例如,假设我们在 Q 表中有一个 Q 值,用于代理在前一个时间步中经历的任意状态-动作对。好吧,如果智能体在了解了更多关于环境的信息后,在稍后的时间步经历了相同的状态-动作对,则需要更新 Q 值以反映智能体现在对未来回报的预期变化。

代理在单集之后不会学到太多东西,但最终会进行足够的探索(步骤和集)它将收敛并学习最佳 q 值或 q-star ( Q∗)。

参考: 代码Capstone Project: Reinforcement Learning from Scratch with Python - Learn Python with Rune

3. SARSA

4. Deep Q Neural Network (DQN):

Policy Gradients -Policy network- stochastic policy

### 基于强化学习的时间知识图谱问答模型 RTA 的实现与应用 #### 时间知识图谱的重要性 时间知识图谱能够捕捉事件随时间的变化和发展,对于理解动态过程至关重要。通过构建包含时间维度的知识图谱,可以更精确地表示实体间的关系及其演变情况[^1]。 #### 强化学习的作用 利用强化学习算法来增强时间知识图谱问答系统的性能是一种有效的方法。该方法允许系统根据反馈不断调整自身的策略,在面对复杂查询时做出更加合理的决策。具体来说,强化学习可以帮助优化路径选择、关系预测以及答案生成等多个方面的工作流程。 #### 模型架构设计 为了有效地处理涉及时间因素的问题,RTA 模型通常会采用一种混合结构,即结合传统的神经网络组件(如LSTM 或 Transformer)用于编码输入序列中的时间和上下文信息,并引入基于Q-learning或者Policy Gradient的强化学习模块来进行下一步动作的选择和评估。这种组合不仅提高了对长期依赖性的建模能力,还增强了应对不确定性环境下的适应性和鲁棒性[^2]。 ```python import torch.nn as nn from transformers import BertModel, BertTokenizer class TimeQA(nn.Module): def __init__(self): super(TimeQA, self).__init__() self.bert = BertModel.from_pretrained('bert-base-uncased') def forward(self, input_ids, attention_mask=None): outputs = self.bert(input_ids=input_ids, attention_mask=attention_mask) return outputs.last_hidden_state[:, 0, :] ``` 此代码片段展示了如何初始化一个简单的BERT模型作为时间感知问答的基础框架的一部分。实际的应用中还需要加入更多针对特定任务定制化的层和技术细节以完成整个RTA体系的设计[^3]。 #### 应用案例分析 在智能客服领域,RTA 可以为用户提供更为精准的历史订单追踪服务;医疗健康行业中,则可用于辅助医生回顾患者病史并提供个性化的治疗建议;金融风控部门也能借助此类技术更好地识别潜在风险信号,提前采取预防措施等。总之,随着应用场景日益多样化,基于强化学习的时间知识图谱问答模型将在众多行业发挥重要作用[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值