AI: 패딩 및 배치 처리 – Packed Sequence

ㅁ 패딩 및 배치 처리

ㅇ 정의:
시퀀스 데이터(문장, 시계열 등)의 길이가 제각각일 때, 불필요한 패딩 연산을 최소화하기 위해 실제 데이터 길이에 맞춰 배치 단위로 압축하여 처리하는 방식. 주로 RNN 계열 모델 학습 시 사용되며, PyTorch의 pack_padded_sequence 함수가 대표적 구현.

ㅇ 특징:
– 시퀀스 길이 정보를 함께 저장하여 연산 시 패딩 토큰을 무시함.
– 메모리 사용량과 연산량을 줄여 학습 속도를 향상.
– 입력 시퀀스는 길이 내림차순으로 정렬되어야 함.
– 언패킹(unpack) 과정을 거쳐 원래 형태로 복원 가능.

ㅇ 적합한 경우:
– RNN, LSTM, GRU 등 순환 신경망 학습 시 시퀀스 길이가 다양할 때.
– 대규모 텍스트 데이터나 음성 데이터 처리 시 효율성을 높이고자 할 때.

ㅇ 시험 함정:
– Packed Sequence는 패딩 자체를 없애는 것이 아니라, 연산 시 패딩을 건너뛰는 것임.
– 입력 데이터는 반드시 길이순 정렬 필요.
– CNN 계열 모델에는 일반적으로 불필요.

ㅇ 시험 대비 “패턴 보기” 예시:
O: “Packed Sequence는 RNN 연산 시 불필요한 패딩 연산을 건너뛴다.”
X: “Packed Sequence는 패딩을 완전히 제거하여 입력 데이터 길이를 동일하게 만든다.”

ㅁ 추가 학습 내용

Packed Sequence는 PyTorch에서 pack_padded_sequence와 pad_packed_sequence를 함께 사용하여 가변 길이 시퀀스를 효율적으로 처리하는 방식이다. 사용 시 입력 시퀀스는 길이 기준 내림차순으로 정렬해야 하며, 모델의 forward에서 batch_first 옵션과의 관계를 혼동하기 쉬우므로 주의해야 한다. 또한 배치 내 각 시퀀스의 실제 길이 정보를 별도로 전달해야 하며, 이를 누락하면 런타임 에러가 발생한다. GRU나 LSTM에서 Packed Sequence를 사용할 경우 hidden state 반환 시 마지막 타임스텝이 아니라 각 시퀀스의 마지막 실제 데이터 위치의 hidden state가 반환된다는 점을 유념해야 한다.

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*