ConvNets 은 data 가 많지 않아도 학습 가능하다 . -> fine tuning 때문이다.
1. Train on ImageNet
2. Finetune network on your own data
가중치 공유
Finetuning : 다른곳에서 학습 시켜 가져온 가중치들을 새로운 모델의 초기값으로 사용한다. -> network 학습
아래부분만 새로 학습한다.
Terminal 은 무한이 아니다. ( 너무 많이 돌리지 마라 )
Mini-batch SGD
1. Sample a batch of data
2. Forward prop it through the graph, get loss
3. Backprop to calculate the gradients
4. Update the parameters using the gradients
Training Neural Network
역사 : 퍼셉트론 ( backpropagation 불가 -> w 를 임의로 지정 ) , 퍼셉트론을 쌓는다. ( parametric approach ) , backpropagation 가능 -> 미분 가능 ( network 가 deep해지면 찾기 힘들다 ) , 선행학습 시킨 후 하나의 큰 덩어리로 묶어준 후 backpropagation 후 fine tuning
Activation Functions
nonlinearlity 제공
Sigmoid
0~1 사이 , 입력값에 대해 가중치 영향력을 주기에 적합하다.
하지만 뉴런이 포화되어서( 0 또는 1 에 매우 가까운 값 ) gradient 를 없애버릴 수 있다. ( Vanishing gradient )
x= -10 , x= 10 일 때 gradient 의 값이 0에 가까워지므로 없어지게 된다.
Sigmoid 함수는 0보다 큰 값만 가지게 된다. input 값이 양수면 w 의 gradient 는 모두 양수이거나 모두 음수이다.
파란색 실선으로 이동해야하는데 zig zag 모양으로만 이동하기 때문에 매우 느리게 convergence 하게 된다.
exp 는 연산할 때 성능이 좋지 않다.
tanh
x 가 매우 작거나 x 가 매우 크면 saturated 가 발생한다.
Relu
연산 효율적 , 빠른 convergence weight 를 보인다.
문제점 : 출력값이 0 중심이 아니다 , 0 보다 작게 되면 gradient 는 0이 되어버린다. ( gradient vanishing )
Activation Functions
알파도 학습
ELU
단점 : exp 연산 비싸다.
Maxout " Neuron "
뉴런이 연산하는 방법을 바꿈
단점 : w1 , w1 값을 가지기 때문에 연산량 많아진다.
일반적으로 Relu , 실험이 필요한 경우 : Leaky ReLU, Maxout, ELU
LSTM 일 땐 sigmoid
Data Processing
정규화 : 표준편자로 나누어 준다. ( 특정 범위내로 정규화 ) , 여기선 쓰지 않는다. ( Image ) 이미 특정 범위내에 있기때문
PCA : 주성분 분석 , 데이터를 비상관화하여 차원을 줄인다.
Whitening : 이미지를 인접한 pixel 의 redudancy를 줄인다.
이미지를 다룰 땐 사용하지 않는다.
이미지에 관해서 0 centered 만 신경쓴다.
[32,32,3] -> mean image 를 각각 빼준다.
각 채널별로 mean 값을 빼준다.
Weight Initialization
가중치 초기화 : 초기화 되지 않으면 backpropagation 성립하지 않는다.
1. 랜덤넘버를 사용하되 작은 넘버 ( 가우시안 정규분포 , 평균 0 )
단점 : 네트워크가 커지게 되면 activations 가 0이 된다.
질문 : backward pass 를 생각했을 때 gradients 는 어떻게 되겠는가?
답 : dW1 = X * dW2 ,x 가 0이 되기 때문에 dW1 이 0이 된다. -> gradient vanishing
랜덤넘버를 크게 하게되면 gradients 도 0이 된다.
Xaivier initialization
input 의 개수가 많아 지게 되면 값을 나누어 주기 때문에 weight 값이 작아지고 input 의 값이 적어지면 weight 값이 커진다.
ReLU 를 사용할 때 문제 발생
/2 를 해서 문제 해결
Batch Normalization
Vanashing gradient 문제 해결 , 학습속도 가속화 및 안정적인 학습 , 근본적인 해결 방법 제시
각 layer들을 거치면서 입력값의 분포가 달라지는 현상이 발생하기 때문에 불안정화 발생
각 layer를 거칠때마다 normalization 을 하자.
N : 배치내에 데이터 수
D : Feature 수
input X : N * D
평균과 분산 계산 후 정규화
FC -> BN -> tanh
질문 : non-linearlity 로 전달할 때 unit gaussian 을 전달 할 때 적합한가?
답 : 판단 조차 학습에 의해 판단 할 수있다.
Normalization 한 후 감마를 통해 조정 ( scale and shift )
gradient flow 조정 , learning rate 가 높아도 된다. 초기화에 의존하지 않아도 된다. drop out 사용하지 않는 경향
주의 할 점 : train 과 test 할 때 다르게 동작 , mean 값과 varies 값을 구할 때 train 할 때 batch 를 기준으로 구하게 되고 , test 할 땐 전체를 기준으로 한다. 따라서 학습을 할 때 mean 과 varies를 계산을 한 후 , test 를 할 때 전체의 mean 과 varies를 기준으로 한다.
Babysitting the Learning Process
: 데이터 전처리 -> Neural Network Architecture 결정 -> loss 제대로 되는지 체크 -> overfitting 이 일어나는지 ? -> learning rate를 찾는다.
1. 데이터 전처리 : Image 에 대해선 zero-centered 필요
2. Neural Network architecture 결정 : hidden layer, node 수 결정
데이터의 수를 일부만 학습 , regularization : 0 으로 설정, lr : 매우 작은수 -> overfitting 일어난다. ( backpropagation 동작 잘된다. )
질문 : lr 이 작게 설정 되어서 loss 값은 변화적다. 그러나 train , val accuracy 증가 하는 이유는 ?
답 : defuse score 로 학습 시작, 학습이 되기 때문에 defuse 한 score가 약간 변화, lr 이 작기 때문에 동일한 loss를 가지게 된다. 하지만 score 에 대해서 학습은 진행되기 때문에 score는 기존보다 약간 상승 -> 정확도 증가
질문 : lr 을 매우크게 설정?
답 : loss 는 NAN값을 가지게 된다.
cross validation 을 통해 lr 설정
Hyperparameter Optimization
Cross-validation strategy
coarse-> fine
첫단계 : 반복을 여러번 하지 않는다.
두번째 단계 : 세부적인 hyperparameter searching , 제일 좋은 값 언저리로 설정
세번째 단계 : 더 좋은 값을 얻을 수 있다. lr 범위 설정 고려
Grid Search : 동일한 간격으로 돌려서 얻는다. -> 매우 안좋다. ( 특정 parameter 가 중요 , but 이를 무시하게 된다. )
Hyerparameters : network architecture , learning rate -> decay schedule , Regularization ( L2/Dropout strength )
l
정확도 : loss function 수치 해석 불가
'딥러닝 공부' 카테고리의 다른 글
[cs231n 강의 정리] Lecture 7 : CNN (0) | 2021.06.20 |
---|---|
[cs231n 강의 정리] Lecture 6 : Training NN part 2 (0) | 2021.05.19 |
[cs231n 강의 정리] Lecture 4 : Backpropagation and Neural Networks part 1 (0) | 2021.05.16 |
[cs231n 강의 정리] Lecture 3 : Loss functions and Optimization (1) | 2021.05.15 |
[cs231n 강의 정리] Lecture 2 : Image classification (0) | 2021.05.15 |