【쇼기 AI】「쇼기 AI에서 배우는 딥 러닝」을 읽는♪~VGG 이용의 Policy_Value 네트워크


제 2 밤도 본서에서 벗어나지만 어젯밤 연장으로 VGGLike 모델 을 이용한 Policy_value 네트워크 모델을 작성하여 힘을 보았다.

했던 일



(1) VGGLike 모델을 이용한 Policy_value 네트워크 모델
(2) 파라미터 사이즈와 수렴성에 대해서
(3) 강해졌습니까? ?

(1) VGGLike 모델을 이용한 Policy_value 네트워크 모델



이번 경우, 어젯밤의 VGGLike 모델로부터 상상할 수 있다고 생각합니다만, 이하와 같습니다.
from chainer import Chain
import chainer.functions as F
import chainer.links as L
from pydlshogi.common import *

ch = 192
fcl = 256
class PolicyValueNetwork(Chain):
    def __init__(self):
        super(PolicyValueNetwork, self).__init__()
        with self.init_scope():
            self.conv1_1 = L.Convolution2D(104, ch, 3, pad=1)
            self.conv1_2 = L.Convolution2D(ch, ch, 3, pad=1)
            self.conv2_1 = L.Convolution2D(ch, ch*2, 3, pad=1)
            self.conv2_2 = L.Convolution2D(ch*2, ch*2, 3, pad=1)
            self.conv3_1 = L.Convolution2D(ch*2, ch*4, 3, pad=1)
            self.conv3_2 = L.Convolution2D(ch*4, ch*4, 3, pad=1)
            self.conv3_3 = L.Convolution2D(ch*4, ch*4, 3, pad=1)
            self.conv3_4 = L.Convolution2D(ch*4, ch*4, 3, pad=1)
            # policy network
            self.l13=L.Convolution2D(in_channels = ch*4, out_channels = MOVE_DIRECTION_LABEL_NUM, ksize = 1, nobias = True)
            self.l13_bias=L.Bias(shape=(9*9*MOVE_DIRECTION_LABEL_NUM))
            # value network
            self.l13_v=L.Convolution2D(in_channels = ch*4, out_channels = MOVE_DIRECTION_LABEL_NUM, ksize = 1)
            self.l14_v=L.Linear(9*9*MOVE_DIRECTION_LABEL_NUM, fcl)
            self.l15_v=L.Linear(fcl, 1)

    def __call__(self, x):
        h = F.relu(self.conv1_1(x))
        h = F.relu(self.conv1_2(h))
        #h = F.max_pooling_2d(h, 2, 2)
        #h = F.dropout(h, ratio=0.25)
        h = F.relu(self.conv2_1(h))
        h = F.relu(self.conv2_2(h))
        #h = F.max_pooling_2d(h, 2, 2)
        #h = F.dropout(h, ratio=0.25)
        h = F.relu(self.conv3_1(h))
        h = F.relu(self.conv3_2(h))
        h = F.relu(self.conv3_3(h))
        h = F.relu(self.conv3_4(h))
        #h = F.dropout(h, ratio=0.25)
        h13 = self.l13(h)
        # policy network
        h13 = self.l13(h)
        policy = self.l13_bias(F.reshape(h13, (-1, 9*9*MOVE_DIRECTION_LABEL_NUM)))
        # value network
        h13_v = F.relu(self.l13_v(h))
        h14_v = F.relu(self.l14_v(h13_v))
        value = self.l15_v(h14_v)
        return policy, value

(2) 파라미터 사이즈와 수렴성에 대해서



역시 위의 네트워크 모델은 크기가 크고 수렴 시간 등은 다음과 같습니다.


이름
loss
일치율(방책)
일치율(가치)
비고


VGGLike
2.37443
0.4219189
0.69108087
VGGLike8 레이어

Re s 네츠 mp 40 ※
2.29075
0.4325099
0.6906338
Resnet20block 43층

ResnetSimple20
2.308355
0.4326057
0.6941468
Resnet10block23층

ResnetSimple10
2.360802
0.42507267
0.6948055
Resnet5block13층

ResnetTry30
2.27104
0.43431032
0.6986858
ResnetTri10block 33층

ResnetVGGLike5
2.279315
0.43526843
0.69514084
ResnetVGGLike5block 19층



모델
time/epoch
레이어
params/MB


VGGL8
90:52
8층
78.72

S43
57:10
43층
49.73

VGGL19
45:19
19층
27.74

S23
37:59
23층
25.61

S13
30:30
13층
13.56


역시, 이번 VGGLike 모델은 파라미터도 많아, 시간도 대폭 걸리는 것이 되고 있다.
그리고 dropout을 사용하고 있는 소위인지, 파라미터가 많은 것에 대해서는 그다지 일치율도 오르지 않았다.

(3) 강해졌습니까? ?



숫자가 이야기하는 것처럼, 또 하나 강하다고는 좋지만, 그리고 다음과 같은 재미있는 승부가 된 것도 있다.


요약



・VGGLike인 Plocy_value의 네트워크 모델로 피팅해 보았다
· 매개 변수가 많아지고 시간이 많이 걸릴만큼 강하지는 않았습니다.

· 하나의 벽에 부딪쳤다고 느낀다.

좋은 웹페이지 즐겨찾기