Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
statnice:bakalar:b4b36zui [2025/05/29 15:50] – [CSP - Problémy splnění omezení (Constraint Satisfaction Problems)] mistrjirka | statnice:bakalar:b4b36zui [2025/06/03 12:40] (current) – zapleka3 | ||
---|---|---|---|
Line 65: | Line 65: | ||
* **Akce**: $A = \{a_1, \dots, a_k\}$ | * **Akce**: $A = \{a_1, \dots, a_k\}$ | ||
- | * **Odměny**: | + | * **Odměny**: |
* **Očekávaná hodnota akce**: | * **Očekávaná hodnota akce**: | ||
$$ | $$ | ||
Line 321: | Line 321: | ||
* **Heuristiky**: | * **Heuristiky**: | ||
- | - **Admisibilní** – nikdy nepřeceňuje skutečné náklady (tj. $h(n) \leq h^*(n)$), což zaručuje optimálnost. | + | - **Admisibilní |
- | - **Konzistentní (monotónní)** – platí $h(n) \leq c(n, n') + h(n' | + | - **Konzistentní (monotónní, consistent)** – platí $h(n) \leq c(n, n') + h(n' |
- **Inadmisibilní** – rychlejší, | - **Inadmisibilní** – rychlejší, | ||
Line 351: | Line 351: | ||
* Příliš silná heuristika (např. $h(n) > h^*(n)$) může zrychlit výpočet, ale ztrácí optimálnost. | * Příliš silná heuristika (např. $h(n) > h^*(n)$) může zrychlit výpočet, ale ztrácí optimálnost. | ||
- | ====== 4. Algoritmy posilovaného učení | + | ===== 4. Algoritmy posilovaného učení ===== |
**policy evaluation, policy improvement, | **policy evaluation, policy improvement, | ||
Line 681: | Line 681: | ||
=== Definice === | === Definice === | ||
- | CSP jsou definovány | + | CSP (constraint satisfaction problems) |
- | * **X** je množina proměnných | + | |
- | * **D** je množina domén | + | Formálně je CSP definováno |
- | * **C** je množina omezení, která specifikují | + | * **X** je množina proměnných: {X₁, X₂, ..., Xₙ} |
+ | * **D** je množina domén: každá proměnná | ||
+ | * **C** je množina omezení: každé omezení specifikuje | ||
**Cíl:** Nalézt přiřazení hodnot proměnným tak, aby byla všechna omezení splněna. | **Cíl:** Nalézt přiřazení hodnot proměnným tak, aby byla všechna omezení splněna. | ||
Line 706: | Line 708: | ||
**Proměnné: | **Proměnné: | ||
- | **Domény: | + | **Domény: |
- | - $D_C$ = {červená, zelená, modrá} | + | * $D_A$ = {červená, zelená, modrá} |
+ | * $D_B$ = {červená, zelená, modrá}\\ | ||
+ | | ||
- | **Omezení: | + | **Omezení: |
+ | | ||
+ | * A a B musí mít různé barvy (jsou sousední) | ||
+ | * B a C musí mít různé barvy (jsou sousední) | ||
+ | * A a C musí mít různé barvy (jsou sousední) | ||
=== Řešení pomocí backtrackingu === | === Řešení pomocí backtrackingu === | ||
- | **Krok 1:** Přiřadíme A = červená | + | **Krok 1:** |
+ | | ||
+ | * Současné přiřazení: | ||
+ | * Splněná omezení: žádná (zatím nemáme hodnoty pro B, C) | ||
- | **Krok 2:** Zkusíme B = červená | + | **Krok 2:** |
+ | | ||
+ | * Současné přiřazení: | ||
+ | * Kontrola omezení A $\neq$ B: NESPLNĚNO (červená = červená) **Backtrack** | ||
+ | * zrušíme B = červená | ||
- | **Krok 3:** Zkusíme B = zelená | + | **Krok 3:** |
+ | | ||
+ | * Současné přiřazení: | ||
+ | * Kontrola omezení A $\neq$ B: SPLNĚNO (červená $\neq$ zelená) | ||
- | **Krok 4:** Zkusíme C = červená | + | **Krok 4:** |
+ | | ||
+ | * Současné přiřazení: | ||
+ | * Kontrola omezení: | ||
+ | * A $\neq$ B: SPLNĚNO (červená $\neq$ zelená) | ||
+ | * B $\neq$ C: SPLNĚNO (zelená $\neq$ červená) | ||
+ | * A $\neq$ C: NESPLNĚNO (červená = červená) **Backtrack** | ||
+ | * zrušíme C = červená | ||
- | **Krok 5:** Zkusíme C = zelená | + | **Krok 5:** |
+ | | ||
+ | * Současné přiřazení: | ||
+ | * Kontrola omezení B $\neq$ C: NESPLNĚNO (zelená = zelená **Backtrack** | ||
+ | * zrušíme C = zelená | ||
- | **Krok 6:** Zkusíme C = modrá | + | **Krok 6:** |
+ | | ||
+ | * Současné přiřazení: | ||
+ | * Kontrola všech omezení: | ||
+ | * A $\neq$ B: SPLNĚNO (červená $\neq$ zelená) | ||
+ | * B $\neq$ C: SPLNĚNO (zelená $\neq$ modrá) | ||
+ | * A $\neq$ C: SPLNĚNO (červená $\neq$ modrá) - **ŘEŠENÍ NALEZENO!** | ||
== Nalezené řešení == | == Nalezené řešení == | ||
- | |||
* **A = červená** | * **A = červená** | ||
* **B = zelená** | * **B = zelená** | ||
* **C = modrá** | * **C = modrá** | ||
- | == Další možná řešení == | + | == Inference techniky == |
+ | * **Forward checking:** Po každém přiřazení odstraní ze sousedních proměnných hodnoty, které by porušovaly omezení. | ||
+ | * **Arc consistency (AC):** Pro každou dvojici proměnných (X, Y) zajišťuje, | ||
- | Tento problém má více řešení. Některá další: - A = červená, B = modrá, C = zelená - A = zelená, B = červená, C = modrá - A = zelená, B = modrá, C = červená - A = modrá, B = červená, C = zelená - A = modrá, B = zelená, C = červená | + | AC-3 algoritmus využívá arc consistency, |
+ | {{youtube> | ||
- | === Optimalizace | + | === AC-3 algoritmus |
- | **Heuristiky | + | Algoritmus |
- | **Heuristiky pro výběr hodnot:** - **LCV (Least Constraining Value):** Vybírej | + | |
+ | | ||
+ | | ||
+ | * Pokud některá doména zůstane prázdná → CSP nemá řešení. | ||
+ | * Nezaručuje nalezení řešení, jen redukuje prostor. | ||
- | **Inference techniky:** - **Forward checking:** Po přiřazení hodnoty odstraň nekompatibilní hodnoty ze sousedních proměnných - **Arc consistency: | + | === Heuristiky === |
- | ===== Další příklady CSP ===== | + | * **Minimum Remaining Values (MRV):** Vyber proměnnou s nejmenším počtem možných hodnot – nejdřív se řeší „nejtěžší“ proměnné. |
+ | * **Least Constraining Value:** Vyber hodnotu, která ponechává nejvíce možností ostatním proměnným. | ||
+ | * **Backjumping, | ||
+ | |||
+ | === Další příklady CSP === | ||
* **Sudoku:** Proměnné = políčka, domény = čísla 1-9, omezení = unikátnost v řádcích/ | * **Sudoku:** Proměnné = políčka, domény = čísla 1-9, omezení = unikátnost v řádcích/ | ||
Line 751: | Line 796: | ||
==== Scheduling ==== | ==== Scheduling ==== | ||
- | Plánování je specifický typ CSP, kde je cílem | + | Plánování |
+ | |||
+ | === Charakteristika === | ||
+ | |||
+ | * Proměnné: jednotlivé aktivity nebo úlohy | ||
+ | * Domény: možné | ||
+ | * Omezení: | ||
+ | * **tvrdá | ||
+ | * **měkká omezení** (např. preferované časy, minimalizace přechodů nebo náročnosti) | ||
- | **Ukázka – rozvrh**: Aktivity: $X = \{\text{matematika}, | + | **Ukázka – rozvrh**: |
- | Domény: časové sloty $\{8:00, 9:00\}$\\ | + | * Aktivity: $X = \{\text{matematika}, |
- | Omezení: nelze mít matematiku a angličtinu zároveň → $\text{matematika} \neq \text{angličtina}$ | + | |
+ | | ||
==== Situation Calculus ==== | ==== Situation Calculus ==== | ||
- | Situation | + | Situation |
- | **Základní notace**: - $do(a, s)$: výsledek vykonání | + | === Základní prvky === |
+ | |||
+ | | ||
+ | * **Akce** – operace, které mění stav světa (např. Move, PickUp) | ||
+ | * **Fluentní predikáty** – závisí na situaci, reprezentují stav světa (např. `At(Robot, Room)`) | ||
+ | * **Rigidní predikáty** – nezávisí na situaci (např. `Room(Room1)`) | ||
+ | * **Výsledková funkce:** `do(a, s)` – situace, která vznikne provedením | ||
+ | |||
+ | === Standardní predikáty === | ||
+ | |||
+ | * `Holds(f, s)` – fluent `f` platí ve stavu `s` | ||
+ | * `Poss(a, s)` – akce `a` je možná ve stavu `s` | ||
+ | * `do(a, s)` – výsledek vykonání akce `a` ve stavu `s` | ||
**Ukázka**: | **Ukázka**: | ||
Line 774: | Line 840: | ||
==== STRIPS ==== | ==== STRIPS ==== | ||
- | STRIPS (Stanford Research Institute Problem Solver) je formalismus pro reprezentaci plánovacích problémů. Každá akce má: | + | **STRIPS (Stanford Research Institute Problem Solver)** je formalismus pro reprezentaci plánovacích problémů |
+ | |||
+ | === Formální definice === | ||
+ | |||
+ | STRIPS problém je definován čtveřicí **(P, A, I, G)**, kde: | ||
+ | * **P** je množina všech atomických predikátů (např. `At(Robot, Room1)`) – booleovské proměnné | ||
+ | * **A** je množina všech akcí, každá ve tvaru `a = ⟨pre(a), add(a), del(a)⟩`: | ||
+ | * `pre(a)` – předpoklady, | ||
+ | * `add(a)` – predikáty, které po akci začnou platit | ||
+ | * `del(a)` – predikáty, které po akci přestanou platit | ||
+ | * **I** je počáteční stav – množina predikátů platných na začátku | ||
+ | * **G** je cílový stav – množina predikátů, | ||
+ | |||
+ | Každá akce má: | ||
* **Preconditions**: | * **Preconditions**: | ||
Line 790: | Line 869: | ||
</ | </ | ||
- | Cílem je najít posloupnost akcí, která převede | + | === Cíl plánování === |
+ | |||
+ | Cílem je najít posloupnost akcí `a₁, a₂, ..., aₖ`, která | ||
+ | |||
+ | === Řešení pomocí A* === | ||
+ | |||
+ | STRIPS problémy lze řešit algoritmem **A***, kde: | ||
+ | * **stav** je aktuální množina pravdivých predikátů | ||
+ | * **heuristika** může být například `h(s) = |G \ s|` – počet cílů, které ještě nejsou splněny | ||
+ | |||
+ | === Heuristiky a relaxace === | ||
+ | |||
+ | * **Relaxace problému**: | ||
+ | * Relaxovaná akce: `a⁺ = ⟨pre(a), add(a), ∅⟩` | ||
+ | * **Abstrakce**: | ||
+ | |||
+ | === Plánovací graf (relaxovaný plánovací graf) === | ||
+ | |||
+ | Graf dosažitelnosti: | ||
+ | * Střídají se úrovně predikátů `Pᵢ` a akcí `Aᵢ` | ||
+ | * `Aᵢ = {a ∈ A | pre(a) ⊆ Pᵢ}` | ||
+ | * `Pᵢ₊₁ = Pᵢ ∪ {p ∈ add(a) | a ∈ Aᵢ}` | ||
+ | * Konstrukce končí, pokud `G ⊆ Pᵢ` | ||
+ | |||
+ | Stejný graf se dá použít k výpočtu optimální heuristiky hmax | ||
+ | * Vrchol, který náleží počátečnímu stavu se inicializuje na nulu | ||
+ | * Všechny vrcholy s akcemi jsou pak rovny maximu hodnot z předpokladů dané akce | ||
+ | * Do vrcholů se stavy (propozicemi) se pak zapíše nejlevnější akce, která do daného stavu vedla | ||
+ | |||
+ | {{: | ||
===== 7. Neurčitost v AI ===== | ===== 7. Neurčitost v AI ===== | ||
Line 806: | Line 914: | ||
$$ | $$ | ||
- | kde: - $H$ je hypotéza, | + | kde: |
+ | * $H$ – hypotéza, | ||
+ | * $D$ – pozorovaná | ||
+ | * $P(H|D)$ | ||
+ | * $P(D|H)$ | ||
+ | * $P(H)$ | ||
+ | * $P(D)$ | ||
==== Maximalizace očekávané utility ==== | ==== Maximalizace očekávané utility ==== | ||
- | Cílem rozhodování pod neurčitostí je zvolit | + | Racionální agent by měl volit takovou |
$$ | $$ | ||
Line 816: | Line 930: | ||
$$ | $$ | ||
- | kde: - $a$ je akce, - $s$ je možný stav světa, | + | kde: |
+ | * $a$ – akce, | ||
+ | * $s$ – možný stav světa, | ||
+ | * $P(s|a)$ | ||
+ | * $U(s, | ||
+ | |||
+ | Používá se v rozhodovacích sítích a obecně ve všech situacích, kde je třeba rozhodovat pod neurčitostí. | ||
==== Bayesovské sítě ==== | ==== Bayesovské sítě ==== | ||
- | Bayesovské sítě | + | Bayesovské sítě jsou **orientované acyklické grafy (DAG)**, kde: |
+ | * uzly reprezentují náhodné proměnné, | ||
+ | * hrany vyjadřují | ||
+ | * každá proměnná má tabulku | ||
- | Sítě umožňují efektivní | + | Bayesovské sítě umožňují efektivní |
+ | |||
+ | **Celková distribuční pravděpodobnost** v síti se rozpadá podle struktury grafu: | ||
+ | |||
+ | $$ | ||
+ | P(X_1, ..., X_n) = \prod_{i=1}^{n} P(X_i \mid \text{rodiče}(X_i)) | ||
+ | $$ | ||
=== Příklad Bayesovské sítě === | === Příklad Bayesovské sítě === | ||
Line 842: | Line 971: | ||
\end{document} | \end{document} | ||
</ | </ | ||
+ | |||
Tato Bayesovská síť ilustruje následující závislosti mezi náhodnými proměnnými: | Tato Bayesovská síť ilustruje následující závislosti mezi náhodnými proměnnými: | ||
Line 881: | Line 1011: | ||
$$ | $$ | ||
- | Použití: | + | **Použití:** |
- | + | * detekce spamu, | |
+ | * analýza sentimentu, | ||
+ | * lékařská | ||
==== Skrytý Markovův model (Hidden Markov Model, HMM) ==== | ==== Skrytý Markovův model (Hidden Markov Model, HMM) ==== | ||
Line 900: | Line 1031: | ||
$$ | $$ | ||
- | Použití: - rozpoznávání řeči, - analýza časových řad, - strojový překlad, - sledování objektů. | + | **Algoritmy:** |
+ | * **Forward-backward** – výpočet marginálních pravděpodobností, | ||
+ | * **Viterbi** – nalezení nejpravděpodobnější sekvence skrytých stavů, | ||
+ | * **Baum-Welch** – EM algoritmus pro trénink HMM. | ||
- | Hlavní algoritmy: - **Forward-backward** (výpočet pravděpodobností), - **Viterbiho algoritmus** (nejpravděpodobnější posloupnost), - **Baum-Welch** (EM algoritmus pro trénink). | + | **Použití:** |
+ | | ||
+ | | ||
+ | | ||
+ | | ||
===== 8. Řešení POMDP ===== | ===== 8. Řešení POMDP ===== | ||
Line 908: | Line 1046: | ||
**PBVI, HSVI** | **PBVI, HSVI** | ||
- | Řešení | + | ==== Řešení POMDP ==== |
- | POMDP je formálně definován jako sedmice | + | **Řešení částečně pozorovatelných Markovových rozhodovacích procesů (POMDP)** spočívá v nalezení optimální politiky na základě neúplné informace o stavu systému. V POMDP není stav přímo pozorovatelný – rozhodování se děje na základě tzv. **belief state** – pravděpodobnostního rozdělení přes možné stavy. |
+ | |||
+ | === Formální definice === | ||
+ | |||
+ | POMDP je definován jako sedmice | ||
+ | * **S** – množina stavů | ||
+ | * **A** – množina akcí | ||
+ | * **T(s' | ||
+ | * **R(s,a)** – odměnová funkce | ||
+ | * **Ω** – množina pozorování | ||
+ | * **O(o|s', | ||
+ | * **γ** – diskontní faktor | ||
+ | |||
+ | Hodnotová funkce je definovaná nad belief space a je konvexní. Přesné řešení je výpočetně náročné, proto používáme aproximační algoritmy. | ||
+ | |||
+ | Řešení problémů částečně pozorovatelných Markovových rozhodovacích procesů (POMDP) spočívá v nalezení optimální politiky, která maximalizuje očekávaný výnos na základě neúplné informace o stavu systému. V POMDP je totiž skutečný stav systému skrytý (latentní) a rozhodnutí je činěno na základě tzv. věrohodnostního rozdělení (belief state) – pravděpodobnostního rozdělení přes možné stavy daného systému. | ||
Hodnotová funkce pro POMDP je definována nad věrohodnostními stavy a je konvexní. Přesné řešení POMDP je výpočetně neproveditelné pro větší problémy, proto se používají aproximační metody. Mezi ně patří: | Hodnotová funkce pro POMDP je definována nad věrohodnostními stavy a je konvexní. Přesné řešení POMDP je výpočetně neproveditelné pro větší problémy, proto se používají aproximační metody. Mezi ně patří: | ||
Line 916: | Line 1069: | ||
==== Point-Based Value Iteration (PBVI) ==== | ==== Point-Based Value Iteration (PBVI) ==== | ||
- | PBVI aproximuje hodnotovou funkci | + | PBVI aproximuje hodnotovou funkci |
- | Algoritmus PBVI: 1. Inicializuj hodnotovou funkci | + | 1. Inicializace hodnotové funkce |
+ | 2. Iterace pro každý $b \in B$: | ||
+ | $$ | ||
+ | V_{i+1}(b) = \max_{a \in A} \left[ R(b, a) + \gamma \sum_{o \in Ω} P(o|b, | ||
+ | $$ | ||
+ | |||
+ | * $b_{a,o}$ je nová víra (belief) | ||
+ | * Hodnotová funkce se reprezentuje pomocí **α-vektorů**, | ||
Tímto způsobem PBVI konstruuje aproximaci optimality pomocí hodnotové funkce složené z tzv. $\alpha$-vektorů. | Tímto způsobem PBVI konstruuje aproximaci optimality pomocí hodnotové funkce složené z tzv. $\alpha$-vektorů. | ||
+ | |||
+ | PBVI výrazně zjednodušuje výpočet tím, že nepočítá hodnotu v celém belief prostoru. | ||
==== Heuristic Search Value Iteration (HSVI) ==== | ==== Heuristic Search Value Iteration (HSVI) ==== | ||
- | HSVI je vylepšením PBVI, které využívá | + | HSVI kombinuje |
+ | |||
+ | 1. **Inicializace: | ||
+ | * Dolní mez $V^-$: jednoduché politiky (např. fixní akce) | ||
+ | * Horní mez $V^+$: řešení odpovídající plně pozorovatelnému MDP | ||
+ | |||
+ | 2. **Heuristické prohledávání: | ||
+ | * Vybíráme beliefy, kde je největší rozdíl mezi $V^+$ a $V^-$ | ||
+ | * Průchod stromem víry (belief tree) řízený rozdílem mezi odhady | ||
+ | |||
+ | 3. **Update: | ||
+ | * Dolní mez – přidání nových α-vektorů | ||
+ | * Horní mez – konvexní obálka a přepočet odhadu | ||
Algoritmus HSVI: 1. Udržuje dolní odhad $V^-$ a horní odhad $V^+$ hodnotové funkce. 2. Používá hloubkové prohledávání stromu víry řízené heuristikou k výběru větví, kde je největší rozdíl mezi $V^+$ a $V^-$. 3. Provádí zálohování hodnot a zpřesňuje odhady na cestě k listům stromu. | Algoritmus HSVI: 1. Udržuje dolní odhad $V^-$ a horní odhad $V^+$ hodnotové funkce. 2. Používá hloubkové prohledávání stromu víry řízené heuristikou k výběru větví, kde je největší rozdíl mezi $V^+$ a $V^-$. 3. Provádí zálohování hodnot a zpřesňuje odhady na cestě k listům stromu. | ||
+ | |||
+ | HSVI garantuje ε-optimalitu: | ||
+ | |||
+ | HSVI zachovává horní a dolní meze hodnotové funkce a iterativně je zpřesňuje pouze v místech, která ovlivňují politiku. | ||
HSVI kombinuje výpočetní efektivitu s garancemi na kvalitu aproximace: algoritmus konverguje k ε-optimální politice, pokud se rozdíl mezi horním a dolním odhadem zmenší pod ε. | HSVI kombinuje výpočetní efektivitu s garancemi na kvalitu aproximace: algoritmus konverguje k ε-optimální politice, pokud se rozdíl mezi horním a dolním odhadem zmenší pod ε. |