이 식에는 네 개의 항이 있습니다. 두 개는 모델이 훈련되는 동안 고정됩니다. 훈련 데이터에 의해 결정되는 sizeMB와 timeSec 값입니다(코드 2-1 참조). 다른 두 항인 커널과 편향은 모델 파라미터입니다. 모델이 만들어질 때 이 값은 랜덤하게 선택됩니다. 이런 랜덤한 값은 다운로드 시간을 잘 예측하지 못할 것입니다. 적절한 예측을 만들기 위해 모델이 데이터로부터 학습하여 좋은 커널과 편향 값을 찾아야 합니다. 이런 탐색을 훈련 과정(training process)이라고 합니다.
좋은 커널과 편향(합쳐서 가중치)을 찾기 위해 두 가지가 필요합니다.
• 주어진 가중치에서 얼마나 성능이 좋은지 알려 주는 척도
• 앞에서 언급한 척도에 따라 현재보다 다음에 더 높은 성능을 낼 수 있도록 가중치 값을 업데이트하는 방법
선형 회귀 문제를 풀기 위한 다음 단계에 진입했습니다. 네트워크의 훈련 준비를 마치려면 앞서 언급한 두 필수 항목에 상응하는 척도와 업데이트 방법을 선택해야 합니다. 이것이 TensorFlow.js가 모델 컴파일(model compilation) 단계라고 부르는 작업입니다. 이 단계에서 다음 두 가지를 입력받습니다.
• 손실 함수(loss function): 오차 측정. 네트워크가 훈련 데이터에서 성능을 측정하고 올바른 방향으로 스스로 조정하는 방법입니다. 손실은 낮을수록 좋습니다. 훈련 과정에서 시간에 따라 손실을 그래프로 그려 감소하는지 볼 수 있습니다. 오랫동안 모델을 훈련하고 손실이 감소하지 않는다면 모델이 데이터에서 학습하지 못한다는 의미입니다. 이 책을 통해 배워가면서 이와 같은 문제를 디버깅하는 방법을 알아보겠습니다.
• 옵티마이저(optimizer): 네트워크가 데이터와 손실 함수를 기반으로 가중치(커널과 편향)를 업데이트하는 알고리즘입니다.