{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Uczenie maszynowe\n", "# 15. Uczenie przez wzmacnianie i systemy dialogowe" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 15.1. Uczenie przez wzmacnianie" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Paradygmat uczenia przez wzmacnianie" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "![Rys. 15.1. Paradygmaty uczenia maszynowego](paradygmaty_um.png \"Rys. 15.1. Paradygmaty uczenia maszynowego\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* Paradygmat uczenia przez wzmacnianie naśladuje sposób, w jaki uczą się dzieci.\n", "* Interakcja ze środowiskiem." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* W chwili $t$ agent w stanie $S_t$ podejmuje akcję $A_t$, następnie obserwuje zmianę w środowisku w stanie $S_{t+1}$ i otrzymuje nagrodę $R_{t+1}$ (rys. 13.2)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "![Rys. 15.2. Agent i środowisko](agent_i_srodowisko.png \"Rys. 15.2. Agent i środowisko\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* Celem jest znalezienie takiej taktyki wyboru kolejnej akcji, aby zmaksymalizować wartość końcowej nagrody. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Zastosowanie uczenia przez wzmacnianie:\n", "* strategie gier\n", "* systemy dialogowe\n", "* sterowanie" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Uczenie przez wzmacnianie jako proces decyzyjny Markowa" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Paradygmat uczenia przez wzmacnianie można formalnie opisać jako proces decyzyjny Markowa:\n", "$$ (S, A, T, R) $$\n", "gdzie:\n", "* $S$ – skończony zbiór stanów\n", "* $A$ – skończony zbiór akcji\n", "* $T \\colon A \\times S \\to S$ – funkcja przejścia która opisuje, jak zmienia się środowisko pod wpływem wybranych akcji\n", "* $R \\colon A \\times S \\to \\mathbb{R}$ – funkcja nagrody" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Albo, jeśli przyjmiemy, że środowisko zmienia się w sposób niedeterministyczny:\n", "$$ (S, A, P, R) $$\n", "gdzie:\n", "* $S$ – skończony zbiór stanów\n", "* $A$ – skończony zbiór akcji\n", "* $P \\colon A \\times S \\times S \\to [0, 1]$ – prawdopodobieństwo przejścia\n", "* $R \\colon A \\times S \\times S \\to \\mathbb{R}$ – funkcja nagrody" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Na przykład, prawdopodobieństwo, że akcja $a$ spowoduje przejście ze stanu $s$ do $s'$:\n", "$$ P_a(s, s') \\; = \\; \\mathbf{P}( \\, s_{t+1} = s' \\, | \\, s_t = s, a_t = a \\,) $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Strategia\n", "\n", "* Strategią (*policy*) nazywamy odwzorowanie $\\pi \\colon S \\to A$, które bieżącemu stanowi przyporządkuje kolejną akcję do wykonania.\n", "* Algorytm uczenia przez wzmacnianie będzie starał się zoptymalizować strategię tak, żeby na koniec otrzymać jak najwyższą nagrodę.\n", "* W chwili $t$, ostateczna końcowa nagroda jest zdefiniowana jako:\n", "$$ R_t := r_{t+1} + \\gamma \\, r_{t+2} + \\gamma^2 \\, r_{t+3} + \\ldots = \\sum_{k=0}^T \\gamma^k \\, r_{t+k+1} \\; , $$\n", "gdzie $0 < \\gamma < 1$ jest czynnikiem, który określa, jak bardzo bierzemy pod uwagę nagrody, które otrzymamy w odległej przyszłości." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Algorytm szuka optymalnej strategii metodą prób i błędów – podejmując akcje i obserwując ich wpływ na środowisko. W podejmowaniu decyzji pomoże mu oszacowanie wartości następujących funkcji:\n", "* Funkcja wartości ($V$) odzwierciedla, jak atrakcyjne w dalekiej perspektywie jest przejście do danego stanu:\n", "$$ V_{\\pi}(s) = \\mathbf{E}_{\\pi}(R \\, | \\, s_t = s) $$\n", "* Funkcja $Q$ odzwierciedla, jak atrakcyjne w dalekiej perspektywie jest przejście do danego stanu przez podjęcie danej akcji:\n", "$$ Q_{\\pi}(s, a) = \\mathbf{E}_{\\pi}(R \\, | \\, s_t = s, a_t = a) $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Algorytmy uczenia przez wzmacnianie\n", "* Programowanie dynamiczne (DP):\n", " * *bootstrapping* – aktualizacja oczacowań dla danego stanu na podstawie oszacowań dla możliwych stanów następnych\n", "* Metody Monte Carlo (MC)\n", "* Uczenie oparte na różnicach czasowych (*temporal difference learning*, TD):\n", " * *on-policy* – aktualizacja bieżącej strategii:\n", " * SARSA (*state–action–reward–state–action*)\n", " * *off-policy* – eksploracja strategii innych niż bieżąca:\n", " * *Q-Learning*\n", " * *Actor–Critic*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Przykłady\n", "\n", "* Odwrócone wahadło (*cart and pole*): https://www.youtube.com/watch?v=46wjA6dqxOM\n", "* Symulacja autonomicznego samochodu: https://www.youtube.com/watch?v=G-GpY7bevuw" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 15.2. Systemy dialogowe" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Rodzaje systemów dialogowych\n", "* Chatboty\n", "* Systemy zorientowane na zadania (*task-oriented systems*, *goal-oriented systems*):\n", " * szukanie informacji\n", " * wypełnianie formularzy\n", " * rozwiązywanie problemów\n", " * systemy edukacyjne i tutorialowe\n", " * inteligentni asystenci" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Architektura systemu dialogowego\n", "\n", "(rys. 15.3)\n", "\n", "![Rys. 15.3. Architektura systemu dialogowego](system_dialogowy.png \"Rys. 15.3. Architektura systemu dialogowego\")" ] } ], "metadata": { "author": "Paweł Skórzewski", "celltoolbar": "Slideshow", "email": "pawel.skorzewski@amu.edu.pl", "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "lang": "pl", "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" }, "livereveal": { "start_slideshow_at": "selected", "theme": "white" }, "subtitle": "15.Uczenie przez wzmacnianie i systemy dialogowe[wykład]", "title": "Uczenie maszynowe", "vscode": { "interpreter": { "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" } }, "year": "2021" }, "nbformat": 4, "nbformat_minor": 4 }