Hi, xin chào các bạn, hôm này mình sẽ giới thiệu cho các bạn mô hình Stacked Attention được dùng trong bài toán Visual Question Answering (VQA)
Link paper: Stacked Attention Networks for Image Question Answering (2016)
Link code: Code
Nội dung chính sẽ bao gồm các phần sau:
1. Giới thiệu bài toàn Visual Question Answering
2. Nguyên lý
3. Phương pháp
4. Giải thuật
5. Ứng dụng
6. Tham khảo
Bài toán Visual Question Answering (VQA) là một trong những bài toán có sự kết hợp giữa Vision và Language. Đây là bài toán trả lời một câu hỏi dựa vào hình ảnh, mô hình vì thế phải học được sự liên hệ giữa hình ảnh và ngôn ngữ, từ đó đưa ra được câu trả lời phù hợp.
Nguyên lý của bài toán đơn giản là dùng biểu diễn ngữ nghĩa của câu text để tìm vị trí của một vùng trong hình ảnh có liên quan tới câu trả lời.
Bài báo đề xuất phương pháp Stacked Attention, đây là một phương pháp cho phép diễn dịch hình ảnh theo nhiều bước. Ví dụ cho câu hỏi và hình ảnh sau:
Câu hỏi: What are sitting in the basket on a bicycle
Hình ảnh:
Và ta sử dụng 2 lớp attention, thì lớp attention đầu tiên sẽ định vị những đối tượng như basket, bicycle sau đó ở những lớp attention tiếp theo sẽ dần dần loại bỏ những đối tượng không liên quan và cho ra đối tượng cần thiết.
3.1 Image Model
Ở bài báo này, họ đã dùng mô hình VGG Net để lấy feature representation của image.
Đầu tiên, image sẽ được rescale thành 448x448, sau đó đưa qua VGG Net, tuy nhiên họ chỉ lấy feature
của lớp pooling cuối cùng cái mà họ cho rằng giữ lại được nhiều thông tin của image hơn là lớp cuối cùng của mạng VGG.
Sau đó, họ biến đổi thành
sao cho có cùng dimension như question vector (3.2)
3.2 Question Model
Đối với text presentation, ở bài báo họ sử dụng 2 cách: (1) dùng lstm và sử dụng hidden để làm vector representation cho text và (2) sử dụng unigram để lấy vector presentation cho từng word, sau đó concatenate các vector này lại tạo thành vector representation cho text
Ở post này mình chỉ nói qua phương pháp (1).
Cuối cùng, vector representation của question sẽ là hidden vector ở layer cuối cùng của LSTM,
3.3 Stacked Attention Network
Sau khi đã có 2 vector representation cho image và text
, ta sẽ đưa 2 thứ này qua mạng Stacked Attention (SAN) để dự đoán câu trả lời.
Mô hình SAN được mô tả như sau:
Bước đầu tiên, mô hình sẽ đưa và
qua một lớp perceptron, sau đó tạo ra attention distribution bằng một lớp softmax:
Sau khi có attention distribution, ta lấy weighted sum của distribution và image representation theo công thức:
Cuối cùng, tính ra query vector dùng để encode thông tin của image và question, sau đó dùng nó để tìm ra câu trả lời:
Tuy nhiên, mô hình SAN sẽ lặp lại các bước trên để đưa ra một query đúng hơn. Mỗi lần lặp lại là một lớp attention, vì vậy, đối với lớp attention thứ k, chúng ta sẽ tính như sau:
Tương tự với weighted sum và query vector:
Cuối cùng, xác suất của đáp án sẽ được tính như sau:
Update…
Hiện nay, các bài toán kết hợp vision và language đang là một hot trend trên thế giới, vì vậy càng ngày càng có nhiều mô hình giúp học được sự liên hệ giữa vision và language. Stacked Attention Network là một trong số đó, và nó có thể được áp dụng cho những bài toán có sự kết hợp giữa Vision và Language ví dụ như: Medical Question Answering, Language Tracking, Visual Grounding, Image Captioning, Embodied Question Answering, etc.
Yang, Zichao, et al. “Stacked attention networks for image question answering.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.