アルファ碁:SLポリシーネットワークのモデル部分

アルファ碁のSLポリシーネットワークモデル部分

アルファ碁では入力の特徴量が48、中間層5x5の192チャネル、出力層の全13層からなっている。

# Network definition
class CNN(chainer.Chain):
  def __init__(self, train=True):
    super(CNN, self).__init__(
      conv1 = F.Convolution2D(48,192,5,pad=2),
      conv2 = F.Convolution2D(192,192,3,pad=1),
      conv3 = F.Convolution2D(192,192,3,pad=1),
      conv4 = F.Convolution2D(192,192,3,pad=1),
      conv5 = F.Convolution2D(192,192,3,pad=1),
      conv6 = F.Convolution2D(192,192,3,pad=1),
      conv7 = F.Convolution2D(192,192,3,pad=1),
      conv8 = F.Convolution2D(192,192,3,pad=1),
      conv9 = F.Convolution2D(192,192,3,pad=1),
      conv10 = F.Convolution2D(192,192,3,pad=1),
      conv11 = F.Convolution2D(192,192,3,pad=1),
      conv12 = F.Convolution2D(192,192,3,pad=1),
      conv13 = F.Convolution2D(192,1,1,nobias=True),
        bias14=L.Bias(shape=(361))
    )
    
  def __call__(self, x):
    h = F.relu(self.conv1(x))
    h = F.relu(self.conv2(h))
    h = F.relu(self.conv3(h))
    h = F.relu(self.conv4(h))
    h = F.relu(self.conv5(h))
    h = F.relu(self.conv6(h))
    h = F.relu(self.conv7(h))
    h = F.relu(self.conv8(h))
    h = F.relu(self.conv9(h))
    h = F.relu(self.conv10(h))
    h = F.relu(self.conv11(h))
    h = F.relu(self.conv12(h))
    h = self.conv13(h)
    h = F.reshape(h,(-1361))
    h = self.bias14(h)
    return h

データの用意

KGSから棋譜データを用意する(次回)。