NLP/with PyTorch

[CHAPTER3] Supervised Learning

joannekim0420 2022. 2. 16. 12:45
728x90

1. Dataset

- Dataset은 보통 Training Set, Validation(Dev) Set, Test Set 을 70/15/15로 랜덤하게 나눈다.

- 데이터 개수가 부족하면 k-fold cross validation을 사용하는데, 이는 over-fit이 될 수 있다.

2. Model

3. Loss Function

-손실의 그레디언트는 모델 파라미터를 얼마나 많이 바꿔야 하는지는 나타냄

4. Optimizer

모델이 예측하고, 손실함수가 예측과 타깃 사이의 오차를 측정하면, 옵티마이저가 모델의 가중치를 업데이트

학습률 : 오차 신호가 가중치 업데이트에 영향을 얼마나 미치는지 조절

- Adam / Adagrad

- optim.Adam(params=perceptron.parameters(), lr=lr)

 

GRADIENT UPDATE ALGORITHM

for epoch_i in range(n_epochs):

    for batch_i in range(n_batches):
		
        #step0 : prepare dataset
        x_data, y_target = dataset(batch_size)
        
        #step1 : gradient initialize 
        perceptron.zero_grad()
		
        #step2 : model forward propagation
        y_pred = perceptron(x_data, apply_sigmoid=True)
        
        #step3 : calculcate loss
        loss = bce_loss(y_pred, y_target)
        
        #step4 : backward propagation
        loss.backward()
        
        #step5 : update with optimizer
        optimizer.step()

전체 training dataset은 batch_size(hypterparameter) 로 분할되고 gradient 계산은 배치 하나에서 수행된다. 

epoch : 완전한 훈련 반복 1번을 의미

 

5. Stopping Point

- Early stopping

더 이상 데이터셋 대한 성능이 좋아지지 않을 때 훈련을 종료

 

- L1, L2 Regularization

 

- Dropout

 

'NLP > with PyTorch' 카테고리의 다른 글

[CHAPTER01] Introduction 소개  (0) 2022.02.15
[CHAPTER03] perceptron, activation function, loss function  (0) 2022.02.15
NLP with PyTorch  (0) 2022.02.03