반응형

이글은 towardsdatascience.com의 내용임. (링크)

Residual blocks - Building blocks of ResNet

    잔차 블록(residual block)을 이해하는 것은 꽤 쉽다. 전통적인 신경망에서는 각 레이어가 다음 레이어로 전달된다. 잔차 블록을 가진 네트워크에서는 각 레이가 다음 레이어로 전달되면서 직접적으로 2~3단계(hops) 떨어진 레이어로 전달된다. 하지만 처음에 왜 이것이 필요한가에 숨겨진 직관(intuition), 왜 그렇게 중요하고 몇몇 다른 최신 구조(architecture)와 얼마나 비슷한지를 이해하는 것이 이 글에서 다룰 내용이다. 왜 잔차 블록이 굉장한지 그리고 어떻게/왜 신경망이 넓은 분야에서 최신 성능을 낼 수 있도록 하는 핵심 아이디어인지에 대한 여러가지 해석이 있다. 아래는 실제 잔차 블록이 어떻게 보이는지에 대한 그림이다.


Single Residual Block

    신경망은 범용 함수 근사법(univeral function approximator)이고 그 정확도는 레이어의 수가 증가하는 것으로 증가한다. 하지만 정확도 개선에서 그 결과에 추가된 레이어의 수는 제한이 있다. 따라서 만약 신경망이 범용 함수 근사법이라면 신경망은 어떠한 단순하거나 복잡한 함수를 학습할 수 있었을 것이다. 하지만 기울기 소실(vanishing gradients)와 차원의 저주(curse of dimensionality)같은 몇가지 문제때문에 만약 충분하게 깊은 네트워크가 있다면 이 네트워크는 항등 함수(identity function)같은 간단한 함수를 학습할 수 없다는 것이 드러났다.

    또한 만약 여전히 레이어의 수를 계속 증가시키고 있다면 정확도가 한점으로 포화되고 결국에는 감소하는 것을 볼 것이다. 그리고 이는 보통 오버피팅때문이 아니다. 따라서 더 얕은 네트워크가 더 깊은 네트워크보다 더 잘 학습하는 것처럼 보일 수 있고 이러한 것이 꽤 직관적이지 않다. 하지만 이는 실제로 보이는 것이고 감소 문제(degradation problem)로 유명하다.

    감소 문제와 심층 신경망의 항등함수 학습 불능이 되는 근본 원인 없이 몇가지 가능한 해법을 생각해보자. 감소 문제에서 더 얕은 네트워크는 약간 더 많이 레이어가 추가된 더 깊은 네트워크보다 더 잘 수행되는 것을 안다. 그러면 이 여분의 레이어를
건너뛰고 얕은 하위 네트워크의 정확도로 왜 맞추지 않을까? 그리고 어떻게 레이어를 건너뛰도록 만들까?

    'Skip-connection' 또는 잔차 연결(residual connection)을 사용하여 레이어의 훈련을 건너뛸 수 있다. 이것이 위 이미지에서 본 것이다. 사실, 자세히 봤다면, 단지 skip connection으로만 항등 함수를 직접 학습할 수 있다. 이것이 skip connection이 identity shortcut connection으로도 불리는 정확한 이유이다. 모든 문제에 대한 하나의 해법이다!

    하지만 왜 잔차(residual)라고 부를까? 잔차는 어디에 있을까? 신경망 블록이 있다고 하자. 이 블록은 입력 x와 실제 분포(true distribution) H(x)를 학습한다. 아래처럼 모델의 입력과 출력간의 차이(또는 잔차)를 표시해 보자.

$R(x) = \text{Output} - \text{Input} = H(x) - x$

    다시 정리하면 아래와 같다.

$H(x) = R(x) + x$

    잔차 블록은 전반적으로 실제 출력(true output), H(x)를 학습하려고 한다. 그리고 만약 위의 이미지를 자세히 봤다면, x로부터의 항등 연결이 있기 때문에 레이어는 실제로 잔차 R(x)를 학습하려고 한다는 것을 알 수 있을 것이다. 요약하면, 전통적인 네트워크에서의 레이어는 실제 출력, H(x)를 학습하고 있지만 잔차 네트워크에서의 레이어는 잔차, R(x)를 학습하고 있다. 따라서 이름이 '잔차 블록'이다.

    또한 단지 입력만이 아니라 잔차의 출력과 입력을 학습하는 것이 더 쉽다는 것이 관찰되었다. 추가된 장점으로 네트워크는 이제 간단하게 잔차를 0으로 설정하는 것으로 항등함수를 학습할 수 있다. 그리고 역전파(backpropagation)와 어떻게 레이어의 수가 증가하는 것으로 기울기 소실(vanishing gradient)문제가 발생하는지를 이해한다면 이 skip connection때문에 더 큰 기울기를 초기 레이어에 전달하고 이들 레이어 또한 최종 레이어만큼 빠르게 학습할 수 있다는것을 명확하게 알 수 있다. 아래 이미지는 최적의 기울기 흐름을 위해 어떻게 잔차 블록과 항등함수를 어떻게 정리할 수 있는지를 보여준다. 배치 정규화(batch normalization)을 포함한 사전활성화가 보통 최고의 결과를 준다는 것이 관찰되었다.(즉, 아래 이미지에서 가장 오른쪽 잔차 블록이 가장 좋은 결과를 낸다.)


Types of Residual Block

    위에서 언급한 것 이외에도 잔차 블록과 ResNet에 대한 더 많은 해석이 있다. ResNet 훈련동안, 잔차블록에서 레이어를 훈련하거나 skip connection을 사용하여 관련 레이어들에 대한 훈련을 건너 뛸 수 있다. 다른 훈련 데이터 포인트에 대해 네트워크의 다른 부분은 네트워크에서 역방향으로 오류가 얼마나 흐르는가에 따라 다른 비율로 훈련된다. 이는 데이터셋에서 다른 모델의 앙상블를 훈련하고 가능한 최고의 정확도를 얻는것으로 생각할 수 있다.

    몇몇 잔차블록에서 훈련을 건너뛰는 것 역시 낙관적인 관점으로 볼 수 있다. 보통 데이터셋의 복잡도에 따른 신경명에 필요한 최적의 레이어(또는 잔차블록)수를 모른다. 네트워크에서 skip connection을 추가하여 튜닝을 위한 중요한 하이퍼파라미터 레이어의 수를 처리하는 대신, 네트워크가 유용하지 않은 레이어의 훈련을 건너뛰고 전체적인 정확도에서 값을 추가하지 않도록 한다. Skip connection은 훈련동안 레이어의 수를 최적으로 튜닝되도록 네트워크를 동적으로 만든다.

    아래 이미지는 잔차 블록의 여러가지 해석을 보여준다.


Different interpretations of Residual Block

    Skip connection의 역사를 약간 살펴보자. 레이어간 연결을 건너뛰는 아이디어는 Highway Networks에서 처음 소개되었다. Highway networks는 얼마나 많은 정보를 통과시킬지를 제어하는 게이트(gate)를 가진 skip connection을 갖고 이들 게이트는 선택적으로 열리도록 훈련될 수 있다. 이 아이디어는 또한 네트워크에 의해 이전(past) 데이터 포인트로부터 얼마나 많은정보를 흐르게 할지를 제어하는 LSTM 네트워크에서도 볼 수 있다. 아래 그림은 동일 아이디어인 LSTM 블록을 보여준다.


Similar to LSTM Block

    잔차 블록은 기본적으로 skip connection에서 어떠한 게이트도 없는 highway networks의 특별한 경우이다. 기본적으로 잔차 블록은 초기 레이어에서 마지막 레이어까지 메모리(또는 정보)의 흐름을 허용한다. Skip connection에서 게이트가 없음에도 불구하고 잔차 네트워크는 실제로 어떤 다른 highway networks만큰 잘 동작한다. 아래 이미지는 모든 잔차 블록 모임이 어떻게 ResNet으로 완성되는지를 보여준다.


ResNet architectures

** ResNet의 전반적인 내용과 변종에 대해 흥미가 있다면 [여기]를 참고하자.

반응형

+ Recent posts