시퀀스-투-시퀀스Sequence-to-Sequence
다 듣고 나서 다른 길이로 다시 만들어 내는 구조
- 시퀀스-투-시퀀스는 줄줄이 들어온 것을 받아 줄줄이 내보내는 구조예요. 번역과 요약과 챗봇이 모두 이 틀 위에서 시작했어요.
- 모델이 듣는 쪽과 만드는 쪽 둘로 나뉘어요. 듣는 쪽은 끝까지 다 읽고, 만드는 쪽은 그 뒤에 하나씩 내놓아요.
- 둘 사이를 잇는 것은 요약 한 덩어리예요. 만드는 쪽은 원문을 보지 못하고 이 덩어리만 봐요.
- 들어온 개수와 나가는 개수가 달라도 돼요. 네 마디를 듣고 세 마디를 내놓을 수 있어요.
- 요약 덩어리 하나에 다 담으려니 긴 글에서 앞부분이 새는 문제가 생겼고, 그 답으로 어텐션이 나왔어요.
목차
1비유로 이해하기
분식집 카운터에서 주문을 받아요. 손님이 "김밥 한 줄이랑 라면 하나, 아 단무지도 좀 더 주세요" 하고 말을 끝낼 때까지 중간에 끊지 않고 끝까지 들어요. 손님 말이 끝나면 그제야 전표 한 장에 주문을 요약해 적어 주방에 넘겨요.
주방은 손님 목소리를 듣지 못해요. 넘어온 전표 한 장만 보고 김밥을 말고, 라면을 끓이고, 단무지를 담아 접시를 하나씩 내놓아요. 손님이 몇 마디를 했는지와 접시가 몇 개 나가는지는 서로 상관이 없어요. 듣는 쪽과 만드는 쪽을 이렇게 둘로 갈라 놓은 것이 시퀀스-투-시퀀스예요.
2자세히 알아보기
듣는 쪽과 만드는 쪽이 따로예요
앞서 나온 순환 신경망은 한 마디를 받으면 곧바로 한 마디를 내놓는 식이었어요. 이 방식으로는 번역을 할 수 없어요. 한국어와 영어는 단어 순서가 다르고 개수도 달라서, 첫 단어를 듣자마자 첫 단어를 내놓을 수가 없거든요.
시퀀스-투-시퀀스는 모델을 아예 둘로 나눠요. 앞쪽은 문장을 읽어 들이기만 하고 아무것도 내놓지 않아요. 뒤쪽은 읽는 일을 하지 않고 만들어 내기만 해요. 둘은 서로 다른 손잡이를 갖고 따로 학습돼요.
다 듣고 나서야 시작해요
읽는 쪽은 문장을 한 마디씩 받아들이며 요약을 계속 갱신해요. 마지막 마디까지 넣고 나면 그 시점의 요약 덩어리 하나가 남아요. 이 덩어리가 문장 전체를 대신하는 짐이에요.
만드는 쪽은 이 덩어리를 출발점으로 삼아 첫 마디를 내놓아요. 그리고 자기가 방금 내놓은 마디를 다시 자기 입력으로 받아 다음 마디를 내놓아요. 이 되먹임이 끝날 때까지 반복돼요.
멈출 때를 알려 주는 표시도 따로 있어요. 문장이 끝났다는 신호와 문장을 시작하라는 신호를 마디처럼 하나씩 만들어 두고 함께 학습시켜요. 만드는 쪽이 끝 신호를 내놓으면 거기서 멈춰요.
길이가 달라도 되는 이유
읽기와 만들기가 완전히 분리돼 있으니 개수를 맞출 이유가 없어요. 읽는 쪽은 마디 수만큼 돌고, 만드는 쪽은 끝 신호가 나올 때까지 돌아요. 네 마디를 읽고 일곱 마디를 내놓아도 아무 문제가 없어요.
이 성질 덕분에 쓸 수 있는 곳이 확 넓어졌어요. 긴 글을 짧게 줄이는 요약, 짧은 질문에 긴 답을 붙이는 대화, 음성을 글자로 옮기는 받아쓰기가 모두 같은 틀에 들어와요. 들어오는 줄과 나가는 줄의 종류가 달라도 상관없어요.
전표 한 장이 좁으면 흘려요
문제는 전표가 한 장이라는 데 있어요. 세 마디짜리 주문이든 서른 마디짜리 주문이든 같은 크기의 덩어리 하나에 눌러 담아야 해요. 주문이 길어지면 앞쪽에서 들은 것부터 자리를 잃어요.
번역에서 이 증상이 뚜렷하게 나타났어요. 짧은 문장은 잘 옮기는데 문장이 길어지면 앞 절의 내용을 통째로 빠뜨리거나 엉뚱하게 바꿔 놓는 일이 잦았어요. 구조 자체에서 오는 한계라 모델을 키운다고 해결되지 않았어요.
3조금 더 정확하게
시퀀스-투-시퀀스는 인코더와 디코더 두 신경망을 이어 붙여, 길이가 정해지지 않은 입력 열을 길이가 다른 출력 열로 바꾸는 틀이에요. 인코더의 마지막 은닉 상태가 문맥 벡터가 되어 디코더의 첫 상태로 들어가요. 초기에는 두 신경망 모두 순환 신경망이나 장단기 메모리로 만들었어요.
비유가 어긋나는 지점도 있어요. 전표에는 사람이 읽을 수 있는 글자가 적히지만 문맥 벡터는 숫자 묶음이라 열어 봐도 읽을 수 없어요. 또 주방은 접시를 동시에 여러 개 만들 수 있지만, 디코더는 앞에서 내놓은 마디를 봐야 다음 마디를 만들 수 있어서 반드시 하나씩 순서대로 나와요.
학습할 때와 실제로 쓸 때 동작이 조금 달라요. 학습할 때는 정답 문장을 미리 넣어 주며 다음 마디를 맞히게 하고, 실제로 쓸 때는 자기가 방금 만든 마디를 다시 넣어요. 그래서 한 번 어긋나면 뒤가 줄줄이 어긋나기도 해요.
4직접 해보기
5흔한 오해
입력과 출력의 개수가 같아야 한다고 생각하기 쉽지만, 실제로는 개수가 달라도 되게 만든 것이 이 구조의 핵심이에요.
만드는 쪽이 원문을 계속 보고 있다고 여기기 쉽지만, 실제로는 기본 구조에서 원문 대신 요약 덩어리 하나만 넘겨받아요.
트랜스포머가 나오면서 이 틀은 사라졌다고 생각하기 쉽지만, 실제로는 읽는 쪽과 만드는 쪽을 나누는 발상이 그대로 이어졌고 부품만 바뀌었어요.
7한 줄 요약
그러니까시퀀스-투-시퀀스는 끝까지 다 읽어 요약 하나로 넘긴 뒤 그것만 보고 다시 하나씩 만들어 내는 구조라, 들어온 길이와 나가는 길이가 달라도 다룰 수 있어요.
잘못된 내용이나 더 좋은 비유가 있나요? 수정 제안 보내기 · 마지막 수정2026-09-02