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

đồ án 1 tìm hiểu về mô hình 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 (1.47 MB, 33 trang )

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

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN </b>

<b>KHOA CÔNG NGHỆ PHẦN MỀM </b>

<b>Trần Phước Anh Quốc </b>

<b>Lê Văn Duy </b>

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

1.4. Mục tiêu và phạm vi nghiên cứu ... 9

1.5. Đóng góp của nghiên cứu ... 10

1.6. Bố cục của báo cáo ... 10

<b>CHƯƠNG 2. PHƯƠNG PHÁP ... 11 </b>

2.1. Tìm Hiểu Kiến Trúc Transformer ... 11

2.1.1. Quá trình encoder và decoder ... 11

2.1.2. Transformer và Seq2seq model ... 13

2.1.3. Cơ chế attention ... 14

2.2. Phương Pháp Áp Dụng ... 17

2.2.1. Bộ dữ liệu ... 18

2.2.2. Tiền xử lý dữ liệu ... 18

2.2.3. Chuẩn bị dữ liệu cho huấn luyện ... 18

2.2.4. Xây dựng mạng nơ ron ... 19

2.2.5. Biên dịch và huấn luyện mơ hình ... 19

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

<b>DANH MỤC HÌNH </b>

Hình 2.1 Mơ hình khi chưa có attention layer ... 11

Hình 2.2 Mơ hình khi đã attention layer ... 12

Hình 2.3 Kiến trúc Transformer ... 13

Hình 2.4 Sơ đồ Self Attention ... 14

Hình 2.5 Các Input ... 14

Hình 2.6 Quá trình tính tốn trọng số attention ... 15

Hình 2.7 Kết quả tính attention cho tồn bộ các từ trong câu ... 15

Hình 2.8 Sơ đồ cấu trúc Multi-head Attention ... 16

Hình 2.9 Sơ đồ của 1 block layer áp dụng multi-head attention layer ... 16

Hình 2.10 Sơ đồ quá trình encoder với 6-layer của transformer ... 17

Hình 2.11 Quá trình biến đổi giá trị input thành các giá trị output ... 17

<b>Hình 2.12 (left) Transformer architecture and training objectives used in this work. (right) Input transformations for fine-tuning on different tasks. We convert all structured </b>inputs into token sequences to be processed by our pre-trained model, followed by a linear+softmax layer. ... 18

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

<b>DANH MỤC TỪ VIẾT TẮT Từ viết tắt Từ nguyên gốc </b>

MVCModel-View-ControllerRNNRecurrent Neural NetworkCNNConvolutional Neural Network

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

<b>TĨM TẮT </b>

Mơ hình Transformer là một mơ hình học sâu được giới thiệu vào năm 2017, được sử dụng chủ yếu trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP) và thị giác máy tính (CV) . Mơ hình này đã trở nên rất phổ biến và được sử dụng trong nhiều ứng dụng, bao gồm các dự án của OpenAI và DeepMind .Được giới thiệu như là một SOTA (state-of-the-art) trong lĩnh vực của mình – phương pháp giải quyết vấn đề tốt nhất từ trước đến này của một lĩnh vực. Khác với các mơ hình truyền thống dựa trên RNN hoặc LSTM, Transformer sử dụng cơ chế chú ý để tập trung vào các phần quan trọng của dữ liệu đầu vào, giúp cải thiện khả năng hiểu và tạo ra dữ liệu.

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

<b>1.2. Phát biểu bài toán </b>

Đầu vào của bài toán là một hoặc nhiều đoạn văn bản, đầu ra là kết quả phản hồi liên quan đến thông tin đầu vào.

1. Ngôn ngữ thông thường trong ứng dụng web là gì?

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

Bạn có thể gửi cho tơi một vài câu hỏi liên quan đến môn học Công nghệ Web được khơng ?.

2. HTML có phải là framework không ?

3. Công nghệ Web khác với lập trình

<b>Web như thế nào ? </b>

<i>Bảng 1.1 Đầu vào và đầu ra của bài toán xử lý văn bản tự nhiên </i>

• Độ chính xác của dữ liệu: Hiệu suất của mơ hình có thể bị ảnh hưởng, nếu dữ liệu đầu vào chứa thơng tin khơng chính xác hoặc mâu thuẫn, mơ hình có thể tái tạo hoặc tự tạo ra thơng tin khơng chính xác trong câu trả lời.

• Thách thức về ngữ cảnh trong văn bản: hiệu suất việc xử lý ngôn ngữ tự nhiên cao hay thấp phụ thuộc vào mức độ xử lý ngữ cảnh của văn bản.Có thể ngữ cảnh sẽ làm thay đổi (hoặc khơng) tính chất của văn bản.Gây khó khăn trong việc đưa

<b>ra câu trả lời chính xác nhất. 1.4. Mục tiêu và phạm vi nghiên cứu </b>

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

• Phân tích và xử lý dữ liệu u cầu để cân nhắc đến sự đa dạng và phong phú của dữ liệu, bao gồm nhiều góc độ , mức độ.

Phạm vi:

• Nghiên cứu kiến trúc biến như Transformer và tìm hiểu các mơ hình mạng sâu trước đó về lĩnh lực xử lý ngơn ngữ tự nhiên như RNN hay LSTM để hiểu rõ sự ra đời của mơ hình.

• Nghiên cứu ứng dụng của mơ hình trong các lĩnh vực thực tế như giáo dục học tập, trò chơi …

• Đề xuất các cải tiến và ứng dụng thực tiễn của mơ hình để nâng cao hiệu suất và đáp ứng yêu cầu của các ứng dụng cụ thể.

• Tích hợp mơ hình tạo và xử lý văn bản tự nhiên vào ứng dụng có sẵn, sử dụng framework Next.js để phát triển giao diện.

• Tạo giao diện người dùng (UI) trực quan và thân thiện để người dùng có thể thao tác dễ dàng và thoải mái khi sử dụng.

• Nghiên cứu các cơ chế và phương pháp tiết kiệm dữ liệu và tối ưu hóa việc truyền tải dữ liệu giữa ứng dụng và mơ hình tạo và xử lý ngơn ngữ tự nhiên.

<b>1.5. Đóng góp của nghiên cứu </b>

Nghiên cứu và tìm hiểu về mơ hình Transformer, dựa vào đó tích hợp cơng cụ hỗ trợ vào trong ứng dụng có nhiều đóng góp quan trọng, từ giá trị thực tiễn và ứng dụng thực tế cho đến cải thiện trải nghiệm người dùng và khả năng mở rộng của ứng dụng. Nghiên cứu mở ra tiềm năng sử dụng và ứng dụng rộng rãi trong tương lai

<b>1.6. Bố cục của báo cáo </b>

Phần cịn lại của báo cáo được trình bày theo bố cục như sau:

<b>• CHƯƠNG 2 – PHƯƠNG PHÁP: tìm hiểu mơ hình kiến trúc Transformer và trình </b>

bày phương pháp Generative Pre-Training trong việc tạo và xử lý văn bản tự nhiên.

<b>• CHƯƠNG 3 – TRIỂN KHAI ỨNG DỤNG: trình bày các cơng cụ, thiết kế, giao </b>

diện và quá trình phát triển ứng dụng giáo dục , nền tảng học tập.

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

<b>• CHƯƠNG 4 – KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: trình bày kết quả đạt </b>

được và những hướng phát triển trong tương lai sau quá trình thực nghiệm model trên website.

<b>Chương 2. PHƯƠNG PHÁP </b>

<b>2.1. Tìm Hiểu Kiến Trúc Transformer </b>

<b>2.1.1. Q trình encoder và decoder </b>

<i>Hình 2.1 Mơ hình khi chưa có attention layer </i>

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

<i>Hình 2.2 Mơ hình khi đã attention layer </i>

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

<b>2.1.2. Transformer và Seq2seq model </b>

<i>Hình 2.3 Kiến trúc Transformer </i>

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

<b>2.1.3. Cơ chế attention </b>

a. Scale dot product attention

<i>Hình 2.4 Sơ đồ Self Attention </i>

<i>Hình 2.5 Các Input </i>

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

<i>Hình 2.6 Q trình tính tốn trọng số attention </i>

<i>Hình 2.7 Kết quả tính attention cho toàn bộ các từ trong câu </i>

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

b. Multi-head Attention

<i>Hình 2.8 Sơ đồ cấu trúc Multi-head Attention </i>

c. Quá trình encoder và decoder

<i>Hình 2.9 Sơ đồ của 1 block layer áp dụng multi-head attention layer </i>

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

<i>Hình 2.10 Sơ đồ quá trình encoder với 6-layer của transformer </i>

<i>Hình 2.11 Quá trình biến đổi giá trị input thành các giá trị output </i>

<b>2.2. Phương Pháp Áp Dụng </b>

<i>Phương pháp được sử dụng là một mơ hình học máy tiền huấn luyện với kiến trúc transformer (Pre-trained Transformer) được xây dựng bằng cách sử dụng encoder trong kiến trúc Transformer để dự tạo và xử lý văn bản tự nhiên. </i>

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

<i><b>Hình 2.12 (left) Transformer architecture and training objectives used in this work. (right) </b></i>

<i>Input transformations for fine-tuning on different tasks. We convert all structured inputs into token sequences to be processed by our pre-trained model, followed by a linear+softmax layer. </i>

<b>2.2.1. Bộ dữ liệu </b>

Bộ dữ liệu RocStories được xây dựng cho bài tốn xử lý ngơn ngữ tự nhiên (NLP) và máy học. Nó bao gồm các câu chuyện ngắn, mỗi câu chuyện có năm câu đều liên quan

với những câu chuyện và ngữ cảnh khác nhau.

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

Loại bỏ Dữ liệu Nhiễu (Noise Removal): Loại bỏ các thành phần không mong muốn hoặc dữ liệu nhiễu như ký tự đặc biệt không cần thiết, dấu câu thừa, hoặc các yếu tố gây nhiễu khác.

Chuẩn hóa Văn bản (Text Normalization): Chuẩn hóa văn bản bằng cách chuyển đổi các từ viết tắt thành từ đầy đủ, thực hiện các biện pháp khác để đảm bảo sự đồng đều trong dữ liệu văn bản.

<b>2.2.3. Chuẩn bị dữ liệu cho huấn luyện </b>

Dữ liệu được chia thành các nhóm,gán giá trị từ 1 đến 5 cho mỗi nhóm để chuẩn hóa (Sentence 1,Sentence 2,Sentence 3,Sentence 4, Sentence 5).

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

<b>2.2.4. Xây dựng mạng nơ ron </b>

Mạng nơ-ron sâu được xây dựng bằng cách sử dụng các lớp Masked Multi-Self Attention và Feed Forward để xử lý các đặc trưng văn bản.

<b>2.2.5. Biên dịch và huấn luyện mơ hình </b>

Mơ hình được biên dịch với hàm mất mát dữ liệu là MultipleChoice LossCompute sau đó sử dụng nn.CrossEntropyLoss để tính tốn mất mát cho cả hai đầu ra của mơ hình,giúp mơ hình học được các tham số tối ưu để giảm thiểu mất mát trên dữ liệu huấn luyện.

Quá trình huấn luyện sử dụng tập dữ liệu đã được chia thành tập huấn luyện và tập kiểm tra. Mục tiêu là tối ưu hóa các tham số mơ hình để cực tiểu hóa hàm mất mát.

<b>Chương 3. TRIỂN KHAI ỨNG DỤNG </b>

<b>3.1. Công Cụ Phát Triển </b>

<b>3.1.1. Cơng cụ lập trình a. Giới thiệu Next.js Framework </b>

<b>Next.js là một framework phổ biến cho việc phát triển ứng dụng web React. Bao </b>

gồm các chức năng giúp tăng hiệu quả phát triển ứng dụng như sau:

• Cung cấp một trình mơ phỏng tích hợp để xem trước trang và kiểm thử trang trong nhiều ngữ cảnh, giúp đảm bảo tính tương thích trên nhiều thiết bị và màn hình.

• Next.js đi kèm với hệ thống định tuyến (routing) tích hợp, giúp quản lý và xử lý định tuyến của ứng dụng một cách thuận tiện.

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

• Hỗ trợ SSR cho việc tạo ra trang động trên máy chủ và SSG cho việc tạo ra trang tĩnh trong quá trình xây dựng, giúp cải thiện hiệu suất và tăng trải nghiệm người dùng.

• Cung cấp tính năng HMR giúp áp dụng các thay đổi mà không cần phải làm mới trang, giúp tăng tốc q trình phát triển.

• Hỗ trợ nhiều phương pháp quản lý CSS, bao gồm CSS Modules và JS, giúp tạo ra các kiến trúc CSS dễ quản lý và phát triển.

CSS-in-• Next.js cho phép bạn định nghĩa các API routes một cách trực tiếp trong dự án của mình, giúp quản lý logic server-side.

• Cơng cụ tìm lỗi mã nguồn (lint) để nắm bắt hiệu suất, khả năng hữu dụng, khả năng tương thích với phiên bản và các vấn đề khác

• Cung cấp các cơng cụ để tối ưu hóa và xử lý ảnh một cách tự động, giúp tăng tốc tải trang và cải thiện hiệu suất.

• Next.js có cơ chế plugin mạnh mẽ và môi trường phát triển linh hoạt, giúp bạn tùy chỉnh và mở rộng khả năng của ứng dụng một cách dễ dàng.

<i>Hình 3.1 Next.js framework </i>

<b>b. Giới thiệu Visual Studio Code </b>

<b>Visual Studio Code là một trình soạn thảo mã nguồn được phát triển bởi </b>

Microsoft dành cho Windows, Linux và macOS. Nó hỗ trợ chức năng debug, đi kèm

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

với Git, có chức năng nổi bật cú pháp (syntax highlighting), tự hồn thành mã thơng minh, snippets, và cải tiến mã nguồn. Visual Studio Code hỗ trợ chức năng debug, đi kèm với Git, có syntax highlighting, tự hồn thành mã thơng minh, snippets, và cải tiến mã nguồn. Nhờ tính năng tùy chỉnh, Visual Studio Code cũng cho phép người dùng thay đổi theme, phím tắt, và các tùy chọn khác.

<i>Hình 3.2 Visual Studio Code </i>

Đối với dự án, VSCode là cơng cụ tiện lợi nhất vì hỗ trợ tốt cả 2 framework là NodeJS và Flutter. Điều này giúp cho các lập trình viên của dự án không tốn quá nhiều công sức để học cách sử dụng nhiều IDE khác nhau. Gây lãng phí tài nguyên.

<b>3.1.2. Design a. Giới thiệu Figma </b>

<b>Figma là một phần mềm dùng để thiết kế giao diện với các thông số cụ thể </b>

do người thiết kế đặt ra giúp hỗ trợ developer có thể dễ dàng hiện thực bản thiết kế trở thành UI thực. Figma chủ yếu hoạt động trên nền web, dù có một số tính năng ngoại tuyến trên các phiên bản ứng dụng desktop cho hệ điều hành mac OS và Windows. Một tiện ích của Figma là Figma Mirror cho Android và iOS giúp người dùng có thể xem các prototype Figma trên thiết bị di động.

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

<i>Hình 3.3 Figma </i>

Những lợi ích Figma đem lại:

o Figma là một cơng cụ miễn phí

o Sử dụng được trên 2 nền tảng Windows và Mac OS (thay vì như sketch chỉ dùng được trên MacOS)

o Thiết kế thời gian thực: Mọi người trong team có thể vẽ cùng một dự án cùng một lúc và thấy được những thay đổi trong bản thiết kế một cách nhanh nhất

o Data được lưu trên hệ thống máy chủ: Các file thiết kế figma sẽ được tự động lưu bất cứ lúc nào trên hệ thống máy chủ (không sợ quên lưu file) và có thể tải xuống để lưu lại trong local

o Có cơ chế comment trực tiếp trên file thiết kế: Việc này sẽ giúp nhận phản hồi hoặc ghi chú khi làm việc đội nhóm

Nhược điểm của Figma:

• Phải có internet thì Figma mới hoạt động được

<b>3.1.3. Lưu trữ source code </b>

<b>GitHub là một dịch vụ cung cấp nền tảng dựa trên web cho việc lưu trữ mã nguồn và </b>

quản lý dự án sử dụng Git. GitHub cho phép bạn lưu trữ mã nguồn của dự án trực tiếp trên các kho lưu trữ (repositories), theo dõi sự thay đổi, tạo các nhánh phát triển riêng

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

biệt, hợp nhất các thay đổi (merge) và thực hiện các hoạt động phát triển khác. Bên cạnh đó, GitHub cũng cung cấp nền tảng xã hội cho các nhà phát triển để chia sẻ mã nguồn, tương tác và hợp tác.

<i>Hình 3.4 Github </i>

<b>Git là một hệ thống quản lý phiên bản phân tán được sử dụng rộng rãi để theo dõi </b>

sự thay đổi trong mã nguồn và quản lý dự án phát triển phần mềm. Nó cho phép nhiều người cùng làm việc trên cùng một dự án, theo dõi sự thay đổi, tích hợp các tính năng mới và quản lý các phiên bản khác nhau của mã nguồn. Git hoạt động theo hình thức phiên bản phân tán, tức là mỗi người dùng có bản sao đầy đủ của toàn bộ lịch sử phiên bản.

Git và GitHub đóng một vai trị quan trọng trong việc quản lý mã nguồn và phát triển phần mềm, cho phép người dùng làm việc cộng tác và theo dõi sự thay đổi trong các dự án phức tạp.

<b>3.1.4. Deploy </b>

<b>Vercel là một nền tảng dành cho việc triển khai ứng dụng web và các dự án trang </b>

tĩnh một cách nhanh chóng và dễ dàng. Nền tảng này được thiết kế để hỗ trợ các lập trình viên và nhóm phát triển trong việc triển khai và quản lý ứng dụng web một cách hiệu quả. Vercel cung cấp một quy trình triển khai đơn giản và hiệu quả. Bạn chỉ cần liên kết dự án của mình từ một số nguồn như GitHub, GitLab, hoặc Bitbucket, và Vercel sẽ tự

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

động xây dựng và triển khai ứng dụng của bạn.Vercel cung cấp mơi trường triển khai production với nhiều tính năng như CDN tích hợp, SSL tự động, và sự linh hoạt trong việc quản lý biến số mơi trường.

<i>Hình 3.5 Vercel </i>

<b>3.2. Công nghệ phát triển 3.2.1. Front-end: Next.js </b>

<b>Next.js là một framework React phổ biến giúp xây dựng ứng dụng web linh hoạt </b>

và hiệu quả. Với hỗ trợ SSR và SSG, nó tối ưu hiệu suất và cung cấp định tuyến tự động, giúp dễ dàng quản lý ứng dụng. HMR (Hot Module Replacement) cho phép áp dụng thay đổi ngay lập tức, tăng tốc q trình phát triển. Với sự tích hợp API routes và sử dụng JavaScript, Next.js trở thành lựa chọn ưa thích cho cộng đồng phát triển web hiện đại.

<b>3.2.2. Back-end: Nodejs + OpenAI API </b>

<b>Node.js là một nền tảng phát triển ứng dụng web được xây dựng dựa trên </b>

JavaScript, giúp các nhà phát triển xây dựng các ứng dụng mạng nhanh chóng và hiệu quả. Điều đặc biệt về Node.js là khả năng xử lý các yêu cầu không đồng bộ một cách hiệu quả nhờ vào mơ hình lập trình sự kiện (event-driven) và sử dụng thư viện I/O không đồng bộ (non-blocking I/O). Điều này cho phép Node.js xử lý hàng loạt yêu cầu mà không cần phải chờ đợi các hoạt động I/O kết thúc, tạo ra hiệu suất cao và đáp ứng tốt trong khi xử lý tải đồng thời lớn.

Một ưu điểm nổi bật khác của Node.js là cộng đồng phong phú và sự hỗ trợ mạnh mẽ từ cộng đồng này. Nó cung cấp rất nhiều các module và thư viện có sẵn thơng qua

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

npm (Node Package Manager), giúp cho việc phát triển ứng dụng trở nên nhanh chóng và linh hoạt hơn bao giờ hết. Bên cạnh đó, Node.js cũng được sử dụng rộng rãi trong việc xây dựng các ứng dụng thời gian thực như ứng dụng chat, trò chơi trực tuyến hay các ứng dụng đa người dùng, nhờ vào tính năng xử lý sự kiện và đồng thời có thể mở rộng một cách linh hoạt.

<i>Hình 3.6 Node.js </i>

OpenAI API là một dịch vụ cung cấp bởi OpenAI, cho phép nhà phát triển tích hợp các mơ hình ngơn ngữ và trí tuệ nhân tạo của OpenAI vào ứng dụng của họ thông qua giao diện lập trình ứng dụng (API). Dưới đây là mơ tả chung về OpenAI API Cho phép thực hiện nhiều nhiệm vụ như tạo văn bản, trả lời câu hỏi, hoặc tương tác thông qua API, mở ra nhiều ứng dụng từ chatbot đến tổ chức thông tin tự động OpenAI liên tục cập nhật và phát triển các mô hình, đảm bảo rằng người sử dụng API ln được trải nghiệm với công nghệ mới nhất và cải tiến.

</div>

×