-
Case Studies & ConvNet practical AdviceGoogle ML Bootcamp/Convolutional Neural Networks 2023. 9. 24. 19:45728x90
※ Classic Networks
1. LeNet - 5
- 초창기 모델임(60,000개의 parameter)
- LeNet-5가 풀링 이후 비선형성을 가진다.(풀링 이후 sigmoid를 가진다.)
2. AlexNet
- 약 6천만 개의 parameter를 가진다.
- 훨씬 많은 hidden layer를 가지고, 더 많은 데이터에 대해서 훈련을 받음.
- ReLU
- 두 개의 GPU에 대해 복잡한 방식으로 훈련 실시 -> 많은 계층이 실제로 두 개의 서로 다른 GPU로 분할되어 있으며 두 GPU가 서로 통신할 수 있는 시기를 고려하여 조정됨.
3. VGG - 16
※ ResNets
- short cut / skip connection : 칸을 뛰어 넘어서 다음 layer와 연결시키는 기법
- 5개로 구획을 나누어서 skip connection / short cut을 사용한 ResNet의 예시.
- ResNet의 경우 훈련 오류의 성능이 계속 저하될 수 있음.
- 기울기 소실 및 폭발의 문제점들을 처리하도록 함.
- 성능 저하 없이 깊은 신경망을 훈련시킬 수 있음.
- 심층 신경망을 훈련하는 데는 효과적이지는 않음.
※ Why ResNets Work?
- short cut을 사용해서 skip connection을 하게 되면, a[l]을 a[l + 2]에 복사하는 것과 같은 원리이기 때문에 중간에 두 개의 Layer을 없애도 크게 문제가 발생하지 않는다. -> 두 개의 추가 Layer을 더하고 잔류블럭을 신경망의 중간이나 끝 어딘가에 더해도 성능에 문제가 발생하지 않는다.
- 네트워크의 깊이가 깊어질 수록 사실 항등함수조차 학습할 수 있는 parameter를 고르는 것이 매우 어려워서 결과물이 더 나빠진다.
- 잔류 네트워크가 작동하는 주된 이유 : 추가 Layer가 항등 함수를 쉽게 학습할 수 있기 때문에 성능에 영향을 주지 않고 많은 시간을 사용할 수 있고 성능에 도움이 된다.
※ Inception Network
- Motivation : 필터 크기 또는 풀링 중 하나를 선택하여 커밋하는 것이 아니라 모든 작업을 수행하고 모든 출력을 연결할 수 있다는 것.
- 네트워크의 parameter 크기나 필터 사이즈의 조합에 관계없이 학습이 가능하다.
- Inception Network의 문제점 : cost의 문제!!!!
-> 28*28*192에 5*5*192의 filter를 통과시킬 경우 1억 2천이라는 cost가 발생하게 됨 : 너무 비싼 작업
- cost의 문제점을 1*1 convolution을 사용하여 bottleneck으로 volume을 축소시켜서 cost의 비용을 훨씬 저렴하게 사용할 수 있다.
- GoogleNet 이라고도 불리면서, Inception 모듈들이 여러개 합쳐진 상태에서 각각의 모듈에 여러 활성화함수 처리를 한 네트워크망.
※ MobileNet
- cost = 3 * 3 * 4 * 4 * 3 = 432
- cost = 1 * 1 * 3 * 4 * 4 * 5 = 240
- Depthwise Convolution + Pointwise Convolution = Depthwise separable convolution
-> 총 432 + 240 = 632 cost
Normal Convolution = 2160 cost
-> 2160 > 632 => more cheaper !!!!
- MobileNet v2는 v1과 다르게 ResNet과 같은 skip connection을 함.
- Bottleneck 구성 : expansion - depthwise convolution(padding) - pointwise convolution
- expansion을 통해서 volume을 확장시켜 신경망이 더 풍부한 기능을 배우게 해줌. but mobile 기기에서는 메모리의 양이 이 풍부함을 감당할 수 없는 경우가 많아 pointwise convolution을 통해서 메모리의 양을 다시 줄여줌.
- Bottleneck Block을 약 17번 반복하고 FC, softmax를 적용하는 방식을 사용함.
- r : resolution, d : depth, w : width를 이용해서 일을 확장하거나 축소시킬 수 있다. 고해상도를 사용하거나 신경망의 깊이와 Layer의 너비를 조정하는 것이다.
- EfficientNet의 open source를 이용해서 r, d, w를 효율적으로 조정할 수 있다.
- 작업 중인 장치의 리소스를 기반으로 신경망을 확대시키거나 축소시킬 수 있다.
※ Practical Advice ConvNet
1. Github를 적극적으로 사용하자.
2. Github의 source를 이용해서 Transfer Learning을 적극 활용하자.
3. Data Augmentation
- Mirroring : 반대로 뒤집는 것
- Random Cropping : 여러가지 부분들로 이미지를 나눠서 증강 시킬 수 있음.
- Color shifting
- PCA 색상 증강을 많이 사용함.
- distortion : 왜곡을 구현하는 역할을 하는 1개의 CPU Thread, 거의 4개의 Thread를 가진 다음 다른 프로세스에 전달하여 훈련을 수행하는 것으로 병렬 연결로 구현될 수 있음.
728x90'Google ML Bootcamp > Convolutional Neural Networks' 카테고리의 다른 글
Face recognition & Neural Style Transfer (0) 2023.09.27 Detection Algorithms (0) 2023.09.25 Convolutional Neural Networks (0) 2023.09.23