모델 구조
- C1: Convolutional layer with 6 feature maps and a 5x5 kernel
- S2: Subsampling/Max Pooling layer
- C3: Convolutional layer with 16 feature maps, each connected to subsets of the S2 feature maps, with a 5x5 kernel
- S4: Subsampling/Max Pooling layer
- C5: Convolutional layer with 120 feature maps with a 5x5 kernel (as a fully connected layer)
- F6: Fully connected layer with 84 units
- OUTPUT: A Gaussian connection layer which is typically replaced by a fully connected layer with 10 units for digit classification
파라미터 수
- C1: 6 feature maps×(5×5 filters+1 bias)=156
- S2: 0
- C3: 16 feature maps×(6×5×5 filters+1 bias)=2416
- S4: 0
- C5: 120 feature maps×(16×5×5 filters+1 bias)=48120
- F6: 84 units×(120 inputs+1 bias)=10164
- OUTPUT: 10 units×(84 inputs+1 bias)=850
- 총 파라미터 수 = 156+2416+48120+10164+850= 61706
모델 설명
- LeNet-5는 컨볼루션 레이어와 풀링 레이어를 포함한 CNN(Convolutional Neural Network)입니다. 하지만 CustomMLP는 컨볼루션 레이어를 사용하지 않고 fully connected layer만을 사용하는 구조입니다. LeNet-5와 같은 복잡한 아키텍처를 가진 CNN과 단순한 MLP의 성능을 비교하여, CNN이 이미지와 같은 데이터에 대해 왜 우수한 성능을 발휘하는지 이해하고자 이러한 구조로 작성하였습니다.
- 이 모델은 입력 데이터의 공간적 구조를 고려하지 않기 때문에, 컨볼루션 신경망에 비해 시각적 패턴을 인식하는 데 덜 효과적일 수 있습니다.
- 각 은닉층 뒤에는
ReLU
(Rectified Linear Unit) 활성화 함수가 사용됩니다. ReLU는 음수 입력에 대해 0을 출력하고, 양수 입력에 대해서는 입력 값을 그대로 출력합니다. 이는 모델이 비선형 문제를 해결하는 데 도움을 줍니다.
파라미터 수
- 1st hidden layer: 784×70+70=54950 (input node, 28x28 image)
- 2nd hidden layer: 70×55+55=3905
- 3rd hidden layer: 55×28+28 =1568
- Output: 28×10+10=290
- 총 파라미터 수 : 60713
Model | Epoch | Train Loss | Train Accuracy | Test Loss | Test Accuracy |
---|---|---|---|---|---|
LeNet5 | 1 | 0.2902 | 90.47% | 0.0653 | 97.93% |
2 | 0.0631 | 98.02% | 0.0553 | 98.26% | |
3 | 0.0456 | 98.60% | 0.0425 | 98.61% | |
4 | 0.0353 | 98.92% | 0.0314 | 98.96% | |
5 | 0.0291 | 99.07% | 0.0357 | 98.84% | |
6 | 0.0253 | 99.21% | 0.0392 | 98.78% | |
7 | 0.0202 | 99.34% | 0.0371 | 98.80% | |
8 | 0.0164 | 99.48% | 0.0318 | 99.02% | |
9 | 0.0146 | 99.55% | 0.0403 | 98.76% | |
10 | 0.0137 | 99.55% | 0.0368 | 99.03% | |
CustomMLP | 1 | 0.4089 | 87.33% | 0.1556 | 95.25% |
2 | 0.1370 | 95.87% | 0.1176 | 96.36% | |
3 | 0.0997 | 96.94% | 0.0975 | 97.01% | |
4 | 0.0775 | 97.58% | 0.1164 | 96.38% | |
5 | 0.0643 | 97.97% | 0.0970 | 97.09% | |
6 | 0.0512 | 98.39% | 0.0980 | 97.12% | |
7 | 0.0460 | 98.52% | 0.0964 | 97.60% | |
8 | 0.0384 | 98.79% | 0.0924 | 97.44% | |
9 | 0.0339 | 98.88% | 0.1127 | 97.01% | |
10 | 0.0304 | 99.01% | 0.0931 | 97.63% |
- LeNet-5: 첫 에포크에서 90.47%의 정확도로 시작하여, 10번째 에포크에서 99.55%의 정확도에 도달합니다. 훈련 손실도 0.2902에서 0.0137로 급격히 감소합니다.
- CustomMLP: 87.33%의 초기 정확도에서 시작하여 10번째 에포크에 99.01%까지 증가합니다. 훈련 손실은 0.4089에서 0.0304로 감소하며, 이는 LeNet-5보다 초기 손실이 높고, 감소율도 덜 급격합니다.
- LeNet-5: 테스트 정확도는 97.93%에서 시작하여 10번째 에포크에서 99.03%로 최고점을 찍습니다. 테스트 손실은 0.0653에서 0.0368로 변동성이 있으나 전반적으로 낮은 편입니다.
- CustomMLP: 테스트에서 95.25%의 정확도로 시작하여 10번째 에포크에 97.63%까지 증가합니다. 테스트 손실은 0.1556에서 시작하여 0.0931로 줄어들지만, LeNet-5보다 높은 손실 값을 보입니다.
- LeNet-5는 일관되게 높은 훈련 및 테스트 정확도를 보이며, 특히 테스트 데이터에서의 정확도와 손실 값이 더 우수합니다. 이는 LeNet-5의 합성곱 구조가 이미지 데이터의 공간적 특성을 보다 효과적으로 학습하기 때문으로 볼 수 있습니다.
- CustomMLP는 비교적 단순한 완전 연결 구조로 구성되어 있으며, 이는 피처의 공간적 연관성을 무시하고 데이터를 일렬로 평탄화하여 처리합니다. 이로 인해 이미지 데이터에 대한 학습 효율이 떨어질 수 있습니다.
- Batch normalization
- 배치 정규화는 각 convolution layer 또는 완전 fully connected layer 후, 활성화 함수 전에 적용됩니다. 이는 레이어의 출력값을 정규화하여 다음 레이어로 전달하기 전에 안정적인 분포를 가지도록 합니다.
- Dropout
- 일반적으로 드롭아웃은 0.5의 비율로 적용합니다.
Model | Epoch | Train Loss | Train Accuracy | Test Loss | Test Accuracy |
---|---|---|---|---|---|
LeNet5 | 1 | 0.3203 | 89.66% | 0.0708 | 97.85% |
2 | 0.0625 | 98.03% | 0.0416 | 98.77% | |
3 | 0.0433 | 98.64% | 0.0373 | 98.90% | |
4 | 0.0329 | 98.94% | 0.0355 | 98.82% | |
5 | 0.0267 | 99.12% | 0.0368 | 98.86% | |
6 | 0.0215 | 99.31% | 0.0338 | 98.88% | |
7 | 0.0194 | 99.39% | 0.0305 | 99.02% | |
8 | 0.0141 | 99.53% | 0.0438 | 98.73% | |
9 | 0.0128 | 99.60% | 0.0334 | 99.06% | |
10 | 0.0103 | 99.66% | 0.0318 | 99.12% | |
RegularizedLenet5 | 1 | 0.2872 | 91.33% | 0.0468 | 98.57% |
2 | 0.0763 | 97.87% | 0.0506 | 98.51% | |
3 | 0.0568 | 98.43% | 0.0390 | 98.78% | |
4 | 0.0456 | 98.69% | 0.0362 | 98.91% | |
5 | 0.0409 | 98.84% | 0.0279 | 99.06% | |
6 | 0.0347 | 99.02% | 0.0289 | 99.08% | |
7 | 0.0291 | 99.18% | 0.0344 | 99.00% | |
8 | 0.0282 | 99.19% | 0.0255 | 99.23% | |
9 | 0.0227 | 99.33% | 0.0281 | 99.17% | |
10 | 0.0216 | 99.40% | 0.0264 | 99.21% |
- LeNet5는 첫 번째 에포크에서 훈련 손실이 0.3203, 훈련 정확도가 89.66%입니다. 테스트 손실과 정확도는 각각 0.0708과 97.85%입니다.
- RegularizedLeNet5는 첫 번째 에포크에서 훈련 손실이 0.2872, 훈련 정확도가 91.33%로, 기본 모델보다 훈련 손실이 낮고 정확도가 높습니다. 테스트 손실과 정확도는 0.0468과 98.57%로, 이 또한 기본 모델보다 향상된 수치입니다.
- LeNet5는 10번째 에포크까지 훈련 손실이 0.0103으로 감소하고, 훈련 정확도가 99.66%로 상승합니다. 테스트 손실과 정확도는 각각 0.0318과 99.12%입니다.
- RegularizedLeNet5는 10번째 에포크에서 훈련 손실이 0.0216으로 기본 모델보다 다소 높지만, 훈련 정확도가 99.40%로 비슷합니다. 테스트 손실과 정확도는 각각 0.0264와 99.21%로, 기본 모델의 테스트 성능을 약간 상회합니다.
- 정규화 효과: 정규화된 LeNet5 모델은 초기 에포크부터 더 높은 테스트 정확도와 낮은 테스트 손실을 보여주며, 특히 초기 학습 속도와 일반화 능력에서 눈에 띄는 개선을 보여줍니다. 이는 배치 정규화가 모델의 내부 공변량 변화를 감소시키고, 드롭아웃이 과적합을 방지하는 데 도움을 주었다고 해석할 수 있습니다.
- 일관된 성능 유지: RegularizedLeNet5는 훈련 과정 중 일관되게 높은 성능을 유지하며, 특히 테스트 데이터에서의 성능이 더 안정적입니다. 이는 정규화 기법이 모델이 새로운 데이터에 대해 더 잘 일반화하도록 도와주기 때문입니다.