1) Validation Test, Test와 Batch_size 사이의 관계
|-----------Train DataSet(100*400=4만개)-----------|--Validation Test(100*100=1만개)---|----------Test(1만개)----------|
100|100|........................................................|100|100|100|100 | 100|100|100...............................100|100 |
Train DataSet: backward를 진행하며 학습을 진행, weight 값이 계속 업데이트 된다.
Validation Test: backward를 하지 않는다. 즉, weight 값은 변동 없이 그대로. Loss값만 변동되는데 이 값들의 평균을 구함
에폭을 지나면서 반복할수록 loss가 큰 값은 버리고 작은 값만 저장한다. == Validation Test의미
Validation Test는 loss의 값이 하향 곡선을 그리도록(낮은 쪽으로) 유도하는 것이다. loss가 올라가지 않도록.
2) Learning Network
- Optimizer : 하산 법
- Loss : 학습을 잘 했는지 못했는지 정량화 시키는 값
- BackPropagation : loss가 가장 최소가 되는 weight 값을 찾는 알고리즘
- gradient : SGD, Adagrad 등 존재
3) Deep Learning Pipeline
- Training Data Loading
- Training Data Augmentation : pytorch에서 transforms 모듈 사용
- Deep Learning Network Training with Training Data
----------------------- 여기까지 batch_size로 반복(looping) --------------- - Deep Neural Network Testing with Testing Data : 정답 존재
- Inference with verified Deep Neural Network : 정답이 없다.
TNN(Training Neural Network)
- DeepLearning의 3partPreprocessing: 값을 스케일링하여 0-1사이의 값으로 변경해 네트워크에 넣는다, Data Augmentation(transforms), 데이터 로딩 시마다 셔플, data cleansing(데이터 검수.. 라벨링 작업 확인), 데이터의 비율 맞춰줌, 어떤 데이터인지에 따라 도메인 전문가 및 도메인 지식 필요
Deep Learning
post processing1) Training Overview - Activation Function : 역치값(treshhold) 이상인 것만을 가지고 오기 위해, 비선형으로 데이터를 변경하기 위해딥러닝에서는 Sigmoid 함수 안쓰고 ReLu 함수 사용.
그러나, 반드시 Sigmoid가 사용되는 경우가 있다. 이는 Activation function 용도는 아님.
binaray한 문제이자 출력값이 하나인 경우 Sigmoid가 사용된다. 이 때, 출력 앞단에서 softmax 자리에 사용되며 treshod 값을 정하는 것도 매우 중요
2) Data Preprocessing
- RGB Image의 경우 data variance가 커서 high frequency 하고 결과적으로 overfitting 되어 학습이 제대로 진행되지 않음
- Network input range: 0-1사이여야 한다. 이를 위해 scaling이 진행되는데 255로 값을 나눈다. 전처리과정에서 실행
3) Batch Normalization
- 중요한 값은 layer를 거듭할수록 커지고 중요하지 않은 값은 점점 작아져서 0에 수렴한다,
- 이는 결국 overfitting을 감소시키는 역할을 한다,
- 네트워크의 각 layer를 거칠 때마다 input 값의 variance가 커진다. ==> distribution이 커진다.
$$(X-mean)/std$$ - X를 평균으로 빼고 분산으로 나눈다.
- 모든 Layer마다 normalization.. layer마다 batch normalizaiotn을 실시
- batch_size는 16이상으로 하라.16 혹은 32...
- 너무 클 경우 computer cost에 한계 존재..
4) Train model and analyze result
- learning rate에서 초반에는 급격히 감소해야하고 점차 완만해야한다
5) 정리
activation function : ReLu 사용
Data normalization : 스케일링(255로 나누기) 진행
Data augmentation : 반드시 진행
Weight Initialization : 랜덤하게
Batch normalization : 16 or 32사용
'AI' 카테고리의 다른 글
Segmentation (0) | 2021.06.10 |
---|---|
인공지능 코드 구현 (0) | 2021.06.09 |
CNN (Convolutional Neural Network) (0) | 2021.06.04 |
Back Propagation (0) | 2021.06.03 |
Neural Network (0) | 2021.06.02 |