[ PT Lecture Review ] ATTENTION, Visualizing and Understanding

BING·2024년 9월 3일

[ 개념 정리 ML/DL ]

목록 보기
6/8

[Attention]

[개념] 인코더랑 디코더란?

  • 입력과 출력: 인코더는 원본 입력 시퀀스를 받아들이고, 이를 하나의 context vector로 변환

  • 디코더는 이 context vector를 입력받아 출력 시퀀스를 생성

  • 작동 순서: 인코더는 입력 시퀀스를 처음부터 끝까지 순차적으로 처리한 뒤, 마지막에 context vector를 생성하고 디코더는 이 context vector를 받아, 출력 시퀀스의 각 시점을 순차적으로 예측함

  • 목적: 인코더의 주된 목적은 입력 데이터를 압축하여 의미 있는 표현으로 변환하는 것이며, 디코더의 주된 목적은 이 표현을 바탕으로 새로운 시퀀스를 생성하는 것

[개념] Attention 메커니즘의 도입

Attention 메커니즘은 디코더가 출력의 각 단어를 생성할 때, 인코더의 모든 hidden state를 고려하여 가장 관련 있는 입력 단어에 집중할 수 있게 함.
기존 RNN의 Seq2Seq(Sequence-to-Sequence) 구조와 Attention 메커니즘이 추가된 Seq2Seq 구조의 주요 차이점은 어떻게 정보가 전달되고 사용되는지에 있음

  • Encoder의 context vector: 입력 시퀀스의 전체 정보를 하나의 벡터로 압축한 것임. Attention이 없는 Seq2Seq 모델에서 사용됨.
  • Decoder의 context vector (with Attention): 디코더가 출력 시퀀스의 각 단어를 생성할 때마다, 인코더의 모든 hidden state를 가중합하여 생성된 벡터임. 디코더가 각 시점에서 집중해야 할 입력 단어의 정보를 담고 있음.

1. 기본 Seq2Seq 모델

Seq2Seq 모델의 기본 구조는 다음과 같음:

  • Encoder: 입력 시퀀스를 받아 하나의 context vector로 요약함. 이 벡터는 입력 시퀀스의 정보를 압축한 것으로, 디코더가 이 벡터를 기반으로 출력을 생성함.

  • Decoder: 인코더에서 전달받은 context vector를 기반으로 새로운 시퀀스를 생성함. 예를 들어, 영어 문장을 입력받아 한국어 문장으로 번역할 때, 영어 문장이 context vector로 요약되고, 디코더는 이 벡터를 사용해 한국어 문장을 생성함.

기본 Seq2Seq 모델에서의 문제점은 인코더가 입력 전체를 단 하나의 context vector로 요약한다는 점임. 이 벡터가 모든 중요한 정보를 담기 어려울 때, 디코더의 성능이 저하될 수 있음.

2. Attention 메커니즘의 도입 ( self attention )

Attention 메커니즘은 이 문제를 해결하기 위해 고안됨. Attention은 디코더가 출력 시퀀스의 각 단어를 생성할 때, 인코더의 모든 hidden state에 "집중(attend)"할 수 있게 함. 즉, 각 출력 단어를 생성할 때 입력의 모든 단어를 다르게 "참조"하는 방식임.

따라서 RNN과 Attention을 사용한 Image Captioning은 다음과 같이 각 디코더의 타임스템프 마다 다른 컨텍스트 벡터를 사용해서 인풋 이미지의 각기 다른 파트를 주목할 수 있음

3. Encoder의 Context Vector vs. Decoder의 Context Vector

  • Encoder의 Context Vector: 인코더의 context vector는 기본적으로 인코더의 마지막 hidden state로, 입력 시퀀스 전체를 요약한 벡터임. 하지만 Attention 메커니즘이 없는 경우, 이 벡터는 입력 시퀀스 전체의 정보를 압축해서 전달해야 하기 때문에 정보 손실이 발생할 수 있음.

  • Decoder의 Context Vector (Attention에서의 Context Vector): Attention 메커니즘이 적용되면, 디코더는 고정된 하나의 context vector 대신 각 현재 시점에 맞게 생성한 새로운 context vector를 사용함. 이 벡터는 디코더가 특정 시점에서 출력 단어를 생성할 때 인코더의 모든 hidden state를 가중 합하여 만들어짐. 이 가중치는 디코더가 현재 생성하는 단어와 관련된 인코더의 단어에 따라 달라지며, 가장 관련성 높은 단어에 더 높은 가중치를 부여함.

4. Attention 메커니즘의 원리

Attention 메커니즘의 작동 원리는 다음과 같음:

  1. 인코더의 모든 hidden state: 인코더는 입력 시퀀스의 각 단어에 대해 hidden state를 생성함. 이 hidden state들은 입력 시퀀스의 모든 정보를 포함하고 있음.

  2. 디코더의 hidden state: 디코더는 출력 시퀀스의 각 단어를 생성하기 위해, 이전 단계에서 계산된 자신의 hidden state와 인코더의 context vector를 사용함.

  3. 가중치 계산: 디코더의 현재 hidden state와 인코더의 모든 hidden state 간의 유사도를 계산하여 가중치(weight)를 만듦. 이 가중치는 디코더가 현재 시점에서 어느 입력 단어에 더 집중해야 하는지를 나타냄.

  4. context vector 생성: 인코더의 hidden state에 가중치를 곱하고 합산하여, 디코더의 현재 시점에 맞는 새로운 context vector를 생성함. 이 vector는 디코더가 다음 단어를 생성하는 데 사용됨.

[개념] Attention 메커니즘의 구조

쿼리(Query): 현재 주목하고 싶은 단어 또는 토큰의 표현 벡터임.
키(Key): 각 단어 또는 토큰의 특성을 나타내는 벡터로, 쿼리와의 유사도를 계산하는 데 사용됨.
값(Value): 각 단어 또는 토큰의 정보가 담긴 벡터로, 최종 어텐션 스코어를 사용해 가중합을 할 때 사용됨.

이 과정을 통해 쿼리와 가장 관련성이 높은 키-값 쌍을 찾아내어 최종 어텐션 스코어를 계산하고, 이를 활용하여 문장이나 시퀀스 내에서 각 요소 간의 중요도를 반영한 결과를 얻음.

Cross attention & Self attention 비교

Cross attention 예시

[개념] Attention Layer ( KEY / QUERY / VALUE )

  • Attention Layer는 입력 데이터 간의 관계를 학습하며, 주로 인코더-디코더 구조에서 사용 ( Cross-Attention (Encoder-Decoder Attention) )
  • 디코더가 출력을 생성할 때는 입력 시퀀스의 정보를 사용해야 함. 이때, 디코더는 인코더에서 나온 hidden state(즉, 인코더가 입력 시퀀스를 처리해 얻은 결과)와 현재 시점에서 디코더의 상태를 함께 사용하여 다음 단어를 예측함. 이 과정이 Cross-Attention !
  • Query는 디코더의 상태, Key와 Value는 인코더의 출력
    • Query (Q): 디코더의 현재 상태에서 나오는 Query
    • Key (K)와 Value (V): 인코더의 hidden state에서 나오는 값들로, Key와 Value로 사용
  • 입력 X: 인코더의 출력(hidden states)이나 다른 소스에서 가져온 벡터들
  • Query (Q), Key (K), Value (V): 해당 입력에 맞는 학습 가능한 가중치 행렬과 곱해져 생성
  • Query 벡터 (Q): 현재 단어가 다른 단어들과 어떤 관련이 있는지를 묻는 질문 역할.
  • Key 벡터 (K): 다른 단어들이 현재 단어와 관련이 있는지 평가하기 위한 기준 정보.
  • Value 벡터 (V): 실제로 최종 출력에 영향을 주는 정보.
    이 벡터들은 모두 입력 단어로부터 학습된 가중치 행렬을 통해 생성되며, 이들이 서로 상호작용하는 방식(즉, Query와 Key 간의 유사도 계산, 그리고 이 유사도를 사용한 Value 벡터의 가중합)이 Attention 메커니즘의 핵심

Attention score = Attention Map * value

Attention Map: self-attention 메커니즘을 통해 생성됨. 입력의 각 부분에 대해 쿼리(Q), 키(K), 값(V) 벡터를 생성하고, 쿼리와 키 간의 유사도(키, 밸류 곱해서 루트(차원)으로 나눈것을 소프트맥스 함수에 넣어서 확률값 얻음)를 계산하여 가중치를 얻음
즉 이는 출력값이 어느정도 기여를 가지는지를 나타내는 값

문장 "I love you"가 있다고 가정, 각 단어가 하나의 입력이 됨: X₁ = "I", X₂ = "love", X₃ = "you".
각 단어 X₁, X₂, X₃가 갖는 Query 벡터 (Q₁, Q₂, Q₃)Key 벡터 (K₁, K₂, K₃)는 Attention 메커니즘에서 중요한 역할을 하는 벡터들로, 입력 데이터와 관련된 정보를 담고 있음.

1. Query 벡터 (Q)

  • 역할: Query 벡터는 특정 단어(또는 입력)가 다른 단어들과 얼마나 관련이 있는지를 묻는 질문 역할을 함.
  • 생성: 각 단어 X₁, X₂, X₃는 학습된 가중치 행렬과 곱해져 각각의 Query 벡터 Q₁, Q₂, Q₃로 변환되며, 입력 데이터를 바탕으로 각 단어의 정보를 담고 있음.

2. Key 벡터 (K)

  • 역할: Key 벡터는 Query 벡터와 비교될 때 기준이 되는 정보로, 다른 단어들이 이 단어와 얼마나 관련이 있는지를 판단하기 위한 기준 정보로 사용됨.
  • 생성: 각 단어 X₁, X₂, X₃는 학습된 가중치 행렬과 곱해져 각각의 Key 벡터 K₁, K₂, K₃로 변환되며, 해당 단어가 다른 단어들과 비교될 때 사용될 정보를 담고 있음.

3. Query와 Key의 상호작용

  • 비교: 특정 단어의 Query 벡터(예: Q₁)는 모든 다른 단어들의 Key 벡터들과 비교되며, 벡터 간의 점곱(dot product)을 통해 유사도(관련성)를 계산함.
  • 결과: 이 유사도 점수는 그 단어가 다른 단어들과 얼마나 관련이 있는지를 나타냄.

4. Value 벡터 (V)

  • 역할: Value 벡터는 실제 정보가 담긴 벡터로, Query와 Key의 상호작용을 통해 얻은 유사도 점수를 가중치로 사용하여 최종 출력에 영향을 미치는 정보를 제공함.
  • 생성: 각 단어 X₁, X₂, X₃는 학습된 가중치 행렬과 곱해져 각각의 Value 벡터 V₁, V₂, V₃로 변환되며, 최종 출력에 영향을 미치는 실질적인 정보를 제공함.

[개념] Self-Attention Layer ( KEY / QUERY / VALUE )

  • Self-Attention Layer입력 시퀀스 내의 각 요소가 다른 요소들과의 관계를 학습하며, 주로 Transformer 모델에서 사용
  • 각 입력 X는 Query (Q), Key (K), Value (V) 세 가지로 변환(이들은 서로 다른 행렬과 곱해져서 만들어지는데, 이 변환 행렬들은 학습 과정에서 모델이 학습함)
  • Query, Key, Value 모두가 동일한 입력 데이터에서 나옴

  • Self-Attention 메커니즘의 순열 등변성(Permutation Equivariance) 성질:
    입력 벡터의 순서를 바꾸더라도 그에 맞게 동일한 연산이 적용
    이 특성 덕분에 Self-Attention 메커니즘은 입력의 순서에 덜 의존적인, 보다 유연한 모델링이 가능

  • Masked Self-Attention Layer

  • Multihead Self-Attention Layer

  • CNN with Self-Attention

    아래 과정을 통해 새로운 feature 를 생성하고 키와 쿼리의 유사도 계산을 통해 소프트맥스 확률값으로 나온 Attention Weights를 실제 Value값에 곱하여 어디에 더 집중할 것인가 확인

  • 순차적 시간 정보를 다룰 수 있는 방법들

[개념] The Transformer Block

먼서 self attention을 통해 각 시퀀스간의 interact, risidual connection, 이후 layer normalization 진행, 각 벡터에 대해 MLP 로 연결, risidual connection, layer normalization 해서 아웃풋 냄

인코더의 주요 구성 요소:

  • 입력 임베딩(Input Embedding)
  • 포지셔널 인코딩(Positional Encoding)
  • 멀티헤드 셀프 어텐션(Multi-Head Self-Attention)
  • 피드 포워드 네트워크(Feed-Forward Network)
  • 잔차 연결 및 레이어 정규화(Residual Connection and Layer Normalization)

디코더의 주요 구성 요소:

  • 입력 임베딩(Input Embedding)
  • 포지셔널 인코딩(Positional Encoding)
  • 마스크드 멀티헤드 셀프 어텐션(Masked Multi-Head Self-Attention)
    • 디코더는 이전에 생성된 단어들만을 사용하여 다음 단어를 예측해야 하기 때문에, 미래의 단어를 참조하지 못하도록 "마스크" 처리가 된 셀프 어텐션을 사용
    • 이 과정에서 디코더는 이전 출력 단어들 간의 관계를 파악
  • 멀티헤드 어텐션(Multi-Head Attention)
    • 인코더에서 나온 컨텍스트 정보를 활용해 디코더가 현재 예측하는 단어와 입력 시퀀스 간의 관계를 계산
  • 피드 포워드 네트워크(Feed-Forward Network)
  • 잔차 연결 및 레이어 정규화(Residual Connection and Layer Normalization)

[개념] The Transformer

Transformer Block의 연속

요약

  • RNN에 Attention을 적용한것은 인풋의 각 타임스템프에 따라 각기 다른 파트를 집중 할 수 있게 만듬
  • Self-attention 은 우수함이 증면됨
  • 트랜스포머는 어텐션을 사용하는 유일한 새로운 neural 네트워크임

[Visualizing and Understanding]

  • 첫번째 레이어 ( visualize filters )

  • 높은 층의 레이어일 수록 추상화된 특징

  • 마지막 레이어(FC layer) : 분류작업에 사용

Visualizing CNN Features 기법

  • Saliency Map

    CNN이 특정 클래스를 예측할 때, 어떤 픽셀들이 중요한 역할을 했는지를 역전파를 통해 알아내는 방법임. Saliency Map을 통해 모델이 어떤 부분에 주목했는지를 시각화
  • CNN의 중간 계층이 입력 이미지에서 어떤 특징을 학습하고 있는지 확인하는 방법
    • Maximally Activating Patches: CNN의 뉴런이 강하게 반응하는 실제 이미지 패치를 시각화하여, 각 뉴런이 학습한 특징을 이해하는 데 도움
    • Guided Backpropagation: 입력 이미지에서 중요한 부분들을 강조하여, CNN이 이미지의 어떤 부분에 주로 주목하는지 시각화

Gradient Ascent


Conditional instance Normalization

조건부 인스턴스 정규화(Conditional Instance Normalization)는 하나의 신경망을 여러 스타일에 사용할 수 있게 하는 기법. 이 방법은 스타일 변환(Style Transfer) 작업에서 특히 유용함

다양한 CNN 표현 이해 요약

  1. 활성화 기반 방법:
    Nearest Neighbors: 특정 이미지의 활성화 값을 기준으로 가장 가까운 다른 이미지들을 찾는 방법.
    Dimensionality Reduction: 고차원의 활성화 값을 저차원으로 줄여 시각화하거나 분석을 용이하게 하는 방법.
    Maximal Patches: 특정 뉴런을 최대한 활성화시키는 이미지 패치를 찾는 방법.
    Occlusion: 이미지의 일부를 가려서 해당 부분이 네트워크의 예측에 미치는 영향을 분석하는 방법.
  2. 기울기 기반 방법:
    Saliency Maps: 이미지의 각 픽셀이 예측 클래스에 얼마나 기여하는지 시각화하는 방법.
    Class Visualization: 특정 클래스를 가장 잘 표현하는 이미지를 생성하는 방법.
    Fooling Images: 인간에게는 무의미하지만, 네트워크가 특정 클래스로 잘못 인식하는 이미지를 만드는 방법.
    Feature Inversion: 뉴런의 활성화 값을 기준으로 입력 이미지를 재구성하는 방법.
  3. 재미있는 응용 방법:
    DeepDream: 이미지의 특정 특징을 과장해서 시각적으로 흥미로운 효과를 만드는 방법.
    Style Transfer: 한 이미지의 스타일을 다른 이미지의 내용에 적용하여 새로운 이미지를 생성하는 방법.
profile
[ SPS Lab Paper Seminar YouTube ] : https://www.youtube.com/@spslab.1648

0개의 댓글