Data Science/Deep Learning
[Deep Learning from Scratch] chapter 8-1. 딥러닝 VGG, GooLeNet, ResNet
sunnyshiny
2023. 4. 25. 15:57
728x90
딥러닝¶
- 층을 깊게 하는 것이 왜 중요한가에 대한 이론적인 근거는 부족, 그러나 층을 깊게 할 때의 이점
- 신경망의 매개변수 수가 줄어듬
- 층을 깊게 한 신경망은 깊지 않은 경우보다 적은 매개변수로 같은 수준 (혹은 그 이상)의 표현력을 달성할 수 있음 5x5 합성곱 연산 1회는 3x3 합성곱 연산 2회를 수행하여 대체할 수 있는데 5x5의 경우 매개변수가 25개 인 반면, 3x3의 경우 18개로 층이 깊어질수록 매개변수의 갯수의 차이는 커짐
- 작은 필터를 겹쳐 신경망을 깊게 하면 매개변수 수를 줄여 수용영역(뉴런에 변화를 일으키는 국소적인 공간영역)을 소화할 수 있음. 층을 거듭하면서 활성화함수를 합성곱에 끼움으로 신경망의 표현력이 개선됨.
- 학습의 효율성: 층을 깊게 함으로 학습 데이터의 양을 줄여 학습을 고속으로 수행할 수 있음
- 학습해야 할 문제를 계층적으로 분해할수 있음 즉 각 층이 학습해야 할 문제를 더 단순한 문제로 대체할 수 있음.
- 정보를 계층적으로 전달할 수 있음 예를 들어 에지를 추출한 층의 다음 층은 에지 정보를 쓸수 있고 더 고도의 패턴을 효과적으로 학습하리라 기대할 수 있음 즉 층을 깊이 함으로 층이 학습해야 할 문제를 풀기 쉬운 단순한 문제로 분해할 수 있어 효율적으로 학습하리라 기대할 수 있음.
- 신경망의 매개변수 수가 줄어듬
딥러닝 초기 역사¶
VGG¶
- VGG는 합성곱 계층과 풀링 계층으로 구성되는 기본적인 CNN
- 16층 혹은 19층으로 심화한것이 특징 (VGG16, VGG19)
- 3x3의 작은 필터를 사용한 합성곱 게층을 연속으로 거침 -> 합성곱 계층을 2~4회 연속으로 풀링계층을 두어 크기를 절반으로 줄이는 처리를 반복
GoogLeNet¶
- GooLeNet은 세로 방향 깊이 뿐 아니라 가로 방향 깊이도 깊음.
- 인셉션 구조는 크기가 다른 필터와 풀링을 여러 개 적용하여 그 결과를 결합
- 인셉션 구조를 하나의 빌딩 블록으로 구성하는 것이 GooLeNet의 특징
- 1x1 합성곱 연산은 채널 쪽으로 크기를 줄이는 것으로 매개변수 제거와 고속처리에 기여함
ResNet (Residual Network)¶
- 딥러닝 학습에서 층이 지나치게 깊으면 학습이 잘 되지 않고 오히려 성능이 떨어지는 경우도 많음
- ResNet은 층이 깊어지면서 생기는 성능저하를 해결하기 위해 skip connection(스킵연결)을 도입
- 단축경로가 없다면 두 합성곱의 연결은 F(x) 가 되지만 스킵연결로 인해 F(x)+x 가 되는게 핵심
-
- 스킵연결은 층이 깊어져도 학습을 효율적으로 할수 있도록 해주는데 이는 역전파 때 스킵연결이 신호감쇠를 막아주기 때문
- 스킵연결은 입력 데이터를 그대로 흘리는 것으로 역전파 때도 상류의 기울기를 그대로 하류로 보낸다 => 핵심은 상류의 기울기에 아무런 수정도 가하지 않고 그대로 흘려보냄으로 앞층의 의미있는 기울기가 그대로 전해질 것으로 기대할 수 있음 즉 층을 깊게 할수록 기울기가 작아지는 소실 문제를 줄여줌
- 스킵연결은 층이 깊어져도 학습을 효율적으로 할수 있도록 해주는데 이는 역전파 때 스킵연결이 신호감쇠를 막아주기 때문
- ResNet은 VGG 신경망을 기반으로 스킵연결을 도입하여 층을 싶게 함
728x90