/ PAPER-REVIEW

Wide Residual Networks

Wide Residual Networks

안녕하세요. AiRLab(한밭대학교 인공지능 및 로보틱스 연구실) 이재민입니다. 앞으로 연구실 세미나 준비를 통해 알게 된 내용을 연구실 블로그에 기록하게 되었습니다 :)

제가 이번에 읽은 논문은 Wide Residual Networks(Wide ResNet) (arXiv:1605.07146)이며 2016년 발표가 된 연구입니다.

같은 과거의 연구들은 점진적으로 CNN(Convolution Neural Networks)이 이미지 인식을 위해 더 깊어질 수 있도록 연구되어왔습니다.

이를 위해 Optimizer, Initializer, Skip-connection과 같은 많은 방법들이 연구되어왔고, 그중, ResNet(Residual Networks)는 shortcut connection을 통해 네트워크가 깊어지면 깊어질수록 생기는 vanishing gradient를 해결하면서도 더 깊게 네트워크를 쌓을 수 있도록 설계되었습니다.

Width vs Depth in residual Networks

Figure1

ResNet은 shorcut connection을 통해 많은 layer을 학습 할 수 있도록 하였습니다. 하지만 망이 깊어지면 깊어질 수록 의미있는 정보(context)를 갖는 필터의 수의 비가 적어지는 문제가 발생하게 되었습니다.

때문에 저자는 Block의 수를 증가시키지 않고, Residual Block의 Channel을 증가시키는 방향으로 연구를 시도하였습니다.

이 논문에서는 Residual Block을 (a), (c)의 구조와 같이 3x3 컨볼루션이 두 개로 이루어진 경우를 B(3,3)으로 표기하였습니다. 이와 마찬가지로 (b)의 경우는 B(1,3,1) (d)는 B(3,1,3)으로 표기가 가능합니다.

Table1

B(3,3)의 경우 구조가 위와 같이 정의됩니다. K 는 widen factor, N은 블록의 수(각 Residual Block의 수)입니다. 이해를 돕기 위해 K가 2인 경우 아래와 같이 구현이 될 수 있습니다.

class WideResNet(nn.Module):
  def __init__(self):
    # ...
    self.conv1 = nn.Conv2d(3, 16, 3) # pseudo code...
    # ...
    self.layer1 = self.get_layers(block, 16, 16 * 2, 1)
    self.layer2 = self.get_layers(block, 16 * 2, 32 * 2, 2)
    self.layer3 = self.get_layers(block, 32 * 2, 64 * 2, 2)
    # ...

Dropout

Dropout은 Coadaptive하고 overfitting을 막기 위해 많은 네트워크에 적용되어 왔습니다. 추가적으로 Internal Covariate Shift 이슈를 막기위한 Batch Norm 과 같은 방법들도 연구가되었는데, 이 방법들은 Regularizer의 효과도 볼 수 있습니다. 이 논문에서는 Residual Block의 컨볼루션 사이에 Dropout(Dorp rate 0.3)을 사용합니다.

Experimental result

Table5 본 논문에서는 CIFAR10과 CIFAR100을 여러 모델을 통해 실험하였고, 위의 결과와 같이 WRN(depth 28, k 10)이 test error 4로 가장 높은 성능을 보였습니다.

Figure2

실선은 test error, 점선은 train error

Table6 추가적으로 이 논문에서는 Dropout을 사용한 것과 사용하지 않은 것을 비교하였는데, 이 결과 역시 드롭아웃을 사용한 것이 더 좋은 결과를 보입니다.

Implementation of WRN

실제 논문을 pytorch를 통해 모델을 구현해보았고, 코드는 https://github.com/J911/WRN-pytorch에 배포해 두었습니다.

References

  • Zagoruyko, Sergey, and Nikos Komodakis. “Wide residual networks.” arXiv preprint arXiv:1605.07146 (2016).
  • He, Kaiming, et al. “Deep residual learning for image recognition.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.