본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

 

 

 

 

The Reversible Residual Network: Backpropagation Without Storing Activations ( RevNet )

Aidan N. Gomez, Mengye Ren, Raquel Urtasun, Roger B. Grosse

(Submitted on 14 Jul 2017)

arXiv:1707.04585

 

 

해당 논문은 ResNet의 변종인 RevNet에 관한 내용이다.

ResNet은 아래에 정리되어 있다.

2019/11/01 - [AI/논문정리] - Deep Residual Learning for Image Recognition (ResNet)

 


 

현재 대부분의 Neural Network는 backpropagation을 사용하여 훈련된다.

사실 backpropagation은 네트워크의 activation들을 메모리에 저장해야하며 이는 네트워크 속 units의 수에 비례하는 비용이 든다. (= 큰 네트워크일수록 cost가 크다는 뜻)

이는 네트워크가 더욱 wide해지고 deep해질 수록 메모리를 많이 사용하게됨에 따라 bottleneck 현상을 초래할 수 있다.

2019/11/10 - [AI/딥러닝 기초] - [개념정리] Bottleneck (병목현상)이란?

 

 

그래서 저자들은 아주 적은 수의 non-reversible layer를 제외하고 메모리에 activation을 저장하지 않으면서 backpropagation을 할 수 있는 방법을 찾아낸다.

그것이 바로 RevNet(Reversible Residual Network)이다.

 

 


 

 

우선 각 layer의 unit들을 두 개의 그룹으로 나누어준다. 이는 channel을 두개로 나누는 것이다. 

이렇게 나눈 것을 x1, x2로 명명한다.

 

이를 이용하면 forward(그림a), backward(그림b)는 다음과 같이 생겼다.

식으로 나타내면..

  • y1 = x1 + F(x2)
  • y2 = x2 + G(y1)

 

각 layer의 activation은 다음 layer의 activation으로부터 아래 식을 통해 다시 계산될 수 있다. (저장 노필요)

  • x2 = y2 − G(y1)
  • x1 = y1 − F(x2)

Note.. residual block 과 다르게 reversible block은 무조건 stride 1을 이용해야 한다. 그렇지 않으면 layer가 정보를 버리게되어 reversible하지가 않게 되기 때문이다.

 

 


 

 

[Computational overhead]

 

일반적으로 N connection을 가진 네트워크에서 backprop의 연산량은 3N정도이다.

그러나 RevNet의 경우 backward pass 동안에 다시 계산되어야하므로 N이 추가된 4N이며 이는 보통의 보통의 backprop보다 33 % 가 더 필요하다는 뜻이다.

 

 

 


 

 

[Comparisons]

 

 

[Architectural Details]

 

 


 

 

[ResNet vs. RevNet]

 

 

CIFAR-10과 ImageNet 실험 결과에 따르면 RevNet은 ResNet보다 아주 조금 성능이 뒤떨어졌다. 

하지만 정말 아주 조금의 성능차였고 CIFAR-100의 어떤 경우에는 RevNet이 더 좋은 성능을 보였다.

 

 

정리하자면, ResNet과 엄청나게 적은 차이의 성능을 보이며 메모리는 그것보다 훨씬 효율적으로 사용하게 되는 RevNet이 좋은 Architecture라고 생각된다. :) 

 

(이미지는 논문의 것을 그대로 사용하여 본인이 직접 ppt를 작성하였습니다.)