-
cs231n 6강 정리cs231n 강의 2022. 5. 14. 22:16
▶ 초심공룡을 아는가, 그 모임엔 막내가 정말 치명적이다.
6, 7강은 NN을 학습시키는 것들에 대한 설명이 주된 내용이다
1. 활성함수(Activation function)
- 그림에서 보라색 동그라미 와 글씨 부분 이다
- 종류는 그림과 같이 대표적인 6가지가 있다
1) Sigmoid 함수
- 전통적으로 많이 사용했지만 딥러닝 분야에서는 사용을 안한다
- 이유
- 뉴런이 포화되서 기울기를 없앤다 -> 이걸 vanishing gradient 라고 함 -> gradient 가 없기 때문에 Backpropagation 을 못한다 (가장 큰 단점)
- 결과값이 zero-centered 가 아니다 -> Convergence가 느려진다
- 연산부담이 커 학습 성능을 저하시킨다
Sigmoid 함수와 문제점 2) tanh 함수
- zero-centered 가 잘 되었다 (장점)
- saturated 가 발생하면 gradient가 사라진다 (vanishing gradient) (단점)tanh 함수와 장단점 3) ReLU 함수
- CNN에서 현재 많이 사용한다- 장점
- 연산이 효율적이다
- Convergence가 Sigmoid 함수 & tanh 함수 보다 6배 빠르다
- 단점
- 결과값이 zero-centered 가 아니다
- 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 순서이다
- 초록 글씨는 장점이다
- 순서
- 입력을 받는다
- mini-batch 의 평균을 구한다
- 구한 값에 분산을 구한다
- 그리고 normalize 를 한다 (정규화)
- 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