Maison >Périphériques technologiques >IA >Étendez Q-Learning avec Dyna-Q pour améliorer la prise de décision

Étendez Q-Learning avec Dyna-Q pour améliorer la prise de décision

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌avant
2024-01-02 11:02:212374parcourir

Q-Learning est un algorithme crucial sans modèle dans l'apprentissage par renforcement qui se concentre sur l'apprentissage de la valeur ou de la « valeur Q » des actions dans un état spécifique. Cette approche fonctionne bien dans des environnements imprévisibles car elle ne nécessite pas de modèle prédéfini de l’environnement environnant. Il s’adapte efficacement aux transformations aléatoires et aux diverses récompenses, ce qui le rend adapté aux scénarios aux résultats incertains. Cette flexibilité fait du Q-Learning un outil puissant lorsque des décisions adaptatives sont nécessaires sans connaissance préalable de la dynamique environnementale.

Étendez Q-Learning avec Dyna-Q pour améliorer la prise de décision

Étendez Q-Learning avec Dyna-Q pour améliorer la prise de décision

Explorez Dyna-Q, un algorithme avancé d'apprentissage par renforcement qui étend Q en combinant une expérience du monde réel avec une planification simulée -Apprentissage.

Q-Learning est un algorithme crucial sans modèle dans l'apprentissage par renforcement qui se concentre sur l'apprentissage de la valeur ou de la « valeur Q » d'une action dans un état spécifique. Cette approche fonctionne bien dans des environnements imprévisibles car elle ne nécessite pas de modèle prédéfini de l’environnement environnant. Il s’adapte efficacement aux transformations aléatoires et aux diverses récompenses, ce qui le rend adapté aux scénarios aux résultats incertains. Cette flexibilité fait de Q-Learning un outil puissant pour les applications nécessitant une prise de décision adaptative sans connaissance préalable de la dynamique environnementale.

Processus d'apprentissage

Q-learning fonctionne en mettant à jour le tableau des valeurs Q pour chaque action dans chaque état. Il utilise l'équation de Bellman pour mettre à jour de manière itérative ces valeurs en fonction des récompenses observées et de leurs estimations des récompenses futures. Une politique – une stratégie de choix d’actions – est dérivée de ces valeurs Q.

  • Valeur Q - Représente la récompense future attendue qui peut être obtenue en effectuant une action spécifique dans un état donné
  • Règle de mise à jour - La valeur Q est mise à jour comme suit :
    • Q (état, action) ← Q (état, action) + α (Récompense + maximum γ Q (état suivant, a) − Q (état, action))
    • Le taux d'apprentissage α représente l'importance des nouvelles informations et le coefficient de remise γ représente l'importance des récompenses futures.

Le code fourni est utilisé comme fonction de formation de Q-Learner. Il utilise l'équation de Bellman pour déterminer les transitions les plus efficaces entre les états.

def train_Q(self,s_prime,r): 			  		 			     			  	   		   	  			  	
        self.QTable[self.s,self.action] = (1-self.alpha)*self.QTable[self.s, self.action] + \
            self.alpha * (r + self.gamma * (self.QTable[s_prime, np.argmax(self.QTable[s_prime])])) 
        self.experiences.append((self.s, self.action, s_prime, r))
        self.num_experiences = self.num_experiences + 1
        self.s = s_prime
        self.action = action
        return action 	

Exploration vs. Exploitation

Un aspect clé du Q-learning est d'équilibrer l'exploration (essayer de nouvelles actions pour découvrir leurs récompenses) et l'exploitation (utiliser des informations connues pour maximiser les récompenses). Les algorithmes utilisent souvent des stratégies telles que ε-gourmandes pour maintenir cet équilibre.

Commencez par définir le taux d'opérations aléatoires pour équilibrer l'exploration et l'exploitation. Implémentez un taux de décroissance pour réduire progressivement le caractère aléatoire à mesure que la table Q accumule plus de données. Cette approche garantit qu’au fil du temps, à mesure que les preuves s’accumulent, l’algorithme se tourne de plus en plus vers l’exploitation.

if rand.random() >= self.random_action_rate:
  action = np.argmax(self.QTable[s_prime,:])  #Exploit: Select Action that leads to a State with the Best Reward
else:
  action = rand.randint(0,self.num_actions - 1) #Explore: Randomly select an Action.
    
# Use a decay rate to reduce the randomness (Exploration) as the Q-Table gets more evidence
self.random_action_rate = self.random_action_rate * self.random_action_decay_rate

Introduction à Dyna-Q

Dyna-Q est une extension innovante de l'algorithme Q-Learning traditionnel et est à l'avant-garde de la combinaison d'une expérience réelle et d'une planification simulée. Cette approche améliore considérablement le processus d'apprentissage en intégrant des interactions réelles et des expériences simulées, permettant aux agents de s'adapter rapidement et de prendre des décisions éclairées dans des environnements complexes. En tirant parti de l'apprentissage direct des retours environnementaux et des informations obtenues grâce à la simulation, Dyna-Q propose une stratégie complète et efficace pour relever les défis où les données du monde réel sont rares ou coûteuses à acquérir.

Dyna-Q的组件

  1. Q-Learning:从真实经验中学习
  2. 模型学习:学习环境模型
  3. 规划:使用模型生成模拟体验

模型学习

  • 该模型跟踪转换和奖励。对于每个状态-动作对 (s, a),模型存储下一个状态 s′ 和奖励 r。
  • 当智能体观察到转换 (s, a,r,s′) 时,它会更新模型。

使用模拟体验进行规划

  • 在每个步骤中,代理从真实体验更新其 Q 值后,还会根据模拟体验更新 Q 值。
  • 这些体验是使用学习模型生成的:对于选定的状态-动作对(s,a),它预测下一个状态和奖励,并且Q值被更新,就好像已经经历了这种转变一样。

算法 Dyna-Q

  1. 初始化所有状态-动作对的 Q 值 Q(s, a) 和模型 (s, a)。
  2. 循环(每集):
    • 初始化状态 s。
    • 循环(针对剧集的每个步骤):
      • 使用派生自 Q 从状态 s 中选择操作 a(例如,ε-greedy )
      • 采取行动 a,观察奖励 r,然后下一个状态 s′
      • 直接学习:使用观察到的跃迁(s、a、r、s′)更新 Q 值
      • 模型学习:使用转换(s、a、r、s′)更新模型
      • 计划:重复 n 次:
        • 随机选择以前经历过的状态-动作对 (s, a)。
        • 使用模型生成预测的下一个状态 s′ 并奖励 r
        • 使用模拟跃迁 (s, a,r,s′) 更新 Q 值
        • s← s′。
  3. 结束循环 此功能将 Dyna-Q 计划阶段合并到前面提到的 Q-Learner 中,从而能够指定在每一集中运行的所需模拟量,其中操作是随机选择的。此功能增强了 Q-Learn 的整体功能和多功能性。
def train_DynaQ(self,s_prime,r): 			  		 			     			  	   		   	  			  	
        self.QTable[self.s,self.action] = (1-self.alpha)*self.QTable[self.s, self.action] + \
            self.alpha * (r + self.gamma * (self.QTable[s_prime, np.argmax(self.QTable[s_prime])])) 
        self.experiences.append((self.s, self.action, s_prime, r))
        self.num_experiences = self.num_experiences + 1
        
        # Dyna-Q Planning - Start
        if self.dyna_planning_steps > 0:  # Number of simulations to perform
            idx_array = np.random.randint(0, self.num_experiences, self.dyna)
            for exp in range(0, self.dyna): # Pick random experiences and update QTable
                idx = idx_array[exp]
                self.QTable[self.experiences[idx][0],self.experiences[idx][1]] = (1-self.alpha)*self.QTable[self.experiences[idx][0], self.experiences[idx][1]] + \
                    self.alpha * (self.experiences[idx][3] + self.gamma * (self.QTable[self.experiences[idx][2], np.argmax(self.QTable[self.experiences[idx][2],:])])) 
        # Dyna-Q Planning - End

        if rand.random() >= self.random_action_rate:
          action = np.argmax(self.QTable[s_prime,:])  #Exploit: Select Action that leads to a State with the Best Reward
        else:
          action = rand.randint(0,self.num_actions - 1) #Explore: Randomly select an Action.
          
    	# Use a decay rate to reduce the randomness (Exploration) as the Q-Table gets more evidence
        self.random_action_rate = self.random_action_rate * self.random_action_decay_rate 
        
        self.s = s_prime
        self.action = action
        return action 	

结论

Dyna Q 代表了一种进步,我们追求设计能够在复杂和不确定的环境中学习和适应的代理。通过理解和实施 Dyna Q,人工智能和机器学习领域的专家和爱好者可以为各种实际问题设计出有弹性的解决方案。本教程的目的不是介绍概念和算法,而是在这个引人入胜的研究领域激发创造性应用和未来进展的创造力。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer