본문 바로가기

딥러닝/자연어처리

전반적인 딥러닝 학습 구조

[패스트캠퍼스] 김기현의 딥러닝을 활용한 자연어처리 입문 올인원 패키지 Online 강의를 수강하며 정리한 내용입니다.

 

딥러닝에 기본적으로 필요한 모듈은 아래의 5가지.

  • model.py: 모델 구조가 정의된 클래스
  • trainer.py: 모델을 학습하기 위한 코드
  • dataloader.py: 데이터를 불러와 전처리를 수행하고 신경망에 넣기 좋은 형태로 변환
  • train.py: 사용자로부터 트레이닝을 위한 hyper-param을 받아 model과 tainer. loader를 선언하고 학습
  • predict.py: 사용자로부터 Model과 input을 받아 추론을 수행.

학습(왼쪽) 과정과 예측(오른쪽) 과정을 나타낸 다이어그램. 출처: 패스트캠퍼스.

 

위 그림의 왼쪽에 해당하는 학습(train) 과정을 자세히 들여다보면 아래와 같다.

 

크게는  학습(Training) 과  검증(Validation) 으로 이루어져 있다. 하나의 Epoch을 단위로 수행된다. (출처: 패스트캠퍼스)

학습(Training)

  1. 레이블(정답)이 붙어 있는 학습셋을 신경망에 통과시킨다. (Feed-forward)
  2. 신경망이 예측한 결과와 정답 간의 차이를 계산한다. (Loss 계산)
  3. Loss 값을 이용해 각 뉴런의 파라미터를 업데이트한다. 자세한 내용은 다음에 정리할 예정. (Back-propagation & Gradient decent)
  4. 모든 데이터에 대해 Iteration이 끝나면 학습을 종료한다.

검증(Validation)

  1. 검증셋을 이용해 학습을 마친 신경망에 통과시킨다. (Feed-forward)
  2. 예측값과 레이블(정답) 간의 차이를 계산한다 (Loss 계산)
  3. 최소의 loss가 확인되면 해당 모델을 저장한다 (Best loss 여부 체크 & 모델 저장)

이때 학습셋과 검증셋은 분리되어야 한다. 학습에 사용된 데이터가 아닌 처음 보는 데이터에 대해 강인한 모델을 만들어야 하기 때문이다.

그래서 아래처럼 학습(training)과 검증(validation)에 사용되는 데이터는 겹치지 않도록 구성한다.

출처: 패스트캠퍼스