Abstract
깊은 신경망은 훈련하기 어렵다는 문제가 있습니다. Resnet 논문에서는 이전보다 훨씬 더 깊은 네트워크의 훈련을 용이하게 하기 위해 Residual learning(잔차 학습) 제안했습니다. 기존의 신경망은 각 층에서 출력할 값을 직접 학습 즉, 새로운 함수를 계속 학습하는 것인데, 이 방식은 층이 깊어질수록 학습하기 어려워지는 문제가 있었습니다.
Residual Learning에서는 각 층이 출력할 값 자체를 학습하는 대신,
출력 값과 입력 값의 차이(residual(잔차))를 학습하게 됩니다. 이 Residual 는 "기존의 입력값에서 얼마나 더 변화를 줘야 하는지"만 신경 쓰는 것이죠. 이렇게 하면 신경망이 깊어져도 학습이 훨씬 더 쉬워집니다.
쉽게 말해서, 일반 신경망은 "처음부터 끝까지 새로운 규칙을 배우려고" 하는 반면,
Residual learning 은 "이미 알고 있는 것에 약간의 조정을 더하는 방법"을 배우는 것입니다.
이게 훨씬 간단하고, 더 깊은 네트워크에서도 잘 작동하게 만드는 이유입니다.
비유로 설명하면,
- 기존 신경망은 처음부터 끝까지 새로운 집을 직접 짓는 것과 같고,
- Residual learning 은 이미 있는 집에 필요한 수리 작업만 하는 것과 같습니다.
Residual 네트워크는 최적화가 더 쉬워지고, 깊이가 크게 증가해도 정확도가 향상될 수 있음을 광범위한 실증적 증거를 통해 보여줍니다. ImageNet 데이터셋에서 18층에서 152층으로 이루어진 Residual 네트워크를 평가하였으며, 이는 VGG 네트워크보다 8배 깊지만 복잡도는 더 낮습니다.
Introduction
위의 그래프에서 보면 깊이가 깊어질수록 학습과 테스트 성능이 오히려 저하될 수 있음을 보여줬습니다.
이러한 원인은 Vanishing, Exploding 문제가 장애물로 작용하여, 네트워크가 처음부터 수렴하지 못하게 방해합니다.
이러한 것은 Normalized 으로 크게 해결되었습니다.
더 깊은 네트워크가 수렴할 수 있게 되었을 때, 성능 저하 문제(degradation problem)가 노출되었습니다. 네트워크 깊이가 증가함에 따라 정확도가 포화되고 급격히 저하되는 현상이 발생합니다. 이 저하는 과적합(overfitting) 때문이 아니며, 적절히 깊은 모델에 층을 더 추가하면 학습 오류가 증가하는 현상이 관찰되었습니다.
ResNet의 Residual Block(잔차 블록) 구조를 나타낸 것입니다. 이 블록은 잔차 학습의 핵심 개념 입니다.
- 입력 x
입력값은 블록의 시작점 - Weight Layer(가중치 레이어)
입력 x는 두 개의 가중치 레이어를 통과하며, 각 가중치 레이어는 일반적으로 Convolutional Layer 이다. - ReLU 활성화 함수
각 가중치 레이어 뒤에는 ReLU 활성화 함수가 적용되어 비선형성을 추가 - 잔차 함수 F(x)
이 두 개의 가중치 레이어를 거친 후의 출력은 잔차 함수 F(x)입니다. 이 함수는 원래의 입력 x에서 추가적으로 학습해야 할 변화 또는 차이를 의미합니다. - Identity Shortcut (직접 연결)
입력값 x는 별도의 연산 없이 출력에 직접 더해진다..
이 부분이 "identity connection" 인데, 입력값 x는 그대로 유지되면서 F(x)에 더해지므로, 네트워크가 깊어져도 학습할 때 중요한 정보가 유지됩니다. 즉, 층을 거칠 때마다 사라지지 않고 계속해서 유지되기 때문에, 깊은 네트워크에서도 중요한 정보(입력값 x)가 잘 보존되면서 학습이 이루어집니다. - 결합 연산
잔차 함수 F(x)와 원래의 입력값 x는 합쳐집니다. 이 연산은 덧셈으로 이루어지며,
이로 인해 출력이 F(x) + 가 됩니다. - 최종 ReLU
마지막으로 합쳐진 결과에 다시 ReLU가 적용되어 다음 레이어로 전달됩니다.
Deep Residual Learning
ResNet의 잔차 학습 (Residual Learning) 개념 및 네트워크 구조
이 글에서는 잔차 학습(Residual Learning)의 개념과 ResNet(Residual Network)이 어떻게 깊은 신경망의 학습을 용이하게 하는지 설명하고자 합니다. 특히 VGG-19, 34-layer plain, 34-layer residual의 구조를 비교하여 왜 잔차 학습이 중요한지 알아보겠습니다.
1. 기존 신경망의 문제점은 깊이가 깊어질수록 학습이 어려워진다
기존의 딥러닝 신경망, 특히 VGG-19와 같은 네트워크는 층이 깊어질수록 성능 향상이 기대되지만, 실제로는 오히려 학습이 어려워지고 성능이 떨어지는 성능 저하(degradation problem) 문제가 발생합니다. 이는 모델이 깊어지면서 역전파 과정에서 gradient vanishing(기울기 소실) 문제가 발생하고, 학습할 수 있는 정보가 충분히 전달되지 않기 때문입니다.
2. 잔차 학습의 핵심 개념
잔차 학습(Residual Learning)은 이 문제를 해결하기 위해 제안된 개념입니다. 잔차 학습에서는 신경망의 각 층이 새로운 함수를 학습하는 대신, 기존 입력에 더할 추가적인 변화(잔차, residual)를 학습합니다.
기존 신경망에서는 층이 입력을 받아 변환 후 바로 출력을 내보내지만, 잔차 블록은 입력 값을 그대로 유지한 상태에서, 그 입력값에 추가할 변화를 학습한 후 출력에 더하는 방식입니다.
- 기존 네트워크: H(x) (출력을 직접 학습)
- 잔차 네트워크: (입력 x에 변화량 F(x)를 더한 값)
3. 네트워크 구조
- 3x3 Convolution Layer
각 블록에서 두 개의 3x3 convolution 레이어가 있습니다. 이 레이어들은 입력 데이터를 변형하는 역할을 합니다. 이때, 변형된 결과는 잔차 함수로서 계산됩니다. - Identity Connection
각 블록마다 보이는 곡선 화살표가 바로 Identity connection입니다. 이 연결은 입력 데이터를 변형하지 않고 그대로 다음 층으로 전달하는 역할을 합니다. - 잔차 계산
각 블록의 출력은 잔차 함수 F(x)와 입력값 x를 더한 결과로 계산됩니다. 이 덧셈 연산을 통해 입력값이 직접 전달되기 때문에, 네트워크가 깊어지더라도 중요한 정보가 사라지지 않고 학습이 잘 이루어집니다. - Down sampling (차원 축소)
블록마다 크기가 달라지는 경우가 있습니다. 예를 들어, 출력 크기가 절반으로 줄어드는 경우(dotted shortcut)는 차원 축소가 필요한 경우입니다. 이때는 1x1 convolution을 사용하여 Identity connection에서도 차원을 맞춰주는 작업을 합니다.
4. 네트워크 구조 비교 VGG-19, 34-layer plain, 34-layer residual
(1) VGG-19
- VGG-19는 매우 단순하고 일관된 네트워크 구조로, 층을 깊게 쌓아 여러 개의 3x3 합성곱(conv) 층을 사용합니다.
- 이 구조는 합성곱 층 사이에 풀링(pooling) 층을 넣어 특징 맵의 크기를 줄이면서 특징을 추출하는 방식을 사용합니다.
- 하지만 층이 깊어질수록 성능 저하 문제가 발생할 수 있습니다.
(2) 34-layer Plain 네트워크
- 34-layer plain 네트워크는 VGG-19보다 훨씬 더 깊은 구조를 가지고 있습니다.
- 이 네트워크 역시 여러 층을 쌓아 출력값을 학습하지만, 추가적인 잔차 학습 없이 모든 층에서 새로운 출력을 직접 학습하려고 합니다.
- 깊어질수록 성능 저하 문제가 발생할 가능성이 높습니다.
(3) 34-layer Residual 네트워크
- 34-layer residual 네트워크는 잔차 학습을 적용한 구조입니다. 각 층에서 입력 값을 그대로 유지하면서 잔차(Residual)만을 학습합니다.
- 지름길 연결(identity connection)을 통해 입력 값을 바로 출력으로 전달하고, 동시에 층에서 학습된 잔차 F(x)를 더해 최종 출력을 얻습니다.
- 이렇게 하면, 신경망이 깊어지더라도 중요한 입력 정보가 손실되지 않고, 추가적인 정보만 학습하기 때문에 더 깊은 네트워크에서도 성능이 저하되지 않습니다.
4. 잔차 학습의 효과
잔차 학습 덕분에 깊은 신경망에서 발생하는 성능 저하 문제를 해결할 수 있습니다. 신경망이 층이 깊어지더라도 입력 정보를 그대로 전달하며, 필요한 변화만 학습하는 구조 덕분에 학습이 원활하게 이루어집니다.
실제로 ResNet은 매우 깊은 152층에 이르기까지도 좋은 성능을 유지했으며, 이를 통해 ILSVRC 2015 대회에서 높은 성과를 기록했습니다. 이는 깊은 네트워크를 효과적으로 학습할 수 있게 한 중요한 혁신 중 하나입니다.
ResNet18부터 ResNet152까지의 특징
1. ResNet18: 얕고 빠른 네트워크
- 구조
비교적 얕은 네트워크로, 총 8개의 Residual Block을 포함합니다.
각 Residual Block은 2개의 3x3 컨볼루션 레이어로 구성됩니다.
Residual Block은 shortcut connection을 통해 입력값을 그대로 다음 레이어에 더해줍니다. - 특징
비교적 적은 층수로 인해 학습이 빠르고 연산 비용이 낮습니다.
이미지 분류, 객체 탐지 등의 실시간 응용에서 많이 사용됩니다.
경량 모델이기 때문에 임베디드 장치나 모바일 장치에 적합합니다. - 장점
연산이 빠르고, 파라미터 수가 적어 경량화된 응용에 적합합니다. - 단점
네트워크 깊이가 얕기 때문에 매우 복잡한 데이터셋에서는 성능이 다소 제한적일 수 있습니다.
2. ResNet34
- 구조
ResNet34는 16개의 Residual Block으로 구성된 네트워크입니다.
ResNet18과 마찬가지로 각 블록은 2개의 3x3 컨볼루션 레이어로 구성됩니다. - 특징
ResNet18보다 깊지만, 여전히 중간 수준의 연산 복잡도를 가지고 있습니다.
이미지 분류에서 더 정교한 성능을 요구하는 문제에 적합합니다. - 장점
더 깊어진 층수 덕분에 더 복잡한 패턴을 학습할 수 있으며, 상대적으로 성능이 향상됩니다. - 단점
더 깊어지면서 연산량이 증가하여 ResNet18보다는 속도가 느려집니다.
하지만 여전히 실시간 응용에서 사용 가능한 수준입니다.
3. ResNet50: Bottleneck 구조 도입
- 구조
ResNet50부터는 Bottleneck 블록이 도입됩니다.
Bottleneck 블록은 3개의 컨볼루션 레이어로 구성되며, 1x1, 3x3, 1x1 컨볼루션으로 이루어집니다.
1x1 컨볼루션은 차원을 줄이거나 늘려 연산 효율성을 높이는 역할을 합니다. - 특징
Bottleneck 구조를 통해 더 깊은 네트워크에서도 효율적으로 학습이 가능하도록 최적화되었습니다.
VGG 네트워크와 비교했을 때, 더 깊지만 연산 비용은 오히려 적은 편입니다. - 장점
Bottleneck 구조 덕분에 파라미터 수는 적지만 성능은 우수합니다.
복잡한 데이터셋에서도 높은 성능을 발휘하며, 이미지 분류 및 객체 탐지에 많이 사용됩니다. - 단점
ResNet34에 비해 복잡도가 증가하고 연산량도 커지기 때문에 더 많은 자원이 필요합니다.
4. ResNet101
- 구조
ResNet101은 33개의 Bottleneck 블록으로 구성됩니다. - 특징
매우 깊은 네트워크로, 더 복잡한 패턴을 학습할 수 있어 대규모 데이터셋에서 탁월한 성능을 발휘합니다.
더 깊은 층수로 인해 일반화 성능이 향상됩니다. - 장점
복잡한 이미지 분류나 객체 탐지, 세그멘테이션 등 다양한 비전 작업에서 우수한 성능을 발휘합니다.
대규모 데이터셋에서 높은 정확도를 달성할 수 있습니다. - 단점
연산 비용이 크게 증가하며, 학습 및 추론 시간이 더 오래 걸립니다.
따라서 더 많은 컴퓨팅 자원(GPU 등)이 필요합니다.
5. ResNet152
- 구조
50개의 Bottleneck 블록으로 구성된 가장 깊은 ResNet 모델입니다. - 특징
ResNet152는 ResNet의 대표적인 초대형 모델로, 매우 깊은 구조를 통해 다양한 복잡한 문제를 해결하는 데 적합합니다. ILSVRC(ImageNet Large Scale Visual Recognition Challenge)에서 뛰어난 성능을 발휘한 모델입니다. - 장점
네트워크가 매우 깊기 때문에 복잡한 패턴을 정확하게 학습할 수 있습니다.
이미지 분류, 객체 탐지, 세그멘테이션 등 고난이도의 비전 작업에서 높은 성능을 보장합니다. - 단점
ResNet101보다 더 깊어 연산 비용과 메모리 요구량이 매우 큽니다.
고성능 GPU가 필요하며, 학습 시간이 길어집니다.
ResNet18: 가볍고 빠르며 실시간 응용에 적합한 네트워크.
ResNet34: 더 깊어져 성능이 향상되었지만, 여전히 중간 수준의 연산 비용을 가지는 네트워크.
ResNet50: Bottleneck 구조를 통해 효율성과 성능을 모두 잡은 중대형 네트워크.
ResNet101: 대규모 데이터셋에서 높은 성능을 발휘하는 깊은 네트워크.
ResNet152: 가장 깊고 강력한 네트워크로, 복잡한 패턴을 학습하고 고난도 비전 작업에 적합.
이상으로 ResNet 논문 리뷰를 마치겠습니다.
감사합니다.
'딥러닝 (Deep Learning) > [05] - 논문 리뷰' 카테고리의 다른 글
Faster R-CNN (6) | 2024.10.04 |
---|---|
R-CNN, SPPNet, Fast R-CNN (0) | 2024.10.02 |
R-CNN 논문 리뷰 (2) | 2024.09.03 |
AlexNet 논문 리뷰 (0) | 2024.08.23 |
순환 신경망 (RNN) 이란? [4편] (1) | 2024.08.18 |