-
[CS230] C4M2 - Convolutional Neural Networks전공 2020. 5. 24. 23:56
[ Case studies ]
Why look at case studies?
- 특정 영역에서 효과적인 신경망 조합을 다른 분야 적용 가능하기에 샘플들 살펴볼 예정.
- 종류: Classic networks(LeNet - 5 , AlexNet, VGG), ResNet, Inception
Classic Networks
LeNet - 5 : 손글씨 인식
- 현재에도 유용한 LaNet - 5 의 특징:
1) 신경망이 깊어질 수록 가로 세로 너비 감소, 채널의 수 증가
2) 패턴: conv - pool - conv - pool - fc - fc - output
3) 60k parameters
- 요즘엔 안쓰이는 LaNet - 5 의 특징:
1) 비선형 함수로 sigmoid, tanh(relu없었던 시절) 사용
2) 비선형 함수를 pooling 뒤에서 사용 ex. conv - pool - (비선형) - conv - pool - fc - fc - output
AlexNet
- LeNet과 유사하지만 훨씬 더 큰 크기 60m parameters
- 비선형: relu 사용
VGG - 16
- 장점: 풀링층에서는 높이와 너비가 절반으로 줄어들고 합성곱 층에서는 채널의 수가 2배 늘어난다.
- 단점: 훈련시킬 변수의 갯수가 많아 네트워크의 크기가 커진다 (138m parameters)
ResNets
- 이론상으로는 신경망이 깊어질수록 오류가 감소해야 하는데 현실은 층의 갯수가 많을 수록 훈련 오류가 감소하다가 증가
- ResNets에서는 신경망이 깊어질수록 오류 감소
- ResNets: 스킵 연결을 여러개 더한 것. 이것으로 깊은 신경망 학습 가능.
- 스킵 연결: 한 층의 활성값을 가지고 깊은 층에 연결. 잔여블록을 사용하면 깊은 신경망 학습 가능.
a^[L] - linear - Relu - linear - (a 전달) - Relu - a^[L+2]
(main path: a^[L]에서 a^[L+2]까지 과정, short cut: a^[L]의 값을 'a 전달'영역까지 건너띄는 것)
a^[L+2] = g(z^[L+2]+a^[L])
Why ResNets Work
- 항등함수는 잔여블록의 훈련을 쉽게 만들어준다. 성능에 손해가 없고 경사하강법으로 더 좋아질 뿐
a^[L+2] = g(z^[L+2]+a^[L])
z^[L+2]=w^[L+2]a^[L+1]+b[L+2] (if. w^[L+2]=0, b[L+2]=0)
a^[L+2]=g(a^[L])=a^[L]
- 입력과 출력의 차원이 다른 경우에는 W라는 행렬을 곱해줌으로 입력과 출력의 차원을 같게 만든다,
- 풀링층에서는 차원 조정 필요
Networks in Networks and 1x1 Convolutions
- Networks in Networks = 1x1 Convolutions: 채널의 수를 줄이기 위해 사용, 비선형성을 더해주고 하나의 층을 더해줌으로 더 복잡한 함수를 학습할 수 있다. 다음 배울 Inception 에 유용하게 사용됨.
Inception Network Motivation
- 인셉션 네트워크: 필터의 크기나 풀링을 결정하는 대신 전부 적용해서 출력을 엮은 후 네트워크가 원하는 변수나 필터의 크기를 만든다
단점: 계산비용 > 1x1 Convolutions으로 해결. bottle neck(네트워크에서 가장 작은 부분)을 만들어 계산 비용 줄임
Inception Network
- 인셉션 네트워크(=GoogleNet): 인셉션 블록들이 반복되는 것
(인셉션 블록 이외: 은닉층이나 중간 층에서 구성된 특성들이라도 이미지의 결과를 예측하는데 나쁘지는 않다. 인셉션 네트워크에 정규화 효과를 주고 네트워크의 과대적합을 방지)
[ Practical advices for using ConvNets ]
Using Open-Source Implementation
- 네트워크 훈련에 많은 시간이 필요한데 깃허브 오픈소스를 사용하면 누군가 훈련시켜 둔 것을 전이 학습 가능할 수 도 있다.
Transfer Learning
Data Augmentation
State of Computer Vision
'전공' 카테고리의 다른 글
[CS230] C4M4 - Convolutional Neural Networks (0) 2020.06.14 [CS230] C4M3 - Convolutional Neural Networks (0) 2020.05.30 [CS230] C4M1 - Convolutional Neural Networks (0) 2020.05.17 [CS230] C3M2 - Structuring Machine Learning Projects (0) 2020.05.06 [CS230] C3M1 - Structuring Machine Learning Projects (0) 2020.05.05