AI con Python - Apprendimento per rinforzo

In questo capitolo imparerai in dettaglio i concetti di apprendimento per rinforzo nell'IA con Python.

Nozioni di base sull'apprendimento per rinforzo

Questo tipo di apprendimento viene utilizzato per rafforzare o rafforzare la rete sulla base di informazioni critiche. Cioè, una rete che viene addestrata tramite l'apprendimento per rinforzo riceve un feedback dall'ambiente. Tuttavia, il feedback è valutativo e non istruttivo come nel caso dell'apprendimento supervisionato. Sulla base di questo feedback, la rete esegue gli aggiustamenti dei pesi per ottenere migliori informazioni critiche in futuro.

Questo processo di apprendimento è simile all'apprendimento supervisionato, ma potremmo avere molte meno informazioni. La figura seguente mostra lo schema a blocchi dell'apprendimento per rinforzo:

Elementi fondamentali: ambiente e agente

Ambiente e Agente sono i principali elementi costitutivi dell'apprendimento per rinforzo nell'IA. Questa sezione li discute in dettaglio:

Agente

Un agente è tutto ciò che può percepire il proprio ambiente tramite sensori e agisce su quell'ambiente tramite effettori.

  • UN human agent ha organi sensoriali come occhi, orecchie, naso, lingua e pelle paralleli ai sensori e altri organi come mani, gambe, bocca, per effettori.

  • UN robotic agent sostituisce le telecamere e i telemetri a infrarossi per i sensori e vari motori e attuatori per gli effettori.

  • UN software agent ha codificato stringhe di bit come programmi e azioni.

Terminologia dell'agente

I seguenti termini sono usati più frequentemente nell'apprendimento per rinforzo nell'IA:

  • Performance Measure of Agent - Sono i criteri che determinano il successo di un agente.

  • Behavior of Agent - È l'azione che l'agente esegue dopo una data sequenza di percezioni.

  • Percept - Sono gli input percettivi dell'agente in una data istanza.

  • Percept Sequence - È la storia di tutto ciò che un agente ha percepito fino ad oggi.

  • Agent Function - È una mappa dalla sequenza del precetto a un'azione.

Ambiente

Alcuni programmi funzionano interamente in artificial environment limitato a input da tastiera, database, file system del computer e output di caratteri su uno schermo.

Al contrario, alcuni agenti software, come robot software o softbot, esistono in domini softbot ricchi e illimitati. Il simulatore ha un filevery detailed, e complex environment. L'agente software deve scegliere tra una lunga serie di azioni in tempo reale.

Ad esempio, un softbot progettato per scansionare le preferenze online del cliente e mostrare articoli interessanti al cliente lavora in real così come un artificial ambiente.

Proprietà dell'ambiente

L'ambiente ha proprietà multiple come discusso di seguito:

  • Discrete/Continuous- Se esiste un numero limitato di stati dell'ambiente distinti e chiaramente definiti, l'ambiente è discreto, altrimenti è continuo. Ad esempio, gli scacchi sono un ambiente discreto e la guida è un ambiente continuo.

  • Observable/Partially Observable- Se è possibile determinare lo stato completo dell'ambiente in ogni punto temporale dalle percezioni, è osservabile; altrimenti è solo parzialmente osservabile.

  • Static/Dynamic- Se l'ambiente non cambia mentre un agente sta agendo, allora è statico; altrimenti è dinamico.

  • Single agent/Multiple agents - L'ambiente può contenere altri agenti che possono essere dello stesso tipo o diverso da quello dell'agente.

  • Accessible/Inaccessible- Se l'apparato sensoriale dell'agente può avere accesso allo stato completo dell'ambiente, allora l'ambiente è accessibile a quell'agente; altrimenti è inaccessibile.

  • Deterministic/Non-deterministic- Se lo stato successivo dell'ambiente è completamente determinato dallo stato corrente e dalle azioni dell'agente, l'ambiente è deterministico; altrimenti è non deterministico.

  • Episodic/Non-episodic- In un ambiente episodico, ogni episodio consiste nell'agente che percepisce e poi agisce. La qualità della sua azione dipende solo dall'episodio stesso. Gli episodi successivi non dipendono dalle azioni negli episodi precedenti. Gli ambienti episodici sono molto più semplici perché l'agente non ha bisogno di pensare al futuro.

Costruire un ambiente con Python

Per costruire l'agente di apprendimento per rinforzo, utilizzeremo il OpenAI Gym pacchetto che può essere installato con l'aiuto del seguente comando:

pip install gym

Ci sono vari ambienti nella palestra OpenAI che possono essere utilizzati per vari scopi. Pochi lo sonoCartpole-v0, Hopper-v1, e MsPacman-v0. Richiedono motori diversi. La documentazione dettagliata diOpenAI Gym può essere trovato su https://gym.openai.com/docs/#environments.

Il codice seguente mostra un esempio di codice Python per l'ambiente cartpole-v0 -

import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
   env.render()
   env.step(env.action_space.sample())

Puoi costruire altri ambienti in modo simile.

Costruire un learning agent con Python

Per costruire l'agente di apprendimento per rinforzo, utilizzeremo il OpenAI Gym pacchetto come mostrato -

import gym
env = gym.make('CartPole-v0')
for _ in range(20):
   observation = env.reset()
   for i in range(100):
      env.render()
      print(observation)
      action = env.action_space.sample()
      observation, reward, done, info = env.step(action)
      if done:
         print("Episode finished after {} timesteps".format(i+1))
         break

Osserva che il palo può bilanciarsi da solo.