서론
딥러닝, 인공 신경망의 한 분야는 기계 학습의 중요한 영역으로 자리매김하고 있습니다. 특히, 여러 계층을 갖는 심층 신경망, 즉 딥 뉴럴 네트워크가 이미지 인식, 음성 인식, 자연어 처리 등 다양한 분야에서 뛰어난 성능을 보이며 그 중요성이 부각되고 있습니다. 그러나 딥 뉴럴 네트워크는 그만큼의 성능을 달성하기 위해 많은 양의 데이터와 복잡한 구조, 그리고 그에 따른 높은 계산 비용이 필요하다는 문제점을 가지고 있습니다. 이 중에서도, 딥 뉴럴 네트워크의 학습에 있어서 가장 큰 문제점 중 하나는 'gradient vanishing'이라는 현상입니다. 이는 네트워크의 깊이가 깊어질수록, 즉 계층이 많아질수록 오차의 정보가 잘 전달되지 않아 학습이 잘 이루어지지 않는 문제를 의미합니다. 이러한 문제를 해결하기 위해 제안된 방법 중 하나가 바로 'Residual Network' 또는 'ResNet'입니다. 본 논문에서는 ResNet의 핵심 개념과 그 원리, 그리고 그로 인해 어떠한 변화가 일어났는지에 대해 살펴보겠습니다. 또한, ResNet이 어떻게 딥러닝 학습에서의 중요한 문제였던 'gradient vanishing' 문제를 해결하였는지, 그리고 이를 통해 네트워크의 성능을 어떻게 향상시켰는지에 대해서도 자세히 알아보도록 하겠습니다.
ResNet(Residual Network)
Residual Network는 2015년에 발표된 딥러닝 모델로, 이전의 CNN (Convolutional Neural Network) 모델들이 가진 한계를 극복하고자 제안된 구조입니다. ResNet의 등장 전에는 LeNet5(1999)와 AlexNet(2012) 등의 모델이 있었습니다. 이들 모델은 성능이 우수했지만, 모델의 깊이가 깊어질수록 gradient vanishing 문제가 발생하였습니다. 이는 네트워크의 뒷부분에서 발생한 오류 정보가 앞부분으로 잘 전달되지 않아, 학습이 잘 이루어지지 않는 현상을 말합니다.
이 문제를 해결하기 위해 'Residual Block'이라는 개념을 도입한 것이 ResNet입니다. 'Residual Block'의 핵심 아이디어는 F(x) + x입니다. 여기서 F(x)는 입력 x를 받아 연산을 수행한 결과, x는 입력 그 자체를 의미합니다. 이를 통해 gradient 정보가 네트워크의 앞부분까지 잘 전달될 수 있도록 하였습니다. 이는 기존의 W2 ← W1 - ▽w*a 방식의 업데이트에서 발생하는 gradient vanishing 문제를 완화시킬 수 있었습니다.
▼ W2 ← W1 - ▽w*a이란?
'W2 ← W1 - ▽w*a'는 경사하강법(Gradient Descent)을 표현한 수식입니다. 이는 신경망 학습에서 매우 중요한 역할을 하는 알고리즘으로, 신경망의 가중치를 업데이트하는 방법을 나타냅니다. 각각의 기호는 다음과 같은 의미를 가집니다.
1. W1: 현재의 가중치(weight)를 의미합니다.
2. ▽w: 손실 함수(loss function)를 가중치에 대해 미분한 결과인 미분값(gradient)을 의미합니다. 이 값은 가중치를 얼마나 수정해야 하는지를 나타내는 방향과 크기를 가집니다.
3. a: 학습률(learning rate)을 의미합니다. 학습률은 가중치 업데이트의 크기를 조절하는 매개변수로, 너무 크면 학습이 불안정해지고, 너무 작으면 학습 속도가 느려집니다.
4. W2: 업데이트된 가중치를 의미합니다. 따라서 'W2 ← W1 - ▽w*a'는 현재 가중치 W1에서 손실 함수의 미분값에 학습률을 곱한 값을 빼서 새로운 가중치 W2를 얻는다는 것을 의미합니다.
이는 신경망이 학습하면서 가중치를 점차적으로 업데이트해 나가는 과정을 나타냅니다.
ResNet은 이런 구조 덕분에 네트워크의 깊이를 늘려도 학습이 잘 이루어질 수 있었고, 결국 사람의 오류율인 5.4%를 돌파하였습니다. ResNet의 여러 버전 중 ResNet152는 오류율이 불과 3.5%에 불과했습니다. 또한 ResNet은 학습이 잘 이루어지지 않는 문제를 해결했기 때문에 overfitting이 아닌 underfitting 문제를 겪었습니다. 즉, 네트워크의 깊이가 깊어질수록 training error가 오히려 증가하는 현상을 겪었습니다. 이는 네트워크의 깊이와 복잡성이 늘어나도 모델이 데이터를 충분히 학습하지 못하는 문제를 의미합니다.
ResNet은 이렇게 학습이 잘 이루어지지 않는 문제를 해결하였고, 그 결과로 Pretrained Model을 제공하였습니다. 이는 이미 대량의 데이터로 학습된 모델의 가중치를 가져와, 새로운 문제에 적용하는 Transfer Learning에 활용될 수 있습니다. 이렇게 기존에 학습된 모델을 새로운 문제에 적용함으로써 학습 시간을 줄이고, 성능을 향상시킬 수 있습니다.
이처럼 ResNet은 딥러닝에서 중요한 문제였던 gradient vanishing 문제를 해결하였고, 이를 통해 네트워크의 깊이를 늘려도 학습이 잘 이루어질 수 있게 하였습니다. 이로 인해 ResNet은 딥러닝 모델의 성능을 크게 향상시키는 데 기여하였습니다.
Gradient Vanishing
Gradient Vanishing 문제는 딥 뉴럴 네트워크에서 발생하는 학습 문제 중 하나로, 네트워크의 깊이가 깊어질수록 뒷단에서 발생한 오차의 정보가 앞단까지 잘 전달되지 않는 현상을 의미합니다. 이는 수학적, 컴퓨터 공학적으로 다음과 같이 이해할 수 있습니다.
1. 수학적 해석: 네트워크의 가중치를 업데이트하기 위해서는 먼저 오차 함수를 각 가중치로 미분한 값을 계산해야 합니다. 이 때, 뉴럴 네트워크는 일반적으로 시그모이드 함수나 하이퍼볼릭 탄젠트 함수와 같은 비선형 활성화 함수를 사용하는데, 이들 함수는 입력값이 너무 크거나 작으면 미분값이 0에 가깝게 됩니다. 따라서, 네트워크가 깊어지면서 역전파 과정에서 이러한 미분값들이 곱해지게 되면, 앞단으로 갈수록 그 값이 점점 작아져서 결국에는 가중치가 거의 업데이트되지 않는 현상, 즉 Gradient Vanishing이 발생하게 됩니다.
2. 컴퓨터 공학적 해석: Gradient Vanishing 문제는 컴퓨터 공학적 관점에서 볼 때, 신경망 학습의 어려움으로 이해할 수 있습니다. 신경망 학습은 역전파 알고리즘을 이용하여, 출력층에서 발생한 오차를 입력층 방향으로 전파하면서 각 층의 가중치를 업데이트합니다. 이 때, 네트워크의 깊이가 깊어질수록 오차의 정보가 앞층에 잘 전달되지 않으면, 해당 층의 가중치 업데이트가 제대로 이루어지지 않아 학습이 잘 이루어지지 않게 됩니다. 이러한 문제를 Gradient Vanishing 문제라고 합니다.
이러한 문제를 해결하기 위한 여러 방법이 제안되었습니다. 대표적으로는 활성화 함수를 ReLU(Rectified Linear Unit)로 사용하거나, LSTM(Long Short-Term Memory)과 같은 구조를 사용하거나, 초기 가중치를 적절히 설정하는 것 등이 있습니다. 또한, ResNet에서 제안한 Skip Connection 구조를 사용함으로써, 신경망의 깊이가 깊어져도 gradient 정보가 잘 전달될 수 있도록 하는 방법도 있습니다.
결론
딥러닝 모델 중 하나인 ResNet은 딥 뉴럴 네트워크의 학습에 있어서 중요한 문제였던 'gradient vanishing' 문제를 극복하였습니다. 이를 위해 ResNet은 'Residual Block'이라는 개념을 도입하여 네트워크의 여러 계층 간에 gradient 정보가 잘 전달될 수 있도록 하였습니다. 이로 인해 ResNet은 네트워크의 깊이를 늘려도 학습이 잘 이루어지며, 따라서 더욱 복잡한 문제에 대해 높은 성능을 보일 수 있었습니다. 또한, 이런 성질 덕분에 ResNet은 사전 학습된 모델을 제공하여 새로운 문제에 대한 학습 시간을 단축시키고 성능을 향상시키는 데에도 기여하였습니다. 그러나, ResNet 역시 완벽하지 않습니다. 네트워크의 깊이가 너무 깊어질 경우에는 'underfitting'이라는 새로운 문제가 발생할 수 있습니다.
이는 모델이 데이터를 충분히 학습하지 못하여, 오히려 학습 오류가 증가하는 현상을 말합니다. 따라서, ResNet과 같은 딥러닝 모델을 설계하고 학습시킬 때에는 이러한 문제를 고려하여 적절한 깊이와 복잡성을 선택해야 합니다. 딥러닝과 인공지능 분야는 지속적으로 발전하고 있으며, 이에 따라 더욱 정교하고 효율적인 모델이 계속해서 제안되고 있습니다. ResNet은 이러한 발전의 한 단계를 나타내는 중요한 모델입니다. 이를 통해 우리는 딥러닝 모델의 성능을 향상시키기 위한 다양한 방법과 원리를 배울 수 있습니다. 이런 지식은 앞으로 더욱 복잡하고 어려운 문제를 해결하기 위한 기반을 제공하게 될 것입니다.
'데이터 사이언스 > 기초' 카테고리의 다른 글
딥러닝(Deap Learning) LSTM, BiLSTM (3) | 2024.02.14 |
---|---|
딥러닝(Deap Learning) - Recurrent Neural Network(RNN) (1) | 2024.02.13 |
딥러닝(Deep Learning) 합성곱 신경망(Convolutional Neural Network(CNN)) (75) | 2024.02.01 |
딥러닝(Deep Learning) - 핵심 개념 (3) | 2024.01.31 |
딥러닝(Deep Learning) 기초 (50) | 2024.01.30 |