인프런 커뮤니티 질문&답변

김남욱님의 프로필 이미지
김남욱

작성한 질문수

최신 딥러닝 기술 Vision Transformer 개념부터 Pytorch 구현까지

비전 트랜스포머 - 학습 결과

헷갈리는게 몇개 있습니다ㅠㅠ

해결된 질문

작성

·

284

1

안녕하세요 강사님.

Transformer 에 대해 처음 공부해보니 헷갈리는 부분들이 있어서 질문남깁니다.

1) k 개의 Multi-Head를 만든 후에 Linear를 해주는 이유가 따로 있는지 궁금합니다. 단순히 Residual Connection을 위해 차원을 맞춰주기 위해 하는 것인가요??

2) Head의 개수(k)는 CNN에서 필터 개수처럼 사용자가 정해주는 파라미터인가요??

3) 클래스 토큰까지 Positional Embedding을 더해줘야 하는 이유가 따로 있을까요??

좋은 강의 덕분에 따라가긴 하는데 한 번에 이해하려하니 과부하가 와서 헷갈리는게 생기네요ㅠㅠ

코드 분석 파트 들어가면 조금 더 이해가 될 것 같은데 우선적으로 질문남겨봅니다.

답변 1

0

딥러닝호형님의 프로필 이미지
딥러닝호형
지식공유자

안녕하세요.

좋은 질문입니다.

1) 어떤 의도로 물어보신지 잘 모르겠지만 멀티 헤드나 그 뒤에 붙은 linear 블럭 모두 같은 크기로 출력값이 나오게 됩니다. 즉, 항상 차원이 맞게 됩니다. 이는 모델의 깊이를 자유롭게 조정하는데 용이한 구조입니다.

2) 예 맞습니다. 임의로 정해주시면 되는데요. 다만, 우리 코드에서는 head dimension = latent_vec_dim / num_heads으로 정의되어 있기 때문에 latent vector dimension에 나누어 떨어지는 수로 정해주시면 됩니다 :)

3) 흥미로운 질문입니다. 개인적인 생각으로는 편의상 그냥 포지셔널 임배딩을 더해준 것 같습니다. 만약 클래스 토큰을 배제하고 다른 크기의 포지셔널 임배딩을 조작한다면 프로그래밍 측면에서 생각보다 귀찮은 일이기도 하고 더하기 연산 보다 더 느릴 수도 있고요. 그리고 포지셔널 임배딩에 대해 분석할 때에도 포지셔널 임배딩의 첫번째 열은 배제합니다!

 

감사합니다.

김남욱님의 프로필 이미지
김남욱
질문자

답변 감사드립니다!

강의를 통해 Head 수에 따라 다양한 영역에 대한 Attention 이 가능하다고 이해했습니다. 이에 따른 추가적인 궁금한 부분이 있습니다. (아래 질문은 배치 사이즈를 배제하고 질문드립니다.)

  1. Umsa를 통한 Linear Projection 이전의 shape는 (N x Dh x k) 이고, 이후의 shape는 (N x D)로 k가 사라져서 다양한 영역을 Attention 하고자 하는 의도가 사라지는 것 아닌지, 그렇다면 Umsa의 역할이 무엇인지 헷갈렸습니다. Umsa를 통한 Linear Projection을 진행한 후에도 다양한 영역을 Attention하고자 하는 Head의 특성이 반영되기에 상관이 없는건지 궁금합니다.

  2. Umsa도 무작위로 주어지고 학습을 통해 최적화되는 것이 맞을까요?

김남욱님의 프로필 이미지
김남욱

작성한 질문수

질문하기