문장을 고치다가 원래 뜻을 잃어버릴 수 있다
보고서를 여러 사람이 차례대로 수정한다고 생각해 봅시다.
앞사람이 만든 수정본만 다음 사람에게 넘기면, 처음 문장의 중요한 내용이 조금씩 빠질 수 있습니다.
수정본과 원본을 함께 넘기면, 새로운 설명을 추가하면서도 처음의 핵심 내용을 확인할 수 있습니다.
층이 깊어질수록 원래 정보가 약해질 수 있다
Transformer의 한 층은 입력 벡터를 받아 새로운 벡터로 바꿉니다. 이런 변환을 여러 번 반복하면 문맥은 풍부해지지만, 처음 입력된 기본 정보가 지나치게 변할 수도 있습니다.
새 결과에 원래 입력을 다시 더하자
Residual Connection의 아이디어는 매우 단순합니다.
원래 입력
새 계산 결과
다음 출력 = 새로 계산한 결과 + 원래 입력
왜 Residual이라는 이름을 사용할까?
모델이 처음부터 완전히 새로운 표현을 다시 만드는 대신, 원래 입력에 추가로 필요한 변화만 학습한다고 생각할 수 있습니다.
원래 정보를 모두 다시 계산해야 하므로 학습 부담이 큽니다.
원래 정보는 그대로 두고, Self-Attention이 찾은 새로운 문맥만 추가합니다.
Tom의 기본 의미를 유지하면서 문맥을 추가한다
학습 신호도 더 쉽게 지나갈 수 있다
딥러닝 모델은 출력에서 계산한 오차를 앞쪽 층으로 전달하며 Weight를 수정합니다. 층이 깊어지면 이 학습 신호가 앞쪽까지 도달하기 어려울 수 있습니다.
학습 신호가 모든 계산 단계를 차례대로 통과해야 합니다.
학습 신호가 원래 입력으로 이어지는 짧은 길을 통해 더 쉽게 전달될 수 있습니다.
Transformer 한 층에서 어디에 사용될까?
Feed Forward Network 뒤에도 같은 방식의 Residual Connection이 사용됩니다.
Residual Connection의 유무를 비교해 보자
아래 버튼을 눌러 여러 층을 지날 때 원래 정보가 어떻게 전달되는지 확인해 보세요.
정보 전달
원래 정보가 계속 변환됨
각 층의 계산 결과만 다음 층으로 전달되므로, 처음 입력의 특징이 약해질 수 있습니다.
자주 생기는 오해
아닙니다. Self-Attention과 Feed Forward 계산은 그대로 수행합니다. 그 결과에 원래 입력을 추가하는 것입니다.
계산을 생략하는 것이 아니라, 계산 경로 옆에 원래 입력이 지나가는 추가 통로를 만드는 것입니다.
원래 정보를 더했다고 끝일까?
원래 입력과 새 계산 결과를 더하면 정보는 잘 보존됩니다. 하지만 값의 크기가 서로 다르면 다음 층의 계산이 불안정해질 수 있습니다.
핵심 정리
- Transformer는 여러 층을 쌓기 때문에 원래 입력 정보가 약해질 수 있습니다.
- Residual Connection은 새 계산 결과에 원래 입력을 다시 더합니다.
- 계산 단계를 우회해 원래 입력이 지나가는 길을 Skip Connection이라고도 합니다.
- 모델은 완전히 새로운 표현보다 원래 입력에 필요한 변화분을 추가하도록 학습할 수 있습니다.
- Residual Connection은 원래 정보를 보존하는 데 도움을 줍니다.
- 학습 신호가 깊은 층을 더 쉽게 지나가도록 돕습니다.
- Transformer에서는 Self-Attention과 Feed Forward 블록 주변에 사용됩니다.
- Residual 결과는 Layer Normalization을 거쳐 다음 단계로 전달됩니다.