- text.ids: [batch, sequence_length]
sequence_length
는 각 텍스트의 토큰 수(또는 고정된 시퀀스 길이)
- 이는 각 텍스트 토큰(단어)에 대응하는 정수 ID
- 자연어 처리에서는
단어를 모델이 이해할 수 있는 형태로 변환하기 위해
단어를 정수 인덱스로 매핑하는 과정을 거칩니다.
- 이러한 매핑을 통해 생성된 정수 시퀀스가
text.ids
입니다.
- https://velog.io/@hsbc/자연어-전처리-과정
- text.labels: [batch, sequence_length]
text.labels
는 훈련 중에 모델의 예측을 실제 값과 비교하기 위한 정답 레이블입니다. 캡셔닝 작업에서는 모델이 예측한 각 토큰의 다음 토큰에 대한 정답을 이 레이블로 사용
- text.mask: [batch, sequence_length]
text.mask
는 시퀀스 내에서 어떤 토큰이 실제 텍스트의 일부이고, 어떤 토큰이 패딩(padding)된 부분인지를 나타내는 이진 마스크
- 패딩은 모든 텍스트 시퀀스를 동일한 길이로 만들기 위해 사용되며, 일반적으로 시퀀스 끝에 특수 토큰을 추가하여 이루어짐
- 모델은 이 마스크를 사용하여 패딩된 토큰을 무시하고 실제 텍스트 토큰만을 처리
- con_query: ([batch, 1, d])
- d는 토큰의 임베딩 차원
- "contrastive query"의 줄임말로, 이미지 특징과 대조되는 텍스트 특징을 찾기 위해 사용되는 쿼리 토큰
- 이 쿼리 토큰을 이용해서,
img_feature
([batch, seq, d])을 key value로 한 attention을 수행하여 -> con_feature
([batch, 1, d]) 생성
con_feature
은 이미지 각 패치 feature들을 적절히 잘 융합한 feature
- 이
con_feature
은 추후 cls_token_feature
와 contrastive loss 계산에 활용되어
- 유사한 이미지와 유사한 text 간 embedding은 가깝게
- 서로 관련 없는 이미지-text 조합의 embedding은 멀게 학습
- 이 쿼리는 이미지 인코더가 생성한 representation([batch, seq_len, dim])과 대조적인 텍스트 표현 간의 관계를 학습하는 데 사용
- 즉, 이 쿼리를 통해 모델은 이미지와 텍스트가 어떻게 서로 관련되어 있는지를 이해하려고 합니다.
- cap_query: [batch, N, d]
- N은 캡션을 구성하는 토큰의 수
- "captioning query"의 줄임말로, 이미지에 대한 캡션을 생성하기 위해 사용되는 쿼리 토큰 시퀀스
- 캡셔닝 쿼리는 모델이 이미지에 대한 자세한 설명을 순차적으로 생성할 수 있도록 합니다.
- Attentional Pooling:
- 이것은 특정 쿼리(예:
con_query
또는 cap_query
)에 대한 컨텍스트 정보를 얻기 위해 이미지 특징을 가중 평균하는 메커니즘
- 멀티헤드 어텐션을 사용하여 이미지 특징들에 대한 가중치를 계산하고, 이 가중치를 바탕으로 각 쿼리에 가장 관련 있는 이미지 정보를 추출
- 결과적으로, 모델은 이미지의 특정 부분에 주목하면서 텍스트를 생성
3.1. con_feature: [batch, 1, d]
- "contrastive feature"
- input
- 이미지 인코더가 생성한 representation([batch, seq_len, dim])
- con_query: ([batch, 1, d])
- 이는 이미지 특징(feature)을 이용하여 계산된 벡터로, 이미지와 대조되는(contrastive) 텍스트 임베딩을 찾는 데 사용
con_query
라는 특정 쿼리 토큰을 사용하는 어텐셔널 풀링을 통해 얻어지며, 대조적 학습에서 이미지와 텍스트의 매칭을 최적화하는 데 도움을 줍니다.
3.2. cap_feature: [batch, N, d]
- "captioning feature"
- input
- 이미지 인코더가 생성한 representation([batch, seq_len, dim])
- cap_query: ([batch, N, d])
- 이미지 특징을 기반으로 하여 캡셔닝을 위한 쿼리 토큰(
cap_query
)에 의해 계산된 벡터
- 이 특징은 이미지에 대한 캡션을 생성하는 데 사용되며, 각 캡셔닝 쿼리 토큰에 대한 어텐셔널 풀링을 통해 생성됩니다. 모델이 이미지에 대해 설명하는 적절한 텍스트를 생성할 수 있도록 돕습니다.
- cls_token_id -> [CLS]:
- 이는 모델이 사용하는 어휘(vocabulary) 안에서 "[CLS]" 토큰에 할당된 고유한 정수 ID
- [CLS] 토큰도 모델의 어휘(vocabulary)에 포함되어 있으며, 고유한 정수 ID를 부여받습니다.
- id화 ([1]) -> Embedding화 ([Embedding]) 가 마찬가지로 진행됨.
- BERT와 같은 트랜스포머 모델에서는 "[CLS]" 토큰이 종종 전체 입력 시퀀스의 의미를 집약적으로 표현하는 데 사용
- 캡셔닝 모델에서는 이 "[CLS]" 토큰이 이미지 캡셔닝의 결과물인 텍스트 시퀀스와 연관되어, 전체 시퀀스의 문맥을 나타내는 데 사용