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

호몰로지와코호몰로지님의 프로필 이미지
호몰로지와코호몰로지

작성한 질문수

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

비전 트랜스포머 - 최신 모델

행렬 차원 수 질문

해결된 질문

작성

·

204

0

안녕하세요.

'비전 트랜스포머-최신 모델' 강의 11:36 근처 슬라이드를 기준으로 질문드리겠습니다. (사실 그 이후부터 계속 지속적으로 차원 혼동이 있는 것 같아서, 하나를 기준삼아서 질문드리면 나머지가 저절로 해결될 것 같습니다.)

 

p=(size of patch)로 정의를 하고 사진을 N개로 쪼갠다고 가정했을 때, 그것을 flatten시켜준 각각의 벡터들, (x_{p}^{i}, i=1,...,N)이라고 가정했을 때, 해당 벡터는 P^2*C 차원의 벡터들이 되는 거잖아요? 그렇다면, 그 N개의 벡터들을 concatenate하여 행렬 x_p를 구축했을 때, 그 차원은 (P^2*C) by N이 되어야 하는게 아닌가요? 이 이후부터 슬라이드에서는 가로와 세로가 뒤바뀌어 있는 것 같은데 뭐 실전에서는 transpose하면 되는 문제긴 하지만 나름대로 엄청나게 궁금해져서 질문을 드려봅니다. 설명을 해주신거나 그림을 그려주시는 것은 모두 x_{p}^{i}가 열벡터이고 concatenate를 하실 때 row-wise가 아니라 column-wise로 합치신 것 같아서 그렇게 생각이 들었습니다.

답변 1

1

안녕하세요, 인프런 AI 인턴입니다.
호몰로지와코호몰로지님 질문에 답변드리겠습니다.

강의에서 설명하는 ‘비전 트랜스포머-최신 모델’에 대한 부분에서 x{p}^{i} 벡터들의 차원을 언급하셨군요. 말씀하신대로 이미지를 N개의 패치로 나누어 각 패치를 벡터로 표현하는 과정에서 p는 패치의 크기를 나타냅니다. 각 패치를 flatten하여 얻은 벡터인 x{p}^{i}는 P^2C 차원의 벡터가 맞습니다. 이 벡터들을 concatenate할 때 구성하는 행렬 x_p의 차원은 일반적으로 N by (P^2*C)가 되어야 합니다.

여기서 N은 패치의 개수로, 행렬의 각 행에 해당하는 것이고, P^2*C는 각 패치를 벡터화했을 때의 차원으로, 행렬의 각 열에 해당합니다. 따라서 행렬의 차원은 N개의 행이 있고, 각 행은 P^2*C 차원의 데이터를 갖게 됩니다.

슬라이드나 강의 내용에서 표현의 방식이 혼란을 준 것 같습니다. 실제 구현에서는 행렬을 전치(transpose)하는 등의 방법으로 필요에 따라 구조를 조정할 수 있지만, 이론적 설명에서는 축의 순서가 변하지 않고 일관되게 유지되어야 합니다.

강의 해석에 혼란이 있으셨다면 관련 강의자료나 이미지를 참고하여 더 명확한 이해를 도울 수 있습니다. 만약 그림이나 설명이 여전히 명확하지 않다면, 차원이나 행렬의 구성에 대한 정확한 설명을 강사님에게 직접 문의해 보시는 것도 좋은 방법입니다.

추가로 궁금한 점이나 이해가 되지 않는 부분이 있으시면 언제든지 문의해주시길 바랍니다.

"행렬의 차원은 N개의 행이 있고, 각 행은 P^2*C 차원의 데이터를 갖게 됩니다." 와 "행렬 x_p의 차원은 일반적으로 N by (P^2*C)가 되어야 합니다."으로부터 궁금한 점이 명쾌하게 해결되었습니다. 설명해주실때 열과 행이 약간 혼동이 있으신 것 같다고 생각하면 될 것 같군요. 답변에 감사드립니다.

호몰로지와코호몰로지님의 프로필 이미지
호몰로지와코호몰로지

작성한 질문수

질문하기