[패스트캠퍼스] 김기현의 딥러닝을 활용한 자연어처리 입문 올인원 패키지 Online 강의를 수강하며 정리한 내용입니다.
딥러닝에 기본적으로 필요한 모듈은 아래의 5가지.
- model.py: 모델 구조가 정의된 클래스
- trainer.py: 모델을 학습하기 위한 코드
- dataloader.py: 데이터를 불러와 전처리를 수행하고 신경망에 넣기 좋은 형태로 변환
- train.py: 사용자로부터 트레이닝을 위한 hyper-param을 받아 model과 tainer. loader를 선언하고 학습
- predict.py: 사용자로부터 Model과 input을 받아 추론을 수행.

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

학습(Training)
- 레이블(정답)이 붙어 있는 학습셋을 신경망에 통과시킨다. (Feed-forward)
- 신경망이 예측한 결과와 정답 간의 차이를 계산한다. (Loss 계산)
- Loss 값을 이용해 각 뉴런의 파라미터를 업데이트한다. 자세한 내용은 다음에 정리할 예정. (Back-propagation & Gradient decent)
- 모든 데이터에 대해 Iteration이 끝나면 학습을 종료한다.
검증(Validation)
- 검증셋을 이용해 학습을 마친 신경망에 통과시킨다. (Feed-forward)
- 예측값과 레이블(정답) 간의 차이를 계산한다 (Loss 계산)
- 최소의 loss가 확인되면 해당 모델을 저장한다 (Best loss 여부 체크 & 모델 저장)
이때 학습셋과 검증셋은 분리되어야 한다. 학습에 사용된 데이터가 아닌 처음 보는 데이터에 대해 강인한 모델을 만들어야 하기 때문이다.
그래서 아래처럼 학습(training)과 검증(validation)에 사용되는 데이터는 겹치지 않도록 구성한다.
