Les systèmes d’IA sont-ils capables de résoudre des problèmes complexes ?

Auteur : Zen et l'art de la programmation informatique

1. Introduction

Au cours de la dernière décennie, la technologie de l’IA est passée par différentes étapes, de la programmation symbolique au raisonnement logique, en passant par l’apprentissage automatique, l’apprentissage profond et l’apprentissage par renforcement. À l’heure actuelle, l’intelligence artificielle est devenue une industrie de base dans les pays économiquement développés et présente de plus en plus de scénarios d’application. Cependant, face à divers problèmes complexes, son architecture système ne peut pas répondre pleinement à ces besoins.

Comment concevoir un système d’IA doté de capacités d’apprentissage autonomes est une question importante. En raison de sa complexité, la conception d’un système d’IA performant, fiable et flexible peut nécessiter des efforts de recherche interdisciplinaires et interdomaines. Comment évaluer l’effet d’apprentissage d’un système d’IA et procéder à des ajustements pour améliorer sa robustesse, sa généralisation, sa tolérance aux pannes et d’autres caractéristiques est également l’une des directions de recherche actuellement populaires.

Cet article présentera un système d'IA basé sur l'apprentissage par renforcement - un contrôle du bras robotique basé sur l'apprentissage par renforcement. Comprend principalement les contenus suivants :

  • (1) Introduction de base : Comprendre les principes de dynamique et de cinématique inverse des robots ;
  • (2) Introduction aux termes clés : modèle de dynamique du bras robotique, méthode de Monte Carlo, cinématique inverse, arbre de décision, etc. ;
  • (3) Architecture du système : démontre l'architecture du système de contrôle du bras robotique basée sur l'apprentissage par renforcement ;
  • (4) Principes de base des algorithmes : expliquer les algorithmes de base du contrôle du bras robotique basés sur l'apprentissage par renforcement, y compris le réseau de politiques, le réseau de valeurs, la recherche arborescente de Monte Carlo, l'apprentissage de modèles, etc. ;
  • (5) Étapes de fonctionnement et exemples de code spécifiques : Utiliser le langage Python pour mettre en œuvre un contrôle du bras robotique basé sur l'apprentissage par renforcement ;
  • (6) Tendances et défis de développement futurs : analyser brièvement les tendances de développement et les défis futurs du contrôle des bras robotiques basés sur l'apprentissage par renforcement.

2. Introduction aux termes clés

2.1 Modèle dynamique du bras robotique

Pour le manipulateur, le modèle dynamique peut être divisé en modèle de vitesse articulaire et modèle d'accélération articulaire, comme le montre la figure suivante : où :

  • T : temps(s) de travail.
  • ω : vitesse angulaire articulaire.
  • θ : angle d'articulation.
  • q(t) : variable d'état de temps continu, représentant la courbe de changement d'angle de l'articulation avec le temps.
  • v : vitesse articulaire.
  • a : accélération articulaire.
  • τ : puissance du moteur.

2.2 Méthode de Monte Carlo

La méthode de Monte Carlo est une méthode de théorie des probabilités et de statistiques mathématiques qui utilise la génération de nombres aléatoires pour résoudre des solutions précises à certains problèmes. En termes simples, la méthode de Monte Carlo consiste à échantillonner indépendamment certains échantillons de données avec une probabilité égale à partir d'une certaine distribution ou d'un certain espace de paramètres avec des caractéristiques aléatoires, puis à utiliser certaines méthodes statistiques telles que la moyenne, la variance, etc. Les résultats d'agrégation de ces échantillons de données sont utilisés pour approximer la fonction de densité de probabilité ou la fonction de distribution de probabilité qui décrit l'ensemble de la distribution ou de l'espace des paramètres.

En apprentissage par renforcement, les méthodes de Monte Carlo sont utilisées pour simuler l'environnement, exécuter des décisions, calculer les rendements, mettre à jour les paramètres du réseau politique, etc. Il peut résoudre efficacement de nombreux problèmes d'apprentissage par renforcement, notamment résoudre le problème d'exploration-exploitation dans l'apprentissage par renforcement, garantir l'efficacité de l'apprentissage, résoudre l'incertitude et le bruit et traiter les problèmes d'observabilité partielle.

2.3 Cinématique inverse

Dans les problèmes de contrôle, la cinématique inverse (CI) décrit comment trouver un moyen de déplacer un objet vers une position, une attitude ou une instruction de tâche donnée. Dans le contrôle du bras du robot, la cinématique inverse est utilisée pour trouver l'angle d'articulation quelque part sous un certain système de coordonnées. Le but est de contrôler le mouvement du bras du robot en déterminant le vecteur de déplacement entre l'extrémité du bras du robot et le point cible. La solution analytique de IK présente des défauts et les méthodes de Monte Carlo sont généralement utilisées pour l'optimisation numérique.

2.4 Arbre de décision

Un arbre de décision est une structure arborescente composée de nœuds et d’arêtes connectées. Il est souvent utilisé pour dessiner des structures arborescentes à des fins de classification, de régression ou de prédiction. Dans l'apprentissage par renforcement, les arbres de décision sont utilisés pour représenter les attentes en matière de récompenses. Son nœud racine représente la situation possible de l'ensemble de l'espace d'états, chaque nœud feuille représente un état spécifique et les arêtes représentent les probabilités de transition du nœud racine vers les nœuds feuilles. Grâce aux arbres de décision, la cartographie de l’espace d’état à l’espace d’action peut être complétée.

3. Architecture du système

L'architecture du système de contrôle du bras de robot basée sur l'apprentissage par renforcement est illustrée dans la figure ci-dessous : parmi elles, la couche d'entrée reçoit des informations reçues de l'environnement externe, telles que les instructions de tâche, l'état actuel du robot, etc. ; la couche de sortie est responsable de générer des signaux d'action et les transmettre au module actionneur. Le module actionneur effectue des actions correspondantes en fonction du signal d'action, telles que la rotation de l'angle d'articulation du bras robotique. L'allocateur de récompense reçoit des informations de rétroaction provenant de l'environnement externe et attribue des récompenses selon les règles de distribution de récompense. L'apprenant par imitation supervise le processus d'apprentissage et imite l'interaction avec l'environnement sur la base des modèles appris.

4. Principes de base de l'algorithme

Les algorithmes de base du contrôle du bras robotique basés sur l'apprentissage par renforcement comprennent le réseau de politiques, le réseau de valeurs, la recherche arborescente de Monte Carlo, l'apprentissage de modèles, etc. Chacun est présenté en détail ci-dessous.

4.1 Pas de modèle ? ! Comment faire? Alors apprenez par imitation !

L'une des hypothèses les plus fondamentales de l'apprentissage par renforcement est le processus de décision de Markov, c'est-à-dire que la distribution de probabilité de transition d'état dite « connue » et la fonction de récompense « inconnue » sont connues, et la transition d'état et la récompense sont impartiales. Cependant, dans les applications pratiques, il est souvent nécessaire de prendre en compte de nombreux problèmes tels que de nombreux facteurs, des environnements complexes et changeants, des récompenses inconnues difficiles à obtenir et des comportements soumis à d'autres facteurs. Par conséquent, l’apprentissage par renforcement repose souvent sur des modèles d’apprentissage par renforcement capables de caractériser avec précision la relation entre toutes les variables de l’environnement et de prendre des décisions sur cette base. Cependant, les problèmes complexes du monde réel sont souvent indissociables des modèles. Dans ce cas, l’apprentissage par imitation est donc particulièrement important.

Par exemple, dans certains problèmes complexes de contrôle de robot, le système doit apprendre à choisir la stratégie optimale sous différentes combinaisons de conditions environnementales et de séquences d’action du robot. Les algorithmes traditionnels d’apprentissage par renforcement visent généralement à apprendre directement des modèles, ce qui ne fonctionne généralement pas bien. Étant donné que le modèle d’apprentissage par renforcement ne peut caractériser avec précision qu’un seul environnement, il ne peut pas caractériser avec précision les différences comportementales dans plusieurs environnements. L’apprentissage par imitation peut surmonter ce problème. L'apprentissage par imitation peut mieux caractériser la dynamique environnementale et le comportement des robots en simulant des stratégies et des apprentissages connus et en imitant des comportements similaires. De cette manière, même dans un environnement totalement inconnu, des informations utiles peuvent être obtenues en imitant l’algorithme d’apprentissage et des modèles peuvent être rapidement découverts.

4.2 Réseau stratégique et réseau de valeurs

L'algorithme de contrôle du bras robot basé sur l'apprentissage par renforcement se compose de deux parties, à savoir le réseau de politiques et le réseau de valeurs. La fonction du réseau politique est d'obtenir une équation d'action par apprentissage. Il accepte l'état actuel comme entrée et génère un vecteur d'action décrivant la distribution de probabilité de l'action qui devrait être entreprise. Le rôle du réseau de valeurs est d'évaluer la qualité de l'état. Il accepte l'état actuel en entrée et génère une fonction de valeur V(s), qui décrit la valeur totale de récompense attendue de toutes les actions possibles à partir de cet état dans l'état actuel. État. Les deux peuvent être réalisés en utilisant des réseaux de neurones profonds.

4.3 Recherche arborescente Monte Carlo

Monte Carlo Tree Search (MCTS) est une méthode de recherche dans l'arbre du jeu basée sur la méthode Monte Carlo. À chaque étape, MCTS partira du nœud racine, sélectionnera au hasard un nœud exécutable, puis le simulera. Au cours du processus de simulation, les données collectées seront enregistrées et utilisées pour la prise de décision ultérieure. Après avoir collecté suffisamment de données, MCTS sélectionnera un chemin optimal, c'est-à-dire la séquence d'actions correspondant au chemin, comme données de formation pour le réseau politique. De cette façon, après chaque simulation, la recherche arborescente de Monte Carlo convergera vers la politique optimale, qui corrige continuellement le réseau de politiques par itération pour améliorer le processus de convergence.

4.4 Apprentissage du modèle

La tâche principale de l'apprentissage de modèles est d'apprendre une fonction de transition action-état, qui mappe l'état à l'espace d'action et est utilisée pour aider la recherche arborescente de Monte Carlo à sélectionner la stratégie optimale. L'algorithme d'apprentissage par renforcement profond ajuste les paramètres du réseau politique afin qu'il puisse générer des comportements cohérents avec le bon sens humain et ses connaissances antérieures. Cependant, déterminer comment améliorer le réseau politique, en particulier comment trouver des hyperparamètres appropriés, constitue un défi important dans l’apprentissage des modèles.

5. Étapes de fonctionnement et exemples de code spécifiques

Ensuite, nous utilisons le langage Python pour implémenter un contrôle de bras robotique basé sur l'apprentissage par renforcement, en prenant comme exemple la résolution du problème d'optimisation de la trajectoire des ailes d'un drone. Supposons que nous disposions des informations suivantes relatives au robot :

  • L'état initial est le suivant : le drone est déchargé, le châssis est immobile et les deux ailes sont dans un état de déplacement horizontal.
  • Le point cible du robot est : le drone espère voler jusqu'à un certain point sur le plan horizontal, ici nous supposons que c'est le cas (x=2, y=0).
  • Après chaque étape d'action, la direction de mouvement du châssis du drone restera toujours cohérente, mais les ailes tourneront dans la direction horizontale et l'angle de rotation maximum des ailes est de $\pi$ radians.

Importez d’abord les bibliothèques concernées :

import gym
import time
from stable_baselines import PPO2 # 使用PPO2算法
import numpy as np
env = gym.make('gym_pendulum:Pendulum-v0') # 创建环境
model = PPO2('MlpPolicy', env, verbose=1) # 初始化模型
model.learn(total_timesteps=int(1e6)) # 训练模型

Créer un environnement de gym : gym.make('gym_pendulum:Pendulum-v0')signifie créer Pendulum-v0un environnement nommé. gym_pendulumest un nom d'environnement personnalisé et Pendulum-v0représente le numéro de version.

Initialisation du modèle : PPO2('MlpPolicy', env, verbose=1)indique l'utilisation MlpPolicyde la fonction de stratégie pour construire un modèle PPO2, verbose=1qui est utilisé pour imprimer les informations sur le processus de formation.

Modèle de formation : model.learn(total_timesteps=int(1e6))indique le modèle de formation et la taille de l’étape de formation est de 10 000 fois.

Le réseau de politiques est défini ci-dessous :

class CustomPolicy(object):
    def __init__(self, sess, ob_space, ac_space):
        self.sess = sess
        num_ob = ob_space.shape[0]
        self.X = tf.placeholder(tf.float32, [None, num_ob]) # 当前状态
        with tf.variable_scope("pi"):
            pi_h1 = tf.layers.dense(self.X, 64, activation=tf.nn.relu, name="pi_h1")
            pi_h2 = tf.layers.dense(pi_h1, 64, activation=tf.nn.relu, name="pi_h2")
            self.pi = tf.layers.dense(pi_h2, ac_space.n, activation=tf.nn.tanh, name="pi") # 动作概率分布
        with tf.variable_scope("vf"):
            vf_h1 = tf.layers.dense(self.X, 64, activation=tf.nn.relu, name="vf_h1")
            vf_h2 = tf.layers.dense(vf_h1, 64, activation=tf.nn.relu, name="vf_h2")
            self.vf = tf.layers.dense(vf_h2, 1, name="vf")[:,0] # 价值函数

    def step(self, obs, state=None, mask=None, deterministic=False):
        act_op, value_op = self.sess.run([self.pi, self.vf], {self.X: obs})
        return act_op, value_op, None, None

    def proba_step(self, obs, state=None, mask=None):
        return self.sess.run(self.pi, {self.X: obs}), None, None, None

Créez un réseau de stratégies personnalisé et définissez deux réseaux de neurones :

  • pi: Utilisé pour générer la distribution de probabilité d'action, saisir l'état actuel self.Xet sortir le vecteur de distribution de probabilité d'action self.pi.
  • vf: Utilisé pour calculer la fonction de valeur de l'état actuel, saisir l'état actuel self.Xet sortir la valeur de la fonction de valeur self.vf.

Construisez le modèle :

policy_kwargs = {'net_arch': [dict(pi=[64, 64], vf=[64, 64])] * 2}
model = PPO2(CustomPolicy, env, policy_kwargs=policy_kwargs, verbose=1)
model.learn(total_timesteps=int(1e6))

Créez un modèle PPO2, spécifiez-le CustomPolicycomme fonction de stratégie et définissez la structure du réseau net_archsur [[64, 64], [64, 64]].

Modèle de formation :

model.learn(total_timesteps=int(1e6))

Exécutez le modèle :

obs = env.reset()
for i in range(1000):
    action, _states = model.predict(obs)
    obs, rewards, dones, info = env.step(action)
    env.render()
    if dones:
        break
    time.sleep(0.1)
env.close()

Exécutez le modèle, pilotez le robot jusqu'au point cible et effectuez le rendu.

Jusqu'à présent, nous avons mis au point une solution au problème d'optimisation de la trajectoire des ailes d'un drone basée sur l'apprentissage par renforcement. Bien entendu, dans le développement réel du projet, le code ci-dessus doit être modifié en conséquence, par exemple en modifiant les configurations des paramètres, en ajoutant davantage d'informations environnementales et en ajoutant différentes fonctions de récompense pour différents problèmes.

Je suppose que tu aimes

Origine blog.csdn.net/universsky2015/article/details/133446524
conseillé
Classement