하드디스크(HDD)에 방대한 데이터가 들어있다고 가정해보자.
우리는 이 하드디스크에 있는 데이터를 이용해 모델을 MNIST로 학습시킬 것이다..!
데이터를 가져와 학습시키기 위해서는 하드디스크에 있는 데이터를 RAM으로 가져와야 한다. 하지만 RAM이 소화할 수 있는 용량은 제한적이라 한꺼번에 모두 가져올 수 없는 문제가 발생한다. 따라서 데이터를 나눠서 RAM으로 가져와 학습을 진행해야 한다. 이를 가능하게 해주는 것이 바로 '파이프라인'이다. HDD와 RAM 사이를 파이프라인으로 연결해 데이터를 RAM에 쪼개서 보내도록 한다.
우리는 MNIST를 이용해 모델이 데이터를 학습해 나가는 과정을 말하고 있다. MNIST는 사람이 직접 손으로 쓴 숫자들을 이미지화 시켜서, 모델에게 학습을 시킨 후 결과 출력 값으로 가장 일치하는 INT형 숫자가 나오도록 해야한다. JPEG 이미지 파일을 INPUT 데이터로 활용할 수 있도록 행렬(numpy)로 변환시켜야 하는데, 이때 사용되는 메소드가 바로 '파싱'이다.
파싱 함수를 통해 28x28x1의 픽셀을 가진 이미지를 파이썬 패키지인 numpy [28,28,1] 행렬로 바꿔준다. 이제 이 데이터를 모델에 학습시킬 수 있는 INPUT 데이터로 사용할 수 있다.
만약 파이프라인을 통해 64개의 데이터를 가져와 동시에 학습을 시킨다고 가정한다면, 이 데이터의 행렬은 [64,28,28,1]의 형태를 갖추게 되고 INT형 결과 값은 [64,1]로 나오게 된다. 결과 값이 바로 y^ 예측 값이다. 이제 여기서 구한 예측값을 실제값으로 뺀 후 제곱을 하는 cost function을 통해서 loss를 구할 수 있다. 하지만 loss는 단순한 차이를 나타내는 수치일 뿐이다.
모델을 학습시키기 위해 데이터를 받으면서 weight 값을 업데이트하는데, 좀 더 자세히 말하면 cost function의 미분값(gradient)에 learning_rate를 곱한 값을 weight에 업데이트하는 과정으로 학습이 진행되는 구조라고 말할 수 있다.
이 과정을 HDD에서 데이터를 모두 가져와 학습할 때까지 반복한다.
'딥러닝(Deep-Learning)' 카테고리의 다른 글
[DCGAN 모델] 코드 리뷰 (2) | 2018.07.09 |
---|---|
모델에서 이루어지는 '딥러닝' (0) | 2018.07.03 |
GAN (Generative Adversarial Network) 정리 (0) | 2018.06.25 |
[딥러닝] Backpropagation & L2 Regularization 정리 (0) | 2018.05.31 |
[딥러닝] 머신러닝 & Regression 정리 (0) | 2018.05.28 |