Tải bản đầy đủ (.docx) (34 trang)

đồ án 2 tìm hiểu về kiến trúc transformer

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 (871.05 KB, 34 trang )

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

<b>ĐỀ TÀI: “TÌM HIỂU VỀ KIẾN TRÚC TRANSFORMER”</b>

<i><b>Giảng viên hướng dẫn: NGUYỄN CÔNG HOANSinh viên thực hiện:</b></i>

<i><b>Tp. Hồ Chí Minh, tháng 12 năm 2023</b></i>

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

<b>LỜI CẢM ƠN</b>

Nhóm em xin chân thành cảm ơn sự hướng dẫn tận tình của thầy NguyễnCơng Hoan - giảng viên hướng dẫn môn Đồ án 2 đã hỗ trợ cho nhóm trongq trình nghiên cứu để nhóm hồn thành đề tài này.

Trong q trình thực hiện, cũng như q trình làm báo cáo, tụi em khótránh khỏi những sai sót, tụi em hi vọng thầy bỏ qua cũng như tụi em rấtmong nhận được ý kiến đóng góp của thầy để tụi em học thêm được nhiềukinh nghiệm để hoàn thành tốt những đồ án lần sau. Một lần nữa nhóm emxin chân thành cảm ơn thầy.

Nhóm nghiên cứu

Trần Võ Việt Quốc – Nguyễn Đức Tuấn

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

<b>NHẬN XÉT CỦA GIẢNG VIÊN</b>

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

2. Chi tiết Self-Attention Mechanism...11

a. Query, Key và Value...11

b. Multi-Head Attention...12

c. Masked-Self Attention...13

3. Encoder và decoder...15

a. Cấu trúc và chức năng...15

b. Layer Normalization và Residal Connections...17

III. Ứng dụng kiến trúc Transformer trong việc xử lý ảnh...19

3.Tiến hành huấn luyện mơ hình và đánh giá hiệu suất của chúng trên các bộ dữ liệu...19

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

a. Recurrent Neural Networks (RNNs) và Long Short-Term Memory (LSTM)...30b. Convolutional Neural Networks (CNNs)...30c. Gated Recurrent Units (GRUs)...30d. Bidirectional Encoder Representations from Transformers (BERT)

V. Kết luận...31VI. Tài liệu tham khảo...32

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

I. Tổng quan về Transformer

1. Lý do ra đời của Transformer và tác giả của biện pháp

Transformer là một kiến trúc mạng nơ-ron được giới thiệu trong bài báo có tựa đề "Attention is All You Need," được công bố tại hội nghị Advances in Neural Information Processing Systems (NeurIPS) vào năm 2017. Dưới đây là danh sách các tác giả của bài báo: Ashish Vaswani, Noam Shazeer, Nini Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin. Tổ chức xuất bản của bài báo này là Neural Information Processing Systems Foundation, và nó được cơng bố trong Proceedings of the 31st International Conference on Neural Information Processing Systems (NeurIPS 2017).

Năm 2017, Google công bố bài báo “Attention Is All You Need” thông tin về Transformer như tạo ra bước ngoặt mới trong lĩnh vực NLP: “𝑻𝒓𝒂𝒏𝒔𝒇𝒐𝒓𝒎𝒆𝒓 𝑵𝒆𝒖𝒓𝒂𝒍 𝑵𝒆𝒕𝒘𝒐𝒓𝒌 𝒊𝒔 𝒕𝒉𝒆 𝒄𝒖𝒓𝒓𝒆𝒏𝒕 𝒔𝒕𝒂𝒕𝒆-𝒐𝒇-𝒕𝒉𝒆-𝒂𝒓𝒕 𝒕𝒆𝒄𝒉𝒏𝒊𝒒𝒖𝒆 𝒊𝒏 𝒕𝒉𝒆 𝒇𝒊𝒆𝒍𝒅 𝒐𝒇 𝑵𝑳𝑷”. Trước khi Transformer ra đời, hầu như các tác vụ xử lý ngôn ngữ tự nhiên, đặc biệt trong mảng Machine Translation (dịch máy) đều sử dụng kiến trúc Recurrent Neural Networks (RNNs). Do phải xử lý câu đầu vào một cách tuần tự nên nhược điểm của RNNs là tốc độ xử lý chậm và hạn chế trong việc biểu diễn sự phụ thuộc xa giữa các từ trong một câu.

Transformer giải quyết những vấn đề này bằng cách sử dụng cơ chế chú ý, nơi mà mỗi phần tử đầu ra của mạng có thể chú ý đến một phần tử cụ thể nào đó trong đầu vào, với trọng số được xác định dựa trên mức độ quan trọng của phần tử đó đối với việc tạo ra đầu ra. Cơ chế chú ý chophép Transformer xử lý các phần tử của dữ liệu đầu vào đồng thời, không cần phải tuân theo thứtự tuần tự như các mô hình trước đó.

Khi Transformer xuất hiện, các vấn đề mà RNNs gặp phải gần như đã được giải quyết triệt để. Sau này, Transformer là nền tảng cho các mô hình nổi tiếng khác như Bidirectional Encoder Representations from Transformer – BERT (2019), mơ hình mà Google đã áp dụng cho cỗ máy tìm kiếm của mình hay trong AlphaStar của DeepMind – một chương trình có khả năng đánh bạinhững người chơi đỉnh cao của Starcraft.

Transformer cũng có khả năng dễ dàng mở rộng đến các nhiệm vụ khác nhau và có thể áp dụng cho các loại dữ liệu khác nhau, không chỉ giới hạn trong lĩnh vực xử lý ngơn ngữ tự nhiên. Do đó, tính linh hoạt và hiệu quả của Transformer đã làm nó trở thành một công cụ quan trọng trong nhiều ứng dụng trong lĩnh vực trí tuệ nhân tạo.

2. Ứng dụng chính của Transformer

Tranformer chủ yếu được sử dụng trong xử lý ngơn ngữ tự nhiên (NLP) và thị giác máy tính (CV). Trong thực tế, bất kỳ dữ liệu văn bản, hình ảnh hoặc video tuần tự nào cũng có thể trở thành ứng cử viên cho mơ hình Tranformer. Trong những năm qua, Tranformer đã đạt được thành công lớn trong việc dịch ngơn ngữ, nhận dạng giọng nói, dịch giọng nói và dự đốn chuỗi thời gian. Các mơ hình được đào tạo trước như GPT-3,

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

ứng dụng trong thế giới thực như tóm tắt tài liệu, tạo tài liệu, phân tích trình tự sinh học và hiểu video.

Vào năm 2020, người ta đã chứng minh rằng GPT-2 có thể được điều chỉnh để chơi cờ vua. Tranformer đã được ứng dụng vào lĩnh vực xử lý hình ảnh và cho kết quả có tính cạnh tranh với mạng nơ ron tích chập (CNN).

Do được áp dụng rộng rãi trong thị giác máy tính và mơ hình ngơn ngữ, chúng đã bắt đầuđược áp dụng trong các lĩnh vực mới như hình ảnh y tế và nhận dạng giọng nói.

Các nhà nghiên cứu đang sử dụng máy biến thế để hiểu sâu hơn về mối quan hệ giữa genvà axit amin trong DNA và protein. Điều này cho phép thiết kế và phát triển thuốc nhanhhơn. Máy biến áp cũng được sử dụng trong nhiều lĩnh vực khác nhau để xác định mơ hình và phát hiện hoạt động bất thường nhằm ngăn chặn gian lận, tối ưu hóa quy trình sản xuất, đề xuất đề xuất được cá nhân hóa và nâng cao dịch vụ chăm sóc sức khỏe. Những cơng cụ mạnh mẽ này cũng thường được sử dụng trong các ứng dụng hàng ngày như cơng cụ tìm kiếm như Google và Bing.

Dưới đây là một số ứng dụng phổ biến của mơ hình Transformer:

- Dịch máy và Xử lý ngơn ngữ tự nhiên (NLP): Transformer đã đạt được hiệu suất xuấtsắc trong các nhiệm vụ như dịch máy, tóm tắt văn bản, và các tác vụ NLP khác như phânloại văn bản, gán nhãn từ ngữ, và hiểu ý đồng nghĩa.

- Mơ hình ngơn ngữ: Các biến thể của Transformer như GPT (Generative Pre-trained Transformer) đã được sử dụng để huấn luyện mơ hình ngơn ngữ tự nhiên lớn, có khả năng tạo ra văn bản tự nhiên và có khả năng giải quyết nhiều nhiệm vụ khác nhau mà không cần huấn luyện riêng biệt.

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

- Hình ảnh và Video: Transformer cũng đã được áp dụng trong lĩnh vực xử lý ảnh và video, đặc biệt là trong các nhiệm vụ như nhận diện vật thể, phân đoạn hình ảnh, và sinh hình ảnh.

- Âm thanh và Ngơn ngữ tự nhiên: Transformer có thể được sử dụng trong xử lý âm thanh, như chuyển đổi giọng nói thành văn bản (ASR) và tổ chức thông tin trong dữ liệu âm thanh.

- Tính tốn song song và hiệu suất: Kiến trúc self-attention trong Transformer cũng mang lại lợi ích về tính tốn song song, giúp nó trở thành một lựa chọn hấp dẫn cho việc xử lý dữ liệu lớn và tăng tốc các tác vụ học máy trên phạm vi rộng.

- Học chuyển giao (Transfer Learning): Mô hình Transformer thường được sử dụng trong các mơ hình học chuyển giao, nơi một mơ hình đã được huấn luyện trên một nhiệmvụ lớn có thể được chuyển giao để giúp đỡ trong việc giải quyết các nhiệm vụ tương tự khác mà không cần huấn luyện lại từ đầu.

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

II. Kỹ thuật của Transformer

 Word embeddings phần nào cho giúp ta biểu diễn ngữ nghĩa của một từ, tuy nhiên cùng một từ ở vị trí khác nhau của câu lại mang ý nghĩa khác nhau.

o Positional Encoding để inject thêm thông tin về vị trí của một từ

- Là cơ chế giúp Transformer “hiểu” được sự liên quan giữa các từ trong một câu

- Có thể khẳng định rằng Self-Attention chính là thành phần quan trọng nhất củatransformer. Sự khác biệt là trong khi cơ chế attention sẽ tính tốn dựa trên trạng thái của decoder ở time-step tiện tại và tất cả trạng thái ẩn của encoder. Cịn self-attention có thể hiểu là attention trong một câu, khi từng thành phần trong câu tương tác với nhau. Từng token sẽ “quan sát” các tokens còn lại, thu nhập ngữ cảnh của câu và cập nhật vector biểu diễn

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

b. Encoder-Decoder Architecture

Transformer bao gồm 2 phần lớn là encoder và decoder. Encoder dùng để học vector biểu của cẫu với mong muốn vector này mang thơng tin hồn hảo của câu đó. Decoder thực hiện chức năng chuyển vector biểu diễn kia thành ngơn ngữ đích.

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

Ưu điểm xử lý song song các từ nhờ nhiều lớp Encoder

2. Chi tiết Self-Attention Mechanism

a. Query, Key và Value

Để xây dựng cơ chế self-attention ta cần chú ý đến hoạt động của 3 vector biểu diễn cho mỗi từ lần lượt là:

<b><small>-</small></b> Query: hỏi thông tin

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

<b><small>-</small></b> Key: trả lời rằng nó có một số thơng tin

<b><small>-</small></b> Value: trả về thơng tin đó

Query được sử dụng khi một token “quan sát” những tokens cịn lại, nó sẽ tìm kiếm thông tin xung quanh để hiểu được ngữ cảnh và mối quan hệ của nó với các tokens cịn lại. Key sẽ phản hồi yêu cầu của Query và được sử dụng để tính trọng số attention. Cuối cùng, Value được sử dụng để tính trọng số attention. Cuối cùng, Value được sử dụng trọng số attention vừa rồi để tính ra vector đại diện (attention vector). Trong ảnh 3 ma trận W<small>Q</small>, W<small>K</small> và W<small>V</small> chính là các hệ số mà mơ hình cần huấn luyện.

Biểu thức để tính attention vector như sau:

Với d<small>k</small> là số chiều của vector Key với mục đích tránh tràn luồng

Kỹ thuật này giúp kiểm sốt độ phức tạp tính tốn và tránh vấn đề gradient bùng nổ. Bêncạnh đó có thể tính toán song song trên nhiều key vectors, giúp tăng cường hiệu suất.

b. Multi-Head Attention

Thơng thường, để có thể hiểu được vai trò của một từ trong một câu ta cần hiều được sự liên quan giữa từ đó và các thành phần còn lại trong câu. Điều này rất quan trọng trong q trình xử lí câu đầu vào ở ngơn ngữ A và cả trong q trình tạo ra câu ở ngơn ngữ B. Vì vậy, mơ hình cần phải tập trung vào nhiều thứ khác nhau, cụ thể là thay vì chỉ có một cơ chế self attention như đã giới thiệu hay còn gọi là 1 "head" thì mơ hình sẽ có nhiều "heads" mỗi head sẽ tập trung vào khía cạnh về sự liên quan giữa từ và các thành phần cịn lại. Đó chính là multi-head attention.

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

Khi triển khai, ta cần dựa vào query, key và value để tính tốn cho từng head. Sau đó ta sẽ concat các ma trận thu được để thu được ma trận của multi-head attention. Để có đầu ra có cùng kích thước của đầu vào thì cần nhân với ma trận W.

Multi-Head Attention cho phép mơ hình chú ý đến đồng thời những pattern dễ quan sát được như sau:

- Chú ý đến từ kế trước của một từ- Chú ý đến từ kế sau của một từ

- Chú ý đến những từ liên quan của một từ

c. Masked-Self Attention

Là cơ chế được sử dụng cho decoder trong transformer, cụ thể nó thực hiện nhiệm vụ chỉ cho phép target token tại timestep hiện tại chỉ được phép dùng các tokens ở time-steptrước đó. Về hoạt động nó cũng giống như đã giới thiệu ở trên, ngoại trừ việc nó khơng tính đến attention của những tokens trong tương lai.

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

Giả sử bạn muốn Transformer thực hiện bài toán English-France translation, thì cơng việc của Decoder là giải mã thơng tin từ Encoder và sinh ra từ tiếng Pháp dựa trên nhữngtừ trước đó. Vậy nên, nếu ta sử dụng multi-head attention trên cả câu như ở Encoder, Decoder sẽ “thấy” ln từ tiếp theo mà nó cần dịch. Để ngăn điều đó, khi Decoder dịch

<i>đến từ thứ i, phần sau của câu tiếng Pháp sẽ bị che lại (masked) và Decoder chỉ được </i>

phép “nhìn thấy” phần nó đã dịch trước đó.

Decoder về cơ bản là giống với encode, chỉ khác là Decoder decode từng từ một và input của Decoder (câu tiếng Pháp) bị masked.

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

- Lớp Multi-Layer Perceptrons (MLP): Lớp này chứa một hàm Gaussian Error Linear Unit hai lớp.

- Lớp thường: Lớp này được thêm vào trước mỗi khối, vì nó khơng bao gồm bấtkỳ yếu tố phụ thuộc mới nào giữa các hình ảnh huấn luyện. Điều này giúp cải thiện thời gian đào tạo và hiệu suất tổng thể.

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

Encoder đầu tiên sẽ nhận ma trận biểu diễn của các từ đã được cộng với thông tin vị trí thơng qua positional encoding. Sau đó, ma trận này sẽ được xử lý bởi Multi Head Attention. Multi Head Attention thật chất là self-attention, nhưng mà để mơ hình có thể có chú ý nhiều pattern khác nhau, tác giả đơn giản là sử dụng nhiều self-attention.

- Giả sử bạn muốn Transformer thực hiện bài tốn English-France translation, thì công việc của Decoder là giải mã thông tin từ Encoder và sinh ra từ tiếng Pháp dựa trên nhữngtừ trước đó. Vậy nên, nếu ta sử dụng multi-head attention trên cả câu như ở Encoder, Decoder sẽ “thấy” luôn từ tiếp theo mà nó cần dịch. Để ngăn điều đó, khi Decoder dịch

<i>đến từ thứ i, phần sau của câu tiếng Pháp sẽ bị che lại (masked) và Decoder chỉ được </i>

phép “nhìn thấy” phần nó đã dịch trước đó.

- Decode về cơ bản là giống với encode, chỉ khác là Decoder decode từng từ một và input của Decoder (câu tiếng Pháp) bị masked.

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

b. Layer Normalization và Residal Connections

<i>Layer Normalization:</i>

- Là một kỹ thuật chuẩn hóa dữ liệu đầu ra của mỗi layer trong mạng nơ-ron. Mục tiêu của nó là giảm thiểu hiện tượng "covariate shift", tức là sự thay đổi trong phân phối của đầu vào cho mỗi layer. Bằng cách này, Layer Normalization giúp đảm bảo rằng các đầu vào cho mỗi layer đều ở cùng một khoảng giá trị, giảm thiểu sự biến động và giúp mơ hình học tốt hơn.

- Công thức của Layer Normalization cho một đầu vào x trong một layer nhất định là:

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

- Residual Connections được biểu diễn bằng công thức: Output=Activation(Input+F(Input))

Trong đó:

Input : Input là đầu vào của layer hiện tại.

F(Input) : F(Input) là hàm biểu diễn phần học của layer.Activation : Activation là hàm kích hoạt, thường là ReLU.

Residual Connections giúp qua mơ hình thơng tin từ layer trước đó mà khơng làm mất thơng tin, giúp lan truyền ngược hiệu quả hơn và giảm nguy cơ vanishing

gradient (đạo hàm tiệm cận 0). Điều này làm cho việc huấn luyện các mơ hình sâu trởnên dễ dàng hơn và giúp tăng cường hiệu suất của mạng.

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

III. Ứng dụng kiến trúc Transformer trong việc xử lý ảnh

3.Tiến hành huấn luyện mơ hình và đánh giá hiệu suất của chúng trên các bộ dữ liệu

<small>print(f"x_test shape: {x_test.shape} - y_test shape: {y_test.shape}")</small>

<small>Downloading data from python.tar.gz</small>

<small> [==============================] - 3s 0us/stepx_train shape: (50000, 32, 32, 3) - y_train shape: (50000, 1)x_test shape: (10000, 32, 32, 3) - y_test shape: (10000, 1)</small>

Tải xuống và sử dụng tập dữ liệu cifar100 bao gồm 60000 hình ảnh 32x32 được phânra 100 lớp nhỏ, các lớp nhỏ lại thuộc 20 siêu lớp lớn hơn. Mỗi lớp chứa 600 hình ảnh. Bộđược chia ra hai phần 50000 hình ảnh cho training và 10000 ảnh cho test.

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

<b><small>-</small>Đặt các siêu tham số( hyperparameter)</b>

<b><small>-</small></b> <sub>learning_rate = </sub><sub>0.001</sub><b><small>-</small></b> <small>weight_decay = 0.0001</small>

<b><small>-</small></b> <sub>batch_size = </sub><sub>256</sub><b><small>-</small></b> <small>num_epochs = 100</small>

<b><small>-</small></b> <small>image_size = 72 # We'll resize input images to this size</small>

<b><small>-</small></b> <sub>patch_size = </sub><sub>6</sub><sub> </sub><sub># Size of the patches to be extract from the input </sub>

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

của quá trình transformer và encoder. Mlp_head_units là số chiều ẩn của lớp layer perceptron.

nulti-III.2Tăng cường dữ liệu

<small>data_augmentation = keras.Sequential( [</small>

<small> layers.Normalization(),</small>

<small> layers.Resizing(image_size, image_size), layers.RandomFlip("horizontal"),</small>

<small> layers.RandomRotation(factor=0.02), layers.RandomZoom(</small>

<small> height_factor=0.2, width_factor=0.2 ),</small>

<small> ],</small>

<small> name="data_augmentation",)</small>

<small># Compute the mean and the variance of the training data for normalization.</small>

Do đã nói về điểm yếu của ViT là overfitting, ta sẽ sử dụng tăng cường dữ liệu cho tập dữ liệu. Đầu tiên là lớp normalization sẽ chuẩn hóa (normalization) lên đầu ra dựa trên Mean (trung bình) và Standard Deviation (độ lệch chuẩn). Kế đó là lật ảnh, xoay ảnh ngẫu nhiên và ngẫu nhiên phóng to.

III.3MLP

def <small>mlp(x, hidden_units, dropout_rate): for units in hidden_units:</small>

<small> x = layers.Dense(units, activation=tf.nn.gelu)(x) x = layers.Dropout(dropout_rate)(x)</small>

<small> return x</small>

Thêm một skip connection giữa các heads của các layer để chuẩn hóa thơng tin khi chuyển giữa các heads.

<small> def__init__(self, patch_size): super().__init__()</small>

<small> self.patch_size = patch_size defcall(self, images):</small>

<small> batch_size = tf.shape(images)[0] patches = tf.image.extract_patches( images=images,</small>

<small> sizes=[1, self.patch_size, self.patch_size, 1], strides=[1, self.patch_size, self.patch_size, 1],</small>

</div>

×