배치가 계산 단위야
신경망은 예시 하나가 아니라 여러 예시를 묶은 배치 단위로 작동해. 이미지 32개로 이루어진 배치는 형태가 [32, 3, 224, 224]인 텐서고, 문장 배치는 [32, seq_len, hidden_dim] 형태야. 첫 번째 차원은 거의 언제나 배치 차원이야. 이건 고민하지 않고 바로 떠올라야 해. x[0]은 배치의 첫 번째 예시를 뜻해.
GPU를 제대로 활용하려면 배치 처리가 필요해. 예시 하나만 순전파하면 칩의 병렬 처리 능력 대부분을 낭비하게 돼. 배치 크기를 두 배로 늘리면 보통 예시당 처리 시간은 절반으로 줄어들어. 다만 메모리 대역폭이나 VRAM이 한계에 도달하기 전까지만 그래.
로짓과 확률
로짓은 최종 선형층이 내보내는 정규화되지 않은 원시 출력이야. 양수와 음수를 포함한 모든 실수가 될 수 있어. 확률은 로짓을 소프트맥스(다중 클래스)나 시그모이드(이진 분류)에 통과시켜 얻어. PyTorch의 분류 손실 함수는 확률이 아니라 로짓을 받아. 수치적 안정성을 위해 내부에서 소프트맥스를 적용하기 때문이야. 따라서 모델이 로짓을 반환하는 게 올바른 기본값이야.
출력 헤드
‘헤드’는 신경망의 내부 표현을 과제에 필요한 출력으로 바꾸는 최종 층 또는 작은 층 묶음이야. 분류에는 nn.Linear(hidden_dim, num_classes)를 써. 회귀에는 nn.Linear(hidden_dim, 1)을 쓰고, 다중 레이블 분류에는 nn.Linear(hidden_dim, num_labels)와 시그모이드, BCE를 함께 써. 임베딩 학습에는 L2 정규화된 projection을 사용해.
사전학습 모델을 새로운 과제에 미세 조정할 때 보통 교체하는 부분이 바로 이 헤드야. 백본은 그대로 두고 헤드만 새로운 레이블 집합에 맞춰 다시 초기화해.