ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Case Studies & ConvNet practical Advice
    Google ML Bootcamp/Convolutional Neural Networks 2023. 9. 24. 19:45
    728x90

    ※ 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
Designed by Tistory.