đồ án 1 tìm hiểu về mô hình transformer

33 0 0
Tài liệu đã được kiểm tra trùng lặp
đồ án 1 tìm hiểu về mô hình transformer

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 r

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẦN MỀM

Trần Phước Anh Quốc

Lê Văn Duy

Trang 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

CHƯƠNG 2 PHƯƠNG PHÁP 11

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

Trang 4

DANH MỤC HÌNH

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 toán trọng số attention 15

Hình 2.7 Kết quả tính attention cho toà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

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 inputs into token sequences to be processed by our pre-trained model, followed by a linear+softmax layer 18

Trang 6

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

MVCModel-View-ControllerRNNRecurrent Neural NetworkCNNConvolutional Neural Network

Trang 7

TÓM TẮT

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

Trang 8

1.2 Phát biểu bài toán

Đầ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ì?

Trang 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

Web như thế nào ?

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

• Độ 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

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

Trang 10

• Phân tích và xử lý dữ liệu yê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

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

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

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

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

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

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

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

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

Trang 11

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

đượ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

Chương 2 PHƯƠNG PHÁP 2.1 Tìm Hiểu Kiến Trúc Transformer

2.1.1 Quá trình encoder và decoder

Hình 2.1 Mô hình khi chưa có attention layer

Trang 12

Hình 2.2 Mô hình khi đã attention layer

Trang 13

2.1.2 Transformer và Seq2seq model

Hình 2.3 Kiến trúc Transformer

Trang 14

2.1.3 Cơ chế attention

a Scale dot product attention

Hình 2.4 Sơ đồ Self Attention

Hình 2.5 Các Input

Trang 15

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

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

Trang 16

b Multi-head Attention

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

c Quá trình encoder và decoder

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

Trang 17

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

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

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

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

Trang 18

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 inputs into token sequences to be processed by our pre-trained model, followed by a linear+softmax layer

2.2.1 Bộ dữ liệu

Bộ dữ liệu RocStories được xây dựng cho bài toá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.

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

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

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

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)

Trang 19

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

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

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

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 toá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

Chương 3 TRIỂN KHAI ỨNG DỤNG 3.1 Công Cụ Phát Triển

3.1.1 Công cụ lập trình a Giới thiệu Next.js Framework

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

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

Trang 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 quá 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

Hình 3.1 Next.js framework

b Giới thiệu Visual Studio Code

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

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

Trang 21

với Git, có chức năng nổi bật cú pháp (syntax highlighting), tự hoà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ự hoà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

Hình 3.2 Visual Studio Code

Đố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

3.1.2 Design a Giới thiệu Figma

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ể

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

Trang 22

Hình 3.3 Figma

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

3.1.3 Lưu trữ source code

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à

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

Trang 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

Hình 3.4 Github

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

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

3.1.4 Deploy

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

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ự

Trang 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

Hình 3.5 Vercel

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

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

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 quá 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

3.2.2 Back-end: Nodejs + OpenAI API

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

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

Trang 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

Hình 3.6 Node.js

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 luôn được trải nghiệm với công nghệ mới nhất và cải tiến

Ngày đăng: 15/05/2024, 09:30

Tài liệu cùng người dùng

Tài liệu liên quan