309 lines
8.1 KiB
Plaintext
309 lines
8.1 KiB
Plaintext
{
|
||
"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
|
||
}
|