Abstract
- CV와 기계번역을 결합하여, 심층 반복 아키텍처에 기반한 생성 모델
- 훈련 이미지가 주어졌을 때 목표 설명 문장의 가능성을 최대화하도록 훈련
- PASCAL Dataset의 BLEU-1의 SOTA 점수(높을수록 좋음)는 25점이지만, 이 모델은 59점로 69점의 인간과 비견할만한 함
- Flickr30k에서는 56에서 66으로, SBU에서는 19에서 28로 BLEU-1 점수가 개선
- COCO Dataset에서는 SOTA인 27.7의 BLEU-4를 달성
Introduction
- Image Captioning(IC)은, 이미지를 잘 설명하는 문장을 만드는 것
- 단순히 이미지에 들어있는 object를 잡아내는 것뿐만 아니라 특성, 활동, 다른 object와의 관계까지 이해해야 하기 때문에, image classification과 object dection보다 훨씬 어려움
- 기계 번역에 활용된 아이디어(Source Sentence를 Encoder에 입력해 Context Vector로 변환하고, 이를 다시 Decoder를 통해 Target Language로 번역, seq2seq와 비슷한 구조)에 영감을 받음
- (기계 번역) Encoder와 Decoder로 모두 RNN을 사용
- (논문) 입력 이미지에 대한 rich representation을 얻기 위한 Encoder로 CNN을 사용
Model
다양한 길이의 입력을 고정 차원 벡터로 인코딩하고, 원하는 출력 문장으로 '디코딩'하는 순환 신경망을 사용
식(1)을 이용하여, 이미지가 주어졌을 때 올바른 설명의 확률을 직접적으로 최대화
Chain rule을 적용하여 S0, . . . SN 에 대한 공동 확률을 모델링
훈련 시 (S, I)는 훈련 예제 쌍이며, 확률적 경사 하강을 사용하여 전체 훈련 집합에 대해 식(2)에서 설명한 대로 로그 확률의 합을 최적화
최대 t - 1까지 조건이 되는 가변 단어 수는 고정 길이의 숨겨진 상태 또는 메모리 ht로 표현
이 메모리는 비선형 함수 f를 사용하여 새로운 입력 xt를 확인한 후 업데이트
‘f의 정확한 형태가 무엇인지 / 이미지와 단어가 입력 xt로 어떻게 공급되는지’ 중요
- f의 경우, 번역과 같은 시퀀스 작업에서 최첨단 성능을 보여준 LSTM 네트워크를 사용
- 이미지 표현에는 컨볼루션 신경망(CNN)을 사용
논문의 CNN은 일괄 정규화에 대한 새로운 접근 방식을 사용
전이 학습을 통해 장면 분류와 같은 다른 작업에도 일반화 가능
LSTM-based Sentence Generator
RNN을 설계하고 훈련할 때 발생하는 소실 및 폭발하는 기울기를 처리하는 능력에 의해 사용
→ 특정 형태의 순환망이 도입되었고, 번역 및 시퀀스 생성에 성공적으로 적용
LSTM 모델의 핵심은 이 단계까지 관찰된 입력의 모든 시간 단계에 대한 지식을 인코딩하는 메모리 셀 c입니다. 셀의 동작은 곱셈으로 적용되는 레이어인 "게이트"에 의해 제어되며, 게이트가 1이면 게이트 레이어의 값을 유지하거나 게이트가 0이면 이 값을 0으로 만들 수 있습니다.
- 현재 셀 값을 잊을지(forget gate f),
- 입력을 읽을지(input gate i),
- 새로운 셀 값을 출력할지(output gate o)를 제어하는 세 개의 게이트가 사용됩니다.
게이트의 정의와 셀 업데이트 및 출력은 다음과 같습니다.
- ◉은 W는 게이트 값의 곱을 나타내며, 다양한 W 행렬은 학습된 파라미터
- 곱셈식 게이트는 폭발하고 사라지는 기울기를 잘 처리 → LSTM을 강력하게 훈련 가능
- 비선형성은 시그모이드 σ(-)와 쌍곡선 탄젠트 h(-)을 이용
- 마지막 방정식인 mt는 소프트맥스에 공급하는 데 사용되는 방정식으로, 모든 단어에 대해 확률 분포 pt를 생성
Training
Inference
논문에서 제시하는 실험은 BeamSearch를 사용
- Sampling : 각 확률 값(p1, p2, ...)에 따라 각 단어를 결정하는 방법
- BeamSearch : 각 step에서 likelihood 값이 높은 k개의 sentence만을 유지하며, 다음 step으로 반복하면서 확장하는 방법
Results
ROUGE
Reference Setence의 단어가 Generated Sentence에 포함되는 정도
BLEU
Generated Sentence의 단어가 Reference Sentence에 포함되는 정도
(ex)
RS: "I was referenced by human"
GS: "I was generated by the model"
MEREOR
단순히 예측 정답과 실제 정답을 정렬하게 되는데, exact token matching을 기준으로 정렬하고, 그렇지 않은 경우, WordNet synonyms, stemmed tokens, paraphrases 를 기준으로 정렬을 하게 된다. METEOR score는 precision과 recall 사이의 harmonic mean 으로 정의하게 된다.
CIDEr
TF-IDF(https://wikidocs.net/31698)의 아이디어 차용
- 모든 문서에서 자주 등장하는 단어는 중요도가 낮다고 판단하며, 특정 문서에서만 자주 등장하는 단어는 중요도가 높다고 판단
- TF-IDF 값이 낮으면 중요도가 낮은 것이며, TF-IDF 값이 크면 중요도가 큰 것
Wk는 특정 모델이 생성한 Generated Sentence로부터 구한 n-gram 원소들
- Generated Sentence: "An eagle is perched among trees."
- W1: [An, Eagle, is, perched, among, trees]
- W2: [An Eagle, Eagle is, is perched, perched among, among trees]
아래 식은 각 n-gram 원소들에 대해 TF-IDF 값을 구하는 과정
- 위 식에서 h_k(Sij)는 n-gram Wk가 reference sentence S_ij에 등장하는 횟수
- I는 해당 데이터셋에 존재하는 전체 Image 개수입니다.
TF(파란색 박스) : n-gram Wk가 reference sentece에 등장하는 비율
IDF(빨간색 박스) : 초록색 박스는 n-gram Wk가 전체 Image 중 p번째 image인 Ip에 대한 50개의 reference sentence에서 몇 번 등장하는지 나타냄
- Candidate sentence의 n-gram 원소들에 대해 각각 g_k(Sij)값을 구한 뒤 이를 모아 벡터화 하여 g^n(S_ij)를 구함
- "An eagle is perched among trees." 라는 generated sentence에 대해 1-gram 원소별 g_k(S_ij) 값이 각각 a,b,c,d,e,f 라고 하면 g^1(S_ij)는 [a,b,c,d,e,f]가 됨
- 비슷한 식으로 g^n(Ci)도 구한 뒤 g^n(Ci)와 g^n(S_ij) 의 코사인 유사도를 구하여 CIDEr_n(Ci, Si) 값을 구함
Generated sentece에 포함된 n-gram 원소들에 대해 candidate sentence 내 TF-IDF 벡터와 reference sentece 내 TF-IDF 벡터를 구한 뒤 두 벡터의 코사인 유사도를 구함
최종 CIDEr(Ci, Si) 값은 위와 같이 구함. w_n = 1/N
- 1-gram ~ 3-gram을 비교하겠다고 하면 N=3
- 1-gram ~ 4-gram을 비교하겠다고 하면 N=4