모델: 손실 마스킹
ㅁ 손실 마스킹
ㅇ 정의:
모델 학습 시 특정 토큰이나 위치의 손실(loss)을 계산에서 제외하여, 불필요하거나 의미 없는 부분이 학습에 영향을 주지 않도록 하는 기법.
ㅇ 특징:
– 패딩 토큰, 특수 토큰 등에 대해 손실을 무시함.
– 마스킹된 위치는 역전파에 영향을 주지 않음.
– 주로 시퀀스 길이가 다른 배치 데이터 처리 시 사용.
ㅇ 적합한 경우:
– NLP에서 패딩 토큰이 포함된 문장 학습.
– 일부 토큰의 예측이 학습에 불필요한 경우.
ㅇ 시험 함정:
– 손실 마스킹과 Attention 마스킹을 혼동하는 문제.
– 마스킹된 위치가 모델 출력에는 나타나지만 손실 계산에는 반영되지 않는 점을 간과.
ㅇ 시험 대비 “패턴 보기” 예시:
O: 패딩 토큰의 손실을 계산에서 제외하는 것은 손실 마스킹의 예이다.
X: 손실 마스킹은 모델이 해당 토큰을 전혀 생성하지 않도록 하는 기법이다.
================================
1. Loss Masking
ㅇ 정의:
학습 손실 계산 시 특정 인덱스나 토큰의 손실 값을 무시하여 모델이 해당 위치의 오류를 학습하지 않도록 하는 방법.
ㅇ 특징:
– CrossEntropyLoss 등에서 마스크를 적용하여 특정 토큰 무시.
– 주로 패딩(PAD) 토큰 처리에 사용.
– 마스크 벡터를 곱하거나 ignore_index 설정으로 구현.
ㅇ 적합한 경우:
– 배치 내 문장 길이가 달라 패딩이 필요한 경우.
– 특정 구간의 예측이 학습 대상이 아닐 때.
ㅇ 시험 함정:
– 손실을 0으로 만드는 것과 완전히 무시하는 것의 차이.
– 마스크는 역전파 경로에도 영향을 준다는 점.
ㅇ 시험 대비 “패턴 보기” 예시:
O: PAD 토큰의 손실을 계산하지 않도록 하는 것은 Loss Masking이다.
X: Loss Masking은 Attention Score를 변경하는 방식이다.
================================
2. Attention Masking
ㅇ 정의:
Self-Attention 계산 시 특정 위치 간의 주의(attention) 연결을 차단하여 정보 흐름을 제한하는 기법.
ㅇ 특징:
– 미래 시점 토큰을 보지 못하게 하는 causal mask.
– 패딩 토큰에 대한 attention score를 -inf로 설정.
– Transformer 구조에서 필수적으로 사용.
ㅇ 적합한 경우:
– 언어 모델에서 미래 정보 차단.
– 시퀀스 내 불필요한 위치 무시.
ㅇ 시험 함정:
– Attention Masking과 Loss Masking을 동일하게 보는 착각.
– Attention Masking은 손실 계산이 아니라 attention score 계산에 영향을 준다.
ㅇ 시험 대비 “패턴 보기” 예시:
O: 미래 토큰을 보지 못하게 하는 causal mask는 Attention Masking의 예이다.
X: Attention Masking은 손실 계산 시 특정 토큰을 무시하는 것이다.
================================
3. ignore_index
ㅇ 정의:
PyTorch 등의 손실 함수에서 특정 클래스 인덱스의 손실을 무시하도록 설정하는 파라미터.
ㅇ 특징:
– CrossEntropyLoss 등에서 제공.
– 해당 인덱스의 손실은 계산 및 역전파에서 제외.
– 주로 PAD 토큰 인덱스를 지정.
ㅇ 적합한 경우:
– 패딩 토큰 손실 무시.
– 라벨링되지 않은 구간 제외.
ㅇ 시험 함정:
– ignore_index는 모델 구조가 아니라 손실 함수 설정임.
– 마스크 벡터와 혼동.
ㅇ 시험 대비 “패턴 보기” 예시:
O: CrossEntropyLoss(ignore_index=pad_id)는 PAD 토큰 손실을 무시한다.
X: ignore_index는 attention score 계산을 변경한다.
ㅁ 추가 학습 내용
손실 마스킹과 Attention 마스킹은 적용 위치와 목적이 다르다. 손실 마스킹은 손실 계산 단계에서 사용되며, Attention 마스킹은 attention score 계산 단계에서 사용된다. 시험에서는 이 구분을 묻는 문장이 자주 출제된다.
ignore_index는 구현 시 매우 자주 사용되며, PyTorch뿐 아니라 TensorFlow/Keras에서의 유사 기능도 알아두어야 한다. 예를 들어, tf.keras.losses.CategoricalCrossentropy의 sample_weight 등이 이에 해당한다.
마스킹 기법은 모델의 일반화 성능과 학습 안정성에 큰 영향을 미친다. 마스크 적용 시 역전파 경로가 어떻게 달라지는지, 즉 gradient flow 차단 여부를 이해해야 하며, 배치 단위 처리에서 마스크 브로드캐스팅 규칙도 함께 정리해 두어야 한다.