[딥러닝] 딥러닝 학습과정(Training Process)

chaeyoung·2023년 5월 15일
0

DeepLearning

목록 보기
4/4

Deep Learning 과정

1. model 학습 전: 전체 data-set을 train-test로 나눈다

# convert data to a normalized torch.FloatTensorL: 정규화된 데이터로 변경 
transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
    ])

# choose the training and test datasets: train, test를 선택 
train_data = datasets.CIFAR10('data', train=True,
                              download=True, transform=transform)
test_data = datasets.CIFAR10('data', train=False,
                            download=True, transform=transform)
- 분리 이유?: overfitting(새로운 데이터 분별 못하는 문제) 문제해결
- train model로 학습, test는 새로운 데이터도 작동되는지 테스트용 model

2. Feed-forward

  • input data는 다음 노드로 전달하기 위해 각각 입력데이터가 결과에 미치는 영향을 반영하는 가중치(weight) 사용
    (이미지 출처: https://amber-chaeeunk.tistory.com/19)
    • 예: Z1=w11+w32+w53+b1Z_1=w_1*1+w_3*2+w_5*3+b1 이후 어느정도의 활성화가 일어나는지 정하기 위해 활성화함수(activation function)을 적용
    • h1=A(z1)h1=A(z_1) 이후 다음 layer로 전달
    • 마지막에 softmax function을 거침(모든 합이 1인 확률로 출력)
      softmax(x)=eikeiksoftmax(x)=\frac{e^i}{\sum_{k}e^ik}

3. Loss function

  • 신경망의 정확도를 올리기 위해 최적의 가중치 변수를 구해야하는데 이를 학습이라함
  • feed-forward에서 도출한 예측값과 실제값을 비교하는 손실함수사용해 error를 최소화하는 가중치 찾는 것이 목표(=Optimizer)
    • 경사하강법(Gradient Descent Algorithm): 주어진 함수의 극소점을 찾기 위해 gradient가 최소가 되는 지점을 찾는 방법
      • θj:=θjαδδθjJ(θ0,θ1)\theta_j:=\theta_j-\alpha\frac{\delta}{\delta\theta_j}J(\theta_0,\theta_1)$
        • :=: θj\theta_jα\alpha 대입
        • α\alpha: Learning Rate(학습속도), 언덕 내려갈 때 얼마나 큰 걸음으로 걸을지
        • δδθjJ(θ0,θ1)\frac{\delta}{\delta\theta_j}J(\theta_0,\theta_1): 미분 계수(기울기)
        • weight갱신은 기존 가중치에서 `학습률(learning rate)와 기존 loss 가중치를 미분한 값을 곱하여 빼는 방식(W=W-learning rate*∂L/∂W )

3-1. 확률적 경사 하강법(Stochastic Gradient Descent)

  • weight 한번 갱신 때 마다 전체 데이터 사용시 overrfitting발생, 일부 데이터를 random하게 선별하여 학습 선별된 데이터를 mini-batch라고 함
  • mini-batch를 선별하여 학습을 반복하고 loacal minimum에 빠지지 않게 하는 것이 확률적 경사 하강법
  • 용어정리:
    • epoch: 1epoch은 전체 training data에 대해 한번 학습한 것
    • iteration: 1epoch을 완료하기 위한 mini-batch의 개수

출처: https://amber-chaeeunk.tistory.com/19

0개의 댓글