์ด ๋จ์์์๋ competitive multiagent environment, ์ฆ ์๋ก ๊ฒฝ์์ ์ธ ๋ agent๊ฐ ์๋ ์ํฉ์ ๋ค๋ฃฌ๋ค. ์ด๋ game์ผ๋ก ์ ์๋ ค์ ธ ์๋ adversarial search problem์ ๋งํ๋ค.
1. Game
1) game์ ๋ค์๊ณผ ๊ฐ์ ์์๋ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- S0 : The initial state. ๊ฒ์์ด ์ด๋ค ์ํฉ์์ ์์๋๋์ง
- Player(s) : ๊ฐ state์์ ์ด๋ player๊ฐ ์์ง์ผ ์ฐจ๋ก์ธ์ง ์๋ ค์ค
- Actions(s) : ๊ฐ state์์ ์ทจํ ์ ์๋ move๋ค์ ์งํฉ์ return
- Result(s, a) : ์ด๋ค state s์์ action a๋ฅผ ํ์ ๋ result. transition model.
- TerminalTest(s) : ๊ฒ์์ด ๋๋ฌ๊ฑฐ๋ ํ๋ช ์ด ์ก์ ๋ true๋ฅผ ๋ฐํ. ๊ฒ์์ด ๋๋ฌ๋์ง ์ ๋๋ฌ๋์ง๋ฅผ ํ๋ณ. (๊ฒ์์ด ์ข ๋ฃ๋ ๊ทธ state๋ฅผ terminal state๋ผ๊ณ ๋ถ๋ฆ)
- Utility(s, p) : state s์์ player p์๊ฒ ์ผ๋ง๋ ์ ๋ฆฌํ์ง๋ฅผ ์ ์ํ๋ utility function( = objective function or payoff function)
2) Game Tree
: initial state, actions function, result function์ผ๋ก ํธ๋ฆฌ๋ฅผ ๋ง๋ค์ด search space๋ฅผ ํํํจ.
์ ์ ์ ๊ฒ์์ state, ๊ฐ์ ์ move๋ฅผ ์๋ฏธํ๋ค. ์ด tree๋ ๊ฐ๊ฐ ์ ๋ฐ์ move๊ฐ ํฉ์ณ์ ธ ์๋ค. ์ฆ ๋ ํ๋ฒ ์๋๋ฐฉ ํ ๋ฒ ๋ฒ๊ฐ์๊ฐ๋ฉด์ move๋ฅผ ํ๋ค. ์ด๋ฐ move๋ฅผ ๊ฒ์ ์ฉ์ด๋ก ply๋ผ๊ณ ๋งํ๋ค.
2. Optimal Decision in Games (Minimax Algorithm)
* Minimax Value : game tree์์ optimal stategy๋ minimax value๋ฅผ ํตํด ๊ฒฐ์ ๋๋ค. ๊ฐ node์ minimax value๋ ๊ฐ player๊ฐ ์ฒ์๋ถํฐ ๋๊น์ง optimalํ๊ฒ ๊ฒ์์ playํ๋ค๊ณ ๊ฐ์ ํ์ ๋์ utility์ด๋ค. ์ ํ๊ถ์ด ์ฃผ์ด์ก์ ๋, ๋๋ ๋์๊ฒ value๊ฐ maximum์ด ๋๋ state๋ฅผ ์ ํธํ ๊ฒ์ด๊ณ , ์๋๋ฐฉ์ ๋์ value๊ฐ minmum๋๋ state๋ฅผ ์ ํธํ ๊ฒ์ด๋ค.
MiniMax(s) = Utility(s) if TerminalTest(s)
max MiniMax(Result(s,a)) if Player(s) = MAX( ์ด๊ฑด ๋ด ์ฐจ๋ก์ผ ๋ )
min MiniMax(Result(s,a)) if Player(s) = MIN( ์๋ ์ฐจ๋ก์ผ ๋ )
์ฆ ๋ด ์ฐจ๋ก์ผ ๋๋ action์ ์ทจํ์ ๋์ utility ๊ฐ์ด maximumํ๊ฒ ์ ํํ ๊ฒ์ด๊ณ
์๋ ์ฐจ๋ก์ผ ๋๋ action์ ์ํ์ ๋์ utility ๊ฐ์ด minimumํ๊ฒ ์ ํํ ๊ฒ์ด๋ค.
์ฒซ ๋ฒ์งธ, ๋๋ utility ๊ฐ์ด ๊ฐ์ฅ ํฐ ๊ฒ์ ์ ํํ ๊ฑฐ๋ค. ๊ทธ๋์ ์ด๋ค ๊ฐ์ด ๊ฐ์ฅ ํด๊น ํ๊ณ ๋ดค๋๋ ์๋์์ ์ด๋ฏธ ์๋๊ฐ ๋ด utility๊ฐ ๊ฐ์ฅ ์์์ง๋ state๋ฅผ ์ ํํ์ ๊ฒ์ด๋ค. ๊ทธ๋์ ๊ฒฐ๊ตญ ๋ด๊ฐ ์ ํํ๊ฒ ๋๋ state๋ ์๋๊ฐ ๊ฐ๊ฐ์ action์ ์ทจํ์ ๋ ๋์ฌ ์ ์๋ utility์ ์ต์๊ฐ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ฐ์ง state๊ฐ ๋๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ๊ณ์ฐ์ด ๋๋ฉด A๋ ์ต์ํ 3์ ์ด๋์ ๋ณผ ์ ์๋ a1์ action์ ์ทจํ ๊ฒ์ด๋ค. B๋ ๋น์ฐํ ์ด ์ค์์ ๊ฐ์ฅ ์์ b1 action์ ์ทจํ ๊ฒ์ด๊ณ .
๋ค์์ minimax algorithm์ด๋ค. Max-Value๋ MinValue์ค์ ์ต๋๊ฐ, Min-Value๋ MaxValue์ค์ ์ต์๊ฐ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์ ์ผ ๋จผ์ ๋ MAX turn์ด๋๊น Min-value ์ค max ๊ฐ์ returnํ๋ค. ์๋์ ๋ถํฐ๋ ๊ณ์ ๋ฐ๋ณต์ด๋ค.
๋ง์ฝ terminal node, ์ฆ ๊ฒ์์ด ๋๋๋ node๋ฉด ๊ทธ ๋ ธ๋์ utility ๊ฐ์ ๋ฐํํ๋ค.
์ด๋ ๊ฒ ์๊ธด๊ฒ ๋ง์น dfs๊ฐ๋ค.
- Min์ด optimalํ๊ฒ ๊ฒ์์ playํ์ง ์์ ๊ฒฝ์ฐ, optimal ํ ๊ฒฝ์ฐ๋ณด๋ค ๋์๊ฒ๋ ๋ ์ด๋์ด ๋๋ค.
- minimax algorithm์ ํ์ฌ state์์ ๋ชจ๋ minimax decision์ ํ์ํ๋ฏ๋ก complete dfs์ ๊ฐ๋ค.
- ๊ทธ๋์ minimax search๋ tree์ ๊น์ด์ ๋ฐ๋ผ ํ์ํด์ผ ํ game์ states๊ฐ exponential ํ๋ค.
* Multiplayer Games
: ๋ง์ฝ ๋์ด์ ๊ฒ์์ ํ๋ ๊ฒ์ด ์๋๋ผ ์ฌ๋ฌ๋ช ์ด์ ๊ฒ์์ ํ๋ค๋ฉด, node์๋ utility ๊ฐ ํ๋ ๋์ ์ vector of value๊ฐ ๋ฐฐ์ ๋ ๊ฒ์ด๋ค. ์ด vector๋ ๊ฐ player์ ๊ด์ ์์ ์ด state์ utility๋ฅผ ์๋ ค์ค๋ค. ๊ฐ player์ ์ฐจ๋ก์์ player๋ค์ ์์ ์ ๊ด์ ์์ ๊ฐ์ฅ ์ด๋์ด ๋์ state๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ ๊ฒ์ด๋ค.
3. Alpha-Beta Pruning ( Alpha - Beta Search Algorithm )
: minimax ์ ๋๊ฐ์ด ์๋ํ์ง๋ง, final decision์ ์ด์ฐจํผ ์ํ์ง ๋ชปํ branch๋ค์ ์ฒ์๋ถํฐ ๊ฐ์ง์น๊ธฐ๋ฅผ ํด์ค๋ค.
๋ง์ฝ tree์ node n์ด ์๋ค๊ณ ํ์. ๋ง์ฝ player๊ฐ n๋ณด๋ค ์ ์ชฝ์์ ๋ ์ข์ ์ ํ์ง m์ ๊ฐ์ง๊ณ ์์๋ค๋ฉด, n์ ์ค์ play์์ ์ ํ๋ ์ผ์ด ์์ ๊ฒ์ด๋ค. ์ด๋ด ๊ฒฝ์ฐ ์ฐ๋ฆฌ๋ n์ด ์ํ ๋ ธ๋๋ค์ ๋์ด์ ์กฐ์ฌํด๋ณด์ง ์๊ณ pruneํ ์ ์๋ค. ์ด์ฐจํผ ์ ๊ธฐ์ ์ ์ผ bestํ ๊ฒฝ์ฐ๋ฅผ ์ ํํด๋ดค์ n์ด๊ธฐ ๋๋ฌธ์!
๊ทธ๋์ Alpha-beta pruning์ ๋๊ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ๋ค.
a(alpha) : ์ง๊ธ๊น์ง ์ญ ํ์ํ๋ ๊ฒ ์ค์์ max์๊ฒ ๊ฐ์ฅ bestํ ๊ฐ(highest-value) max๋ ์ด ๊ฐ๋ณด๋ค ์์ node๋ ์์ ์๋ณธ๋ค.
B(beta) : ์ง๊ธ๊น์ง ์ญ ํ์ํ๋ ๊ฒ ์ค์์ min์๊ฒ ๊ฐ์ฅ bestํ ๊ฐ(lowest-value) min์ ์ด ๊ฐ๋ณด๋ค ํฐ node๋ ์์ ์๋ณธ๋ค.
Alpha-beta search๋ ๋จ์ ๊ฐ์ง๋ค์ ๊ฐ์ง์น๊ธฐ ํด๋๊ฐ๋ฉฐ ๊ณ์ํด์ a์ B ๊ฐ์ Update ํด๋๊ฐ๋ค.
minimax์ ๋ฌ๋ฆฌ ์ฒ์ ์์ํ ๋ ์ง์ max_value๋ฅผ ํธ์ถํ๋ค. ์ด ๋ ์ต๋๊ฐ์ -INT, ์ต์๊ฐ์ INF์ด๋ค.
max_value์ ๋ค์ด์ค๋ฉด ๋ค๋ฅธ ๊ฒ์ ๊ธฐ์กด์ ๊ฒ๊ณผ ๊ฐ์๋ฐ, ์ํ์ ๋ฒ ํ ๊ฐ์ด ์ถ๊ฐ๊ฐ ๋์๋ค.
v ๊ฐ์ (์ด Max๋ ธ๋์์ ๋ฐ์ min value์ค์ ๊ฐ์ฅ ๋์๋ minimax ๊ฐ)๊ณผ (์๋ก ์ฐพ์ min_value)์ค์ ๋ ํฐ ๊ฒ์ด ๋๋ค. ์ฆ v๋ ํญ์ min value ์ค ์ต๋๊ฐ์ด๋ค.
๋ง์ฝ ์ด v์ ๊ฐ์ด ๊ธฐ์กด ์ต์๊ฐ B(์์ชฝ Min node์์ ๋ฐ์์จ, ์ด์ ๊น์ง์ min ๋ ธ๋์์ ์ฐพ์๋ ๊ฐ์ฅ ๋ฎ์ minimax ๊ฐ) ๋ณด๋ค ํฌ๋ฉด ์ด์ฐจํผ min ๋จ๊ณ์์ ์ ํ๋ ๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก ๋ฐ๋ก ๊ฐ์ง์น๊ธฐ, returnํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ v๊ฐ B๋ณด๋ค ์์ผ๋ฉด ์ต๋๊ฐ์ธ a ๊ฐ์ ๊ธฐ์กด a๊ฐ๊ณผ ์๋ก์ด ๊ฐ v์ ๋น๊ตํด์ ๋ ์ด๋์ด ํฐ ๊ฐ์ผ๋ก ๋ฐ๊พธ๊ณ return ํด์ค๋ค.
min_value๋ฅผ ๋ณด์.
์ผ๋จ v๋ ์ง๊ธ๊น์ง ๋ฐ์๋ max value์ ์ต์๊ฐ๊ณผ ์๋ก ๋ฐ์ max_value์ค์ ๋ ์์ ๊ฒ์ ์ ํํ๋ค. ์ฆ v๋ max value ์ค ์ต์๊ฐ์ ๋งํ๋ค. ์ด v์ ๊ฐ์ด , ์์ ์ฐพ์๋ max์ ์ต๋ ์ด๋ a ๋ณด๋ค ์์ผ๋ฉด ์ด์ฐจํผ MAX๊ฐ ์ ํ์ ํ์ง ์์ ๊ฒ ์ด๋ฏ๋ก return์์ผ ๋ฒ๋ฆฐ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ฝ v๊ฐ a๋ณด๋ค ํฌ๋ฉด B์ MAX๊ฐ ์ป์ ์ ์๋ ๊ฐ์ฅ ์์ ์ด๋์ updateํด์ฃผ๊ณ return ํด์ค๋ค.
์ ๋ฆฌํ์๋ฉด a๊ฐ์ Max๊ฐ ์ต์ํ์ผ๋ก ๋ฐ๊ณ ์ถ์ดํ๋ ์ด๋์ด๋ค. ์ด๋ฏธ ์์์ a๋ผ๋ ์ด๋์ ๋ณผ ์ ์์์ด ๋ณด์ฅ๋๋๋ฐ, Min_Value๋ฅผ ํตํด Max๊ฐ ๊ทธ ๋ ธ๋์์ ๋ฐ์ ์ ์๋ ์ต๋ ์ด๋์ ๋ดค๋๋ a ๋ณด๋ค ์๋ค? ๋์ด์ ํ์์ ํ ํ์๊ฐ ์๋ ๊ฒ์ด๋ค. ์ฆ Min_Value์์ ํ์ฌ ํ์์ ํํ์ ์ ์ง์ ํด์ค ๊ฒ์ด๋ค.
B๋ Min์ด ํ์ฉํ ์ ์๋ MAX์ ์ด๋์ ์ต๋๊ฐ์ด๋ค. ์ด๋ฏธ ์์์ MAX๊ฐ B๋ผ๋ ๋ ์์ ์ด๋์ ๋ณผ ์ ์๋ ๋ ธ๋๊ฐ ์๋๋ฐ, ๊ตณ์ด Max_Value๋ฅผ ํ ๊ฐ์ด B๋ณด๋ค ํฐ ๊ฒฝ์ฐ๋ฅผ ๋ ๋ณผ ํ์๋ ์๋ค. ์ฆ Min์ด ์์ ์ action์ ์ ํ๊ธฐ ์ํด ํธ์ถํ Max_Value์์ ์ด๋์ ํ์ํ ๋, ์ด ๊ฐ์ ๋์ผ๋ฉด ๋ ๋ณผ ํ์๊ฐ ์๋ค๊ณ ์ํ์ ์ ์ง์ ํด ์ค ๊ฒ ์ด๋ค.
(a) ์ฐ์ a=-INF, B=INF๋ก ์ด๊ธฐํํ๊ณ A์์ Max_value๋ฅผ ํธ์ถํ๋ค.
๊ทธ๋ฌ๋ฉด B์์ Min_Value๋ฅผ ํธ์ถํ๊ฒ ์ง? ์ด ๋ B์์ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ํ์ํ๋๋ v=3์ด ๋์๊ณ , ์ด v์ ๊ฐ์ a๋ณด๋ค ํฌ๋ฏ๋ก ๋์ด๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ B๋ฅผ 3์ผ๋ก ์ ๋ฐ์ดํธ ํด์ค๋ค.
(b) ๋ค์์ผ๋ก 12์ธ ๋ ธ๋๋ฅผ ํ์ํ๋ค. v๋ 3๊ณผ 12์ค ์์ ๊ฐ์ด๋ฏ๋ก ์ฌ์ ํ v = 3์ด ๋๋ค.
(c) ๋ค์์ผ๋ก 8์ธ ๋ ธ๋๋ฅผ ๋ณธ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก v=3์ด ๊ทธ๋๋ก ์ ์ง๋๊ณ loop๋ฌธ์ ๋ค ๋์์ผ๋ฏ๋ก return v = 3 ์ ํด์ค๋ค.
์ด๋ ๊ฒ ๋๋ฉด B๋ ธ๋์์ ๋ฐ๋ผ๋ณธ ๊ฐ์ฅ ์์ ๊ฐ์ 3์ด ๋๋ค.
A์ ๊ด์ ์์ ๋ณธ B ๋ ธ๋์ ์ด๋์ 3์ด๋ค. 3์ด -INF๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ v=3์ด ๋๊ณ , ์ด ๋ v๋ B์ ๊ฐ์ธ INF๋ณด๋ค ์๊ธฐ ๋๋ฌธ์ ๋ฌด์ฌํ ๋์ด์จ๋ค. ๊ทธ๋ฆฌ๊ณ a ๊ฐ๋ 3์ผ๋ก ์ ๋ฐ์ดํธ ๋๋ค.
(d) ์ ๊ทธ๋ผ ๋ค์ ๋ ธ๋ C๋ฅผ ์ดํด๋ณด์. A์์๋ Min_value(C, 3, INF)๋ฅผ ํธ์ถํ๋ค. ๊ทธ๋์ C์ ์ฒซ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ดค๋๋ return 2๋ฅผ ํ์ฌ C์๊ฒ ๋์์จ๋ค. ์ด๋ ๊ฒ ๋๋ฉด v=2๋ก ์ ๋ฐ์ดํธ๊ฐ ๋๋๋ฐ, ์ด v์ ๊ฐ์ด ๊ธฐ์กด a๊ฐ์ธ 3๋ณด๋ค ์๊ธฐ ๋๋ฌธ์, ์ด node๊ฐ ํฌํจ๋ C๋ ธ๋๋ ๋์ด์ ๋ณผ ํ์๊ฐ ์์ด์ return 2๋ฅผ ํ๊ฒ ๋๋ค. (์ ์ด๋ ์ ๊ธฐ์ ๋์ค๋ minimum value๋ 2๋ณด๋ค ๊ฐ๊ฑฐ๋ ์์๊ฑฐ๊ธฐ ๋๋ฌธ์ ์ด์ฐจํผ ์ ํ ์๋ ๊ฑฐ๋ผ 2 return ํด์ค๋ ๋จ)
(e) ์ด์ D ๋ ธ๋๋ฅผ ํ์ํด๋ณด์. Min_value(C, 3, INF)๋ฅผ ํธ์ถํ๋ค. D์ ์ฒซ๋ฒ์งธ ๋ ธ๋์์ return 14๊ฐ ๋๋ฏ๋ก v= 14์ด๋ค. ์ด ๊ฐ์ a๋ณด๋ค ํฌ๋ฏ๋ก okํ๊ณ , ๊ธฐ์กด B๊ฐ์ธ INF๋ณด๋ค 14๊ฐ ๋ ์์ผ๋ฏ๋ก B๋ฅผ 14๋ก ์ ๋ฐ์ดํธ ํด์ค๋ค.
(f) ๋๋จธ์ง ๋ ๋ ธ๋๋ฅผ ๊ฒ์ฌํด๋ณด๋ฉด 5์ผ ๋๋ v = 5 ๊ฐ ๋๊ณ , ์ด ๊ฐ์ด a๋ณด๋ค ํฌ๋ฏ๋ก ok, ๊ทธ๋ฆฌ๊ณ B๋ 14๋ณด๋ค 5๊ฐ ์์ผ๋ฏ๋ก 5๋ก ์ ๋ฐ์ดํธ ํด์ค๋ค. ๊ทธ๋ฐ๋ฐ 2์ผ ๋ v = 2๊ฐ ๋๋ฉด , ์ด ๊ฐ์ด a๋ณด๋ค ์์์ ธ์ ๋์ด์ ๋ณผ ํ์๊ฐ ์์ด์ง๋ค. ๊ทธ๋์ ๊ทธ๋ฅ ๊ทธ ์ํ์์ return 2๋ฅผ ํด์ค๋ฒ๋ฆฐ๋ค.
๊ทธ๋ผ ์ด์ A, B, C์ค ๊ฐ์ฅ ํฐ ๊ฐ์ธ 3์ ์ป์ ์ ์๋ B๋ก ์ด๋์ ํ๋ค. ์ด ๋ value๋ v=3๊ฐ ๋๋ค.
- ์ด alpha-beta pruning์ state๋ค์ ์กฐ์ฌํ๋ ์์์ ์ํฅ์ ๋ง์ด ๋ฐ๋๋ค. bestํ ๊ฒฝ์ฐ ์๊ฐ ๋ณต์ก๋๋ O(b^(m/2))๋ก ์ค์ด๋ ๋ค. (์๋๋ O(b^m) ) Max level์์๋ Minimax value๊ฐ ํฐ ๋ ธ๋๋ถํฐ , Min level ์์๋ Minimax value๊ฐ ์์ ๊ฒ๋ถํฐ ์กฐ์ฌํ๋ฉด ์ ์ผ ๊ตฟ!
- ๊ณผ๊ฑฐ search์์ ๊ฐ์ฅ bestํ๋ move๋ฅผ ๋จผ์ ์๋ํ๋ ๊ฒ๊ณผ ๊ฐ์ dynamic move-ordering schemes์ ์ถ๊ฐํ๊ฒ ๋๋ฉด, ์ด๋ก ์ ์ผ๋ก ๊ฐ์ฅ ํจ์จ์ ์ธ case์ ๊ทผ์ ํ ์ ์๋ค. current move์์ ์ด๋ค path๊ฐ ๊ฐ์ฅ bestํ๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ด๋ด๋ ๋ฐฉ๋ฒ์๋ iterative deepening search๊ฐ ์๋ค. ๋จผ์ 1 ply deep์ searchํ๊ณ ๊ฐ์ฅ best path๋ฅผ ๊ธฐ๋กํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ ์นธ ๋ searchํ ๋๋ ์ด์ ์ ๊ธฐ๋กํด๋ path๋ฅผ ์ด์ฉํด์ ์ด๋ค ์์๋ก ์์ง์ฌ์ผ ํ๋์ง๋ฅผ ์๋ ค์ค๋ค.
4. Real-Time Decision
- Minimax algorithm์ ์ ์ฒด์ game search space๋ฅผ ์์ฑํด๋ด๊ณ , alpha-beta algorithm์ ๊ทธ ์ค ๋ง์ ๋ถ๋ถ์ ๊ฐ์ง์น๊ธฐ ํ ์ ์๊ฒ ํด์ค๋ค. ํ์ง๋ง alpha-beta ์ญ์ ์ฌ์ ํ search space์ ์ผ๋ถ๋ถ์ terminal states๊น์ง ํ์์ ํด๋ด์ผ ํ๋ค. Terminal node๊ฐ ๋์ฌ ๋๊น์ง์ ๊น์ด๊ฐ ๋ณดํต์ ๋งค์ฐ ๊น๊ธฐ ๋๋ฌธ์, ์ด ์๊ณ ๋ฆฌ์ฆ์ ๊ทธ๋ฆฌ ์ค์ฉ์ ์ด์ง๋ ์๋ค.
๊ทธ๋์ alpha-beta ๋ฅผ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ณํํ ์ ์๋ค.
โ utility function์ heuristic evaluation function์ผ๋ก ๋์ฒดํด์ ์ฌ์ฉํ ์ ์๋ค.
โก ๋๋ terminal test ๋์ Evaluation function์ ์ด์ฉํ cutoff test๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
1) Evaluation functions
game-playing program์ ์ํ ๋ฅ๋ ฅ์ evaluation function์ ํ๋ฆฌํฐ์ ์ํฅ์ ๋ฐ๋๋ค.
โ evaluation function์ ์ฌ์ฉํ ๋, ์ค์ utility function์์์ terminal states์ ์์์ ๋ฌ๋ผ์ง๋ฉด ์๋๋ค.
โก nonterminal state์์, evaluation function์ ์ค์ ๋ก ์ด๊ธธ ํ๋ฅ ๊ณผ ๊ฐํ๊ฒ ์ฐ๊ด๋์ด ์์ด์ผ ํ๋ค.
โข ๊ณ์ฐ์ด ์ง๋์น๊ฒ ์ค๋ ๊ฑธ๋ฆฌ๋ฉด ์๋๋ค.
* Features
: ๋๋ถ๋ถ์ evaluation function์ ๊ฐ state์ features๋ฅผ ํตํด state๊ฐ ์ผ๋ง๋ ์ข์์ง๋ฅผ ๊ณ์ฐํ๋ค. ์ด ๋ feature๋ state์ '์ํ'๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. Feature๋ฅผ ์ฌ์ฉํ์ฌ states์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ถ๋ฅํ๊ฑฐ๋ ๊ฐ์ class๋ค์ ์ ์ํ ์ ์๋ค. ๊ฐ์ feature๋ฅผ ๊ฐ๋ states๋ผ๋ฆฌ ๋ฌถ์ ๊ฒ์ด ์นดํ ๊ณ ๋ฆฌ์ด๋ค.
-> state๊ฐ ์ด๋ค ์ํ(=feature)์ ์๊ณ ์ด๋ ์ด ์ํ๊ฐ ์ด๋ค ์ํ์ธ์ง ๋ถ์ํด์ ์ผ๋ง๋ ์ ๋ฆฌํ์ง ๊ฐ ๋ฐํํ๋๊ฒ evaluation function
* Weighted Linear Functions
: ๋๋ถ๋ถ์ evaluation funtion์ ๊ฐ feature์์์ ๊ธฐ์ฌ๋๋ฅผ ๊ณ์ฐํ ๋ค์์ ์ด๋ค์ ํฉ์ณ์ ์ต์ข ์ ์ธ value๊ฐ์ ์ฐพ๋๋ค.
Feature์ weights๋ game์ rule์ ์ผ๋ถ๋ ์๋๋ค. ๊ทธ๊ฒ๋ค์ ์์ธ๊ธฐ ๋์์ ์ฌ๋๋ค์ ๊ฒฝํ์์ ๋์จ๊ฒ์ด๋ค. ์ฌ๋๊ณผ ๋ฌ๋ฆฌ ์ด๋ฌํ ๊ฒฝํ์ด ์๋ ๊ฒ์์์๋ machine learning์ ์ด์ฉํด evaluation function์ weight๋ฅผ ์ถ์ ํ ์ ์๋ค.
2) Cutoff Strategies
: ๋๋ถ๋ถ์ straightforward apporach๋ depth limit์ ์ค์ ํ์ฌ search์ ์์ ์กฐ์ ํ๋ค. ์ด๋ ๋ง์ฐฌ๊ฐ์ง๋ก depth limit ๊น์ง๋ง search ํด๋ณด๊ณ cutoffํ๋ค.
Cutoff Test๋ ์ด๋ ํ ์ ํด์ง depth limit์ ๋์ด๊ฐ๋ฉด true๋ฅผ returnํ๋ค. depth limit๋ ํ ๋น๋ ์๊ฐ ์์ ๋ต์ ๋์ถํ ์ ์๋๋ก ์ ํ๋ค.
๋ ๊ฐ๋ ฅํ ์ ๊ทผ ๋ฐฉ์์ iterative deepening์ ์ฌ์ฉํ๋ฉด ๋๋ค. ์๊ฐ์ด ๋ค ๋๋ฉด, ํ๋ก๊ทธ๋จ์ ๊ทธ ๋๊น์ง ํ์ํ ๊ฒ ์ค ๊ฐ์ฅ ๊น์ ๊ณณ์์ ์๋ฃ๋ search์์ ๋ต(move)๋ฅผ ์ ํํด ๋ฐํํ๋ค. ์ด๋ฌํ iterative deepening์ move ordering์๋ ๋์์ ์ค๋ค.
์ด๋ฐ ๊ฐ๋จํ approach๋ evaluation function์ ๋๋ต์ ์ธ ์ฑ์ง ๋๋ฌธ์ error์ ์ผ์ผํฌ ์๋ ์๋ค. (ํฐ๋ฏธ๋ ๋ ธ๋๊น์ง ๊ฐ๋ ๊ฒ์ด ์๋๋๊น ๋น์ฐํ error๊ฐ ๋ ์ ๋ฐ์ ...)
*Quiescence Search (์ ์ ํ์)
: evaluation function์ ๊ฐ position๋ค์ด quiescent(์ ์ )์ผ ๋, ์ฆ ๊ฐ๊น์ด ๋ฏธ๋์์ evaluation ๊ฐ์ด ํฐ ๋ณ๋์ ๋ณด์ผ ๊ฐ๋ฅ์ฑ์ด ์์ ๋์๋ง ์ ์ฉ ๊ฐ๋ฅํ๋ค. ์งํํ ๋๋ง๋ค evaluation์ด ์๋์น ๊ฒฝ์ฐ, ํด๋น move๊ฐ ์ ๋ง ์ข์ move์ธ์ง ํ๋จํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋ ํ์ํ ํ์๊ฐ ์๋ค.
์ด๋ ๋ฏ Nonquiescent position์ด๋ผ๋ฉด, quiescent position์ ๋๋ฌํ ๋๊น์ง, ์ฆ evaluation ๊ฐ์ด ์์ ๋ ๋ ๊น์ง ํ์์ ํ๋ฉด ๋๋ค. ์ด ๋์ search๋ฅผ quiescence search๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด๋ค ํน์ ์ ํ์ ์ด๋๋ง ๊ณ ๋ คํจ์ ํตํด(chess๋ผ๋ฉด ์ด๋ค ๋ง์ ์ก๋ ๊ฒฝ์ฐ์ move๋ฅผ ์์ฃผ๋ก), ํด๋น ๋ ธ๋์ ๋ถํ์ค์ฑ์ ํด๊ฒฐํ ์ ์๋ค.
*Horizon Effect (์งํ์ ํจ๊ณผ)
: ๋ช ์ ๋ ๊ฐ๋ณด๋ฉด ์ด state๊ฐ ๋์๊ฒ ์น๋ช ์ ์ผ๋ก ์ข์ง ์๋ค๋ ๊ฒ์ ์ ์ ์๋๋ฐ, ๊ทธ๊ฒ์ ๋ชป ๋ณด๋ ์ํ๋ฅผ ๋งํ๋ค. ์ข์์ง ๋์์ง ์ฒดํฌํ๊ธฐ ์ด๋ ต๊ฑฐ๋, ์ข๋ค๊ณ ์๊ฐํด์ ์ ํํ๋๋ฐ ์๊ณ ๋ณด๋๊น ์ ์ข์ ๊ฒฝ์ฐ๋ค์ด ๊ทธ๋ฌํ๋ค. 'delaying tactics'์ผ๋ก ์ผ์์ ์ผ๋ก ํผํ ์ ์๋ค. ๊ฐ์ฅ ์ ๊ฑฐํ๊ธฐ ์ด๋ ค์ด effect์ด๋ค.
๋ณด๋ฉด ๊ฒ์ ์ ๋น์์ ๊ฒฐ๊ตญ ์ฃฝ๊ฒ ๋์ด์๋ค. ํ์ง๋ง ๊ฒ์ pawn์ผ๋ก ์ด ์ฃฝ์์ ๋ค๋ก ๋ฏธ๋ฃฐ ์๋ ์๋ค. ํ์ง๋ง ๊ฒฐ๊ตญ ์ฃฝ๊ฒ ๋๊ธฐ ๋๋ฌธ์ ์๋ฏธ๊ฐ ์๋ค. ๋ง์ฝ ๊ทธ๋ฅ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋๋ฆฐ๋ค๋ฉด ๋ถ๋ช ์ด ์๋ฏธ์๋ ํฌ์์ ํ๊ฒ ๋ ๊ฒ์ด๋ค.
*Singular Extension
: horizon effect๋ฅผ ๋ฐฉ์งํ๋ ํ๋์ ๋ฐฉ๋ฒ์ผ๋ก, ์ด๋ค move๊ฐ ๋ค๋ฅธ move๋ณด๋ค ํ์ฐํ๊ฒ ์ข์๋ณด์ธ๋ค๋ฉด, depth limit์ ๋ฐ๋ผ cut-off ํ์ง ๋ง๊ณ ๋๊น์ง ํ์ํด๋ณด๋ ๊ฒ์ ๋งํ๋ค. ์ด์ฐจํผ singular extension์ด ์ผ์ด๋๋ ๋ ธ๋๋ ๋ช๊ฐ ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ tree๋ฅผ deeperํ๊ฒ ๋ง๋ ๋ค๊ณ ํด์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ง์ด ๋๋ฆฌ์ง๋ ์์ ๊ฒ์ด๋ค.
*Forward Pruning
: ์ฃผ์ด์ง node์์ ๋ช๊ฐ์ moves๋ ๊ธฐ์ค ์์ด ๊ฐ์ง์น๊ธฐ ํด๋๊ฐ๋ค. ๊ทธ๋์ ๋ชจ๋ ๊ฐ๋ฅํ subtree๋ฅผ ํ์ํ๋ ๊ฒ์ด ์๋๋ผ ๋ช๋ช๊ฐ๋ง searchํ๋ค.
- Beam search : forward pruning์ ์์ฉ๋ฒ์ ์ผ๋ก, ๊ฐ ply ๋๋ง๋ค ๋ชจ๋ possible moves๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์๋๋ผ n๊ฐ์ best moves๋ง ๊ณ ๋ คํ์ฌ ๊ทธ๋ค๋ง ํ์ํด๋๊ฐ๋ ๊ฒ์ ๋งํ๋ค.
--> ํ์ง๋ง ์ด approach๋ ๊ฐ์ฅ bestํ move๊ฐ ๊ฐ์ง์น๊ธฐ ๋นํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ํํ๊ธฐ๋ ํ๋ค.
* Table Lookup
: ๋๋ถ๋ถ์ ๊ฒ์ playing program์ ์ด 'table lookup'์ ํ์ฉํ๋ค. ์ด๊ฒ ๋ญ๋ํ๋ฉด ์ฒ์ ๋ช ์์ ๋ง์ง๋ง ๋ช ์๋ ์ฌ์ ์ ๋ฏธ๋ฆฌ searching ํด์ ์ข์ ์๋ค์ ์ ์ฅํด๋๊ณ ์ฌ์ฉํ๋ ๊ฒ์ ๋งํ๋ค.
๋ํ ์ปดํจํฐ๋ policy๋ฅผ ๋ง๋ค์ด๋ด์ endgame์ ํ์ด๋๊ฐ ์ ์๋ค. policy๋ ๊ฐ๊ฐ ๊ฐ๋ฅํ ๋ชจ๋ state์์ ๊ฐ๋ฅํ best move๋ฅผ ๋ฏธ๋ฆฌ ๊ณ์ฐํด ๋๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฉด ๋ค์ ๋ค ๊ณ์ฐํ ํ์ ์์ด ๊ทธ ๋ ๊ทธ ๋ best move๋ฅผ ์ฐพ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
'๐ก๐ธ๐ธ๐ถ5: ๐ฆ๐๐๐๐ถ ๐ฐ๐๐พ๐ > Artificial Intelligence(COSE361)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธ๊ณต์ง๋ฅ] 7. Propositional logic - 1 (0) | 2021.04.24 |
---|---|
[์ธ๊ณต์ง๋ฅ] 6. Constraint Satisfaction Problems (0) | 2021.04.24 |
[์ธ๊ณต์ง๋ฅ] 4. Beyond Classical Search - 2 (0) | 2021.04.24 |
[์ธ๊ณต์ง๋ฅ] 4. Beyond Classical Search - 1 (0) | 2021.04.24 |
[์ธ๊ณต์ง๋ฅ] 3. Solving problems by searching - 3 (0) | 2021.04.24 |