<Intro>
VLP는 비디오와 언어 데이터를 함께 학습시켜, 두가지 모달리티에 대한 다양한 작업(비디오 검색, 질문 응답 등)을 할 수 있는 모델이다. 그런데, 기존의 1인칭 관점(egocentric) 비디오-언어 학습 모델들은 비디오와 텍스트를 따로 학습시키고, 작업에 맞는 cross modal 정보를 finetuning 단계에서만 배우도록 되어 있어, 효율적이지 않고, 통합된 시스템을 만들기 어렵다는 한계가 있었다.
이 논문에서는 이런 문제를해결하기 위한 EgoVLPv2 라는 모델을 소개한다. 이 모델은 비디오와 텍스트를 처음부터 함께 fusing 해서 학습하는 방식으로, 비디오-텍스트 representation을 pre training 단계에서도 배운다. 이를 통해, 별도로 학습을 많이 하지 않아도 되는 장점이 있고, 기존 방식보다 가볍고 연산도 효율적이라고 한다.
기존 EgoVLP에 비해서 비디오랑 언어 데이터를 백본에서부터 직접 통합합으로서, 기존 finetuning 단계에서만 학습되었던 정보가 training 할때부터 학습이 되어서, finetuning 비용이 크게 줄어든다. 또한, dual encoder 과 fusion 인코더를 동일한 모델로 처리할 수 있어, 다양한 downstream 작업에 같은 모델을 사용할 수 있다는 장점이 있다.
< Related Works>
VLP framework는 총 세가지 범위로 나뉜다.
1.Dual Encoder
기존 1인칭 VLP framework가 여기 속한다. Dual encoder 방식은, 비디오랑 text 데이터를 별도의 backbone 에서 학습하고, cross modal fusion은 finetuning 단계에서만 학습이 된다. 주로 video text 검색 작업에서 사용되고 있다.
2. Shared Encoders
비디오와 텍스트를 함께 학습하는 인코더를 사용하는 방법이다. 다양한 모달리티에도 공통적으로 적용할 수 있는 통합된 표현 방식을 학습하기에, 특정 모달리티에 의존하지 않고 여러 종류의 데이터를 동일한 네트워크로 학습할 수 있게 한다. 대표적으로는 비디오-text 매칭, frame 순서 모델링 등이 속함.
3. Stacked Fusion Layers
비디오나 텍스트 같은 여러 모달리티의 데이터를 함께 처리하기 위해 dual 인코더 위에 cross modal 인코더를 stacking 하는 방식이다. 듀얼 인코더를 사용하지만, 레이어를 추가로 쌓아서 두 모달리티간의 정보를 결합하는 방식이다.
근데 이 shared encoder 이나 stacked fusion lyaer의 방식은 cross modal fusion을 위한 parameter 수가 많아지고 계산 비용이 많이 든다는 단점이 있다.
그래서 논문에서 제시한 방식은,
듀얼 encoder랑 shared 인코더의 장점을 결합해서, cross modal fusion을 모달 백본안에 삽입하고 이를 gating 매커니즘을 통해 제어한다. 이 게이팅 메커니즘을 사용하면 attention모듈을 켜거나 끌 수 있어 dual encoder 로도 작동할 수 있고, 필요하면 공유 인코더처럼 작동할 수도 있다.
<Model Architecture>
Fusion in the backbone
비디오 백본으로는 TimeSformer, 언어 백본으로는 RoBERTa를 사용한다. 이런 dual 모달리티 인코더 설계는 상호작용 포착을 잘 못해서, 정교한 멀티모달 표현을 생성하는데 한계가 있었는데, 기존의 VLP frameworks 는 cross-modal fusion 다음 두가지 방법을 사용한다.
- 공유 아키텍쳐를 학습하거나, 듀얼 encoder 위에 fusion layer 를 쌓는 방식. --> 추가적인 fine tuning 없이 zeroshot 굿, but 많은 파라미터..
- Fine tuning 단계에서 cross modal fusion을 학습하는 방식.
이 두가지 아이디어를 잘 섞어서, 단일 modal 백본의 상위 몇개 레이어에 cross modal fusion을 삽입하는 방식으로 개선한다.
구조를 보자
오른쪽 초록색 Space-Time Self att 부분을 보자. TimeSformer 인코더 레이어는 Temp Self attention이랑 Spatial Self attention으로 이루어져있다.
각 인코더 레이어는 Temporal Self-Attention(TEMP-SA)이랑 Spatial Self-Attention(SPA-SA)로 나뉘어 작동하며, residual connections을 사용해 처리된 정보를 더해간다.
Temporal Self-Attention(TEMP-SA) :
$$ \hat{x}^{(k)}_{vid} = x^{(k-1)}_{vid} + \text{TEMP-SA}(x^{(k-1)}_{vid}) $$
- 여기서, \( x^{(k-1)}_{vid} \)는 이전 레이어의 출력
- \( \hat{x}^{(k)}_{vid} \)는 TEMP-SA 블록을 통해 계산된 k번째 레이어의 Temp-SA 이후 출력
- 각 프레임 간 상관관계를 학습한다
Spatial Self-Attention(SPA-SA) :
$$ z^{(k)} = x^{(k-1)}_{vid} + \text{SPA-SA}(\hat{x}^{(k)}_{vid}) $$
- 여기서 \( \hat{x}^{(k)}_{vid} \)는 TEMP-SA 블록의 출력
- \( z^{(k)} \)는 SPA-SA 블록을 통해 계산된 k번째 레이어의 SPA-SA 이후 출력
- 비디오의 프레임 내부 객체 간 상관관계를 학습한다
이제 이부분을 보자.
TimeSformer의 \( k \)번째 fusion 레이어에서의 비디오 output은 Space Time Self att 모듈 뒤에 cross attention과 게이팅 파라미터 \( \alpha \)를 통해 텍스트 데이터를 함께 사용하여 계산된다.
$$ z^{(k)} = \text{Space-Time}(x^{(k-1)}_{vid}) $$
$$ x^{(k)}_{vid} = x^{(k-1)}_{vid} + z^{(k)} + \alpha \cdot \text{CA}(z^{(k)}, x^{(k-1)}_{text}) $$
$$ x^{(k)}_{vid} = x^{(k)}_{vid} + \text{FFN}(x^{(k)}_{vid}) $$
여기서:
- \( z^{(k)} \): Space Time Self Att의 ouput (위에서 초록 모듈)
- \( \text{CA} \): Cross-Attention block
- \( \alpha \): 학습 가능한 게이팅 파라미터로, 0에서 초기화됨
Video에 대해서, 게이팅 메커니즘을 적용해서, cross atttention되고 싶을떄, 그떄 해당 frame의 text를 가져와서 cross attention을 하는 느낌. text에 대해서도 똑같이 해주면됨.
위에 방법이랑 똑같긴한데, RoBERTa 백본의 \( k \)번째 레이어 출력은 비디오 데이터를 cross attention을 통해 fusion시켜 학습한다
$$ \hat{x}^{(k)}_{text} = \text{SA}(x^{(k-1)}_{text}) $$
$$ x^{(k)}_{text} = x^{(k-1)}_{text} + \hat{x}^{(k)}_{text} + \alpha \cdot \text{CA}(\hat{x}^{(k)}_{text}, x^{(k)}_{vid}) $$
$$ x^{(k)}_{text} = x^{(k)}_{text} + \text{FFN}(x^{(k)}_{text}) $$
여기서 gated cross attention은 \( \alpha \)를 0으로 설정하여 끌수도 있음. 이렇게 하면 듀얼 인코더(dual encoder)랑 똑같이 작동하는 방식. -> 훨씬 효율적.
.
Pre-training Objectives
세가지 objective (1)EgoNCE( 1인칭 기반의 Noise Contrastive Estimation) (2)MLM(Masked Language Modeling) (3)VTM(Video-Text Matching) 이 있다.
(1) EgoNCE(1인칭 기반의 Noise Contrastive Estimation)
비디오와 텍스트간에 얼마나 잘 연결될 수 있는지 판단하기 비디오와 텍스트간의 positive samples와 negative samples를 학습한다.
Positive Sample :
비디오와 텍스트가 잘 매칭되는 경우. 예를 들어, 어떤 비디오에서 "고양이가 의자 위에 앉아 있다"라는 텍스트는 그 비디오의 내용과 맞는 텍스트인데, 이런 경우, EgoNCE는 이를 긍정 샘플로 인식한다.
Negative sample :
비디오와 텍스트가 맞지 않는 경우. 예를 들어, "고양이가 의자 위에 앉아 있다"라는 텍스트가 다른 비디오, 예를 들어 사람이 자전거를 타는 장면에 붙어 있을 경우, 이들은 서로 매칭되지 않기 때문에 부정 샘플로 간주된다.
EgoNCE는 기존의 InfoNCE에서 확장된 방식으로, 다음과 같은 두가지 수정사항을 반영했다.
- 명사나 동사를 공유하는 쌍도 긍정 샘플로 취급
- 각 비디오-텍스트 배치에 시각적으로 유사한 비디오를 추가하여 부정 샘플로 사용
수식은 다음과 같다
$$ \mathcal{L}^{ego}_{v2t} = \frac{1}{|\tilde{\mathcal{B}}|} \sum_{i \in \tilde{\mathcal{B}}} \log \frac{\sum_{k \in \mathcal{P}_i} \exp \left( \frac{v_i^T t_k}{\tau} \right)}{\sum_{j \in \mathcal{B}} \left( \exp \left( \frac{v_i^T t_j}{\tau} \right) + \exp \left( \frac{v_i^T t'_j}{\tau} \right) \right)} $$
여기서 $$ \sum_{k \in \mathcal{P}_i} \exp \left( \frac{v_i^T t_k}{\tau} \right) $$ 이부분이 positive sample 항으로,
긍정 샘플 항은 비디오 \( v_i \)와 그것에 맞는 텍스트 샘플 \( t_k \) 간의 매칭 정도를 평가한다. 이 값이 클수록 비디오와 텍스트가 잘 매칭된다는 뜻:
분모의 $$ \sum_{j \in \mathcal{B}} \left( \exp \left( \frac{v_i^T t_j}{\tau} \right) + \exp \left( \frac{v_i^T t'_j}{\tau} \right) \right) $$ 이 수식은 negative sample 관련 항으로, 부정 샘플 항은 비디오 \( v_i \)와 맞지 않는 텍스트 샘플들 \( t_j \) 또는 유사하지만 부정적인 텍스트 샘플들 \( t'_j \) 간의 매칭 정도를 나타낸다. 부정적인 샘플에 대해서는 이 값이 작아야 함.
즉, 전체 손실 함수는 긍정 샘플의 유사도를 높이고, 부정 샘플의 유사도를 낮추는 방향으로 학습이 진행된다.
그리고, 이 EgoNCE는 듀얼 인코더 설정으로 처리된다. 즉 여기서는 비디오와 텍스트를 따로 처리한 후, 이를 서로 비교하는 방식으로 cross-attention을 사용하지 않으며, 대신 각 데이터를 독립적으로 처리한다. (비디오랑 텍스트의 순수한 매칭 정도를 측정하기 위한것 같음. cross attention 되버리면 서로 정보를 주고 받아서 결과에 영향이 있을 수 있으니까)
(2) MLM(Masked Language Modeling)
language 모델을 학습하는 대표적인 방법으로, text의 일부 토큰을 무작위로 마스킹하고 주변 단어랑 video 정보를 이용해 마스킹된 단어를 예측하도록 모델을 학습시킨다.
objective는 masking 된 단어를 reconstruct 하는게 목표이고, 모델은 주변 단어랑 video patch를 참고해서 마스킹된 단어를 복원하려고 한다. 여기서 negative log likelyhood를 최소화한다.
즉 text 의 15프로를 마스킹하고, 나머지 단어랑 비디오 정보를 이용해서 마스킹된 부분을 예측한다
(3)VTM(Video-Text Matching)
여기서는 비디오랑 text가 매칭되는지 여부를 판별하는 작업이 수행된다. 모델에 비디오 텍스트 쌍을 입력하면, output으로 해당 쌍이 맞는지 여부를 나타내는 binary label {0,1}이 나온다.
EgoNCE에서 계산된 video text 유사도를 기반으로 hard negative 비디오 text 쌍을 샘플링해서 더 어려운 학습을 수행한다.
정리해보자면
EgoVLPv2 모델은 두 가지 설정에서 학습이 된다.
- Dual Encoder: 비디오와 텍스트가 각각 독립적으로 처리된다. 이 때는 cross attention 모듈이 꺼져 있으며 \( \alpha = 0 \)으로 설정된다. --> EgoNCE 손실을 계산할 때 이 설정이 사용됨.
- Fusion Encoder: 비디오와 텍스트가 서로 상호작용하며, cross attention 모듈이 켜져 있는 상태. --> MLM과 VTM 손실을 계산할 때 사용됨
즉, 전체 loss가
- EgoNCE loss-> 비디오와 텍스트르 따로따로 처리. 이때 cross attention 모듈을 꺼서 \( \alpha = 0 \)으로 설정하고 듀얼 인코더 설정으로 loss 계산
- MLM과 VTM loss : 멀티모달 학습을 필요로 하기에, cross attention 모듈을 켜서 \( \alpha \neq 0 \)로 설정하고 fusion 인코더로 학습함.
- 최종 손실 함수 \( \mathcal{L}_{total} \)는 세 가지 loss를 weighted sum으로 구한다: \[ \mathcal{L}_{total} = (1 - \gamma - \delta) \mathcal{L}_{EgoNCE} + \gamma \mathcal{L}_{MLM} + \delta \mathcal{L}_{VTM} \] 여기서 \( \gamma \)와 \( \delta \)는 각각 MLM과 VTM 손실이 최종 손실에 기여하는 정도를 조정하는 하이퍼파라미터