Tải bản đầy đủ (.pdf) (25 trang)

báo cáo xử lý ngôn ngữ tự nhiên vietnamese image captioning

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.19 MB, 25 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

ĐẠI HỌC BÁCH KHOA HÀ NỘI

TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

<b>BÁO CÁO </b>

<b>Xử Lý Ngôn Ngữ Tự Nhiên Vietnamese Image Captioning </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>Mục l c </b>ụ

<b>MỤC L C... 2</b>Ụ

<b>DANH M C HÌNH </b>Ụ <b>ẢNH ... 3 </b>

<b>CHƯƠNG 1. GIỚI THIỆU BÀI TỐN ... 4 </b>

CHƯƠNG 2. MƠ HÌNH ĐỀ<b>XUẤT ... 5</b>

<b><small>2.1.Mơ hình Pretrained CNN LSTM</small></b><small>–</small> <b><small> ... 5</small></b>

<b><small>2.2.Mơ hình ViT – GPT ... 7</small></b>

<b>CHƯƠNG 3. MƠ TẢ TẬP DỮ LIỆU ... 15 </b>

<b><small>3.1.Mơ tả bộ dữ u rawliệ ... 15</small></b>

<b><small>3.2.Tiền xử lý dữ u chungliệ... 15</small></b>

<b><small>3.3.Tiền xử lý dữ u cho các mơ hìnhliệ ... 17</small></b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>Danh m c hình </b>ụ<b>ảnh</b>

Hình 1: Ví d Image Captioning...4ụHình 2: Ki n trúc mơ hình Pretrained CNN - LSTM ...5ếHình 3: Ki n trúc Encoder - ResNet101 ...6ếHình 4: Ki n trúc Decoder - LSTM ...6ế

Hình 5: Decoder khi thêm dữ liệu Attention ...7

Hình 6: Ki n trúc Attention ...7ếHình 7: Ki n trúc mơ hình ViT - GPT 2 ...8ếHình 8: Ki n trúc mơ hình ViT ...9ếHình 9: Ki n trúc GPT 2 ...11ếHình 11: Token Embedding và Positional Encoding...11

Hình 12: Self Attention ...13

Hình 13: Masked Self Attention ...14

Hình 14: Visualize Cross Attention ...15

Hình 15: Phần trăm độ dài caption trong tập dữ liệu ...16

Hình 16: Phần trăm độ dài caption sau khi lo i b outliner ...16ạ ỏHình 17: Khai báo mơ hình ViT - GPT 2 ...18

Hình 18: ROUGE-N Precision ...19

Hình 19: ROUGE-N Recall ...19

Hình 20: ROUGE-N F1 ...20

Hình 21: Longest Common Sequence ...20

Hình 22: ROUGE-L Precision, Recall và F1 ...21Hình 23: Thu t tốn Beam Search ...22ậ

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>Chương 1. Giới thiệu bài tốn </b>

<b>Image Captioning (chú thích ảnh/thêm mơ tả cho nh) là m</b>ả ột ứng dụng thú vị và phát triển nhanh chóng của cơng nghệ học sâu trong những năm gần đây. Dựa trên một hình ảnh làm dữ liệu đầu vào, chú thích ảnh tạo ra văn bản ngắn gọn mơ tả nội dung của bức ảnh đó. Kỹ thuật này càng tr ở nên đặc biệt hơn, khi nó kết hợp cả Computer Vision (thị giác máy tính) và NLP (Xử lý ngơn ngữ tự nhiên)

Hình 1: Ví d Image Captioning ụ

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>Chương 2. Mơ hình đề xuất </b>

Báo cáo này s t p trung vào hai ẽ ậ hướng chính: 1. Xử lý tu n t Mơ hình Pretrained CNN LSTM ầ ự: –2. Xử lý song song: Mơ hình ViT GPT 2 –

<b>2.1. Mơ hình Pretrained CNN LSTM </b>–2.1.1. Kiến trúc mơ hình Mơ hình s g m 3 thành ph n chính: ẽ ồ ầ

- Encoder: mơ hình Pretrained CNN (ResNet) hỗ trợ trích rút đặc trưng củ ảnh đầa u vào

- Decoder: mạng RNN (LSTM) đưa ra caption dự đoán

- Attention: m ng linear h ạ ỗ trợ tìm ra các vùng quan trọng trong đặc trưng ảnh nhằm phục vụ tốt hơn trong q trình dự đốn của Decoder

Hình 2: Kiến trúc mơ hình Pretrained CNN - LSTM

2.1.2. Encoder

Mơ hình pretrain ResNet được sử dụng làm Encoder cho mơ hình, mơ hình có dạng như hình vẽ dưới:

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Hình 3: Kiến trúc Encoder - ResNet101

Đầu vào c a mơ hình s là m t ảnh kích thước (256x256x3). Ảnh s đi qua đến h t ủ ẽ ộ ẽ ếtầng gần cuối mà không xuống 2 tầng cuối cùng nhằm giữ lại các đặc trưng cần thiết mà không làm m t mát nhiấ ều thông tin, đầu ra c a encoder là m t ma trủ ộ ận đặc trưng kích thước (14x14x1024)

2.1.4. Attention

Attention s dử ụng trong mơ hình như là một mạng để tìm ra vùng nh quan tr ng, kả ọ ết hợp v i tớ ừ đầu vào h ỗ trợ cho q trình d ự đốn cho Decoder

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Hình 5: Decoder khi thêm d ữ liệu Attention

Về cơ bản, Attention là m t m ng Linear, vộ ạ ới đầu vào là ma trận đặc trưng của ảnh và state được sinh ra từ Decoder, cấu trúc mạng Attention sẽ như hình dưới.

Hình 6: Kiến trúc Attention

<b>2.2. Mơ hình ViT GPT </b>–

Với s phát tri n m nh c a Transformers trên cự ể ạ ủ ả hai lĩnh vực CV và NLP, mơ hình ViT GPT là s c i ti– ự ả ến c a mơ hình pretrained CNN LSTM truy n th ng. Encoder s ủ – ề ố ửdụng Vision Transformer, trong khi đó Decoder sử dụng GPT 2 giúp c i thi n v hi u suả ệ ề ệ ất và chất lượng c a mơ hình Image captioning nh khủ ờ ả năng ử x lý song song và hi u ng ể ữcảnh tốt hơn

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

Hình 7: Kiến trúc mơ hình ViT - GPT 2

Kiến trúc mơ hình g m 3 thành ph n chính: ồ ầ- Encoder s d ng ViT ử ụ

- Decoder s d ng GPT-2 ử ụ

- Cross Attention Layer: H c mọ ối tương quan giữa từng thành phần của ảnh với từ cần dự đoán tiếp theo

2.2.1 Encoder

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Hình 8: Kiến trúc mơ hình ViT

Vision Image Transformer là s k t h p c a 1 phự ế ợ ủ ần ki n trúc c a Transformer và các ế ủkhối MLP (Multilayer Perceptron). Lớp Multi-Layer Perceptrons (MLP) mlà ột lớp ch a ứmột hàm Gaussian Error Linear Unit hai lớp.

Với đầu vào là một hình ảnh, đầu ra sẽ được mã hoá theo kiến trúc tổng thể của mơ hình ViT được đưa ra như sau theo cách thức từng bước:

- Chia hình ảnh thành các mảng (patch) với kích thước từng mảng cố định 16 x 16 - Làm phẳng các mảng hình ảnh

- Tạo các feature embedding có chiều thấp hơn từ các mảng hình ảnh phẳng này bao gồm thứ tự các mảng. Đưa các patches này về d ng vector b ng cách flattend các patches ạ ằnày ra. Thực ch t Linear Projection là m t l p Dense vấ ộ ớ ới đầu vào là flattend vector của các patches, đầu ra s ẽ là embeeding vector tương ứng với t ng patch.ừ

𝑧<small>𝑖</small>= 𝑊 ∗ 𝑥<small>𝑖</small>+ 𝑏 Trong đó:

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

o 𝑥<small>𝑖</small>: flattend vector của patch thứ i

o 𝑧<small>𝑖</small>: output tương ứng của 𝑥<small>𝑖</small> khi qua Linear Projection o 𝑊: ma trận embedding

Positional embeeding trong mơ hình ViT s ẽ chứa thơng tin v v trí c a patch trong ề ị ủảnh (spatial information)

- Chuỗi feature embedding được làm đầu vào cho transformer encoder, nó là t ng hổ ợp các thông tin patch embedding và position embeding bao g m các l p Multihead ồ ớAttention, kh i MLP và Layer norm. ố

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Hình 9: Kiến trúc GPT 2

Chi tiết kh i Decoder: ố

- Mã hoá đầu vào: Bắt đầu bằng từ đầu vào, mơ hình tìm kiếm cách embedding từ đầu vào trong ma tr n embedding c a nó ậ ủ

Do mơ hình GPT x lý song song, vì vử ậy ngồi mã hố t , mơ hình c n k t h p ừ ầ ế ợthêm mã hóa v trí ị – ộ m t tín hiệu cho bi t th tế ứ ự ủ c a các t trong chuừ ỗi đối v i các ớtransformer blocks. Một ph n cầ ủa mơ hình được đào tạo là một ma tr n ch a mậ ứ ột vectơ mã hóa vị trí cho m i trong s 1024 v ỗ ố ị trí trong đầu vào.

Hình 10: Token Embedding và Positional Encoding

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

- Sau khi mã hoá, các vector t s ừ ẽ đi qua self attention. Có th ể hiểu self attention là một mơ hình giúp học được mối tương quan ữ gi a các t trong m t câu v i nhau. ừ ộ ớSelf Attention s t o 3 ma tr n Query, Key và Value, c ẽ ạ ậ ụ thể

từ khác (sử dụng key).

<small>• </small> Key: đại diện cho các từ sẽ xét tương quan với từ đang xét (Query).

• Bước 2: Tính attention weights. Nhân 2 ma trận key, query vừa được tính ở trên với nhau để với ý nghĩa là so sánh giữa câu query và key để học mối tương quan. Sau đó thì chuẩn hóa về đoạn [0 1] bằng hàm softmax. 1 có nghĩa -là câu query giống với key, 0 có nghĩa là khơng giống.

• Bước 3: Tính output. Nhân attention weights với ma trận value. Điều này có nghĩa là chúng ta biểu diễn một từ bằng trung bình có trọng số (attention weights) của ma trận value.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Hình 11: Self Attention

<b>Masked Self-Attention: Do GPT là mơ hình sinh chuỗi, vì vậy khơng thể xét quan </b>

hệ của từ đang xét với các từ trong tương lai, do đó Masked Self Attention được sử dụng. Về cơ bản, nó ln cho điểm các mã thơng báo trong tương lai là 0 để mơ hình không th ể đạt đến các từ trong tương lai.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Hình 12: Masked Self Attention

- Feed Forward Network: Xử lý vector từ sau khi đã học xong mối tương quan với các từ còn lại trong câu Kết quả cuối cùng của tầng này là ma trận vector từ kích . thước (độ dài chuỗi x size) (size tuỳ thuộc vào mơ hình, cụ thể GPT 2 small sẽ có size = 768)

2.2.3. Cross Attention Layers

Mạng này được xây dựng với mục đích học ra được mối tương quan của các thành phần trong nh tả ới từ sinh ra ti p theo. Kiế ến trúc c a m ng này khá giủ ạ ống với Self attention mô t phía trên, v i key và query là các vector ả ở ớ đặc trưng của từng thành phần trong ảnh, và value là các vector đặc trưng của các từ trong caption:

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Hình 13 Visualize Cross Attention:

<b>Chương 3. Mơ t t p d u </b>ả ậ<b>ữ liệ</b>

<b>3.1. Mô tả bộ dữ liệu raw </b>

Dữ liệu được sử dụng trong project là kết hợp của 2 bộ dữ liệu: - UIT-ViIC<small>1</small>

- Vietnamese Image Captioning Dataset <small>2</small>

C hai b d u ả ộ ữ liệ đã được chú thích th công b ng ti ng Vi t v i các hình nh t b ủ ằ ế ệ ớ ả ừ ộdữ liệu MS-COCO.

<b>3.2. Tiền xử lý d ữ liệu chung </b>

Do c hai b dả ộ ữ liệu đều cùng một bộ ữ liệ d u là MS-COCO, cho nên c n phầ ải hợp nhất hai bộ dữ liệu l i v i nhau, tìm nh ng nh trùng và h p nh t các captions cạ ớ ữ ả ợ ấ ủa ảnh đó, đầu ra c a pha này s là Metadata củ ẽ ủa ảnh và caption, c ụ thể:

- Images: List các thông tin của ảnh, bao gồm ảid nh và tên file

- Annotations: List các thông tin caption, bao gồm id c a caption, image id và ủcaption

Sau đó, do dữ liệu vẫn cịn khá nhi u lề ỗi sai chính tả trong quá trình nh p li u, vì vậ ệ ậy cần phải xem xét và x lý t ng captions m t. Nhóm s d ng tokenizer c a VNCoreNLP ử ừ ộ ử ụ ủ

<small>2 class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

và thu được m t t p tộ ậ ừ điển, sau đó từ ậ ừ điển đó nhóm tiến hành xem xét xem các từ t p tkhông h p l và tiợ ệ ến hành s a các t đó trong danh sách các captions ử ừ

Khảo sát phần trăm độ dài caption khi s d ng tokenizer c a VNCoreNLP: ử ụ ủ

Hình 14: Phần trăm độ dài caption trong t p d ậ ữ liệu

Nhóm ti n hành lo i b các caption có s t > 30 tế ạ ỏ ố ừ ừ, để tránh các dữ liệu outlier có thể ảnh hướng đế ế k t qu c a mơ hình ả ủ

Tỷ l phệ ần trăm số từ trong 1 caption sau khi đã loại bỏ các dữ liệu outlier

Hình 15: Phần trăm độ dài caption sau khi lo i b outliner ạ ỏ

Cuối cùng nhóm th c hi n chia t p d ự ệ ậ ữ liệu thành 3 t p train, validation và test, trong ậđó

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

- Tập Validation: 10% dữ liệu: 786 nh, 3980 captions ả- Tập test: 10% d ữ liệu: 786 nh, 3987 captions ả

<b>3.3. Tiền xử lý d ữ liệu cho các mô hình </b>

3.3.2. Mơ hình ViT – GPT 2

Về nh ta x ả ử lý tương tự như mơ hình Pretrained CNN – LSTM

Caption sẽ được tokenize và encode theo pretrained “NlpHUST/gpt2-vietnamese” của HuggingFace. B t ộ ừ điển của mô hình cũng từ pretrained “NlpHUST/gpt2-vietnamese” của HuggingFace. Cũng tương tự như mơ hình Pretrained CNN – LSTM, những caption có độ dài ngắn hơn 30 sẽ được thêm padding ở cuối

<b>Chương 4. Thực nghi m </b>ệ

Link code:

<b>4.1. Mơ tả mơ hình thử nghiệm </b>

4.1.1. Mơ hình Pretrained CNN LSTM –

Encoder mơ hình s d ng Pretrained CNN ResNet101 c a Pytorch ử ụ – ủ

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

Decoder mơ hình s d ng Pretrained Embedding Word2Vec v i embedding ử ụ ớsize=300

Cài đặt hyperparameter: - Batch size: 32

- Encoder learning rate: 1e-4 - Decoder learning rate: 4e-4 - Optimizer: Adam

- Loss function: Cross Entropy Loss Chiến lược huấn luyện:

- Pha 1: Đóng băng Encoder, chỉ huấn luy n Decoder ệ- Pha 2: Huấn luyện toàn b mơ hình ộ

4.1.2. Mơ hình ViT – GPT2

Encoder và Decoder c a mơ hình s d ng lủ ử ụ ần lượt hai mơ hình pretrained pretrained “google/vit-base-patch16-224-in21k” và “NlpHUST/gpt2-vietnamese” c a HuggingFace. ủCả hai mơ hình được kết hợp với nhau qua class VisionEncoderDecoderModel của HuggingFace:

Hình 16: Khai báo mơ hình ViT - GPT 2

Hyperparameter của mơ hình được set mặc định theo Trainer Argument HuggingFace, c ụ thể ộ ố m t s hyperparameter:

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

- Learning rate: 5e-5 - Optimizer: Adam

- Batch size: thay đổi giá tr batch size mị ặc định thành 32 Mơ hình hu n luy n sấ ệ ử ụ d ng API c a HuggingFace ủ

<b>4.2. Độ </b>đo đánh giá

ROUGE (Recall-Oriented Understudy for Gisting Evaluation) là một độ đo đánh giá chất lượng cho các mơ hình tóm tắt văn bản và d ch máy, b ng cách tính tị ằ ỉ l n-Gram ệtrùng nhau giữa d ữ liệu d đoán với t p d liệự ậ ữ u g c (ROUGE- ố N)

ROUGE-N có cơng th c tính Precision, Recall và F1 ứ như ở dưới:- Precision: 𝑅𝑂𝑈𝐺𝐸 − 𝑁<sub>𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛</sub>= <small>𝑆ố 𝑙ượ𝑛𝑔 𝑛−𝐺𝑟𝑎𝑚 𝑡𝑟ù𝑛𝑔 𝑛ℎ𝑎𝑢</small>

<small>𝑆ố 𝑙ượ𝑛𝑔 𝑛−𝐺𝑟𝑎𝑚 𝑡𝑟𝑜𝑛𝑔 𝑑ữ ệ𝑢 𝑑ự đ𝑜á𝑛𝑙𝑖</small>

Hình 17: ROUGE-N Precision

- Recall: 𝑅𝑂𝑈𝐺𝐸 − 𝑁<sub>𝑟𝑒𝑐𝑎𝑙𝑙</sub>= <sup>𝑆ố 𝑙ượ</sup><sup>𝑛𝑔</sup><sup> 𝑛−𝐺𝑟𝑎𝑚 </sup><sup>𝑡𝑟ù𝑛𝑔</sup><sup> 𝑛ℎ</sup><sup>𝑎𝑢</sup><small>𝑆ố 𝑙ượ𝑛𝑔 𝑛−𝐺𝑟𝑎𝑚 𝑡𝑟𝑜𝑛𝑔 𝑡ậ𝑝 𝑑ữ ệ𝑢 𝑔ố𝑐𝑙𝑖</small>

Hình 18: ROUGE-N Recall

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

Hình 20: Longest Common Sequence

ROUGE-L có cơng thức tính Precision, Recall và F1như ở hình dưới:

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

Hình 21: ROUGE-L Precision, Recall và F1

Trong báo cáo này, nhóm sử d ng F1 c a ROUGE-1, ROUGE-2 và ROUGE-ụ ủ L đểlàm độ đo đánh giá mơ hình

<b>4.3. Đánh giá kết quả </b>

4.3.1. Beam Search

Beam Search là thu t toán ph bi n trong nhi u bài toán sinh chuậ ổ ế ề ỗi văn bản như dịch máy ho c tóm tặ ắt văn bản, là m t thu t toán tìm kiộ ậ ếm giúp gia tăng độ chính xác c a quá ủtrình sinh chu ỗi.

Ý tưởng của Beam Search là tại mỗi bước dự đốn, thay vì chỉ chọn ra 1 k t qu có ế ảxác su t l n nh t và ch phát triấ ớ ấ ỉ ển trên k t quế ả đó như thuật tốn Greedy Search, ta s ẽ chọn

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

ra k t qu có xác su t cao nh t và phát tri n vi<b>k ế</b> ả ấ ấ ể ệc tìm ki m t ế <b>ừ k k t qu </b>ế <b>ả đó. Trong đó k là </b>

tham số tương ứng với s lượng ng viên. ố ứ

Giá trị <b>k càng l n, kh</b>ớ ả năng sinh chu i tỗ ốt là cao hơn nhưng nó cũng tốn nhi u b ề ộnhớ và năng lực tính tốn hơn

Hình 22: Thu t tốn Beam Search ậ

Ở ví dụ trên, v i k = 2, thay vì xét m t k t quớ ộ ế ả là nice, Beam Search xét 2 k t qu là ế ảnice và dog, và từđó mở ng thêm ph m vi tìm ki rộ ạ ếm

4.3.2. Kết quả huấn luyện

4.3.2.1. Mơ hình Pretrained CNN LSTM –Kết qu hu n luy n: ả ấ ệ

- Pha 1: Huấn luyện trong 20 epoch, mơ hình h i t epoch 11 ộ ụ ở

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

- Pha 2: Bắt đầu t mơ hình t t nhừ ố ất trong pha 1, hu n luy n thêm 20 epoch, mơ hình ấ ệhội tụ sau 7 epoch (epoch 18)

Đánh giá trên tập test với beam search khác nhau:

Beam size ROUGE-1 ROUGE-2 ROUGE-L Inference time (s/image)

Đánh giá trên tập test:

Beam size ROUGE-1 ROUGE-2 ROUGE-L Inference time (s/image)

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<b>Chương 5. Kết lu</b>ận và hướ<b>ng phát tri n </b>ể

Nhóm đã tìm hi u và xây dể ựng được 2 mơ hình Image Captioning theo hai hướng s ửdụng mạng hồi quy và sử dụng Transformer. Đồng thời nhóm cũng đã thực nghiệm mơ hình trên t p d u ti ng viậ ữ liệ ế ệt

Kết qu ả thu được chưa đạt k t qu cao do giế ả ới hạn v bề ộ d ữ liệu và tài nguyên GPU, và các tham s ố chưa được hiệ chỉu nh nhiều để ối ưu kết quả t

Hướng phát triển:

- Xây dựng bộ dữ liệu l n ớ hơn - Tối ưu tham số cho mơ hình

<b>Chương 6. Tài liệu tham khảo </b>

[1] Kelvin Xu, et al. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. arXiv:1502.03044v3 [cs.LG] 19 Apr 2016.

[2] Dosovitskiy, Alexey, et al. "An image is worth 16x16 words: Transformers for image recognition at scale." arXiv preprint arXiv:2010.11929 (2020).

[3] Radford, Alec, et al. "Language models are unsupervised multitask learners." OpenAI blog 1.8 (2019): 9.

Tài liệu Internet:

-

- ORNZqV78l0n#_221-self-attention-layer-7

a/p/vision-transformer-for-image-classification-- vision-encoder-decoder-step-2-step-guide-part-1-495ecb05f0d5

vision-encoder-decoder-step-2-step-guide-part-2-95f64f6b73b9

transformers/

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

-generateto

- -nlp-in111df6c64460

</div>

×