In questa repository un corso in italiano sulle basi del Reinforcement Learning, sviluppato in Python, attraverso la piattaforma di Google Colab.
Non sono richieste conoscenze teoriche preliminari, se non nozioni pratiche di programmazione Python di base.
Tutti i contenuti sono rilasciati sotto licenza "MIT License". Vedi: https://choosealicense.com/licenses/
In caso di pubblicazioni o distribuzioni, si richiede solo che l'autore (Mario Fiorino) sia citato nelle note bibliografiche.
In questo notebook troverete un'introduzione al reinforcement learning "pratica"; cioè che si concentra sulla comprensione e sull'applicazione pratica degli algoritmi di reinforcement learning tramite un esempio molto semplice ed accessibile a tutti coloro che si avvicinano per la prima volta a tale disciplina.
File : Intro_sul_campo_RL_ita.ipynb
Nel notebook sottostante è descritto lo sviluppo di un agente che impara a giocare e vincere a Tris (Tic-Tac-Toe Game) tramite un algoritmo di Q-learning.
File : Tris_game_RL_ITA.ipynb
In questo notebook trovere un introduzione all'uso della libreria OpenAI Gym
In questo notebook vengono presentate le basi teoriche del Reinforcement Learning, che affondano nella Programmazione Dinamica e nella Teoria del controllo ottimale. Sono inoltre presenti esempi applicativi
In questa sezione sono presentati una serie di notebook che trattano i metodi Monte Carlo.
Parte 1 : Introduzione, Monte Carlo with Exploring Starts, On-policy first-visit Monte Carlo control
File : Metodi_Monte_Carlo_RL_ITA
Parte 2 : Incremental v.s Non-incremental, Importance sampling, Off-Policy Monte Carlo Control.
File : Off_policy_Monte_Carlo_ITA
Il presente notebook offre un'introduzione al Temporal Difference Learning (TD Learning), in particolare sono trattati i seguenti argomenti: TD Prediction, Batch updating, one-step SARSA:On-policy TD Control, one-step Q-learning: Off-policy TD Control, Maximization Bias e Double Q-learning, n-step (o multi step) TD methods, n-step SARSA.
In questo notebook viene presentata un'introduzione ai metodi Dyna. Tali algoritmi cercano di migliorare l'efficienza dell'apprendimento del RL integrando tecniche di pianificazione (planning).
File : Dyna ITA.ipynb
In questo notebook verrà fornita un'introduzione alle reti neurali, illustrandone la matematica di base del loro funzionamento.
Nel notebook sottostante sarrà fornita un'introduzione, nei suoi aspetti basilari, ad una delle librerie di Machine Learning più usate: TensorFlow version 2 (sviluppata da Google).
Nei notebook sottostanti verrà illustrato l'utilizzo di TensorFlow v2 per la costruzione e l'addestramento di reti neurali; successivamente la stessa rete sarà implementata con la libreria Keras.
File : Introduzione_Keras_ITA.ipynb
Nel notebook successivo un'introduzione a PyTorch.
In questo notebook vedremo l'impiego di tecniche di approssimazione di funzioni per stimare la funzione-valore degli stati. In particolare, svilupperemo l'algorimo Semi-Gradient one step SARSA, con modellizzazione lineare, nel contesto Mountain Car (gymlibrary). Inoltre, daremo una prima occhiata alla tecnica di apprendimento per imitazione (Imitation Learning): come, osservando la strategia di un esperto, possiamo migliorare i risultati dell'apprendimento.
Nel notebook successivo un'implementazione dell'algoritmo Deep Q Networks, contesto MsPacman(Atari), con Convolutional neural network(CNN); ed un introduzione al concetto di: Experience Replay.
Nel notebook successivo, viene fornito un compendio sulle tecniche di Value Function Approximation, che si conclude con i suggerimenti di Sutton riguardo alla "Deadly Triad". Inoltre, viene mostrata la risoluzione del problema Cartpole (Gym) utilizzando prima un algoritmo DQN, poi Gradient Monte Carlo target control e infine un DQN con supporto imitation mode.
Il notebook di seguito presenterà un'introduzione al meccanismo di eligibility trace.
File : Eligibility_Traces_ITA.
Nel notebook sottostante sono presentati i metodi policy-based, in particolare i metodi policy gradient. Questi metodi per funzionare necessitano di tre componenti: 1. una policy definita da parametri. 2. una funzione obiettivo da massimizzare. 3. un meotdo per aggiornare i parametri della policy. Troverete implementato una versione dell' algoritmo REINFORCE (noto anche come: Monte Carlo Policy Gradient) nel contesto CartPole (Gym).
File : Policy_Gradient_ITA
Nei prossimi due notebook troverete un'introduzione agli algoritmi Actor-Critic, un approfondimento sul dilemma "Varianza-Bias", una panoramica sul concetto di Advantage Function, e di Entropy Regularization. Infine, verrà presentata un'implementazione per risolvere l'ambiente Pendulum (Gym).
File : Actor_Critic_teoria_ITA
File : Actor_Critic_code_ITA
In questo notebook vengono presentati i metodi di Proximal Policy Optimization (PPO), con i relativi concetti di surrogate objective e trust region. Troverete l'implementazione dell'algoritmo Actor-Critic PPO-clip, utilizzato per risolvere l'ambiente Pendulum (Gym).