논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Delving Deep into Rectifiers: Suurpassing Human-Level Performance on ImageNet Classification

1. Introduction

지난 몇 년간 우리는 인식 성능에 있어서 굉장한 성능 향상을 볼 수 있었습니다. 이는 두가지 방향성을 띄고 있는데, 하나는 더 강력한 모델을 만들어낸 것이고, 나머지 하나는 오버피팅을 막을 수 있는 효과적인 전략에 의한 것입니다. 그 한 켠에는 신경망이 복잡성을 높여 트레이닝 데이터에 피팅할 수 있는 여지를 높이기도 하였으며, 다른 한 켠에서는 효과적인 regularization이나 data augmentation 등을 통한 더 나은 일반화(generalization) 또한 달성하였습니다. 그 중 Rectified Linear Unit (ReLU)는 이러한 것들 중 한가지 중요한 열쇠입니다. 이는 기존의 시그모이이드 류보다 더 나은 수렴성을 보여줍니다.

이 논문에서는 Parametric Recitifed Linear Unit (PReLU)라는 ReLU의 일반화된 활성 함수를 제안합니다. 이 함수는 rectifier의 파라미터를 적응적으로 학습하면서도 무시해도 될 정도의 적은 계산량을 필요로 합니다. 두번째로 깊은 모델에서의 rectified 모델의 학습이 어려움을 보였습니다. ReLU/PReLU로 이루어진 모델에서 이론적으로 타당한 초기화 함수를 이끌어 내어 깊은 모델에서도 스크래치부터 수렴이 잘 되게끔 도울 수 있도록 합니다.

2. Approach

2.1 Parametric Rectifiers

기존의 파라미터가 없는 ReLU 활성 함수를 학습된 파라미터를 가지는 활성 함수로 교체하여 정확도를 향상시킬 수 있었습니다.

Definition

활성 함수는 다음과 같습니다.

$$ f(y_i)= \cases{ y_i, & \text{if } y_i \gt 0 \\ yi, & \text{if } a_i y_i \leq 0}$$

여기서 $y_i$는 비선형 활성 함수 $f$의 입력으로 $i$는 채널을 나타냅니다. $a_i$는 음수 일 경우 기울기를 조절하는 계수입니다. 따라서 각 채널마다 다른 활성함수를 적용할 수 있습니다. $a_i$는 학습되는 파라미터로 이를 Parametric ReLU라고 부르도록 하겠습니다. $a_i$가 0인 경우에는 ReLU와 동일해지며, $a_i$가 고정된 작은 값이면 Leaky ReLU (LReLU)가 됩니다. LReLU가 등장한 이유는 그래디언트가 0이 되는 것을 방지하는 것이지만, ReLU에 비해 크게 정확도 향상이 없었습니다. 반면 PReLU는 모델에서 서로 다른 파라미터를 적응적(adaptively)으로 학습하게 됩니다. 그럼에도 PReLU의 파라미터는 채널 수 만큼의 갯수를 가지므로 전체 가중치에 비해 무시할만한 수를 가집니다. 따라서 오버피팅의 리스크가 없다고 할 수 있습니다. 또한 채널-공유(channel-shared) 버전을 사용한다면 레이어마다 단 한개의 파라미터만을 더 가지게 됩니다.

Optimization

PReLU는 역전파 알고리즘을 이용하여 학습될 수 있습니다. 체인룰에 의해 갱신 식은 다음과 같습니다.

$$\frac{\partial \varepsilon}{\partial a_i} = \sum_{y_i} \frac{\partial \varepsilon}{\partial f(y_i)} \frac{\partial f(y_i)}{\partial a_i}$$

여기서 $ \varepsilon$은 목적 함수를 나타냅니다. 첫번째 항은 더 깊은쪽 레이어에서 전파되어온 그래디언트를 나타냅니다. 활성함수의 그래디언트는 다음과 같이 정의됩니다.

$$ \frac{\partial f(y_i)}{\partial a_i} = \cases { 0, & \text{if } y_i \gt 0 \\ y_i, & \text{if } y_i \leq 0}$$

$ \sum_{y_i}$는 특징 맵의 모든 위치들을 더한 것입니다. 채널-공유(channel-shared)버전을 사용하면 레이어 내의 모든 위치를 더하면 됩니다. 역전파할 때에는 모멘텀 또한 적용할 수 있습니다. 단, weight decay는 적용하지 않도록 합니다. 이는 $a_i$를 0이 되도록 유도하게 되어 ReLU와 비슷하게 되어버립니다. Regularization이 없더라도 계수가 1보다 커지는 일은 잘 없었습니다. 오히려 $a_i$의 범위를 따로 제한하지 않아 활성 함수가 non-monotonic하도록 하였습니다. 실험에서는 $a_i = 0.25$로 초기화하였습니다.

Comparison Experiments

[10]에서 연구된 14개의 레이어를 가지는 모델에서 비교를 진행하였습니다. 베이스라인으로 컨볼루셔널 레이어와 완전 연결 레이어에 ReLU를 이용하여 학습한 모델을 이용하였고 [10]에 나온대로 학습하였습니다. 여기에 PReLU를 적용하고 스크래치부터 학습시켜 성능을 비교하였습니다. 그 결과 ReLU보다 에러가 1.2% 적은 성능을 보였습니다. 여기서 두가지 특징을 볼 수 있었는데, 첫번째 컨볼루셔널 레이어에서는 계수가 0보가 꽤 큰 값을 가지게 됩니다. 이는 대부분의 첫번째 레이어가 에지나 텍스쳐를 찾도록 가버(Gabor)와 유사한 필터가 된다는 것을 생각했을 때, 양수와 음수의 반응값(response)가 모두 잘 나타나도록 학습되었다고 볼 수 있습니다. 두번째로 깊은 컨볼루셔널 레이어로 갈 수록 더 작은 계수를 얻게 됩니다. 이는 깊이가 깊어질 수록 점점 비선형성을 띄도록 된다고 할 수 있습니다. 다시 말하면 초기 레이어에서는 정보를 유지하다가 깊은 단계에서는 결정적(discriminative)이게 되는 것입니다.

2.2 Initialization of Filter Weights for Recitifers

Rectifier를 이용한 신경망은 시그모이드 류의 활성함수를 쓴 것보다 더 학습하기 쉬운 편이지만, 좋지 않은 초기화는 여전히 높은 비선형성을 가지는 시스템에서는 학습에 방해가 됩니다. 최근 CNN들은 대부분 가우시안 분포를 이용한 파라미터 초기화를 사용하지만, 고정된 분산 값을 사용하면 깊은 모델에서는 수렴이 어려워진다고 알려져 있기에 [25]에서는 8번째 컨볼루션 레이어까지를 미리 학습된 모델을 사용하였지만, 이는 시간이 많이 걸릴뿐더러 지역 최적점에 빠질 위험이 있습니다. Glorot과 Bengio는 Xavier 초기화를 제안하였지만, 이는 활성함수가 선형이라는 가정을 하고 이기에 ReLU는 PReLU에는 맞지 않습니다. 다음에서 ReLU, PReLU에서 사용할 수 있는 이론적으로 타당한 초기화 방법을 설명하고자 합니다.

Forward Propagation Case

아이디어는 각 레이어의 반응값의 분산을 보는 것에서 출발합니다. 각 레이어의 반응값음 다음과 같습니다.

$$ \mathbf{y}_l = \mathbf{W}_l \mathbf{x}_l + \mathbf{b}_l $$

$\mathbf{x}$는 벡터 형식으로 표현한 입력이고, 이는 이전 레이어에서 $\mathbf{x}_l = f(\mathbf{y}_{l-1})$로 올라온 것입니다. 여기서 $\mathbf{W}$를 같은 분포를 공유하면서 서로 독립적으로 초기화 하고, $\mathbf{x}_l$ 또한 서로 독립적이면서 같읕 분포를 공유한다고 한다면 다음을 얻을 수 있습니다.

$$\text{Var}[y_l] = n_l \text{Var}[w_l x_l]$$

$n_l$은 필터 크기를 의미합니다. 만약 $w_l$의 평균이 0이라면 위 식은 다음처럼 바뀝니다.

$$\text{Var}[y_l] = n_l \text{Var}[w_l] \text{E}[x_l^2]$$

$x_l$의 평균이 0이 되지 않는 한 $\text{E}[x_l^2] \neq \text{Var}[x_l]$일 수가 없는데, ReLU에서는 $x_l = \max (0, y_{l-1})$이므로 평균이 0을 가질 수가 없습니다. 이는 결국 Xavier 초기화와 다른 결론이 되어버립니다. 만약 $w_{l-1}$이 0을 기준으로 대칭인 분포를 가진다면 $f$가 ReLU일 때 $\text{E}[x_l^2] = 1/2 \text{Var}[y_{l-1}]$가 됩니다. 이를 위의 식에 삽입하면, 다음과 같이 됩니다.

$$\text{Var}[y_l] = \frac{1}{2} n_l \text{Var}[w_l] \text{Var}[y_{l-1}]$$

그리고 이것을 모든 레이어 $L$에 대해서 생각하면 아래와 같이 됩니다.

$$\text{Var}[y_l] = \text{Var}[y_{1}] \big( \prod_{l=2}^{L} \frac{1}{2} n_l \text{Var}[ w_l ] \big)$$

제대로된 초기화 방법은 입력 신호를 세기를 지수적으로 줄이거나 키워버리면 안되기 때문에 이렇게 되지 않도록 적당한 스칼라 값 1을 사용하였습니다.

$$ \frac{1}{2} n_l \text{Var}[w_l] = 1, \forall l$$

이는 결국 평균이 0이고 표준 편차가 $\sqrt{2 / n_l}$인 가우시안 분포임을 알 수 있습니다. 이것이 제안하는 초기화 방법입니다. 또한 $\mathbf{b} = 0$으로 초기화하였습니다. 첫번째 레이어에서는 $n_l \text{Var}[w_1] = 1$이도록 하였습니다. 첫번째 레이어는 ReLU가 적용되지 않기 때문입니다.

Backward Propagation Case

Discussions

만약 신호가 적절하지 않은 값 $\beta$로 스케일링 되어있는 경우, 마지막 신호는 $\beta^L$로 리스케일링 됩니다. 따라서 $\beta \gt 1$인 경우에는 무한대로 발산을, $\beta \lt 1 $인 경우에는 신호를 약화시켜 수렴을 방해합니다. 제안하는 방법은 VGG에서 상수 0.01의 표준편차를 사용할 경우 수렴이 지지부진해지는지를 설명할 수 있습니다. VGG의 model B에 제안하는 식을 적용하면 표준 편차는 0.059, 0.042, 0.029, 0.021이 됩니다. 만약 표준 편차를 0.01로 초기화한다면 conv10에서 conv2로 역전파되는 그래디언트는 $1 / (5.9 \times 4.2^2 \times 2.9^2 \times 2.1^4 ) = 1 / (1.7 \times 10^4)$로 그래디언트가 줄어드는 이유가 됨을 알 수 있습니다.

Comparisons with "Xavier" Initialization

Xavier 초기화와 제안하는 방법의 차이점은, Xavier는 선형인 경우만 고려하지만, 제안하는 방법은 rectifier nonlinearity를 고려한다는 점입니다. 둘을 비교하였을 때, top-1/top-2 에러가 Xavier는 33.90/13.44, 제안하는 방법은 33.82/13.34로 더 에러가 줄어드는 것을 볼 수 있었으며, 30 레이어 모델처럼 깊은 네트워크에서도 수렴이 가능함을 알 수 있었습니다.

2.3 Architectures

3. Implementation Details

4. Experiments on ImageNet

 


Add a Comment Trackback