모델: 손실 마스킹 – ignore_index
ㅁ 손실 마스킹
ㅇ 정의:
손실(loss) 계산 시 특정 토큰의 예측 결과를 무시하도록 설정하는 기법. 주로 패딩 토큰(PAD)이나 학습에 불필요한 토큰의 손실 값을 계산에서 제외하기 위해 사용.
ㅇ 특징:
– PyTorch의 CrossEntropyLoss 등에서 ignore_index 파라미터를 사용하여 특정 인덱스를 무시 가능.
– 모델의 성능 평가 시 불필요한 오차를 제거하여 정확한 학습 유도.
– 주로 시퀀스 데이터 처리(NLP)에서 사용.
ㅇ 적합한 경우:
– 패딩 토큰이 포함된 시퀀스 데이터 학습.
– 일부 토큰의 예측이 학습 목표에 포함되지 않는 경우.
ㅇ 시험 함정:
– ignore_index는 단순히 토큰을 스킵하는 것이 아니라 손실 계산에서 제외하는 것임.
– ignore_index를 잘못 설정하면 패딩 토큰이 학습에 영향을 주거나, 반대로 중요한 토큰이 무시될 수 있음.
ㅇ 시험 대비 “패턴 보기” 예시:
O: “ignore_index는 손실 계산 시 특정 토큰 인덱스를 무시하기 위해 사용된다.”
X: “ignore_index는 모델이 해당 토큰을 전혀 예측하지 않도록 한다.”
================================
1. ignore_index
ㅇ 정의:
PyTorch 등의 딥러닝 프레임워크에서 손실 함수 계산 시 특정 클래스 인덱스를 무시하도록 지정하는 파라미터.
ㅇ 특징:
– CrossEntropyLoss, NLLLoss 등에서 지원.
– 무시된 인덱스에 해당하는 위치의 손실은 0으로 처리되어 역전파에 반영되지 않음.
– 주로 PAD 토큰 인덱스를 지정.
ㅇ 적합한 경우:
– NLP에서 시퀀스 길이를 맞추기 위해 패딩을 추가한 경우.
– 라벨 데이터 중 학습 대상에서 제외할 클래스가 있는 경우.
ㅇ 시험 함정:
– ignore_index는 예측값 자체를 제거하는 것이 아니라 손실 계산에서만 제외.
– 인덱스 값이 잘못 지정되면 의도치 않게 손실이 무시될 수 있음.
ㅇ 시험 대비 “패턴 보기” 예시:
O: “ignore_index는 손실 함수에서 특정 클래스의 손실 계산을 제외한다.”
X: “ignore_index는 해당 클래스의 데이터를 데이터셋에서 삭제한다.”
ㅁ 추가 학습 내용
ignore_index
손실(loss) 계산 시 특정 클래스(토큰)를 무시하도록 설정하는 값. 예를 들어 패딩 토큰에 해당하는 인덱스를 지정하면 해당 위치의 손실이 계산되지 않음. PyTorch의 CrossEntropyLoss 등에서 사용되며 기본값은 -100이고 필요에 따라 변경 가능함. 모델의 attention 계산에는 영향을 주지 않으며, 오직 손실 계산 단계에서만 적용됨.
label smoothing
정답 클래스의 확률을 1로 두는 대신, 모든 클래스에 일정 비율로 확률을 분배하여 모델이 과도하게 한 클래스에 확신하지 않도록 하는 기법. 예를 들어 정답 클래스에 0.9, 나머지 클래스에 균등하게 0.1을 분배하는 방식. 분류 문제에서 일반화 성능을 높이고 overfitting을 완화하는 데 사용됨.
padding mask
시퀀스 데이터에서 패딩 토큰이 모델의 attention 계산에 영향을 주지 않도록 막는 마스크. 주로 Transformer의 attention 연산에서 사용되며, 패딩 위치에 해당하는 토큰이 다른 토큰에 주의를 주거나 받지 않도록 함.
attention mask
모델이 어떤 토큰 간의 attention을 계산할지 제한하는 역할. 패딩 마스크도 attention mask의 일종이며, 시퀀스 길이 제한, 미래 토큰 차단(causal mask) 등 다양한 형태가 있음. ignore_index와 달리 손실 계산이 아니라 attention 연산에 영향을 줌.