DiffuSeq의 핵심은 조건인 입력 문장은 그대로 두고, 생성해야 할 정답 문장에만 노이즈를 넣는 것입니다. 입력까지 흐리면 복원 과정이 따라야 할 기준도 사라지기 때문에, 시퀀스-투-시퀀스 문제에서는 이 구분이 모델 구조보다 먼저 이해해야 할 포인트입니다.
DiffuSeq는 왜 입력 문장에 Noise를 넣지 않을까? Partial Noising과 MBR
입력은 조건, 출력만 복원 대상이다
이미지 확산은 연속적인 픽셀을 다루지만 텍스트 토큰은 이산적입니다. DiffuSeq는 토큰을 연속 임베딩으로 옮긴 뒤 확산과 역확산을 수행하고, 마지막에 다시 단어로 반올림합니다. 입력 x와 정답 y를 한 덩어리로 보되 forward process에서는 y만 단계적으로 흐리게 만드는 partial noising을 사용합니다.
이 설계에서는 입력 문장이 매 denoising 단계의 조건으로 남습니다. 별도 분류기로 결과를 유도하는 classifier guidance 대신, Transformer가 보존된 입력과 노이즈 상태의 출력을 함께 보며 조건부 복원을 학습합니다. 따라서 “무엇을 생성해야 하는가”와 “무엇을 근거로 생성하는가”가 학습 과정에서 분리됩니다.
한 토큰씩 쓰지 않고 문장 전체를 다듬는다
자기회귀 모델은 앞 토큰을 확정한 뒤 다음 토큰을 생성합니다. DiffuSeq는 문장 전체의 연속 표현을 여러 번 고치므로 반복적 비자기회귀 생성에 가깝습니다. 초반에는 문장 윤곽을 만들고, 뒤 단계로 갈수록 단어 선택과 순서를 정교하게 조정할 수 있다는 해석이 가능합니다.
논문 실험은 대화 생성 약 300만 쌍, Quasar-T 질문 생성 약 11만 9천 쌍, 문장 단순화 약 67만 7천 쌍, QQP 패러프레이즈 약 14만 7천 쌍을 사용했습니다. 모델은 12개 층, 12개 attention head, 임베딩 차원 128, 확산 단계 2,000의 설정이며 학습에는 A100 네 장, 추론에는 한 장을 사용했습니다. 이 숫자는 재현 가능한 보편 권장값이 아니라 논문의 비교 조건입니다.
학습에서는 모든 timestep을 똑같이 뽑지 않고 손실이 큰 구간을 더 자주 보는 importance sampling을 사용합니다. 또 source와 target의 embedding을 공유하는 선택이 중요했습니다. 논문 ablation에서 이를 분리된 pretrained embedding으로 바꾸자 BLEU가 0.1567에서 0.0110으로 크게 떨어졌습니다.
후보 수를 늘리면 품질과 다양성의 균형이 달라진다
확산 생성은 같은 입력에서도 여러 후보를 만들기 쉽습니다. 하지만 후보가 많다는 사실만으로 최종 문장이 좋아지지는 않습니다. DiffuSeq는 후보 집합에서 서로의 유사도를 비교해 대표 문장을 고르는 Minimum Bayes Risk(MBR) 선택을 사용합니다.
논문 결과에서는 후보가 1~3개일 때 GPT-2보다 불리한 구간이 있었고, 후보 집합을 키우면서 성능이 개선됐습니다. 20개 후보에서도 상승 흐름이 이어졌다는 점은 다양성을 실제 품질로 바꾸려면 선택 단계가 필요하다는 뜻입니다. 반대로 후보를 늘릴수록 추론량과 선택 비용도 늘어납니다. 실사용 판단에서는 최고 점수만 볼 것이 아니라 후보 수별 지연 시간, 중복률, 원하는 문체의 유지율을 함께 측정해야 합니다.
이 논문을 적용할 때 확인할 한계
DiffuSeq가 모든 텍스트 생성을 자기회귀 방식보다 빠르게 만드는 것은 아닙니다. 역확산을 반복하고 여러 후보를 만든 뒤 MBR까지 수행하면 계산량이 커질 수 있습니다. 논문은 DDIM으로 2,000단계를 1,000단계로 줄인 설정에서 GPT-2-large보다 높은 BLEU와 비슷한 처리량을 보고했지만, 하드웨어, 문장 길이, 후보 수가 바뀌면 결과도 달라집니다.
따라서 적용 순서는 분명합니다. 먼저 한 입력에서 서로 다른 유효 답이 필요한 대화, 질문 생성, 패러프레이즈인지 확인하고, 다음으로 적은 후보와 많은 후보의 품질 차이를 측정합니다. 마지막으로 MBR 비용까지 포함한 end-to-end 지연 시간을 비교해야 합니다. DiffuSeq의 가치는 “한 번에 완성된 한 문장”보다 전체 문장을 반복 수정하며 여러 가능성을 탐색하는 문제에서 더 잘 드러납니다.
내 작업에 맞는지는 같은 후보 예산으로 비교한다
DiffuSeq를 평가할 때 자기회귀 baseline은 한 문장만 만들고 DiffuSeq는 스무 후보를 만든 뒤 가장 좋은 것만 제출하면 공정하지 않습니다. 먼저 한 요청에 허용할 시간이나 계산량을 고정하고, 그 안에서 각 방식이 몇 개의 유효 후보를 만들 수 있는지 비교해야 합니다. 평가표에는 최소한 다음 항목이 필요합니다.
| 관찰 항목 | 확인할 질문 | 실패 신호 |
|---|---|---|
| 조건 충실도 | 입력의 핵심 의미가 출력에 남았는가 | 주체, 숫자, 부정 표현이 바뀜 |
| 다양성 | 후보가 실제로 다른 표현인가 | 어미만 다른 문장이 반복됨 |
| 유창성 | 문법과 문장 흐름이 자연스러운가 | 중간 구절이 중복되거나 끊김 |
| 선택 품질 | MBR이 사람이 고른 후보와 가까운가 | 무난하지만 틀린 문장이 선택됨 |
| 전체 비용 | 생성과 선택을 합쳐 제한 안에 드는가 | 후보를 늘릴수록 대기 시간이 급증 |
예를 들어 고객 문의를 더 간단한 문장으로 바꾸는 작업이라면 고유명사, 주문 번호, 취소 여부를 보존 조건으로 둡니다. 같은 입력에 후보 1개, 5개, 20개를 만들고 보존 조건을 통과한 후보 비율을 기록합니다. BLEU 같은 평균 점수가 올라도 주문 번호가 자주 바뀐다면 실제 서비스에는 쓸 수 없습니다. 반대로 후보 다섯 개에서 이미 대부분 통과한다면 스무 개까지 늘리는 비용은 낭비일 수 있습니다.
MBR은 정답 판별기가 아니라 후보 집합의 대표 선택기다
MBR은 후보끼리 유사한 정도를 이용해 집합을 잘 대표하는 문장을 고릅니다. 따라서 후보 대부분이 같은 오류를 공유하면 그 오류가 있는 문장이 오히려 중심에 놓일 수 있습니다. 입력에 없는 사실을 덧붙였는지, 반드시 포함해야 할 구절을 빠뜨렸는지는 별도 제약으로 검사해야 합니다.
실무 선택기는 두 단계로 구성하는 편이 이해하기 쉽습니다. 먼저 길이, 금지 표현, 핵심 entity 보존처럼 명확한 조건을 통과하지 못한 후보를 제외합니다. 그다음 남은 후보에서 MBR이나 작업별 점수로 하나를 고릅니다. 모든 후보가 1차 검사를 실패하면 억지로 하나를 내보내지 말고 재생성하거나 사람이 확인하도록 보내야 합니다. 이 종료 조건이 없으면 다양성 기능이 오류를 많이 만드는 기능으로 바뀔 수 있습니다.
실패 원인은 생성과 선택 단계로 나눠 추적한다
최종 문장이 나쁠 때 모델 전체를 다시 학습하기 전에 어느 단계가 실패했는지 구분합니다. 좋은 후보가 하나도 없다면 denoising 설정, 학습 데이터, 조건 표현을 점검합니다. 좋은 후보가 있었는데 선택되지 않았다면 MBR 기준이나 사전 필터가 문제입니다. 좋은 후보는 있지만 시간이 너무 오래 걸렸다면 확산 단계와 후보 수를 함께 줄여야 합니다.
운영 기록에는 입력 길이, 확산 단계, 후보 수, 유효 후보 수, 선택된 후보의 순위, 총 시간을 남깁니다. 이 기록이 있어야 품질 저하가 모델 변경 때문인지 후보 예산 변경 때문인지 알 수 있습니다. DiffuSeq의 도입 판단은 논문의 최고 점수가 아니라, 내 조건을 지킨 서로 다른 문장을 정해진 시간 안에 몇 개 얻는가로 내리는 것이 맞습니다.
작은 실험은 네 개의 입력 유형으로 구성한다
평균 점수 하나로는 조건 보존과 다양성을 동시에 알기 어렵습니다. 원문의 task 성격을 따라 짧은 대화 응답, 질문 생성, 문장 단순화, 패러프레이즈를 나누고 각 유형에서 길이와 모호성을 달리한 입력을 준비합니다. 질문 생성에서는 주어진 답을 실제로 물어보는지, 단순화에서는 원문의 핵심 관계를 버리지 않는지, 패러프레이즈에서는 의미는 같되 표현이 달라지는지를 별도 기준으로 봅니다.
한 유형에서 좋은 설정이 다른 유형에도 맞는다고 가정하지 않습니다. 문장 단순화는 원문 보존이 다양성보다 중요할 수 있고, 대화 응답은 여러 자연스러운 답이 허용될 수 있습니다. 따라서 후보 수와 선택 기준을 task별로 기록해야 합니다. 전체 평균만 남기면 쉬운 패러프레이즈의 개선이 중요한 조건 누락을 가릴 수 있습니다.
재현 가능한 비교를 위해 random seed, 최대 길이, denoising step, 후보 수와 선택 방식을 함께 고정합니다. 같은 설정을 여러 번 실행해 유효 후보 수가 크게 흔들리는지도 봅니다. 최종적으로는 사람이 고른 후보와 자동 선택의 일치 사례뿐 아니라, 불일치 사례를 모아야 선택기가 어떤 문장을 선호하는지 이해할 수 있습니다.
함께 읽으면 이해가 이어지는 글
- Diffusion 학습 코드는 왜 원본 이미지 대신 Noise를 맞출까? — DDPM 코드의 perturb_x, get_losses, sample 흐름을 따라 정답 noise를 예측하는 학습과 역순 denoising 추론을 연결하고, Stable Diffusion, conditioning의 위치를 설명합니다.
- HunyuanVideo 13B는 어떻게 영상을 만들까: 데이터, 3D VAE, 실행 전제 — HunyuanVideo의 다단계 영상 필터링, Causal 3D VAE 압축, Transformer Diffusion 학습 흐름과 공개 명령을 실행 전에 확인할 조건을 정리합니다.
- RAE가 VAE보다 빨리 수렴할까: 1152차원 표현 공간의 이득과 비용 — SigLIP-2 표현을 쓰는 RAE가 100k 스텝에서 보인 수렴 이득과 고차원 잠재 공간의 비용을 함께 살펴봅니다.
자주 묻는 질문
DiffuSeq는 입력 문장에도 노이즈를 넣나요?
아닙니다. 조건으로 쓰는 입력은 보존하고 생성 대상인 출력 임베딩만 단계적으로 흐린 뒤 복원하는 partial noising을 사용합니다.
후보를 많이 만들면 항상 결과가 좋아지나요?
후보 다양성은 늘 수 있지만 중복 후보와 추론, 선택 비용도 커집니다. 후보 수별 정답률, 다양성, 지연 시간을 함께 측정해야 합니다.
DiffuSeq가 자기회귀 모델보다 항상 빠른가요?
아닙니다. 반복 denoising과 여러 후보 생성, MBR 선택을 합친 전체 시간이 길어질 수 있으므로 같은 하드웨어와 문장 길이에서 비교해야 합니다.
←→ 키와 좌우 스와이프를 지원합니다. 읽던 페이지는 이 기기에 저장됩니다.