모델 학습 과정은 심층 신경망(Deep Neural Networks, DNN)의 가중치와 편향을 최적화하여 예측 정확도를 최대화하는 중요한 단계입니다. 이 과정에서는 데이터를 훈련 데이터셋과 테스트 데이터셋으로 나누고, 역전파(backpropagation)와 경사 하강법(gradient descent)을 사용하여 손실 함수를 최소화하는 방식으로 진행됩니다. 이 섹션에서는 실제 숫자 데이터를 예로 들어, DNN 모델 학습 과정을 자세하게 설명하겠습니다.
1. 데이터셋 분할
먼저, 모델을 학습시키기 위해 전체 데이터를 훈련 데이터셋(80%)과 테스트 데이터셋(20%)으로 나눕니다. 예를 들어, 다음과 같은 전처리된 데이터가 있다고 가정합니다:
환자 ID | 정규화된 심박수 | 정규화된 혈압 | 정규화된 심전도 | 심방세동 발생 여부 (Label) |
---|---|---|---|---|
1 | 0.0 | 0.00 | 0.4167 | 0 |
2 | 0.4667 | 0.36 | 0.8333 | 1 |
3 | 1.0 | 0.80 | 0.5563 | 1 |
4 | 0.2 | 0.52 | 0.0 | 0 |
5 | 0.6667 | 0.52 | 1.0 | 1 |
이 데이터를 80% 훈련 데이터셋과 20% 테스트 데이터셋으로 나눕니다. 작은 데이터셋을 예로 들면, 환자 1, 2, 3, 4는 훈련 데이터로, 환자 5는 테스트 데이터로 나눌 수 있습니다.
2. 모델 초기화
모델 학습을 시작하기 전에, DNN의 가중치와 편향은 일반적으로 작은 난수로 초기화됩니다. 이는 모든 노드가 학습 초기에는 동일한 가중치를 갖지 않도록 하기 위함입니다.
3. 손실 함수와 예측
모델은 훈련 데이터셋을 사용하여 학습을 진행합니다. 먼저, 각 환자의 데이터를 입력으로 하여 모델의 예측을 계산합니다. 예측은 출력층에서 발생하며, 이진 분류 문제이므로 시그모이드 함수가 사용됩니다. 예를 들어, 환자 1의 입력 데이터를 사용한 예측 결과가 0.4라고 가정하면, 이 값은 해당 환자가 심방세동이 발생할 확률이 40%임을 의미합니다.
모델의 예측값 y^과 실제 레이블 y 사이의 차이를 측정하기 위해 이진 교차 엔트로피(binary cross-entropy) 손실 함수가 사용됩니다. 이 함수는 다음과 같이 정의됩니다.
여기서 N은 데이터 포인트의 수, yi는 실제 레이블, y^i는 모델의 예측값입니다.
4. 역전파와 경사 하강법
손실 함수가 계산된 후, 모델은 가중치와 편향을 업데이트하여 손실을 최소화하는 방향으로 학습을 진행합니다. 이 과정은 역전파(backpropagation) 알고리즘과 경사 하강법(gradient descent)을 통해 이루어집니다.
4.1. 역전파 알고리즘
역전파는 출력층에서부터 입력층까지 역방향으로 이동하면서 각 층의 가중치에 대한 손실 함수의 기울기(gradient)를 계산하는 과정입니다. 예를 들어, 출력층에서의 손실 함수에 대한 가중치 W3의 기울기 (∂Loss/∂W3)는 다음과 같이 계산됩니다.
여기서 h2(2)는 두 번째 은닉층의 출력값입니다.
이러한 기울기는 각 은닉층을 거쳐 입력층까지 전달되며, 각 가중치 W2, W1에 대해서도 유사한 방식으로 기울기를 계산합니다.
4.2. 경사 하강법
경사 하강법은 계산된 기울기를 사용하여 가중치를 업데이트하는 최적화 알고리즘입니다. 각 가중치는 다음과 같이 업데이트됩니다:
여기서 η는 학습률(learning rate)로, 기울기의 크기에 따라 가중치를 얼마나 크게 조정할지를 결정합니다. 작은 학습률은 안정적인 학습을 보장하지만 시간이 많이 걸릴 수 있으며, 큰 학습률은 빠르게 학습을 진행할 수 있지만 최적의 가중치에 도달하지 못할 수 있습니다.
5. 에포크와 모델 평가
이러한 학습 과정은 여러 번 반복되며, 각 반복을 에포크(epoch)라고 합니다. 에포크가 진행될수록 모델의 손실 값은 점차 감소하고, 모델의 예측 정확도는 향상됩니다.
학습이 완료된 후, 모델의 성능은 테스트 데이터셋을 사용하여 평가됩니다. 예를 들어, 테스트 데이터(환자 5번)를 입력으로 하여 모델이 예측한 심방세동 발생 확률과 실제 레이블을 비교하여 모델의 성능을 측정합니다.