Maison >Périphériques technologiques >IA >Étendez Q-Learning avec Dyna-Q pour améliorer la prise de décision
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.
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.
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.
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
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
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.
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!