[Computer Vision] Transformers I

2024. 9. 25. 10:46·Computer Vision
목차
  1. Word Embedding 
  2. Word2vec
  3. GloVe
  4. Transformers
  5. Review: MLP, CNN and RNN
  6. Main Idea
  7. More Details on Transformers
  8. Remaining Questions
  9. Token Aggregation
  10. Transformer: Encoder
  11. Transformer: Decoder
  12. BERT
본 포스팅은 서울대학교 이준석 교수님의 '시각적 이해를 위한 머신러닝 (2023 spring)' 강의를 바탕으로 작성되었습니다.
모든 내용의 출처는 해당 강의에 있습니다.
Courses: http://viplab.snu.ac.kr/viplab/courses/mlvu_2023_1/index.html
Youtube: https://www.youtube.com/watch?v=NIFnKN2tWsE&list=PL0E_1UqNACXDTwuxUzCl5AeEjXBfWxCwc&index=14

 

Word Embedding 

  • 이미지 처럼 단어도 벡터로 표현될 수 있음
  • d 차원의 공간 상에서 벡터로 표현
  • 이에 따라 문장도 벡터로 표현 가능

Word2vec

  • 대규모 코퍼스를 이용하여
    • 주변 단어들로부터 현재 단어를 예측 (Common Bag of Words; CBOW) 하거나
    • 현재 단어로부터 주변 단어들을 예측 (Skip-gram)
  • 단어의 의미는 주변 단어들에 의해 결정됨 (어떤 단어는 특정 단어들과 더 많이 쓰임)
  • 단어 벡터들이 likelihood를 최대화하도록 설계됨
  • 수식은 모든 단어들에 대해(i) 주변 단어들(j)에 대한 확률을 모두 곱하는 것을 의미

 

GloVe

  • Global Vectors
  • 두 단어 임베딩이 co-occurrence 비율을 따라가도록 학습 
  • 표의 마지막 행을 보면, k에 어떤 단어가 오느냐에 따라 ratio 값이 달라짐
    • ice를 대체하는 solid가 오면 커지고, steam을 대체하는 gas가 오면 작아짐
    • water는 그 중간 정도, 아예 상관 없는 단어가 나오면 1에 가깝게

Transformers

Review: MLP, CNN and RNN

  • MLP and CNN

    • 입력 x를 레이블 y로 가장 잘 매핑할 수 있는 가중치를 찾는 것
    • 조금 더 러프하게 표현하자면 출력은 입력의 가중합을 의미
  • RNN

    • RNN 또한 마찬가지로 출력은 입력의 가중합으로 표현되고 가중치를 찾는 것이 목적

 

Main Idea

  • Assumption
    • 입력 x는 서로 유기적으로 관계 있는 multiple elements로 분리될 수 있음
      • 단어들로 이루어진 문장
      • 프레임들로 이루어진 비디오
  • Self-attention
    Recap of Attention function

    • 이렇게 분리된 요소들 간의 문맥을 파악하여 개별 요소들의 의미(표현)를 찾음
    • 마찬가지로 가중합이지만, 다른 요소들의 가중합임
  • Query, Key, and Value
    • x1,x2,...,xNx1,x2,...,xN의 입력 토큰이 있을 때
    • 각각의 토큰 xixi는 이전 어텐션과 달리 Query, Key, Value 모두로 변환될 수 있음
    • 이때, 선형 변환을 위한 각각의 가중치 WQ,WK,WVWQ,WK,WV가 존재하고 이 가중치들이 학습되는 파라미터
    • 또 다른 학습 파라미터 WOWO가 존재하는데 이는 Attention value를 다시 토큰으로 복구하는 역할을 함
  • Example1
    • 각각의 토큰 xixi가 Query가 되며, 자기 자신을 포함하여 모든 토큰들을 참조함
    • 그림과 같이 각각의 토큰 xixi가 또 다른 형태의 가중합으로 변환된다는 의미에서 트랜스포머라고 불림
      • zi=W1V1+...+WNVNzi=W1V1+...+WNVN, 그리고 Wj=cos(Qj,Kj)Wj=cos(Qj,Kj)
    • WoWo는 Value를 다시 원래의 임베딩 공간으로 되돌리는 역할
    • 결과 임베딩 z1z1은 원래의 토큰 x1x1과 여전히 가장 유사하지만 동일하지는 않음
      • 자신을 표현하는 데에 있어 다른 토큰들을 활용 (contextualize)
  • Example2

More Details on Transformers

Remaining Questions

  • 출력은 여전히 (표현이 조금 달라진) 입력 토큰의 시퀀스인데, 이것으로 분류나 회귀와 같은 task에 어떻게 접목할 수 있는지
  • 트랜스포머 모델을 어떻게 학습시켜야 하는지
    • ground truth 설정은 어떻게 ?
    • loss는 어디서 발생 ?
  • RNN과 달리 토큰의 순서는 무시되는데 이는 어떻게 다루는지

 

Token Aggregation

  • Average Pooling

    • 가장 단순하게 모든 토큰에 평균을 취하는 방법
    • 그리고 그 위에 classifier나 regressor를 붙임
    • 시퀀스의 길이가 그리 길지 않거나 토큰들의 각각의 의미가 크게 차이가 나지 않는 경우에는 잘 작동함
  • Classification Token

    • [CLS]라고 하는 더미 역할을 하는 분류 토큰을 추가함
    • 이 분류 토큰은 어떠한 입력 토큰에도 치우쳐져 있지 않기 때문에 문장 전체를 대변하는 역할을 하게 됨
    • 단순 평균과 다른 이유는, 이 토큰 자체가 어텐션 매커니즘을 수행하기 때문
    • 그림과 같이 분류 토큰이 변환된 z0z0에 분류기를 달 수 있고 task에 따라 나머지 토큰에도 달 수 있음
      • 예를 들어, 유해 매체를 분류하는 task의 경우 개별 장면들이 중요하기 때문에 Token-level prediction 적용

 

Transformer: Encoder

Step 1: Input Embedding

  • 입력은 동일한 크기의 벡터인 토큰들의 시퀀스
    • Text: 사전 학습된 단어 임베딩
    • Image: 동일한 크기의 작은 이미지 패치
    • Video: 프레임 임베딩

Step 2: Contextualizing the Embeddings

  • Query, Key, Value representations

    • 그림과 같이 가중치를 이용해 입력(original embedding)을 Q, K, V로 변환
  • Self-attention

    • 모든 단어들에 대해 Q, K, V 각각 존재
    • 각각의 단어들을 Q로서, K와의 연산을 통해 유사도를 구함
    • 이 유사도를 가중치로서 V와 가중합
    • 결과값인 attention value Z는 동일한 크기를 가지는 contextuaized된 새로운 단어
  • Multi-head Self-attention

    • 그림과 같이 주어진 문장에서는 대명사 it이 animal을 가리키지만, 문장이 달라지만 가리키는 단어 또한 달라질 수 있음
    • 이러한 사실을 반영하여 Q, K, V로 multiple projection이 되게 하여 단어의 표현이 다양한 의미를 커버할 수 있도록 함
    • 헤드의 개수는 4, 8, 12, ... 개로 사용
    • multiple head에 따른 여러 개의 z들을 단순히 concatenation한 뒤에 가중치 WoWo와 곱하여 원래 크기로 되돌림
  •  Whole Process

    • 행렬 계산 → 개별 과정을 동시에 진행하는 것과 같음
    • 행으로 뜯어서 살펴보면 개별 과정의 결과와 동일 (이때, Query만 분리해서 계산하는 게 편함)
    • 동일 과정을 head 개수만큼 반복
    • 결과 z가 다음 레이어에서 X 자리에 들어가서 새로운 입력이 됨. 레이어 개수만큼 다시 반복

Step 3: Feed-forward Layer

  • Multi-head Attention을 거친 각각의 임베딩이 FC Layer를 통과함 (그게 더 성능이 좋다고 함)
  • 이때, cross-token dependency 없이 각 임베딩이 개별적으로 통과
  • 출력은 여전히 동일한 크기의 contextualized 토큰
  • 어텐션 레이어와 FC 레이어 뒤에 Residual connection, layer normalization도 추가
  • 이러한 Self-attention Block을 N번 쌓음

Positional Encoding

  • i는 각 단어를 벡터로 표현했을 때 채널 인덱스
  • 수식을 보면 i가 dmodeldmodel에 가까워질 수록 사인 함수의 주기가 매우 작아짐. 즉 변동성이 거의 없음
  • PE는 두 가지 목적이 있는데,
    • 첫 번째는, 어떠한 두 단어도 동일한 인코딩을 갖지 않도록 함
      • 이는 앞서 채널 인덱스 i에 따른 사인 함수의 주기에 변화를 주어서 구현
    • 두 번째는, 인접한 두 단어끼리는 PE가 비슷하도록 함
      • 문장 안에서 단어의 순서와 역할 간에 절대적인 연관성이 없다는 사실을 반영 (예를 들어, 문장이 길어지면서 주어는 더 뒤로 밀릴 수 있음)
      • 이는 주기 함수(sin, cos)로서 구현

 

Transformer: Decoder

Step 4: Decoder Input

  • 앞서 인코더의 출력 Z={z1,...,zn}Z={z1,...,zn}에 따라 디코더는 시퀀스를 auto-regressive하게 출력
    • 예를 들어, 기계번역 task라면 번역된 단어들을 하나씩 생성해 나감
  • Positional Encoding이 여기에서도 동일하게 적용

Step 5: Masked Multi-head Self-attention

  • 'I am a student'라는 영어 문장을 '나는 학생이다'라는 한글 문장으로 번역하는 task라고 가정하면, 앞서 인코더를 통해 영어 문장이 일련의 임베딩 Z로 표현되었을 것임
  • 이제 디코더는 [SOS]와 같은 시작 토큰을 받아서 '나는'이라는 단어를 예측해야 함 (정확히는 다음 단어에 대한 확률분포)
  • 이 과정이 반복되면서 뒤에 올 단어들을 순차적으로 예측하며 문장을 완성
  • '나는 학생'까지 예측했다면 다음 time step에 대한 정보가 없음 → 이를 masked 되어있다고 표현
  • '나는 학생'이라는 문장만을 가지고 인코더와 동일하게 어텐션 수행 → Masked Multi-head Self-attention

Step 6: Encoder-Decoder Attention

  • 그렇다면 뒤에 올 단어에 대한 정보가 없는 상태에서 어떻게 예측을 하는가?
  • 이때 인코더로부터 Key, Value를 참조하여 Cross-attention 수행
  • Query는 아래에서 올라온 자기 자신을 그대로 사용

Step 7: Feed-forward, Linear Layer

  • 인코더와 동일하게 feed-forward layer 적용
  • Residual, layer normalization, N stacked block도 마찬가지로 동일하게 적용
  • Linear Layer를 추가하여 출력 임베딩을 class score로 매핑

Step 8: Softmax Layer

  • 앞서 class score를 확률분포로 변환하기 위해 softmax를 취함
  • 이 확률 분포가 1-hot-encoding된 ground truth와의 비교를 통해 loss가 계산되고 역전파가 이루어짐
  • 이러한 디코딩 과정이 다음 단어를 [EOS]로 예측할 때까지 반복됨
  • 가장 높은 확률을 가진 단어를 선택하는 greedy 방식, 혹은 top-k를 고려하는 beam search와 같은 방식이 사용될 수 있음

BERT

  • Bidirectional Encoder Representations from Transformers
    • 트랜스포머 모델의 인코더만을 사용하여 대규모 단어 임베딩을 pre-training
    • Self-supervised 방식
    • 오늘날 pre-trained BERT가 단어 임베딩에 거의 디폴트로 쓰임
  • 입력 시퀀스는 다음과 같은 임베딩들을 합친 두 개의 문장으로 구성
    • Token embedding: 사전 학습된 단어 임베딩
      • [CLS]: Classification 토큰. 문장 전체를 대변하는 표현
      • [SEP]: Separator 토큰. 문장의 마침표
    • Segment embedding: 각 토큰이 첫 번째 문장, 두 번째 문장 둘 중 어디에 속하는지
    • Position Embedding: 각 토큰의 위치
  • Training task 1: Masked Language Modeling (MLM)

    • 그림과 같이 문맥을 보고 유추하여 문장을 완성하는 작업
    • 15%의 토큰을 랜덤으로 마스킹 ([MASK]라는 토큰을 적용)
      • 단어들을 가리기만 하면 되므로 매우 효율적인 self-supervised 학습 방식
    • 해당 부분에 분류기를 달아서 학습
    • 각 단어들의 의미를 배우기 위함
  • Training task 2: Next Sentence Prediction (NSP)
    • 두 문장이 연속적인지 아닌지를 판단하는 이진 분류 작업
    • 학습 데이터의 절반은 실제로 연속된 문장으로, 나머지 절반은 랜덤으로 선택된 문장으로 구성
    • 앞서 [CLS] 토큰에 분류기를 달아서 이진 분류를 학습시킴
    • 문장과 문장 간의 관계성을 배우기 위함
    • 나중에 밝혀진 사실로는 큰 의미는 없는 task이고 MLM이 훨씬 중요

 

'Computer Vision' 카테고리의 다른 글

[Computer Vision] Metric Learning  (0) 2024.10.01
[Computer Vision] Segmentation  (2) 2024.09.30
[Computer Vision] Object Detection  (1) 2024.09.29
[Computer Vision] Transformers II  (4) 2024.09.27
[Computer Vision] RNN-based Video Models  (3) 2024.09.24
  1. Word Embedding 
  2. Word2vec
  3. GloVe
  4. Transformers
  5. Review: MLP, CNN and RNN
  6. Main Idea
  7. More Details on Transformers
  8. Remaining Questions
  9. Token Aggregation
  10. Transformer: Encoder
  11. Transformer: Decoder
  12. BERT
'Computer Vision' 카테고리의 다른 글
  • [Computer Vision] Segmentation
  • [Computer Vision] Object Detection
  • [Computer Vision] Transformers II
  • [Computer Vision] RNN-based Video Models
ymkwon
ymkwon
공부 기록, 논문 리뷰 등에 대한 정리
ymkwon공부 기록, 논문 리뷰 등에 대한 정리
  • ymkwon
    ymkwon
    ymkwon
  • 전체
    오늘
    어제
    • 분류 전체보기 (21)
      • CS231n (9)
      • 기계학습 (2)
      • 딥러닝 (0)
      • Paper Review (4)
      • Computer Vision (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    딥러닝
    cs231n
    멀티모달
    컴퓨터비전
    cs231
    기계학습
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
ymkwon
[Computer Vision] Transformers I

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.