문제 자체가 여러 입구와 출구를 가질 때
실전 데이터는 한 종류로만 이루어지지 않는 경우가 많아. 고객 지원 티켓만 해도 제목, 본문, 태그가 서로 다른 특징 공간에 있고, 모델은 우선순위와 담당 부서를 동시에 예측해야 할 수 있어. 이를 하나의 벡터로 억지로 펼치면 데이터의 구조를 잃고, 모델을 따로 만들면 공유해서 배울 정보를 놓쳐.
표준 구조는 입력마다 경로를 하나씩 두고 알맞은 레이어로 처리한 뒤 layers.concatenate로 합치는 거야. 합쳐진 표현에서는 출력마다 헤드를 하나씩 나눠. 모든 입력과 출력에 name=을 붙이면 위치에 의존하는 목록 대신 딕셔너리로 데이터와 손실 함수를 연결할 수 있어 구조가 커져도 안전해.
다중 과제 학습에는 손실 균형이 필요해
여러 헤드가 공통 몸통을 사용하면 각 출력의 기울기가 같은 특징 표현을 함께 다듬어. 이것이 과제별 모델을 따로 학습할 때보다 일반화가 좋아질 수 있는 이유야. 하지만 손실값의 크기가 서로 다르면 한 헤드가 학습을 독차지할 수도 있어. compile의 loss_weights로 손실 크기를 조절하는 이유가 여기 있어. 같은 가중치로 시작하고 출력별 손실 곡선을 관찰한 뒤 한 과제가 뒤처질 때만 조정해.