한 줄 정의
신경망의 특정 서브 레이어가 입력을 변환한 결과물에 변환 전의 원래 입력값을 그대로 다시 더해주는 바이패스(Bypass, 우회) 경로 구조.
핵심 요지
- 수식 표현: (여기서 는 입력 벡터, 는 레이어 연산 결과, 는 최종 출력 벡터).
- 그래디언트 흐름 유지: 역전파(Backpropagation) 시 기울기가 소실되거나 폭주하지 않고 입력단까지 직접 전달될 수 있는 고속도로(Highway) 경로를 제공하여, 극도로 깊은 아키텍처도 안정적으로 학습할 수 있도록 돕는다.
- 선택적 레이어 건너뛰기: 학습 초기나 특정 레이어가 유용한 정보를 생성하지 못할 때 으로 학습되어, 정보 변형 없이 안전하게 다음 레이어로 전달하도록 모델에 유연성을 부여한다.
- 직관적 의미: “어텐션을 통해 무엇을 새로 배웠든 간에, 원래 알고 있던 사실에 그냥 더해라”라는 규칙이다.
상세
- 잔차 경로(Residual Path)의 작동 방식: 입력값 (예: 단어 임베딩과 위치 인코딩의 합)를 버리지 않고 보존한 뒤, 셀프 어텐션(Self-Attention, 자가 어텐션)이나 피드포워드 신경망(FFN, Feed-Forward Network) 등의 서브 레이어 연산을 거친 출력 에 다시 합산해 주는 방식으로 신호를 전달한다. 이를 **스킵 연결(Skip Connection)**이라고도 부른다.
- 그래디언트 소실 방지: 트랜스포머 아키텍처 전반에서 레이어 정규화(Layer Normalization)와 함께 적용되어, 역전파(Backpropagation) 시 그래디언트가 막히지 않고 수많은 레이어를 통과해 흘러갈 수 있게 만든다. 이 연결이 없으면 신경망이 깊어질 때 학습이 거의 불가능해진다. GPT-4와 같이 96개에 달하는 깊은 레이어를 붕괴 없이 학습할 수 있는 기술적 토대가 된다.
- 모델의 표현력 보존: 신경망의 모든 레이어가 매 단계에서 강제로 의미적 변환을 가하도록 강제하지 않는다. 변화가 없는 것이 더 유리할 때는 레이어가 비켜서도록(Get out of its own way) 설계적 탈출구를 제공함으로써, 고밀도의 맥락 정보(고차원 표현 공간)를 훼손하지 않고 깊은 레이어로 이동시킨다.
예시
-
Andrej Karpathy의 microGPT 구현 예시: 외부 의존성 없이 순수 파이썬으로 구현된 microGPT에서는 다음과 같은 단 한 줄의 코드로 잔차 연결을 구현한다:
x = [a + b for a, b in zip(x, x_residual)]이처럼 각 어텐션 블록의 연산 이후 원래의 입력값
x_residual을 결과에 그대로 더해준다. -
트랜스포머 인코더의 “dog” 토큰 연산:
- 입력 : “dog” 단어의 임베딩과 위치 인코딩이 더해진 초기의 512차원 벡터.
- 레이어 변환 : 셀프 어텐션 레이어를 통해 문맥 속 다른 단어(예: “sat”, “couch”)들과의 관계를 파악하고 추출한 의미적 미세 업데이트 분량.
- 최종 출력 : 원래 입력 와 맥락적 업데이트 가 더해진 벡터.
- 만약 해당 어텐션 블록이 해당 단계에서 딱히 추가할 유용한 정보가 없다고 판단하면, 를 0에 수렴하게 만들어 원래의 “dog” 토큰 정보를 그대로 다음 단계로 흐르게 한다.
충돌
- 순방향 피드포워드(Direct Feed-forward) 경로 vs 잔차 경로(Residual Pathway):
- 잔차 연결이 없는 일반 피드포워드 구조는 레이어가 깊어질수록 이전 정보들이 선형/비선형 변환을 거쳐 소실되거나 형태가 왜곡되기 쉽다. 반면 잔차 연결은 입력을 덧셈 연산으로 보존하므로 기존 맥락 정보의 유지력이 매우 높다.
- 단, 덧셈 연산()의 수학적 성질로 인해, 레이어를 통과하기 전 입력 의 차원과 출력 의 차원이 완벽히 일치해야만 연산이 가능하다는 기하학적 제약 조건이 존재한다. 이 때문에 트랜스포머의 FFN 등 차원 확장 및 축소를 거치는 블록의 경우, 블록 내부에서는 차원을 512에서 2048로 확장시켰다가 다시 512차원으로 압축한 후 최종 잔차 합산을 진행한다.