![]() |
![]() |
![]() |
์ด ํ๋ก์ ํธ๋ DQN ๊ฐํํ์ต ๋ฐฉ๋ฒ๋ก ์ ์ฌ์ฉํด ์ง๋ขฐ์ฐพ๊ธฐ๋ฅผ ํ์ด๋ด๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
2024.07.25 ๊ธฐ์ค,
๐ฅ Win rate : 0.839 (ยฑ 0.037)
์ง๋ขฐ์ฐพ๊ธฐ๋ ๋งต์ ๊น๋ ค์๋ ๋ชจ๋ ์ง๋ขฐ๋ฅผ ์ฐพ๋ ๊ฒ์์ด๋ค. '์ฐพ๋๋ค'๋ ์ง๋ขฐ๋ผ๊ณ ํ๋จ๋๋ ํ์ผ์ ๊ฑด๋ค์ด์ง ์๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ง๋ขฐ์ฐพ๊ธฐ์ ์น๋ฆฌ์กฐ๊ฑด์ ์ง๋ขฐ๊ฐ ์๋ ๋๋จธ์ง ๋ชจ๋ ํ์ผ์ ๋ค ๊น๋ ๊ฒ๊ณผ ๊ฐ๋ค. ์ด ๋งฅ๋ฝ์์ ์ผ๋ฐ์ ์ผ๋ก ์ง๋ขฐ์ฐพ๊ธฐ ๊ฒ์ ๋ด ์กด์ฌํ๋ ๊น๋ฐ ๊ธฐ๋ฅ์ ํ์๊ฐ ์๋๋ค. ๊น๋ฐ์ ์ฐพ์๋ธ ์ง๋ขฐ๋ฅผ ํ์ํ๊ธฐ ์ํด ์๋ ๊ธฐ๋ฅ์ด๋ค. ์น๋ฆฌ์กฐ๊ฑด์ ๋ฏธ๋ฃจ์ด ๋น์ถฐ ๋ณผ ๋, ๊น๋ฐ์ ํ๋ ์ด์ด์ ํธ์์ฑ์ ์ํด ์กด์ฌํ๋ ๊ธฐ๋ฅ์ผ ๋ฟ ํ์์๊ฑด์ ์๋๋ค. ๋ฐ๋ผ์ ๋ณธ ํ๋ก์ ํธ์์๋ ๊น๋ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ์ง ์๊ณ ์งํํ๋ค.
์ง๋ขฐ์ฐพ๊ธฐ์ ๋์ด๋๋ ์ด๊ธ ์ค๊ธ ๊ณ ๊ธ์ผ๋ก ๋๋์ด์ ธ ์๋ค.
Level | Height | Width | Num of Mine | density |
---|---|---|---|---|
์ด๊ธ | 9 | 9 | 10 | 12.3% |
์ค๊ธ | 16 | 16 | 40 | 15.6% |
๊ณ ๊ธ | 16 | 30 | 99 | 20.6% |
๊ตฌํํ ํ๊ฒฝ์ผ๋ก ์ปค์คํ ํฌํจ ๋ชจ๋ ๋์ด๋๋ก ํ์ต์ด ๊ฐ๋ฅํ์ง๋ง, ๋ณธ ํ๋ก์ ํธ๋ ์ด๊ธ(9*9, ์ง๋ขฐ 10๊ฐ)์ ๊ธฐ์ค์ผ๋ก ์งํํ๋ค.
DQN ๋ฐฉ๋ฒ๋ก ์ ์ด์ฉํ์ผ๋ฉฐ, ๊ตฌ์ฒด์ ์ธ ๋ด์ฉ ๋ฐ ๊ตฌํ์ Ch.03์ ๊ธฐ์ฌ๋์ด ์๋ค. @ DeepMind Gym ์คํ์ผ์ ๋ฐ๋ผ step()
, reset()
, render()
, action_space
๊ฐ ๊ตฌํ๋์ด ์๋ค.
์ฝ๋ฉ์์ ํ์ต์ ์งํํ๋ค. T4 GPU / L4 GPU / A100 GPU๋ฅผ ์ฌ์ฉํ๊ณ , A100์ ๊ธฐ์ค์ผ๋ก 20๋ง ์ํผ์๋(valid ํฌํจ) 6์๊ฐ 25๋ถ์ด ์์๋๋ค.
- 01. ์ด๋ฏธ ์ด๋ฆฐ ํ์ผ์ ๋๋ฅด๋ ํ๋
- 02. ์ฃผ๋ณ ํ์ผ์ด ๊น์ง์ง ์์ ํ์ผ์ ์ ํํ๋ ํ๋
- 03. ์ฃผ์ ํ๋ผ๋ฏธํฐ
- 01. Test : ๋ชจ๋ธ๋ค ์ฑ๋ฅ๋น๊ต
- 02. ์ต๊ณ ์ฑ๋ฅ ๋ชจ๋ธ์ ํ์ดํผ ํ๋ผ๋ฏธํฐ
- 03. ์ต๊ณ ์ฑ๋ฅ ๋ชจ๋ธ์ ๋ณด์ ๊ตฌ์กฐ
- 04. ์ฒซ ํ๋์ผ๋ก ์ง๋ขฐ์ฐพ๊ธฐ ํ์ ๊ผญ์ง์ ์ ์ ํํ๋ค
- 05. baseline : rule base
0.0.0
9*9(easy์ ๋งต ๊ท๊ฒฉ)์ arr์ ์ฃผ๋ณ๋ถ ์ง๋ขฐ์ ๊ฐ์๋ฅผ ์ผ ํ์ผ์ ์(0-8)๋ฅผ ๊ทธ๋๋ก ๋ฐ์ํ๊ณ , ์์ง ๊น์ง์ง ์์ ํ์ผ์ -1, ์ง๋ขฐ๋ฅผ -2๋ก ํํํ๋ค. ์ต๋๊ฐ์ธ 8๋ก ์ ์ฒด state arr๋ฅผ ๋๋์ด state๋ฅผ ์ ๊ทํํ๋ค. ์ ๊ทํ๋ฅผ ํ์ง ์์์ ๋์ ํ์ต์ด ๊ฑฐ์ ๋์ง ์์์ง๋ง, ์ ๊ทํ ์ดํ์ ์น๋ฅ ์ด ๊ทน์ ์ผ๋ก ์์นํ๋ค.
env.dim2
ํด๋์ค ํ๋ผ๋ฏธํฐ์์ False๊ฐ์ ์ฃผ๋ฉด ๋ค์ฐจ์ state๋ฅผ ์ด์ฉํ ์ ์๋ค. ๋ค์ฐจ์ state๋ ๋จ์ผ ์ฐจ์ state์์ ์ง๋ขฐ(-2), ๊น์ง ์ฌ๋ถ(-1), ์ฃผ๋ณ ์ง๋ขฐ ๊ฐ์์ ํฉ์ ๊ฐ๊ฐ์ ์ฑ๋๋ก ๋ฐ๊ณ , ์ํซ์ธ์ฝ๋ฉ์ผ๋ก ๊ฐ์ ํํํ๋ค.
![]() |
![]() |
Reward | Description & Purpose | Weight | Done |
---|---|---|---|
Win | ์ง๋ขฐ๊ฐ ์๋ ๋ชจ๋ ํ์ผ์ ๊น ๊ฒฝ์ฐ | 1 | True |
Lose | ๊น ํ์ผ์ด ์ง๋ขฐ์ธ ๊ฒฝ์ฐ | -1 | True |
Progress | ์ฃผ๋ณ๋ถ์ ๊น์ง ํ์ผ์ด ์๊ณ , ์ง๋ขฐ๊ฐ ์๋ ํ์ผ์ ๊น ๊ฒฝ์ฐ | 0.3 | False |
Guess | ์ฃผ๋ณ๋ถ๊ฐ ๊น์ ธ ์์ง ์์ง๋ง, ์ง๋ขฐ๊ฐ ์๋ ํ์ผ์ ๊น ๊ฒฝ์ฐ | -0.3 ~ 0.3 | False |
No Progress | ์ด๋ฏธ ๋๋ฅธ ํ์ผ์ ๋ ๋๋ฅธ ๊ฒฝ์ฐ | -0.5 / -1 | T/F |
- ๋ณด์ ๋์์ธ์ ๋ณํ๋ Ch.04 Troulbe Shooting ์์ ํ์ธํ ์ ์๋ค.
n0๋ง ๋ฒ ๋จ์๋ก ์ํผ์๋๋ฅผ ์งํํ๋ค๋ณด๋, ํ๊ฒฝ ์ฝ๋์ ์๊ฐ ํจ์จ์ด ์ค์ํ๋ค. ์๊ฐ ํจ์จ์ ๋์ด๊ธฐ ์ํด 0์ ๋๋ ์ ๋ ์ฐ์๋ก ํฐ์ง๋ ์ฝ๋, ์ฃผ๋ณ ์ง๋ขฐ์ ๊ฐ์๋ฅผ ์ธ๋ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ๋ค.
๊ธฐ์กด ์ฝ๋๋ ์ฌ๊ทํ์ผ๋ก ๊ตฌํํ์ง๋ง, ๋ฌดํ ๋ฃจํ์ ๋น ์ง๋ ๋ฌธ์ ๊ฐ ์์๋ค. ๋ฌดํ ๋ฃจํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํด์ BFS ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด ์ฝ๋๋ฅผ ์์ ํ๋ค.
๊ธฐ์กด ์ฝ๋๋ ํน์ ํ์ผ์ ๊ธฐ์ค์ผ๋ก ์ฃผ๋ณ ํ์ผ์ ํ์ํ๋ ๋ฐฉ์์ ์ด์ค for๋ฌธ์ผ๋ก ๊ตฌํํ๋ค. for๋ฌธ์ ์ฌ์ฉ์ ์ต์ํ ํ๊ณ ์, ๊ฒ์ 0 ํจ๋ฉ์ ๋๋ฅธ ํ 3*3๋ก arr๋ฅผ ์์๋๋ก ํ์ํ๋ฉฐ M์ ๊ฐ์๋ฅผ ์ธ๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์์ ํ๋ค.
-> ์ถ๊ฐํ ์์
CNN์ ๊ณต๊ฐ์์ ์ ๋ณด๋ฅผ ์ธ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง ์ธ์์ ์ ๋ฆฌํ๋ค. ์ง๋ขฐ์ฐพ๊ธฐ์ state ๋ํ ์์ ์ฃผ๋ณ๋ถ ์ฌ์ด์ ํจํด์ด ์ค์ํ๊ธฐ ๋๋ฌธ์ CNN ์ ๊ฒฝ๋ง์ด ์ ํฉํ๋ค ํ๋จํ๋ค. ํจ๋ฉ๊ณผ ํฉ์ฑ๊ณฑ ์ธต๋ง์ ์ด์ฉํ๋ ๋ ๊ฐ์ง ์์ด๋์ด์์ ์ฑ๋ฅ ํฅ์์ด ์ด๋ค์ก๋ค.
ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง์์ ํจ๋ฉ์ ์ด๋ฏธ์ง ํฌ๊ธฐ ์์ค์ ๋ง๊ณ ๊ฐ์ฅ์๋ฆฌ๋ฅผ ๋ ์ ์ธ์ํ๊ฒ ๋ง๋ค์ด์ค๋ค. ๊ฐ์ฅ์๋ฆฌ ๊ฐ์ด ์ค์์ด๋ ๋ค๋ฅธ ์์ญ์ ๋นํด ์ค์๋๊ฐ ๋ฎ์ ์ ์๋ ์ผ๋ฐ์ ์ธ ์ฌ์ง๊ณผ๋ ๋ฌ๋ฆฌ, ์ง๋ขฐ์ฐพ๊ธฐ์์ ๊ฐ์ฅ์๋ฆฌ๋ ์ค์๊ณผ ๋์ผํ๊ฒ ์ค์ํ ์ ๋ณด๊ฐ์ ๊ฐ๊ณ ์๋ค. ์ปค๋ฌ์ด state์ ๋ชจ๋ ํ์ผ์ ๋์ผํ๊ฒ ํ์ํ์ฌ ์ ๋ณด๋ฅผ ์ป์ด๊ฐ๊ฒ ๋ง๋ค๊ธฐ ์ํด ์ฒซ๋ฒ์งธ ํฉ์ฑ๊ณฑ layer์์๋ 2๋จ์ ํจ๋ฉ์, ๋๋จธ์ง layer์์๋ 1๋จ์ ํจ๋ฉ์ ์ ์ฉํ๋ค. ๋ํ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๊ฐ ์ ์ง๋์๊ธฐ ๋๋ฌธ์ 9*9๋ผ๋ ์์ state์์ 4์ธต ์ด์์ ๋ค์ธต ์ ๊ฒฝ๋ง์ ์ ์ฉํ ์ ์์๋ค. ๊ทธ ๊ฒฐ๊ณผ ํจ๋ฉ์ด ์๋ ๋ชจ๋ธ์์๋ ํ์ต์ด ๊ฑฐ์ ์งํ๋์ง ์์๋ ๊ฒ์ ๋ฐํด, ์ฑ๊ณต๋ฅ ์ด ๋์์ง๋ฉฐ ํ์ต ์์์ ๋ณด์๋ค.
@ryanbaldini์ ๋ชจ๋ธ์ ํตํด ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง๋ง์ ์ฌ์ฉํ๋ ์์ด๋์ด๋ฅผ ์ป์๋ค. ์ถ๊ฐ์ ์ธ ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง์ ์์ง ์๊ณ ์ ์ฐ๊ฒฐ ์ ๊ฒฝ๋ง์ ์ญ์ ํ๋ ๊ฒ๋ง์ผ๋ก 100%p ์ด์์ ์ฑ๋ฅ ์์น์ ๋ณด์๋ค. ๋ช
ํํ ์์ธ์ ๊ท์ ํ ์๋ ์์์ง๋ง ํฉ์ฑ๊ณฑ ์ธต์์ ๋ฝ์๋ผ ์ ์๋ ์ ๋ณด๋ค์ด ์ ์ฐ๊ฒฐ ์ ๊ฒฝ๋ง์ ๊ฑฐ์น๋ฉฐ ์คํ๋ ค ๊ผฌ์ฌ ์์๊ฐ๋ฅผ ์๋ ๊ฒ์ด ์๋๊น๋ผ๋ ๊ฐ์ค์ ์ธ์ ๋ค.
class Net(nn.Module):
def __init__(self, input_dims, n_actions, conv_units, in_channels=1):
super().__init__()
self.conv1 = nn.Conv2d(in_channels=in_channels, out_channels=conv_units, kernel_size=(3,3), padding=2)
self.conv2 = nn.Conv2d(in_channels=conv_units, out_channels=conv_units, kernel_size=(3,3), padding=1)
self.conv3 = nn.Conv2d(in_channels=conv_units, out_channels=conv_units, kernel_size=(3,3), padding=1)
self.conv4 = nn.Conv2d(in_channels=conv_units, out_channels=conv_units, kernel_size=(3,3), padding=1)
self.flatten = nn.Flatten()
fc_size = conv_units * (input_dims[-1]+2) * (input_dims[-2]+2)
self.fc = nn.Linear(fc_size, n_actions)
def forward(self, x):
# conv area
x = F.relu(self.conv1(x))
x = F.relu(self.conv2(x))
x = F.relu(self.conv3(x))
x = F.relu(self.conv4(x))
x = self.flatten(x)
# flatten area
x = self.fc(x)
return x
์ถ์ธก ๊ฐ๋ฅํ ๋งํผ ํ์ผ์ด ๊น์ง์ง ์๋๋ค๋ฉด ์ฌ๋์ด ๊ฒ์์ ํ๋ ์ดํด๋ ์ฐ์ ์ ๋ฐ์ ์๋ค. ๋๋ฌธ์ ์ถ์ธก์ด ๋ถ๊ฐ๋ฅํ ์ ๋๋ก ์ ๊ฒ ํ์ผ์ด ๊น์ฌ์ง state๋ ํ์ต์ ์์ด ์ฃผ์ํ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ ํ๋จํ๋ค. replay memory์ ์ ์ฅํ ํ์ผ์ ๊ธฐ์ค์ ์ธ์ฐ๊ธฐ ์ํด ์ง์ ์ง๋ขฐ์ฐพ๊ธฐ๋ฅผ ํ๋ ์ดํ๋ฉฐ ์ถ์ธก์ ํตํด ํ ์ ์๋ค ํ๋จํ ์์ ์ ๊น์ฌ์ง ํ์ผ์ ๊ฐ์๋ฅผ ์ธ์๋ค. ๊ทธ ๊ฒฐ๊ณผ 30๊ฐ์ ํ๋ณธ์์ ํ๊ท 18๊ฐ๋ผ๋ ์์น๋ฅผ ์ป์ ์ ์์๋ค. ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ํผ์๋๋ฅผ ์งํํ๋ฉฐ 18๊ฐ ๋ฏธ๋ง์ผ๋ก ๊น์ฌ์ง state๋ replay memory์ ์ ์ฅํ์ง ์๋ ๋ฐฉ์์ผ๋ก replay memory๋ฅผ ์์ ํ๋ค.
์ด ๋ฐฉ์์ ๊ตฌํ ์ด๊ธฐ ์ด๋ฐ ํ์ต์ ๊ฐ์ ์ด ์์ด ํน์ ์ ๊ฒฝ๋ง ๋ฐ ๋ณด์ ์ฒด๊ณ๊ฐ ์ ์๋ํ๋์ง ํ์ธํ๋๋ฐ ์ฉ์ดํ๋ค. ํ์ง๋ง ์ ์ฐจ๋ก์ ๋ฆฌํฉํ ๋ง๊ณผ ๋ณด์์ ๋ณ๊ฒฝํ๋ ๊ณผ์ ์์ ๊ฐ์ ์ด ํ๋ ค์ ธ ๋ฐ๋๋ผ ๋ฆฌํ๋ ์ด๋ณด๋ค ๋จ์ด์ง ์ฑ๋ฅ์ ๋ณด์๋ค. ๋ฐ๋ผ์ ์ต์ข
์ ์ผ๋ก ๊ฐ์ฅ ๋์ ์น๋ฅ ์ ์ง๋ ๋ชจ๋ธ์ ์ฐพ์ ๋๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์์๋ค. ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋ชจ๋ธ์ ๊ฒฝ์ฐ, [RM ์์ ๋ฒ์ ]
์ด๋ผ ๋ช
์ํด๋๋ค.
DQN ์๊ณ ๋ฆฌ์ฆ์ ๋ ๊ฐ์ง ๋ฒ์ ์ผ๋ก ๊ตฌํํ๋ค. ๋จผ์ vector type์ @pythonprogramming.net์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ผ๋ฉฐ, ํ ์ํ๋ก์ฐ์์ ํ์ดํ ์น๋ก ๋ณํํ ๋ ๋ถํ์ํ ๊ตฌํ๋ถ๋ฅผ ์ต์ํ์์ผ ์๋๋ฅผ ํฅ์์์ผฐ๋ค. ์ด ์ฝ๋๋ state๋ฅผ ์ ๊ฒฝ๋ง์ ๋ฃ์์ ๋ ๋์ค๋ ์ ์ฒด Q ๊ฐ์ ์์ธก๊ฐ์ผ๋ก ์ฌ์ฉํ๋ค. ํ๊ฒ๊ฐ ๋ํ ์์ธก๊ฐ์ Q๊ฐ์ ๋ณต์ฌํ ํ, ํ๊ฒ ์ ๊ฒฝ๋ง์ ์ต๋ Q ๊ฐ์ ๊ธฐ์กด์ action์ด ์๋ ์์น์ ๋ฃ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋์๋ค. scalar ํ์ ์ @pytorch DQN ๊ณต์๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด ๊ตฌํํ์ผ๋ฉฐ, ์์ธก๊ฐ์ ์ ๊ฒฝ๋ง์์ ๊ตฌํ Q ๊ฐ๋ค ์ค a์ ํด๋นํ๋ ๊ฐ์ด๊ณ ํ๊ฒ ๊ฐ์ ํ๊ฒ ์ ๊ฒฝ๋ง์์ ์ป์ Q ๊ฐ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ด๋ค.
๋ฒกํฐ ํ์ ์ DQN๊ณผ ์ค์นผ๋ผ ํ์ ์ DQN์ ์ฐจ์ด์ ์ loss๊ฐ์ด๋ค. MSE ๊ธฐ์ค์ผ๋ก ์๊ฐํ์ ๋, ๋ฒกํฐ ํ์ ์ DQN์ ํ๋์ ์ซ์๋ง ๋ค๋ฅด๊ณ ๋๋จธ์ง๊ฐ ์ ๋ถ ๋์ผํ ๋ ๋ฒกํฐ๋ฅผ ๋น๊ตํ๊ธฐ ๋๋ฌธ์ ์ค์นผ๋ผ์ ์์ธก๊ฐ๊ณผ ํ๊ฒ๊ฐ ์ฌ์ด์ ์ค์ฐจ์ ๊ณฑ๊ณผ๋ ๋์ผํ๋ค. ํ์ง๋ง MSE loss๋ ์ค์ฐจ์ ๊ณฑ ๊ฐ์ ํ๊ท ์ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์, ๋ฒกํฐ ํ์ ์ DQN์ด ์ค์นผ๋ผ ํ์ ๋ณด๋ค loss ๊ฐ์ด ์๋ค.
์ด๋ก ์ ์ผ๋ก๋ ์ค์นผ๋ผ ํ์
์ด ๋ ์ ํฉํ ๋ฐฉ๋ฒ์ด๋ผ ์๊ฐํ์ง๋ง, ๋ฒกํฐ ํ์
๋ํ ํฐ ๋ฌธ์ ๋ ์๋ค ํ๋จํด ๋ ๋ฐฉ์์ ํ์ต์ ์ ๋ถ ๋ค ์ด์ฉํด๋ณด์๋ค. ๊ทธ ๊ฒฐ๊ณผ, ์ ๋ถ ๊ฐ์ ์กฐ๊ฑด์์ ํ์ต์ ์งํํ์ ๋ ์ค์นผ๋ผ ํ์
์ด ๋ฒกํฐ ํ์
์ ๋นํด ์ด๋ฏธ ๊น์ง ํ์ผ์ ์ฌ๋ฌ ๋ฒ ๋๋ฌ ์ ์ฒด ์ํผ์๋์ ์คํ
์๊ฐ ์ฆ๊ฐํ๊ณ , ์ด ๋ฆฌ์๋๊ฐ ๊ฐ์ํ๋ ๋ชจ์ต์ด ๋ ๊ฐํ๊ฒ ์ค๋ ๋์ ๋ฐ์ํ๋ค.
์ด๋ฅผ ํตํด ๋ฎ์ loss๊ฐ์ด ๋ ๋น ๋ฅธ ์๋ ด์ ๋์์ ์ค ์ ์๋ค ์๊ฐํด ์ด๊ธฐ ์๋ ด์ด ๋น ๋ฅธ ๋ฒกํฐ ํ์
์ ์ด์ฉํด ๋๋ถ๋ถ์ ํ์ต์ ์งํํ๋ค.
centrality : mean, median, mode
์ค์ด๋๋ loss๋ฅผ ํตํด ํ์ต ์ํฉ์ ๋ณผ ์ ์๋ ๋ฅ๋ฌ๋ ํ์ต๊ณผ ๋ฌ๋ฆฌ, ๊ฐํํ์ต์ ๋ ์ ๊ฒฝ๋ง์์ ๋ง๋ค์ด์ง target-pred ์ฌ์ด ์ค์ฐจ๊ฐ ํฌ์ง ์์ loss๋ง์ผ๋ก๋ ํ์ต ์ํฉ์ ํ์ ํ ์ ์๋ค. ๋ฐ๋ผ์ ์ง๋ขฐ์ฐพ๊ธฐ์์ ์ฃผ์ ์งํ๊ฐ ๋ ์ ์๋ ์น๋ฅ , ์ํผ์๋ ๋ณ step ์, ์ํผ์๋ ๋ณ reward๋ฅผ ํน์ ๊ฐ๊ฒฉ(100 / 1000)๋ง๋ค ์ถ๋ ฅํด ํ์ต ๊ฒฝํฅ์ ํ์ ํ๋ค. ์ํผ์๋ ๋ณ step ์์ ์ด reward์ ๊ฒฝ์ฐ, ๊ตฌ๊ฐ ๋์ ์ํผ์๋๋ฅผ ๋ํํ๋ ํต๊ณ๋์ผ๋ก ์ค์๊ฐ์ ์ ํํ๋ค. ์ค์ฌ์ฑ์ ๋ํ๋ด๋ ํต๊ณ๋์๋ ํ๊ท , ์ค์๊ฐ, ์ต๋น๊ฐ์ด ์๊ณ ์ผ๋ฐ์ ์ผ๋ก ํ๊ท ์ด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ค. ์ง๋ขฐ์ฐพ๊ธฐ ํ ์คํฌ๋ ๊ฐ์ ๊ณณ์ ์ฌ๋ฌ๋ฒ ๋๋ฅด๋ ํ๋, ์ถ๋ก ์ ํ ์ ์์๋ ์ํฉ์์ ์ง๋ขฐ๋ฅผ ๋ฐ๋ ํ๋, ์ฐ์ด์ผ๋ง ํ๋ ํ๋์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค์ฑ์ด ๊ฐํ ํ ์คํฌ๋ค. ์ด์ฒ๋ผ ๊ฐํ ๋๋ค์ฑ์ ๋๋ ํ ์คํฌ์์๋ ๊ทน๋จ๊ฐ์ด ์์ฃผ ๋ฐ์ํจ์ผ๋ก, ๊ทน๋จ๊ฐ์ ์ํฅ์ ๋ง์ด ๋ฐ๋ ํ๊ท ์ ํ ์คํฌ์ ์ ํฉํ ํต๊ณ๋์ด ์๋๋ผ ํ๋จํ๋ค. ์ต๋น๊ฐ์ ๊ทน๋จ๊ฐ์ ์ํฅ์ ๋ง์ด ๋ฐ์ง๋ ์์ง๋ง, ์ ์ฒด์ ์ธ ๊ฒฝํฅ์ ๋ณด๊ธฐ์๋ ์ค์๊ฐ์ด ๋ ์ข์ ํต๊ณ๋์ด๋ผ ํ๋จํ๋ค.
์ต๊ณ ์ฑ๋ฅ์ ๊ฐ์ง ๋ชจ๋ธ์ ์ฐพ๊ธฐ ์ํด์๋ ํ์ต ์ค๊ฐ valid๊ฐ ํ์์ ์ด๋ค. ํ์ต ์ค ์ถ๋ ฅ๋๋ ์งํ๋ ๋์ผํ ๋ชจ๋ธ์์ ๋์จ ๊ฒฐ๊ณผ๋ฌผ์ด ์๋๋ค. ์ด ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, step๋ง๋ค ํ์ต์ด ์ผ์ด๋ฌ๊ธฐ ๋๋ฌธ์ 100 ์ํผ์๋์ ํ๊ท 15 step์ด๋ผ๋ฉด ํ์ต์ ์ถ๋ ฅ๋ฌผ์ ์ด 1500๊ฐ ๋ชจ๋ธ์ ๊ฒฐ๊ณผ๋ฌผ์ด๋ค. ๋ฐ๋ผ์ ํ์ต ์งํ๋ง์ ๊ธฐ์ค์ผ๋ก ์ต๊ณ ์น๋ฅ ์ด ์ฐํ ์๊ฐ์ ๋ชจ๋ธ์ ์ ์ฅํ๋ค๋ฉด, ์ ์ฅ๋ ๋ชจ๋ธ์ ์ต๊ณ ์น๋ฅ ์ ๊ฐ์ง ๊ตฌ๊ฐ์ ๋ง๋จ ๋ชจ๋ธ์ผ๋ฟ, ์ต๊ณ ์น๋ฅ ์ ๋ณด์ผ ๊ฒ์ด๋ผ ๊ธฐ๋ํ ์ ์๋ค. ๋ํ ์ง๋ขฐ์ฐพ๊ธฐ๋ ๋๋ค์ฑ์ด ๊ฐํ ํ ์คํฌ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ์ข์ ๋ชจ๋ธ์ผ์ง๋ผ๋ ์ด์ ์ํด ๊ฒ์์ด ์กฐ๊ธฐ ์ข ๋ฃ๋ ์ ์๋ค. valid๋ ํ์ต ์ค๊ฐ์ ํน์ ๋ชจ๋ธ์ ๋ฐ์ ํ ์คํธ๋ฅผ ์งํํ๊ธฐ ๋๋ฌธ์ ๋์น ์ ์๋ ์ฌ๋ฌ ๋ชจ๋ธ๋ค์ ์ ๊ฒํ๊ฒ ๋ง๋ ๋ค.
์ต๊ณ ์น๋ฅ ์ ๋์น์ง ์๊ธฐ ์ํด ์ฌ๋ฌ ๊ธฐ๋ฐ ์ฝ๋๋ฅผ ๋ง๋ค๋, valid๊ฐ ๊ณผํด ํ์ต ์๋๊ฐ ๊ณผํ๊ฒ ์ ํ๋์ง ์๋๋ก ํ๋ค. ํ์ต ์ค ์ต๊ณ ์น๋ฅ ์ ์ฐ์์ ๋๋ฅผ ๊ธฐ์ ์ผ๋ก ํ๋ฉฐ, ์ฐ์ ์๊ฐ์ ํฐ๋ฏธ๋ ๋ชจ๋ธ(best_model_train
)์ validํ๊ณ , ์ดํ 10 ์ํผ์๋๋ง๋ค ํ
์ ์ฃผ๊ณ 10๋ฒ valid๋ฅผ ์งํํ๋ค(best_model_valid
). ๋ํ ์ถ๊ฐ์ ์ผ๋ก ์น๋ฆฌํ ๋ชจ๋ธ์ ๋ฎ์ด์์ฐ๋ฉฐ ์ ์ฅํด ๊ฐ์ฅ ๋ง์ง๋ง์ ์น๋ฆฌํ ๋ชจ๋ธ(best_model_successed
)๊ณผ ํ์ต์์ ๊ฐ์ฅ ๋ง์ง๋ง ๋ชจ๋ธ(final_model
)์ ์ ์ฅํ๋ค.
ํ์ต์ ๊ฒฝํฅ๊ณผ ํ์ต ์ดํ ์ฌํ์ ์ผ๋ก ์งํํ test๋ฅผ ํตํด ์ ์ ํ ํ๋ณธ ์๋ฅผ ์ ํ๋ค.
ํ์ต์์ 100 ์ํผ์๋๋ง๋ค ์คํ , ์ด๋ณด์์ ์ค์๊ฐ๊ณผ ์น๋ฅ ์ ์ถ๋ ฅํ๋ค. 100 ๊ธฐ์ค์ผ๋ก ํ์ต์ ํ๊ฐํ๋ ๊ฒ์ ์ถ๋ ฅ ๊ฐ๊ฒฉ์ด ์งง์ ํ์ต ์ํฉ์ ๋น ๋ฅด๊ฒ ํ๋จํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค. ํ์ง๋ง ๋ถ์ฐ์ด ์ปค valid/test์ train์์์ ์ต๊ณ ์น๋ฅ ์ฌ์ด์ ์ค์ฐจ๊ฐ ์ฌํ๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค. ๋ถ์ฐ์ด ๋ฎ์ ์ถ์ ๋์ ์ป๊ธฐ ์ํด, ํ์ต์ ํ๊ฐํ๋ ๊ธฐ์ค์ 1000์ผ๋ก ๋๋ ค ๊ฐ์ ํ์ต ์ํฉ์ ์๊ฐํํ๋ค.
๊ทน๋จ๊ฐ์ ์ํฅ์ 100 ๊ธฐ์ค์ ๋นํด ๋ ๋ฐ์ ๋ถ์ฐ์ด ์ ์์ผ๋ฉฐ, ์ค์ ๋ชจ๋ธ๊ณผ ํ์ต์ ์ต๊ณ ์ฑ๋ฅ ์ฌ์ด์ ์ค์ฐจ๋ ์ ์๋ฏธํ๊ฒ ์ ์๋ค. ์ด ๋ ๊ฐ์ ์๋ฃ๋ฅผ ํตํด ๋ถ์ฐ์ด ํฐ ์ง๋ขฐ์ฐพ๊ธฐ ํ์ต์์ ๋ถ์ฐ์ด ์์ ๋ถํธ ์ถ์ ๋์ ์ป๊ธฐ ์ํด์๋ ํ๋ณธ์ 100๊ฐ๋ณด๋ค 1000๊ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ ๊ฒ์ด ํจ๊ณผ์ ์์ ์ ์ ์์๋ค.
- ๊ณ ์ ๋ ๋ชจ๋ธ๋ก 100 ์ํผ์๋์ผ ๋์ ์น๋ฅ , 1000 ์ํผ์๋์ผ ๋์ ์น๋ฅ ์ ์๋ฎฌ๋ ์ด์ ํจ
- 100 ์ํผ์๋๋ ์ด 1000ํ ์งํ, 1000 ์ํผ์๋๋ ์ด 100ํ ์งํ, ๊ณตํต 10๋ง ์ํผ์๋
Test Sample Size | mean (ยฑ sd) | min / max |
---|---|---|
100 | 0.828 (ยฑ 0.035) | 0.74 / 0.90 |
1000 | 0.825 (ยฑ 0.011) | 0.803 / 0.857 |
100 ์ํผ์๋์์์ ์น๋ฅ ์ด ํ๋ณธ ์๊ฐ ๋ ๋ง์ ์๋งํ ์ ๊ท๋ถํฌ์ ํํ๋ฅผ ๋๊ณ ์์ง๋ง, ๋ถ์ฐ์ด 1000 ์ํผ์๋๋ณด๋ค ํจ์ฌ ํฌ๋ค. ๋ฐ๋๋ก 1000 ์ํผ์๋์ ๊ฒฝ์ฐ, ๋ถ์ฐ์ด ํ์ ํ๊ฒ ์์ผ๋ฉฐ min-max ๊ฐ ๋ํ 80-85% ์ฌ์ด๋ก ์ค์ฐจ ๋ฒ์๊ฐ ์ ๋ค.
๊ตฌํํ valid๋ test์ ๋ฌ๋ฆฌ ๊ณ ์ ๋ ๋ชจ๋ธ์ ์น๋ฅ ์ ์ฌ๋ฌ ๋ฒ ํ์ธํ์ง ์๊ณ ํ ๋ฒ์ ๊ฒ์ฆ์ผ๋ก๋ง ๋ชจ๋ธ์ ํ๊ฐํ๋ค. ํ ๋ฒ์ ๊ฒ์ฆ์์ ์ป์ ์ถ์ ์น๊ฐ ๋ถํธํฅ ์ถ์ ์น์ ๊ทผ์ ํด์ผ ํ๊ธฐ์, ๋ถ์ฐ์ด ์์ 1000๊ฐ์์์ ์น๋ฅ ์ด 100๊ฐ์์๋ณด๋ค ์ ํฉํ๋ค.
์ง๋ขฐ์ฐพ๊ธฐ ํ ์คํฌ์์ ๊ฐ์ฅ ์ค์ํ ๋ฌธ์ ๋ ์ด๋ฏธ ์ด๋ฆฐ ํ์ผ์ ๋ ๋๋ฅด๋ ํ๋์ ๋ฐฉ์งํ๋ ๊ฒ์ด๋ค. ์ด๋ฏธ ์ด๋ฆฐ ํ์ผ์ ๋ ๋๋ฅด๋ ํ๋์ ์ง์ ์ ์ธ ํจ๋ฐฐ์ ๊ธฐ์ฌํ์ง ์์ง๋ง, ํํ๋ฅ ์ด ์๋ ์ํฉ์์ ๋ฌดํ ์ํผ์๋ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐ์ํค๊ณ ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ์์ฑํด ์น๋ฆฌ์ ๊ธฐ์ฌํ๋ ์์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌํ๋ ์ด ๋ฉ๋ชจ๋ฆฌ์ ์์ง ๋ชปํ๋ค.
- ์ด๋ฏธ ์ด๋ฆฐ ํ์ผ์ ๋๋ฅด๋ ํ๋ :
no_progress
@sdlee94์ ์ฝ๋์์ ์์ด๋์ด๋ฅผ ์ป์ด ์ด๋ฏธ ๊น์ง ํ์ผ์ Q๊ฐ์ ์ ์ฒด Q๊ฐ ์ค ์ต์๊ฐ์ผ๋ก ์ฃฝ์ฌ ์ ํ์ ๊ฐ์ ๋ก ํ์ง ๋ชปํ๊ฒ ๋ง๋ค์๋ค. ์ด ๋ฐฉ๋ฒ๋ก ์ ์ด๋ฏธ ๊น์ง ํ์ผ์ ์ ๋ ๋๋ฅด์ง๋ ์์ง๋ง, 44% ์ด์์ผ๋ก ์ฑ๋ฅ์ด ๋์์ง์ง ์์๋ค. ๊น์ง ํ์ผ์ ๊ฐ์ ๋ก ์ ํํ์ง ๋ชปํ๊ฒ ํ๋ ๊ฒ์ด ์ผ์ข ์ ์๋ดํ์ด ๋ ๊ฒ์ด๋ผ ์๊ฐํ์ง๋ง ๋์์ง์ง ์๋ ์ฑ๋ฅ์ ๋ณด๋ฉฐ ์คํ๋ ค ์ด ๋ฐฉ๋ฒ๋ก ์ด ํ๊ฒฝ์ ๋ณต์ก๋๋ฅผ ๋์ด๊ณ ์๋ค๋ ์๊ฐ์ด ๋ค์๊ณ , ์์ธ์ ๊ณ ๋ฏผํ๋ค.
-
์ด๋ฏธ ๊น์ง ํ์ผ์ ๋ ๋๋ฅด๋ ํ๋์ ๊ฒ์ ํด๋ฆฌ์ด๋ฅผ ๋ง๋ ์ฃผ์ ๊ณ ๋ ค ๋์์ด๋ค. ๋ฐฉ๋ฒ๋ก ์ ์ ์ฉํ ๋๋ ์ด ํ๋์ด ์น๋ฆฌ๋ ํจ๋ฐฐ์ ๊ธฐ์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ค์ง ์๋ฏธ๊ฐ ์๋ ํ๋์ด๋ผ ์๊ฐํ๋ค. ํ์ง๋ง ์ง๋ขฐ์ฐพ๊ธฐ๋ ์ง๋ขฐ๋ฅผ ์ ์ธํ ๋ชจ๋ ํ์ผ์ ๊น๋ ๊ฒ์์ด๋ค. ๋ค์ ๋งํด ์ด๋ฏธ ๊น์ง ํ์ผ์ ๋ ๋๋ฅด๋ ํ๋์ ๊ฒ์์ ์น๋ฆฌ์ ๋ค๊ฐ๊ฐ๋๋ก ๋ง๋ค์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์น๋ฆฌ๋ฅผ ๋ฐฉํดํ๋ ์์๋ค. ๋ฐ๋ผ์ ์ด ํ๋์ ๊ฐ์ ๋ก ์ ํํ๋ ๊ฒ์ ์ง๋ขฐ๊ฐ ์๋ ๋ชจ๋ ํ์ผ์ ์ ๋ถ ๋ค ๊น๋๋ก ์ ๋๋ก ์ ๋ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ํ๊ฒฝ์ ๋ณต์ก๋๋ฅผ ๋์ธ๋ค.
-
ํ๋์ ์ ํํ๋ ๊ฒ์ด DQN์ ๋ชจ๋ ๋ถ๋ถ์ ์ ์ฉ๋์ง ์๋๋ค. ์ด๋ฏธ ๊น์ง ํ์ผ์ ๋๋ฅด์ง ๋ชปํ๊ฒ ํ๋ ๊ฒ์ ํ๋์ ์ ํ๋ ๋งค์๋์ธ
get_action(state)
์๋ง ์ ์ฉํ๋ค. ํ์ง๋ง ์ด ์ํฉ์์๋ ๋ฆฌํ๋ ์ด ๋ฉ๋ชจ๋ฆฌ์์ state-action ํ์ด๋ฅผ ๊บผ๋ด ์์ธก๊ฐ์ ๋ง๋ค ๋๋ ๋ฌธ์ ๊ฐ ์์ง๋ง, next_state๋ฅผ ๋ฐ์ ๋ค์ ํ๊ฒ๊ฐ์ ๋ง๋๋ ํ๊ฒ ์ ๊ฒฝ๋ง์์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค. ํ๊ฒ ์ ๊ฒฝ๋ง์ ํตํด ์ป์ Q ๊ฐ๋ค ์ค ์ต๋๊ฐ์ ํ๊ฒ๊ฐ์ด ๋๋๋ฐ, ์ด๋ ์ต๋๊ฐ์ ๊ฐ๋ ํ๋์ ์ด๋ฏธ ๊น์ง ํ์ผ์ ๋๋ฅด๋ ํ๋์ผ ์ ์๋ค. ์ด ๊ฐ์ next_state๊ฐ ์ค ์ ์๋ ์ต๋์ ๊ฐ์น์ด์ง๋ง ๋ฆฌํ๋ ์ด ๋ฉ๋ชจ๋ฆฌ์state-action-reward
์๋ ์ด๋ฏธ ๊น์ง ๊ณณ์ ๋๋ฅด๋ ์ฌ๊ฑด์ด ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์ ๋๋ก ๋ ๊ฐ์ด ๋์ค๋๋ก ํ์ต๋ ์ ๊ฒฝ๋ง์ ์ฌ์ฉํ ์ ์๋ค. ๋ฐ๋ผ์ ์ด ๊ฐ์ ์ ๋๋ก ๊ทผ์ฌ๋ ์ ์๊ธฐ์ ์ ๊ฒฝ๋ง์ ํ๊ณ๋ฅผ ์ผ๊ธฐ์ํจ๋ค.
์ด๋ฏธ ๊น์ง ํ์ผ์ ๊ฐ์ ๋ก ์ ํํ์ง ๋ชปํ๊ฒ ๋ง๋ค์ง ์์ผ๋ฉด, valid์์ ์ด๋ฏธ ๋๋ฅธ ํ์ผ์ ๋ ๋๋ฅด๋ ํ๋์ ํ์ฐ์ ์ผ๋ก ๋ฐ์ํ๋ค. ์ฝ๋ ์ valid๋ ํ์ต ๋์ค ์ต๊ณ ์น๋ฅ ์ด ๋์ฌ ๋๋ง๋ค ์คํ๋๊ธฐ ๋๋ฌธ์ ์ด๋ฐ๋ถํฐ valid๊ฐ ๋์๊ฐ๊ฒ ๋๋ค. ์ด ์๊ธฐ๋ ์ ์ค๋ก ์ ์ํด, ์ด์ ์ํด ์น๋ฆฌ์ ๋๋ฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๊ธฐ์ ํ๊ฒฝ์ ๊ตฌ์กฐ๋ฅผ ์ ๋๋ก ์ดํดํ์ง ๋ชปํ๋ค. ๋ฐ๋ผ์ ์ค์ ๋ณด์ ํ๋ก์ ๊ด๊ณ์์ด, valid๋ test์๋ ์ด๋ฏธ ๊น์ ธ์๋ ํ์ผ์ ๋๋ฅด๋ฉด ๊ฐ์ ๋ก ์ํผ์๋๋ฅผ ์ข ๋ฃํด ๋ฌดํ ์ํผ์๋ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ค. ๊ทธ ๊ฒฐ๊ณผ ํ์ต์์๋ ๋๋คํ ํ๋์ ํตํด ํ์ถํ ์ ์์๋ ์ํผ์๋๊ฐ ๊ฐ์ ๋ก ์ข ๋ฃ๋์ด ํ์ต๊ณผ valid/test ์ฌ์ด์ 20% ๊ฐ๋์ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ์กด์ฌํ๋ค.
์ด๋ฏธ ๋๋ฅธ ํ์ผ์ ๋ ๋๋ฅด๋ฉด ์ํผ์๋๋ฅผ ๊ฐ์ ๋ก ์ข ๋ฃ์์ผฐ๋ค. ์ด ๋ฐฉ์์ done=False์ธ ๋ฐฉ๋ฒ๋ก ๋ค๋ณด๋ค valid/test์ ํ์ต์ win rate ๊ฒฉ์ฐจ๊ฐ ์ ์๋ค. done์ T/F๋ ํ์ต ์์์์ ์ฐจ์ด๋ฅผ ๋ณด์๋ค. ๊ฐ์ ๊ฒ์ ๋๋ฌ๋ ํ์ต์ด ์ข ๋ฃ๋๋ค๋ณด๋ done์ด False์ผ ๋๋ณด๋ค ์ํผ์๋์ ๊ธธ์ด๊ฐ ์ ๋์ ์ผ๋ก ์งง์๊ณ , ๊ทธ ๊ฒฐ๊ณผ ๋ฆฌํ๋ ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฐจ๋ ๋ฐ์ดํฐ ์์ด ์ ์๋ค. done์ด False์ธ ์ ๋ค์ 5๋ง ์ํผ์๋์์ ์ด๋ฏธ 50% ์ด์์ ์น๋ฅ ์ ๋ณด์์ง๋ง, done์ด True์ธ ์ ๋ค์ 5% ์ ๋์ ์น๋ฅ ์ ๋ณด์๋ค. ํ์ง๋ง ์น๋ฅ ์ด ์ ๋์ฌ ๋ฟ ์ํผ์๋์ ์ด ๋ณด์๊ณผ step ์๋ ๋น ๋ฅด๊ฒ ์ฆ๊ฐํ๊ณ , 10๋ง ์ํผ์๋๋ถํฐ๋ done=False์ธ ์ ๋ค์ ์ฑ๋ฅ์ ๋ฐ๋ผ์ก์๋ค. 60๋ง๊น์ง ๋๋ ธ์ ๋ test์ ๊ฒฐ๊ณผ๋ ํ๊ท 76%๋ก, done=False์ธ ์ ๋ค๋ณด๋ค 2% ๊ฐ๋ ๋์ ์น๋ฅ ์ ๋ณด์๋ค.
![]() |
![]() |
![]() |
์ฒ์ no progress์ ๋ฆฌ์๋๋ฅผ ๊ตฌ์ฑํ ๋์ ์ด ํ๋์ด ๋จ์ํ ๊ฒ์์ ์ง์ ์ํค์ง ๋ชปํ ๋ฟ, ๊ฒ์์ ์นํจ์ ์ง์ ์ ์ผ๋ก ๊ด์ฌํ์ง ์๋๋ค๊ณ ์๊ฐํด -0.5(ํจ๋ฐฐ์์ ์ ๋ฐ) ํฌ๊ธฐ์ ๋ฆฌ์๋๋ฅผ ๋ถ์ฌํ๋ค. ํ์ง๋ง ์ฃฝ์ง์๊ณ ํ์ผ์ ๊น๋ ํ๋์ด ์ข๊ณ , ๊ทธ๋ ์ง ๋ชปํ ํ๋์ด ์ ๋ถ ๋์ ํ๋์ด๋ผ ์ง๋ขฐ์ฐพ๊ธฐ๋ฅผ ๋จ์ํ์ํค๋ฉด ์ด ํ๋์ ์ง๋ขฐ๋ฅผ ๋ฐ๋ ๊ฒ๋งํผ์ด๋ ๋์ ํ๋์ด๋ค. ๋ ๋ฆฌ์ ์ด ๋์ ๋ณด์์ ์คํจํ์ ๋์ ๋์ผํ -1์ ๊ฐ์ ์ฃผ๋, ์ง๋ขฐ๋ฅผ ๋ฐ์์ ๋์ ๋ฌ๋ฆฌ ์ํผ์๋๊ฐ ๋๋์ง ์๊ฒ ํ๋ค. ํ์ต ์ด๋ฐ์๋ ๋์ ํ๋์์ ํ์ตํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ฌดํ ์ํผ์๋์์ ํ์ถํ๊ธฐ ์ฝ๋๋ก ํํ๋ฅ ์ ๋๋ฆฌ๊ฒ ๊ฐ์์์ผฐ๊ณ , ์ดํ์๋ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ณ ์ ํฐ ์ต์ ํํ๋ฅ (1%)์ ์ ์งํ๋ค.
์ํผ์๋ ํ๋ฐ 80% ์ ๋์ ์์ ์ ์ธ ์น๋ฅ ์ ๋๋ฌํ์ ๋ ์ต์ ํํ๋ฅ ์ 0.1%๋ก ์ค์ธ ๋ค์ 20๋ง ์ํผ์๋๋ฅผ ์ถ๊ฐ๋ก ๋๋ ธ๋ค. ํฐ ์ฑ๋ฅ์ ์ฐจ์ด๊ฐ ์์ง ์์์ผ๋, ๊ฐ๋์ฉ ๋ฆฌ์๋๋ step์ ๊ทน๋จ๊ฐ์ด ๋ํ๋๋ ๊ฒ์ ๋ณด์, 80%๊ฐ ๋๋ ๋ชจ๋ธ์์๋ ์ด๋ฏธ ๊น์ง ํ์ผ์ ๋ ๋๋ฅด๋ ํ๋์ด ๋ฐ์ํ์ง๋ง, ๋น๋๊ฐ ๊ทนํ ์ ์์ ์ ์ ์๋ค. ๋ํ ํฐ ์ต์ ํํ๋ฅ ์ด ์ด๋ฏธ ๊น์ง ํ์ผ์ ๋ ๋๋ฅผ ๋ ์ ์ํ ํ์ถ์ ๋์์์ ์ง์ํ ์ ์๋ค.
![]() |
![]() |
- ์ฃผ๋ณ ํ์ผ์ด ๊น์ง์ง ์์ ํ์ผ์ ์ ํํ๋ ํ๋ :
Guess
์ฌ๋์ด ์ง๋ขฐ์ฐพ๊ธฐ๋ฅผ ํ๋ ์ดํ ๋๋ ์ด๋ฏธ ๊น์ง ์ฃผ๋ณ๋ถ ํ์ผ์ ํตํด, ํน์ ํ์ผ์ด ์ง๋ขฐ์ผ์ง ์๋์ง ํ๋จํ๋ค. ํ์ง๋ง ๊ฐํํ์ต์ ์์ด์ ํธ๋ ์ง๋ขฐ์ฐพ๊ธฐ์ ๋ฃฐ์ ์์ง ๋ชปํ๋ฉฐ, ์ฃผ๋ณ๋ถ ํ์ผ์ ํตํด ๊ฐ์ ์ถ๋ก ํด์ผ ํ๋ค๋ ๋ก์ง์ ์์ง ๋ชปํ๋ค. ๋ฐ๋ผ์ ์ฃผ๋ณ๋ถ ํ์ผ์ด ๊น์ง์ง ์์ ํ์ผ์ ๋๋ฅด๋ ํ๋๊ณผ ์ผ๋ฐ ์ง์ ๊ณผ ๋ค๋ฅธ ๋ณด์์ ์ฃผ๋ฉด ๋ก์ง์ ๋ ๋น ๋ฅด๊ฒ ์ต๋ํ ๊ฒ์ด๋ผ๋ ๊ฐ์ค์ ์ธ์ ๋ค. ์ด ํ๋์ Guess๋ผ ์ ์ํ๊ณ , ๋ค๋ฅธ ์ธ๊ฐ์ง ๋ณด์์ ์ฃผ๋ฉฐ ํ ์คํธํ๋ค.
์ฃผ๋ณ๋ถ ํ์ผ์ด ๊น์ง์ง ์์ผ๋ฉด ํ์ผ์ด ์ง๋ขฐ์ธ์ง ์ถ๋ก ํ ์ ์๋ค. ๋ฐ๋ผ์ Guess๋ ์ถ๋ก ์ด ์๋ ์ด์ ์นํจ๋ฅผ ๋งก๊ฒจ ๊ฒ์ ์ค๋ฒ์ ๊ฐ๋ฅ์ฑ์ ๋์ธ๋ค. Guess๋ฅผ ์ต๋ํ ์ ํํ์ง ์๋๋ก Guessํ๋์ ์์ ๋ณด์(-0.3)์ ๋ถ์ฌํด ํ๋์ ํผํ๊ฒ ๋ง๋ค์๋ค.
no progress ๋จ์์ ์ด์ผ๊ธฐํ๋ฏ ์ฃฝ์ง ์์์ฑ ํ์ผ์ ๊น๋ ํ๋์ ์ข๊ณ ๊ทธ๋ ์ง ์์ ํ๋์ด ์ ๋ถ ๋์ ํ๋์ด๋ผ ์ง๋ขฐ์ฐพ๊ธฐ๋ฅผ ๋จ์ํ์ํค๋ฉด Guess๋ ์ฃฝ์ง ์๊ณ ํ์ผ์ ๊น๊ธฐ์ ์ข์ ํ๋์ด๋ค. ์ด ๋งฅ๋ฝ์์ 01์์ ์๋ํ Guess์์ ์์ ๋ณด์์ ๋ถ์ฌํ๋ ๊ฒ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ณ์ง ์๋ค. 01๊ณผ ๋ฌ๋ฆฌ ์์ ๋ณด์์ ์ฃผ์ง ์์ง๋ง, Progress๋ณด๋จ ๋ ์ข์ ํ๋์ด๋ผ๋ ๊ฒ์ ๊ฐ์กฐํ๊ธฐ ์ํด Progress๋ณด๋ค ์์ ์์ ๋ณด์(0.1)์ ์คฌ๋ค.
Guess ๋ณด์์ด ์ฑ๋ฅํฅ์ ๋ฐ ์ด๋ฐ ํ์ต์ ์ ์๋ฏธํ ์ํฅ์ ์ฃผ๋์ง ํ์ธํ๊ธฐ ์ํด Progress์ ๋์ผํ ๋ณด์(0.3)์ ์คฌ๋ค.
- ๋จ์ผ ์ฑ๋ state ๊ธฐ์ค
Guess์ Progress๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ ๋์ผํ ๋ณด์์ ์ค ๊ฒฝ์ฐ๊ฐ ์ ์ฒด์ ์ธ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ ๋ชจ์ต์ ๋ณด์๋ค. ์ด๋ฐ ํ์ต์์๋, ํ์ต ํ๋ฐ์์๋ Guess์ ์ฐจ๋ฑ์ ์ค ๋ณด์ ์ฒด๊ณ๊ฐ ์ข์ ์ฑ๋ฅ์ ๋ณด์์ ํ์ธํ ์ ์์๋ค.
- ๋ฉํฐ ์ฑ๋ state ๊ธฐ์ค
๋ค๋ง state๊ฐ ๋ค์ฐจ์ ๊ฒฝ์ฐ์๋ Guess๋ฅผ ์ฃผ๋ ๊ฒ๊ณผ ์ฃผ์ง ์๋ ๊ฒ์ด ํฐ ์ฐจ์ด๊ฐ ์์๋ค. ๋จ์ผ ์ฑ๋ state์์๋ Guess์ ์ ๋ฌด์ ๋ฐ๋ผ ์ฑ๋ฅ ์ฐจ์ด๊ฐ 3%๋ก ์ปธ์ง๋ง, ๋ค์ฐจ์ด state๋ 0.5%๋ก ๋งค์ฐ ์์๋ค.
๊ฐํํ์ต์์ ์ฌ์ฉํ๋ ์ฌ๋ฌ ํ๋ผ๋ฏธํฐ ์ค, learning rate๊ฐ ํ์ต์ ๊ฐ์ฅ ํฐ ์ํฅ์ ๋ฏธ์ณค๋ค. ๋์ผํ ์ํฉ์์๋ ์ด๊ธฐ lr์ด ๋๋ฌด ํฌ๊ฑฐ๋ ์์ผ๋ฉด ํ์ต์ด ์ ๋๋ก ์งํ๋์ง ์์๋ค. ๋ํ ๊ณ์ ๊ฐ์ ํฌ๊ธฐ์ lr๋ก ํ์ต์ ์ํค๋ ๊ฒ๋ ํ์ต์ ํ๊ณ๋ฅผ ์ด๋ํ๋ค.
๐ก 100 ์ํผ์๋๋ก ์น๋ฅ ์ ๊ตฌํ๋ ์ฌ๊ฑด์ 100๋ฒ ๋ฐ๋ณต
State | info. | mean (ยฑ sd) | min / max |
---|---|---|---|
2D | [RM ์์ ๋ฒ์ ] ํ๋ ๊ฐ์ ์ ํ ๋ฒ์ , Guess-0.3, conv_units=64 | 0.447 (ยฑ 0.044) | 0.33 / 0.56 |
2D | [RM ์์ ๋ฒ์ ] Guess-0.3, No progress -0.5 with bias=F model, conv_units=64 | 0.478 (ยฑ 0.049) | 0.39 / 0.65 |
2D | [RM ์์ ๋ฒ์ ] Guess 0.3, no_progress -0.5 | 0.738 (ยฑ 0.038) | 0.69 / 0.83 |
2D | [RM ์์ ๋ฒ์ ] Guess-0.3, No progress -0.5 with done=T | 0.773 (ยฑ 0.046) | 0.66 / 0.89 |
2D | [RM ์์ ๋ฒ์ ] Guess0.1 | 0.795 (ยฑ 0.045) | 0.69 / 0.93 |
2D | Guess0.3 | 0.798 (ยฑ 0.036) | 0.69 / 0.87 |
2D | Guess0.1 | 0.826 (ยฑ 0.040) | 0.74 / 0.93 |
3D | Guess0.3 | 0.834 (ยฑ 0.040) | 0.69 / 0.91 |
3D | ๐ Guess0.1 | 0.839 (ยฑ 0.037) | 0.73 / 0.92 |
Category | Hyper params | info | value |
---|---|---|---|
Replay Memory | MEM_SIZE(MAX) | ๋ฆฌํ๋ ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ ๊ฐ๋ฅํ ์ต๋ ํ๋ | 50,000 |
Replay Memory | MEM_SIZE_MIN | ํ์ต์ ์์ํ๊ธฐ ์ํ ์ต์ ๋ฉ๋ชจ๋ฆฌ์ ์ | 1,000 |
Neural Net | BATCH_SIZE | train์ ์ ๊ฒฝ๋ง์ ๋ค์ด๊ฐ๋ batch ํฌ๊ธฐ | 64 |
Neural Net | CONV_UNITS | ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง์ ์ฑ๋ ์ | 128 |
Neural Net | LEARNING_RATE | ์ต๋ ํ์ต๋ฅ ์ด์ ์์ ํ์ต๋ฅ | 0.001 |
Neural Net | LEARN_DECAY | ํ์ต๋ฅ ๊ฐ๊ฐ ๋น์จ | 0.25 |
Neural Net | LEARN_EPOCH | ํ์ต๋ฅ ๊ฐ๊ฐ ์ฃผ๊ธฐ | 50000 |
Target Model | UPDATE_TARGET_EVERY | ์คํํด๋ฆฌ์ฌ ๋ฐฉ์์ธ Q๋ฌ๋์ ์ํด model๊ณผ target model ์ฌ์ด์ ์ฃผ๋ ์ ๋ฐ์ดํธ ์๊ฐ์ฐจ | 5 |
Exploration | EPSILON | ์ต๋ ํํ ๋น์จ์ด์ ์์ ํํ ๋น์จ | 0.95 |
Exploration | EPSILON_DECAY | ํํ ๋น์จ ๊ฐ์ ๋น์จ | 0.999975 |
Exploration | EPSILON_MIN | ์ต์ ํํ ๋น์จ | 0.01 |
Q-learning | DISCOUNT | ํ ์ธ์จ | 0.1 |
- loss_fn :
nn.MSELoss()
- optimizer :
optim.Adam()
- scheduler :
optim.lr_scheduler.StepLR()
- DQN ๊ตฌํ ๋ฐฉ์ :
vector type
- ํ์ต ๋ฐ ๋ชจ๋ธ ์ ๋ฐ์ดํธ ์ฃผ๊ธฐ : ๋งค step๋ง๋ค
Reward | Description & Purpose | Weight | Done |
---|---|---|---|
Win | ์ง๋ขฐ๊ฐ ์๋ ๋ชจ๋ ํ์ผ์ ๊น ๊ฒฝ์ฐ | 1 | True |
Lose | ๊น ํ์ผ์ด ์ง๋ขฐ์ธ ๊ฒฝ์ฐ | -1 | True |
Progress | ์ฃผ๋ณ๋ถ์ ๊น์ง ํ์ผ์ด ์๊ณ , ์ง๋ขฐ๊ฐ ์๋ ํ์ผ์ ๊น ๊ฒฝ์ฐ | 0.3 | False |
Guess | ์ฃผ๋ณ๋ถ๊ฐ ๊น์ ธ ์์ง ์์ง๋ง, ์ง๋ขฐ๊ฐ ์๋ ํ์ผ์ ๊น ๊ฒฝ์ฐ | 0.1 | False |
No Progress | ์ด๋ฏธ ๋๋ฅธ ํ์ผ์ ๋ ๋๋ฅธ ๊ฒฝ์ฐ | -1 | False |
- test : ์ํผ์๋ ์ ์ฒด ์๊ฐํ
์์๋๋ก ํ state, ํ๋์ผ๋ก ๋ณํ ๋ค์ state, ํ state๊ฐ ์
๋ ฅ๋์์ ๋ Q-table์ด๋ค.
next_state์ Q-table์ ์๊ฐํ๋์ด ์๋ ๋ง๋ฆ๋ชจ๋ ๊ฒ์ ๋ด ์ง๋ขฐ์ ์์น๋ฅผ ๋ํ๋ธ๋ค.
- ์ต๊ณ ์ฑ๋ฅ ์๊ฐํ ๊ทธ๋ํ (50๋ง ์ํผ์๋)
![]() |
![]() |
![]() |
![]() |
์ต๊ณ ์์น ๊ธฐ์ค,
- step์ ์ค์๊ฐ : 20.286, ์ด ๋ณด์์ ์ค์๊ฐ : 5.36, ์น๋ฅ : 0.853
ํ๋ฐ๋ถ ๋๋ต์ ์ธ ์์น,
- step์ ์ค์๊ฐ : 17-18, ์ด ๋ณด์์ ์ค์๊ฐ : 5, ์น๋ฅ : 0.83-84
๋ด๊ฐ ํ์ตํ ๋ชจ๋ธ ์ค ์ฑ๋ฅ์ด 75%๊ฐ ๋๋ ๋ชจ๋ธ๋ค์ ๊ณตํต์ ์ผ๋ก ์ง๋ขฐ์ฐพ๊ธฐ ํ์ ๊ผญ์ง์ ์์น ํ์ผ์ ์ฒซ ๋ฒ์งธ๋ก ์ ํํ๋ค.
์ง๋ขฐ์ฐพ๊ธฐ๋ ๋ชจ๋ ํ์ผ์ด ๊ฐ๋ ค์ง ์ฑ ์์๋๊ธฐ ๋๋ฌธ์ ์ถ๋ก ๊ฐ๋ฅํ ์ํ๊น์ง ๊ฐ๊ธฐ ์ํด์ ์ต๋ํ ๋ง์ ํ์ผ์ ์ด๋ฐ ์คํ ์ ๊น๋ ๊ฒ์ด ์ค์ํ๋ค. ๋ฐ๋ผ์ ๋ฌด์กฐ๊ฑด ์ง๋ขฐ๊ฐ ์๋ ์ฒซ ๋ฒ์งธ ํ๋์์ ์ต๋ํ ๋ง์ ํ์ผ์ด ๊น์ง๋ ๊ฒ์ด ์น๋ฆฌ์ ์ํฅ์ ๋ฏธ์น๋ค. ์ฑ๋ฅ์ด 50% ๊ฐ๋๋๋ ๋ชจ๋ธ๋ค์์๋ ์ด ์ ๋ต์ด ๋ฐ๊ฒฌ๋์ง ์์๊ธฐ์, ์์ด์ ํธ๊ฐ ํ์ตํ ์ด ์ ๋ต์ด ์น๋ฅ ์ ๋์ด๋๋ฐ ๋์์ ์ฃผ์๋ค๋ ๊ฐ์ค์ ์ธ์ ๊ณ ์ด๋ฅผ ํ๋ฅ ๋ก ์ ๊ด์ ์์, ๋ชฌํ ์นด๋ฅผ๋ก์ ๊ด์ ์์, Q-๋ฌ๋์ ๊ด์ ์์ ๋ถ์ํ๋ค.
์ด ๋ถ์์์๋ ํ๋ฅ ๋ก ์ ์ผ๋ก ์ ๊ผญ์ง์ ์ ์์นํ ํ์ผ์ ์ ํํ๋ ๊ฒ์ด ์ ๋ฆฌํ ํ๋์ธ์ง๋ฅผ ๋ณด์ฌ์ค๋ค. ์ฌ๊ธฐ์ ๋งํ๋ ์ ๋ฆฌํ ํ๋์ด๋, ์ฒซ ์ ํ์์ 0์ ๋๋ฌ ์ด๋ฐ๋ถํฐ ํฐ ๋ฒ์์ ์์ญ ์ ๋ณด๋ฅผ ์ป๋ ๊ฒ์ด๋ค.
์ฒซ ๋ฒ์งธ ์ ํ์์๋ ์ง๋ขฐ๊ฐ ๊น์ง์ง ์๋๋ค๋ ๊ฐ์ ,
- ๊น์ง์ง ์์ ์ด ํ์ผ ์ : 81
- ์ง๋ขฐ ๊ฐ์ : 10๊ฐ
- ์ง๋ขฐ๊ฐ ์๋ ํ์ผ ์ : 71๊ฐ
- ๊ผญ์ง์ ์ ์์นํ ํ์ผ์ ๊น ๋, ํ์ผ์ด 0์ผ ํ๋ฅ [์ด์ ํ์ผ : 3๊ฐ]
choose(70,3) / choose(80,3) # 0.666261 : ๋๋ฅด๋ ํ์ผ์ ์ ์ธํด 70,80
- ํ ๋๋ฆฌ์ ์์นํ ํ์ผ์ ๊น ๋, ํ์ผ์ด 0์ผ ํ๋ฅ [์ด์ ํ์ผ : 5๊ฐ]
choose(70,5) / choose(80,5) # 0.5034528
- ์ค์์ ์์นํ ํ์ผ์ ๊น ๋, ํ์ผ์ด 0์ผ ํ๋ฅ [์ด์ ํ์ผ : 8๊ฐ]
choose(70,8) / choose(80,8) # 0.3256693
์ฒ์ ํ๋์์ 0์ ๋๋ฌ ํฐ ์์ญ ์ ๋ณด๋ฅผ ์ป์ ํ๋ฅ ์ ๊ผญ์ง์ > ํ ๋๋ฆฌ > ์ค์ ์์ผ๋ก ๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
์๋ฎฌ๋ ์ด์ ์ ํ๋ณธ ์๋ 10๋ง ๊ฐ๋ก, ์ฒซ ๋ฒ์งธ ์ ํ์์ ๋๋ค์ผ๋ก ์๋ฌด ํ์ผ์ ๋๋ฅผ ๋ ์ด๋ฆฌ๋ ํ์ผ ์์ ๊ผญ์ง์ ๋ง์ ๋๋ฅผ ๋ ์ด๋ฆฌ๋ ํ์ผ์ ์๋ฅผ ๋น๊ตํ๊ณ 0์ ๋๋ฅผ ํ๋ฅ ์ ๊ทผ์ฌํ๋ค.
- ์ด๋ฆฌ๋ ํ์ผ์ ์
๋๋ค์ผ๋ก ํ๋ํ๋ ๊ฒ๋ณด๋ค, ๊ผญ์ง์ ์ ๊น ๋ ๊น์ง๋ ๋ฉด์ ์ด ํฌ๋ค. ๋๋ค์ ์ค์๊ฐ์ด 1์ธ ๊ฒ์ ๋นํด, ๊ผญ์ง์ ์ 11์ด์์ผ๋ฉฐ, ๊ทน๋จ์ ์ผ๋ก ๋ง์ ํ์ผ์ด ๊น์ง๋ ์ฌ๊ฑด๋ ๊ผญ์ง์ ์ ๊น ๋ ๋ ๋ง์ด ๋ฐ์ํ๋ค.
- ํ์ผ์ด 0์ผ ํ๋ฅ
sum(df[1] != 1) / nrow(df) # vertex : 1๊ฐ ์ด์ ๊น์ง ํ๋ฅ
[1] 0.66643
sum(df[2] != 1) / nrow(df) # random : 1๊ฐ ์ด์ ๊น์ง ํ๋ฅ
[1] 0.40333
๊ผญ์ง์ ์ ๊น ์ ๋ 0์ ๋๋ฌ ํ ๊ฐ ์ด์ ๊น์ง ํ๋ฅ ์ ๋ชฌํ ์นด๋ฅผ๋ก ์๋ฎฌ๋ ์ด์ ์ ์ด์ฉํ ๊ฒ๊ณผ ํ๋ฅ ๋ก ์ ๊ฐ์ด ๋์ผํ๋ค. random์ ๊ฒฝ์ฐ ํ๋ฅ ๋ก ์ ๊ฐ๊ณผ ๋์์ํฌ ์๋ ์์ง๋ง, ๊ผญ์ง์ ์ ๊น ๋๋ณด๋ค ํ๋ฅ ์ด ์ ์ ๊ฒ์ ๋ณด์ ๊ผญ์ง์ ์ ๊น๋ ํ๋์ด ๋ฌด์์ ์ ํ๋ณด๋ค๋ ํจ์จ์ ์์ ์ ์ ์๋ค.
ํ๋ฌ๋์์ state-action
ํ์ด๋ next_state์ ์ต๋ ํ๊ฐ๊ณผ ๋ณด์์ ๊ธฐ์ค ์ผ์ ์
๋ฐ์ดํธํ๋ค. ๋ง์ ํ์ผ์ด ๊น์ง state๋ ์ํํ ์ถ๋ก ์ด ๊ฐ๋ฅํ๊ธฐ์ ์ง๋ขฐ๋ฅผ ๋ฐ์ ํ๋ฅ ์ด ๋ฎ์์ง๋ค. ๋ง์ ํ์ผ์ ๊น๋ ํ๋์ ๊ฒ์์ด ์ค๋ฒ๋ ํ๋ฅ ์ ๋ฎ์ถ๋ฉฐ, ๊ถ๊ทน์ ์ธ ๋ชฉํ์ธ ์ต๋ ๊ฐ์น์ ๋ค๊ฐ๊ฐ๋ ํ๋์ด๋ค. ์ฒซ ๋ฒ์งธ ์ ํ์ผ๋ก ๋ชจ์๋ฆฌ๋ฅผ ๊น๋ ํ๋์ ๋๋ค, ๊ฐ์ฅ์๋ฆฌ, ์ค์ ๋ถ๋ถ์ ๊น๋ ํ๋๋ค๋ณด๋ค 0์ผ ํ๋ฅ ์ด ๋๋ค. ๋ฐ๋ผ์ ์ด ํ๋์ ๋ค๋ฅธ ์ ํ๋ณด๋ค next_state๋ก ํ์ผ์ด ๋ง์ด ์ด๋ฆฐ state๋ฅผ ๋ฐ์ ํ๋ฅ ์ด ๋์์ง๊ณ , ๊ทธ ๊ฒฐ๊ณผ ํ ํ๋๋ณด๋ค ๋์ Q๊ฐ์ ๊ฐ๊ฒ ๋๋ค.
์๋ ๋ state-next stat-Qtable
์ ์ ๋ถ์์ ๋ช
ํํ ๊ทผ๊ฑฐ๊ฐ ๋์ด์ฃผ์ง๋ ๋ชปํ์ง๋ง, ๋ง์ ํ์ผ์ด ์ด๋ฆฐ Q-table์ด ์ด๋ค ์ญํ ์ ํ๋์ง๋ฅผ ์ง์ํ ์ ์๋ค.
๊ฐ์ ๋ชจ๋ธ์ ๋ค๋ฅธ ์ํผ์๋ ๊ฒฐ๊ณผ๋ฌผ์ด์ง๋ง, ๋ง์ ํ์ผ์ด ๊น์ก์ ๋์ max Q๊ฐ๊ณผ ๊ฑฐ์ ๊น์ง์ง ์์์ ๋์ max Q๊ฐ ์ฌ์ด์๋ ์ฐจ์ด๊ฐ ์๋ค. ๋ง์ ํ์ผ์ด ๊น์ง ๊ฒฝ์ฐ์๋ max ๊ฐ์ด 0.32๋ก ์ปธ์ง๋ง, ํ์ผ์ด ๋ณ๋ก ๊น์ง์ง ์์ ๊ฒฝ์ฐ ๋ค๋ฅธ ๊ฐ๋ค๊ณผ ๊ฑฐ์ ์ ์ฌํ 0.17๋ฅผ ๊ฐ์ก๋ค. ์ด๋ ์ถ๋ก ์ด ๋ถ๊ฐ๋ฅํ ์ํฉ์์ ๋ํ๋๋ ์๊ทน์ ์ธ Q๊ฐ์ผ๋ก ํด์ํ ์ ์๋ค.
- max Q๊ฐ : 0.17
- max Q๊ฐ : 0.32
(์ถ๊ฐ ์์ )