**Autonomous driving tech./*Computer Vision
Transformer
2wnswoo
2025. 6. 27. 17:03
- 주의 (Attention) 메커니즘은 순환 신경망(RNN)의 성능을 획기적으로 향상시켰음
- Seq2Seq 모델의 한계를 극복하고, 더 효과적으로 긴 시퀀스를 처리할 수 있게 해줌
- "Attention is All You Need?" 제안 논문
- Transformer, NLP 분야 혁신적으로 발전시킴
- 높은 BLEU 점수를 얻었음
- *BLEU(Bilingual Evaluation Understudy): 기계 번역 성능 평가 지표 BLEU는 기계가 번역한 문장과 사람이 직접 번역한 참조 문장(Reference) 간의 유사성을 평가, 주로 0부터 1까지의 점수로 표현
- 2016년경, NLP에서 가장 널리 사용되는 방법은, 양방향 LSTM을 이용하여 문장을 인코딩하는 것이였음.
- Attention 메커니즘을 활용하여 주목해야 할 정보에만 접근하여 정보를 더 효과적으로 활용이 가능해짐
- 트랜스포머 동기: 1. 선형 상호작용 거리 최소화
- 장거리 의존성을 학습하기 어려움
- *장거리 의존성: 문장 초반의 정보를 문장 후반까지 제대로 기억하지 못하는 현상
- 단어의 선형순서가 "고정" 되어 있음
- > 이미 시퀀스 구조만으로는 모든 것을 설명할 수 없다는 걸 알고 있음
- 트랜스포머 동기: 2. 병렬화 최대화
- 순방향 및 역방향 패스에는 시퀀스 길이 만큼 병렬화가 불가능한 연산이 존재함
- e.g. 문장 A B C D가 있다면:
- 기존 RNN, LSTM은 A를 처리한 후 → B를 처리 → 그다음 C → D 순으로 진행
- 반면 트랜스포머는 A, B, C, D 모든 단어를 동시에 self-attention 구조로 처리 가능 (병렬화 계산)
- Attention 은 각 단어의 표현을 쿼리로 취급하여, 값의 집합에서 정보를 접근하고 통합하는 방식
- Self-Attention은 여기서 한 걸음 더 나아가, 입력 시퀀스 내의 모든 단어가 서로에게 주목할 수 있게 함
- e.g. "나는 맛있는 사과를 먹었다."
- 위 문장에서의 "맛있는" 이라는 단어는 "사과"에 가장 많이 주목할 것임
- Self-attention은 모든 단어가 서로 직접적으로 정보를 주고 받을 수 있게 해줌
- e.g. "나는 맛있는 사과를 먹었다."
- Transformer는 크게 인코더, 디코더로 나뉨
- 이 둘은, 비슷한 구조를 가지나 각각의 역할이 다름
- 인코더 역할: 입력 문장을 이해, 그 의미를 추상화
- 디코더 역할: 추상화된 정보 바탕으로 출력 문장을 생성
- e.g.입력 문장: “그는 사과를 먹었다”
→ 인코더는 ‘그’, ‘사과’, ‘먹었다’의 관계를 파악하고
→ “누가 무엇을 했다”는 의미 구조로 벡터화하여
→ 디코더가 출력 문장(예: 영어 번역) 생성에 활용할 수 있도록 정보를 정제하는 겁니다. - > 추상화: 문장의 의미를 수치화하여 디코더가 사용할 수 있도록 정리한 것
- e.g.입력 문장: “그는 사과를 먹었다”
- 값(Value)를 찾기 위해 쿼리(query)를 테이블의 키(keys)와 비교함
- e.g. 그는 항구에서 큰 배를 보았고, 그 배를 타고 여행을 떠났다.
- '배' 단어의 의미를 위해 self-attention은 문장 내의 다른 모든 단어와의 관계를 고려함
- 항구, 여행을 통해 이 '배'가 과일이 아닌 선박이라는 것을 이해함
- 이러한 방식으로 Self-Attention은 단어의 모호성을 해소하고 더 정확한 의미파악을 가능하게 함
- > 긴 문장이나 복잡한 구조에서 단어의 의미를 정확하게 이해하는데 큰 도움이 됨
- > 문맥(context)을 기반으로 단어의 의미를 동적으로 결정하는 것, 단어 하나만 보고 판단하는 것이 아닌 전체를 보고 판단하는 이것이 Self-Attention임
- e.g. 그는 항구에서 큰 배를 보았고, 그 배를 타고 여행을 떠났다.
- Attention 메커니즘
- e.g.
- 일반적인 도서 검색 시스템은 정확한 제목이나 저자 이름으로 책을 찾음
- 똑똑한 사서가 있다고 할 때, 어떠한 주제에 대해 물어본다면
- 사서는 모든 책을 한 번 훑어보고 관련성을 판단함
- 그 후 가장 관련 있는 내용들을 종합해서 알려줌
- 이 과정에서 사서는, 질문을 "쿼리", 각 책의 주제를 '키' 책의 내용을 '값'으로 생각함
- e.g.
- 인코더에서 Self-Attention?
- 1단계: 각 단어에 대해 쿼리, 키, 밸류 값을 계산함
- 쿼리: 현재 단어가 무엇을 알고 싶어 하는지?
- 키: 각 단어가 어떤 정보를 가지고 있는지?
- 밸류: 그 정보의 내용을 나타냄
- 2단계: 쿼리와 키들 사이의 Attention Score를 계산함
- 3단계: 소프트맥스를 적용해서 어텐션 스코어를 정규화함
- 4단계: 값을 가중합하여 반환
- 1단계: 각 단어에 대해 쿼리, 키, 밸류 값을 계산함
- 인코더에서 Feedforward Layer?
- Attention 만으로는 충분하지 않음
- 문제: 요소별 비선형성이 없으므로, 셀프 어텐션은 단순히 값 벡터들의 재평균화만 수행
- 해결책: 어텐션의 출력에 피드포워드 레이어를 적용하여 비선형 활성화(+ 추가적인 표현력)을 제공
- 이렇게 Self-Attention 과 Feedforward 층을 결합함으로써, Transformer는 단순한 관계 포착을 넘어서 복잡한 추론까지 가능한 강력한 모델이 되어줌
위의 내용은 기본적인 Transformer을 기술함. 그러나 실제로 깊은 네트워크를 만들기 위해서는 몇 가지 추가적인 기술이 필요함
따라서 Transformer은 세 가지 중요한 학습 기법(훈련 트릭)을 사용함
1. Residual Connection, 잔차 연결
2. Layer Normalization, 층 정규화
3. Scaled Dot Product, 스케일된 점곱 어텐션
아래부터는 자세한 설명을 기술함.
훈련 트릭 #1 : 잔차 연결, Residual Connections