logo

인공신경망에서 스킵 커넥션이란? 📂머신러닝

인공신경망에서 스킵 커넥션이란?

정의

$\mathbf{W}$를 가중치, $\mathbf{x}$를 입력, $\sigma$를 비선형 활성화함수라고 하자. 레이어 $L_{\mathbf{w}}$를 다음과 같이 정의하자.

$$ L_{\mathbf{W}}(\mathbf{x}) := \sigma(\mathbf{W} \mathbf{x}) $$

다음과 같이 레이어에 항등함수가 더해진 꼴의 함수를 스킵 커넥션skip connection이라 한다.

$$ L_{\mathbf{W}} + I : \mathbf{x} \mapsto \sigma(\mathbf{W} \mathbf{x}) + \mathbf{x} $$

설명

일반적으로는 입력 $\mathbf{x}$와 가중치 $\mathbf{W}$를 곱하여 이를 활성화함수 $\sigma$에 대입한 값 $\sigma(\mathbf{W} \mathbf{x})$가 다시 다음 레이어의 입력이 된다. 스킵 커넥션은 이 값에 입력을 다시 더한 값을 다음 층의 입력으로 전달한다. 쉽게 수식으로 표현하면 다음과 같다.

$$ \begin{align*} &\text{normal layer: } \\ &\qquad L_{\mathbf{W}_{2}} \circ L_{\mathbf{W}_{1}}(\mathbf{x}) = \sigma(\mathbf{W}_{2}\sigma(\mathbf{W}_{1} \mathbf{x})) \\ \\ &\text{skip connection: } \\ &\qquad (L_{\mathbf{W}_{2}} + I) \circ (L_{\mathbf{W}_{1}} + I)(\mathbf{x}) = \sigma(\mathbf{W}_{2}(\sigma(\mathbf{W}_{1} \mathbf{x}) + \mathbf{x})) + (\sigma(\mathbf{W}_{1} \mathbf{x}) + \mathbf{x}) \end{align*} $$

스킵 커넥션이 위 정의에 따라 엄밀하게 정의된 개념은 아니다. 어떤 방식으로든 입력(혹은 이전의 값)이 다음 레이어로 전달되기만하면 스킵 커넥션이라 부른다. U-Net은 오토인코더에서 디코더의 입력에 인코더의 출력을 쌓는 형태의 스킵 커넥션을 사용한 신경망이다.

일반적으로 레이어를 너무 많이 합성하면 신경망의 성능이 떨어지는데, 스킵 커넥션을 적절히 활용하여 레이어를 아주 깊게 쌓아도 잘 학습될 수 있도록 한 것이 ResNet이다.