• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

ViT에 대한 전반적인 질문 드립니다!

22.05.12 01:12 작성 조회수 242

1

선생님 안녕하세요, 덕분에 좋은 강의 잘 들었습니다!

 

조금 기초적인? 질문이 있는데요, 어텐션의 key, query, value를 사용해서 key와 query간의 유사도를 도출하고 그 값을 value값에 곱해줌으로써 이미지 안에서 중요한 부분과 상대적으로 덜 중요한 부분을 나타내어 학습을 원활하게 한다고 이해했습니다.

 

하지만 실질적으로 구현했을 때 key, query, value 는 처음에 임의의 Linear Layer에 불과하고 여기에 임베딩된 이미지 패치가 들어오고 연산이 진행되면서 점점 모델의 정확도가 올라가게 되는데요, 그럼 이 과정이 어떤 계산 과정을 거쳐서 성능이 좋아지는것은 확인 하였지만 정확히 왜 이렇게는 되는지 모르는 과정인가요? 

또한, 멀티헤드를 사용하는 이유가 다양한 관점?에서 볼 때 더 좋은 성능이 나온것이 증명되는것으로 이해했는데 맞게 이해 했을까요? 

현재 예제에서는 12개의 Layer들과 통해 8개의 헤드를 통해 총 96개의 어텐션 맵이 도출되게 됩니다. 처음 어텐션이라는 주제를 접했을때 상상속으로는 이러한 96개의 어텐션 맵들이 종합되어 작동할것이라고 예상했는데 실제로는 그렇게 작동되지 않는것으로 이해했습니다. 그렇다면 결과 분석을 할 때 특정 이미지에 대해서 어떠한 어텐션이 결과적으로 적용되어 해당 이미지의 어떤 부분에 집중하였는지를 알 수 있는 방법이 있을까요?

 

마지막으로 클래스 토큰에 해당하는 벡터만 분류에 사용하는 아이디어 역시 어떠한 증명?을 통해 나온 결과가 아니라 단순히 실험적으로 돌려보니 이렇게 해도 결과가 잘 나오더라.. 라는 식으로 접근한 방식인지도 궁금합니다 ^^

 

항상 감사합니다 선생님!

 

답변 1

답변을 작성해보세요.

0

 

안녕하세요!

 

답변을 4개로 나누어 드리겠습니다. 열공하세요!

 

1. 먼저 "연산이 진행되면서 점점 모델의 정확도가 올라가게 되는데요" 라는 의미가 무엇인가요? 

성능이 좋아진다는 것은 역전파에 의해 모델 파라메터들이 최적화 되었기 때문입니다.

추가적으로 우리가 gradient-based optimization 방식을 사용하여 모델을 학습시키면 최적화 과정은 트랜스포머인지 cnn인지와 상관없이 동일한 메카니즘을 통해 진행됩니다.

 

2. 멀티헤드 관련 질문은 이해 하신게 맞습니다. 그런데 증명이라는 말은 쓰시면 안됩니다!!

 

3. 어텐션 맵에 관해서는 이전 레이어의 값들이 다음 레이어로 넘어 가기 때문에 종합적으로 고려되는게 맞습니다. 단지 시각화를 위해 하나하나 씩 뜯어본 것입니다! 또한 어텐션 값은 우리가 계산할 수 있는 값이기 때문에 해당 이미지의 집중 지역을 파악할 수 있습니다. 이 때 사용되는 방법이 매우 다양합니다. 즉, 같은 어텐션을 사용하더라도 해석을 다르게 할 수 있습니다. 해당 주제가 관심 있으시면 attention visualization을 키워드로 공부해 보시면 좋을 것 같습니다 :)

 

4. 구조에 대한 증명은 아직까지 어려운게 현실입니다. 클래스 토큰을 포함한 구조는 실험을 통해 결정된 것입니다.

 

감사합니다.