ViT 는 CV 분야에서도 Transformer를 썼을 때 좋은 성능이 나온다는 놀라운 방법론이다. 하지만 논문을 읽다보면 ViT는 큰 데이터셋에서만 잘 작동한다는 것을 알 수 있다. 왜 그런걸까?
논문에서는 다음과 같이 이야기한다.
Transformer가 CNN의 위치 불변성(translation equivariance)과 지역성(locality) 같은 inductive bias를 갖지 않아 데이터가 충분하지 않을 때 일반화 성능이 떨어진다.
inductive bias란 무엇일까?
ViT의 inductive bias에 대해선 ViT 논문 리뷰에서 조금 다뤄보았다. (https://cch8ii.tistory.com/53)
좀 더 자세히 다뤄보면서 ViT가 왜 큰 데이터셋에서만 잘 작동하는지 확인해보자.
가장 먼저 inductive bias는 귀납편향이라고 이야기할 수 있다. 즉, inductive bias란 모델이 학습 과정에서 직접 관찰하지 않은 상황에서도 일반화된 예측을 할 수 있게 해주는 추가적인 가정을 의미한다.

예를 들자면 '이미지 속 패턴은 위치가 바뀌어도 같은 의미를 가진다.', '먼 픽셀들보다 인접한 픽셀들끼리 관계가 더 중요하다.' 와 같은 가정이다.
이런 가정들은 모델이 무작위의 모든 함수를 탐색하는 대신 좀 더 제한된 함수 공간에서만 해답을 찾도록 유도하므로 데이터가 적어도 효과적으로 학습할 수 있게 도와준다.
이렇게 이야기하면 좀 쉽지 않아보이지만 CNN과 비교해보면 이해가 쉬워진다.
CNN은 다음과 같은 inductive bias를 가지고 있다.
① 위치 불변성(translation equivariance): 이미지 속 패턴은 위치가 바뀌어도 같은 의미를 가진다.

어떤 피처가 A 위치에 있던, B 위치에 있던 똑같이 인식할 수 있는 귀납편향을 의미한다. 컨볼루션 연산은 입력이 이동하면 feature map도 동일하게 이동하는 성질(equivariance)을 가지기 때문이다. 이후 pooling과 계층적 구조를 거치면서, 최종 출력은 위치에 상관없이 동일한 클래스를 내놓게 된다.
실제로 다음 사진처럼 왼쪽은 상대적 위치가 맞지 않기 때문에 얼굴이라고 보지 않는데도..

CNN에서는 얼굴이라고 인식한다. 이게 객체의 위치가 다르더라도 즉, 왼쪽에 고양이가 있어도, 오른쪽에 고양이가 있어도 고양이라고 인식한다는 것을 극단적으로 보여주는 예시이다.

만약 이미지 (파란색) 하단에 눈과 코가 있다고 했을 때 초록색 피처맵 눈 채널, 코 채널에서 활성화되고 FCN을 거쳐 위치와 상관없이 클래스가 출력된다.

반대로 상단에 존재한다고 하더라도 동일한 클래스가 출력될 것이다.
💡 그럼 성능이 안 좋은 거 아닌가?
얼굴 사진 예시처럼 눈, 코, 입의 상대적 위치가 달라지면 이상하게 보이기도 하지만 단순히 class를 분류해야 하는 상황에서는 오히려 이 특성이 도움이 된다. CNN은 Convolution 연산의 translation equivariance와 파라미터 공유 덕분에, 객체가 이미지의 어느 위치에 있더라도 동일한 label을 출력할 수 있기 때문에 translation invariance를 갖게 되고, 이것이 분류 성능을 높여주는 핵심 요인 중 하나가 된다.
반대로 Detection과 같이 객체의 위치까지 알아내야 하는 과제에서는 상황이 다르다.
단순히 invariance만 가지면 물체의 좌표 정보를 잃어버리기 때문에 제대로 탐지가 불가능하기 때문이다. 때문에 detection 모델들은 fully convolutional 구조를 활용해 equivariance를 유지하면서 별도의 regression head로 bounding box 좌표를 예측하거나 FPN 같은 다중 해상도 feature를 결합하는 방식으로 위치 정보를 보존한다.
② 지역성(locality): 먼 픽셀들보다 인접한 픽셀들끼리 관계가 더 중요하다.

이미지 데이터는 인접한 픽셀끼리 강하게 연관되어 있다는 성질을 갖는다. CNN의 작은 커널은 국소 영역만을 바라보기 때문에 자연스럽게 가까운 픽셀이 더 중요하다는 귀납편향을 자연스레 가지게 된다.
그렇다면 ViT는 어떨까?
반면 ViT는 이미지를 patch 단위로 잘라서 입력하고, 모든 patch가 서로 attention을 주고받는 구조를 가지고 있다. 즉, CNN처럼 위치 불변성이나 지역성 같은 inductive bias가 구조에 내장되어 있지 않다는 뜻이다.
따라서 ViT는 ‘위치가 달라도 같은 의미를 갖는다’거나 ‘인접 픽셀이 더 중요하다’는 규칙을 데이터에서 직접 학습해야 한다. 이 과정에서 데이터가 충분히 크지 않다면 모델이 일반화에 실패하고 과적합에 빠지게 된다.
결국 ViT가 큰 데이터셋에서만 잘 작동하는 이유는 CNN에 비해 내장된 inductive bias가 약하기 때문이다. 반대로 대규모 데이터가 주어질 경우 ViT는 강력한 표현력과 유연성을 발휘하여 CNN을 능가하는 성능을 보여준다.
이후 DeiT와 같은 연구들이 ViT를 작은 데이터셋에 사용해도 성능이 좋도록 만들었다. 어떻게 했을지는 나중에 알아보도록 한다.. ㅎㅎ

'헷개정 - 헷갈리는 개념 정리' 카테고리의 다른 글
| 미분 계산이 가능하려면 왜 함수가 연속이어야 할까? (0) | 2025.09.26 |
|---|---|
| Resize(size)? CenterCrop(size)? (0) | 2025.09.26 |
| RNN, LSTM, GRU (0) | 2025.09.26 |
| 왜 데이터를 zero-centering하고 normalization 해야 할까? (0) | 2025.09.26 |
| 두 Vector 사이의 각도, 내적, 유사도? (0) | 2025.09.16 |