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