ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • cs231n 6강 정리
    cs231n 강의 2022. 5. 14. 22:16

    초심공룡을 아는가, 그 모임엔 막내가 정말 치명적이다.

    6, 7강은 NN을 학습시키는 것들에 대한 설명이 주된 내용이다

     

    1. 활성함수(Activation function)

    - 그림에서 보라색 동그라미 와 글씨 부분 이다

    - 종류는 그림과 같이 대표적인 6가지가 있다

     

     

    1) Sigmoid 함수

    - 전통적으로 많이 사용했지만 딥러닝 분야에서는 사용을 안한다

    - 이유

    1. 뉴런이 포화되서 기울기를 없앤다 -> 이걸 vanishing gradient 라고 함 -> gradient 가 없기 때문에 Backpropagation 을 못한다 (가장 큰 단점)
    2. 결과값이 zero-centered 가 아니다 -> Convergence가 느려진다
    3. 연산부담이 커 학습 성능을 저하시킨다

    Sigmoid 함수와 문제점

     

     

    2) tanh 함수

    - zero-centered 가 잘 되었다 (장점)
    - saturated 가 발생하면 gradient가 사라진다 (vanishing gradient) (단점)

    tanh 함수와 장단점

     

    3) ReLU 함수
    - CNN에서 현재 많이 사용한다

    - 장점

    1. 연산이 효율적이다
    2. Convergence가 Sigmoid 함수 & tanh 함수 보다 6배 빠르다

    - 단점

    1. 결과값이 zero-centered 가 아니다
    2. x < 0 이면 gradient가 없다

    ReLU 함수와 장단점

     

    4) Leaky ReLU 함수 & Parametric Rectifier(PReLU) (ReLU 변형)

    - 두 함수 모두 ReLU 함수의 변형이다

    - saturated 발생하지 않는다

    - 연산이 효율적이다
    - garadient 가 죽지 않는다

    - PReLU 함수는 기울기(알파) 자체도 backprop 을 통해 학습한다

    Leaky ReLU 함수 와 Parametric Rectifier (PReLU) 함수

     

    5) ELU 함수 (ReLU 변형)

    - ReLU 함수의 모든 장점을 가진다

    ELU 함수 와 장단점

     

    6) Maxout 함수

    - ReLU와 Leaky ReLU 의 장점이 있다
    - 연산 부담이 크다

    Maxout 함수 와 장단점

     

    - 활성함수 정리

    • CNN에서는 기본적으로 ReLU 함수 사용
    • Leaky ReLU, Maxout, ELU 실험적으로 사용
    • tanh 가급적 사용하지 않는다
    • sigmoid 사용하지 않는다

     

    2. Data Preprocessing (데이터 전처리)

    - 기존 데이터 전처리 방식과 다르다

    - 이미지에 대해선 정규화, PCA, Whitening 작업이 없다

    - 따라서 이미지에 대해서는 zero-centered 만 신경써주면 된다

     

     

    3. Weight Initialization (가중치 초기화)
    - 매우 중요함
    - 매우 작은 랜덤한 수로 w 값을 초기화 한다
    - 근데 Network 이 커지면 문제가 생긴다 -> gradient 값이 너무 작아 vanishing gradient 이 발생한다
    - Xavier initializaion 이란 합리적인 초기화 방법이 있다
    - 입력이 많으면 가중치를 작게 초기화 한다

    - 입력이 작으면 가중치를 크게 초기화 한다
    - ReLU를 사용시 문제가 발생하는데 Kaiming He가 2015년에 해결했다
    - 그래서 ReLU 와 궁합이 좋다

     

     

    4. Batch Normalization

    - 아래 그림을 보자

     

    그림에

     

    초록색 실선 박스

     

    안에 있는게 

     

    Normalize 하는

    공식 이다

     

     

     

     

    - 아래 그림에서 검은색 실선 박스는 Batch Normalization 순서이다

    - 초록 글씨는 장점이다

    - 순서

    1. 입력을 받는다
    2. mini-batch 의 평균을 구한다
    3. 구한 값에 분산을 구한다
    4. 그리고 normalize 를 한다 (정규화)
    5. scale 및 shift 를 수행한다

    - 장점

    • Network 의 gradient flow 를 개선 해준다
    • 높은 Learning-rate 를 허용해서 학습 속도를 빠르게 해준다
    • 초기화에 너무 의존하지 않도록 해준다
    • 자기 스스로 regularization 을 한다

     

    5. Babysitting the Learning Process (러닝 프로세스 관리)
    - 하는일

    • 전처리
    • NN 구조 결정
    • Loss가 제대로 가고 있는지 체크
    • train data 일부분을 통해 overfitting 이 일어나는지 확인
    • Learning rate 를 찾음

     

    6. Hyperparameter Optimization

    - Loss function 을 통해서 초매개변수를 최적화 시키는 거다

    - 최적화할 초매개변수는 아래와 같다

    • Network 구조
    • Learning rate의 decay schedule 과 Update type
    • regularization(L2, Dropout strength)

     

    강의에서 이렇게 비유한다

     

    이 작업은

    DJ 가 디제잉 하며

    음악을 만지듯이

     

    직접 튜닝을 하며

    Loss (오차)가 최소화 되도록 

    Hyperparameter 를

    최적화하는 작업이다

     

     

     

    여기까지 6강의 내용이고 7강에서 NN을 학습시키는 방법이 더 나온다.

    'cs231n 강의' 카테고리의 다른 글

    cs231n 8강 정리  (0) 2022.06.04
    cs231n 7강 정리  (0) 2022.05.21
    cs231n 5강 정리  (0) 2022.05.04
    미분, 시그마, 시그모이드 함수  (0) 2022.04.30
    cs231n 4강 정리  (0) 2022.04.23

    댓글

Designed by Tistory.