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 (945.74 KB, 22 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>KHOA CÔNG NGHỆ THÔNG TIN</b>
<b> TRƯƠNG THÀNH ĐẠT - 52300099TRẦN NGỌC HẢI MY - 52300128</b>
<b>THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023</b>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2"><b>KHOA CÔNG NGHỆ THÔNG TIN</b>
<b>TRƯƠNG THÀNH ĐẠT - 52300099TRẦN NGỌC HẢI MT - 52300128</b>
Người hướng dẫn
<b>ThS. Phạm Quốc Duy</b>
<b>THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023</b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">Chúng em xin chân thành cảm ơn tới thầy Phạm Quốc Duy, người đã giảngdạy kiến thức và hướng dẫn em hoàn thành bài tiểu luận này. Trong q trình học tậpvà tìm hiểu mơn Giải tích ứng dụng cho Cơng nghệ thơng tin, em đã nhận được rấtnhiều sự quan tâm, giúp đỡ, hướng dẫn tận tình của thầy. Thầy đã giúp em tích lũythêm kiến thức về mơn học này để có thể hồn hành được bài tiểu luận về đề tài:
Em đã cố gắng vận dụng những kiến thức đã học được và tìm tịi thêm nhiềuthơng tin để hồn thành bài tiểu luận này. Tuy nhiên, do kiến thức còn hạn chế vàkhơng có nhiều kinh nghiệm trên thực tiễn nên khó tránh khỏi những thiếu sót trongbài làm. Rất kính mong thầy cho em thêm những góp ý để bài tiểu luận của em đượchoàn thiện hơn.
Chúng em cũng xin gửi lời cảm ơn tới các bạn cùng lớp, những người đã giúpđỡ, chia sẻ kiến thức và làm việc nhóm trong q trình học tập. Sự giúp đỡ, đónggóp và tinh thần hợp tác của các bạn đã làm phong phú thêm kinh nghiệm học tập.
Chúng em xin gửi lời cảm ơn chân thành tới tất cả những cá nhân đã hỗ trợtrực tiếp hoặc gián tiếp trong quá trình thực hiện bài báo cáo giữa kì.
Cảm ơn tất cả mọi người vì những đóng góp cho sự phát triển và thành cơngtrong học tập của chúng em!
TP. Hồ Chí Minh, ngày ... tháng … năm 20.. Tác giả
(Ký tên và ghi rõ họ tên)
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">Tơi xin cam đoan đây là cơng trình nghiên cứu của riêng tơi và được sựhướng dẫn khoa học của ThS Phạm Quốc Duy. Các nội dung nghiên cứu, kếtquả trong đề tài này là trung thực và chưa cơng bố dưới bất kỳ hình thức nàotrước đây. Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhậnxét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõtrong phần tài liệu tham khảo.
Ngồi ra, trong Dự án còn sử dụng một số nhận xét, đánh giá cũng nhưsố liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thíchnguồn gốc.
<b>Nếu phát hiện có bất kỳ sự gian lận nào tơi xin hồn tồn chịu tráchnhiệm về nội dung Dự án của mình. Trường Đại học Tơn Đức Thắng không</b>
liên quan đến những vi phạm tác quyền, bản quyền do tơi gây ra trong q trìnhthực hiện (nếu có).
TP. Hồ Chí Minh, ngày … tháng … năm20..
Tác giả(Ký tên và ghi rõ họ tên)
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><b>DANH MỤC HÌNH VẼ...</b>
<b>CHƯƠNG 1. PHƯƠNG PHÁP GIẢI BÀI TÂP...</b>
1.1 Giới thiệu chức năng thư viện...
1.1.1 Thư viện NumPy (Numeric Python)...
1.1.2 Thư viện SymPy (Symbol Python)...
1.1.3 Thư viện Matplotlib...
1.2 Giới thiệu về các hàm của thư viện...
1.2.1 Thư viện NumPy (Numeric Python)...
a. Hàm np.arange() để tạo mảng với các giá trị tuần tự...
1.2.2 Thư viện SymPy (Symbol Python)...
a. Hàm sp.solve() để giải phương trình đại số ký hiệu...
b. Hàm sp.symbols() để tạo các biến kí hiệu...
1.2.3 Thư viện Matplotlib.python...
a. Hàm plt.plot() để tạo đồ thị từ phương trình...
b. Hàm plt.title() để tạo tiêu đề cho đồ thị...
c. Hàm plt.legend() để thêm chú thích vào đồ thị...
d. Hàm plt.grid() để tạo lưới cho đồ thị...
e. Hàm plt.show() để hiển thị đồ thị lên màn hình...
1.3 Phương pháp giải bài tập...
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">1.3.1 Câu 1a...
1.3.2 Câu 1b...
1.3.3 Câu 1c...
<b>CHƯƠNG 2. MÃ NGUỒN VÀ KẾT QUẢ ĐẦU RA...</b>
2.1 Phần code và kết quả Câu 1a...
2.1.1 Phần code Câu 1a...
2.1.2 Kết quả Câu 1a...
2.2 Phần code và kết quả Câu 1b...
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Hình 2.1: Scaled Dot-Product Attention...
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">Bảng 4.1: Thống kê kiểu thực thể trong tập VLSP 2016...
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">1.1.1 Thư viện NumPy (Numeric Python)
Thư viện NumPy là một thư viện toán học phổ biến và mạnh mẽ của Python.Được phép làm việc hiệu quả với ma trận và mảng, đặc biệt là ma trận và mảng dữliệu với tốc độ xử lý nhanh hơn nhiều lần khi chỉ sử dụng đơn thuần “core Python”.
Cách cài đặt NumPy: Mở Command Prompt và gõ lệnh “pip install numpy”
Hình: Cài đặt thư viện NumPy bằng Command Prompt
Khai báo thư viện: import numpy as np
Hình: Khai báo thư viện NumPy (Numeric Python)
1.1.2 Thư viện SymPy (Symbol Python)
SymPy là một thư viện tốn học kí hiệu trong Python. Nó cho phép bạn thựchiện các tính tốn biểu thức tốn học, tính đạo hàm, tích phân, giải phương trình vànhiều tính tốn kí hiệu khác.
Cách cài đặt thư viện: Mở Command Prompt và gõ lệnh “pip install sympy”
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">Hình: Cài đặt thư viện SymPy bằng Command Prompt
Khai báo thư viện: import sympy as np
Hình: Khai báo thư viện SymPy (Symbol Python)
1.1.3 Thư viện Matplotlib
Thư viện Matplotlib là một thư viện trực quan hóa mạnh mẽ trong Python,nó cho phép người dùng tạo biểu đồ đường, biểu đồ cột, biểu đồ scatter, biểu đồhình ảnh và nhiều loại biểu đồ khác để trực quan hóa dữ liệu.
Cách cài đặt thư viện: Mở Command Prompt và gõ lệnh “pip installmatplotlib”
Hình: Cài đặt thư viện Matplotlib bằng Command Prompt
Khai báo thư viện: import matplotlib.pyplot as plt
Hình: Khai báo thư viện Matplotlib
<b>1.2 Giới thiệu về các hàm của thư viện</b>
1.2.1 Thư viện NumPy (Numeric Python)
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">a. Hàm np.arange () để tạo mảng với các giá trị tuần tự
Hàm np.arange() dùng để tạo một mảng các giá trị tuần tự dựa trên một dãygiá trị
Cú pháp của hàm: np.arange(start, stop, step, dtype=None)
Hình: Cú pháp của hàm np.arangeTrong đó:
- start (tùy chọn): Giá trị bắt đầu của dải giá trị. Mặc định là 0 nếukhông được cung cấp
- stop: Giá trị kết thúc của dải giá trị. Hàm sẽ tạo ra các giá trị cho đếnstop – 1
- step (tùy chọn): Bước nhảy giữa các giá trị. Mặc định là 1 nếu khôngđược cung cấp
- dtype (tùy chọn): Kiểu dữ liệu của các phần tử trong mảng kết quả.Mặc định là None, nghĩa là kiểu dữ liệu sẽ được xác định tự động dựatrên giá trị của start, stop và step
Ví dụ: Tạo một mảng các số chẵn từ 0 đến 18
Hình: Code ví dụ hàm np.arange và output
1.2.2 Thư viện SymPy ( Symbol Python)
a. Hàm sp.solve() để giải phương trình đại số kí hiệub. Hàm sp.symbols() để tạo các biến kí hiệu
Hàm sp.symbols() dùng để tạo các kí hiệu (symbols) đại diện cho cácbiến và các đối tượng toán học khác trong các biểu thức toán học
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Cú pháp của hàm: sp.symbols('symbol_names')
Hình: Cú pháp của hàm sp.symbols()Trong đó:
- Symbol_names: Một chuỗi (string) chứa tên các kí hiệu (symbols)được phân tách bằng dấu phẩy
Ví dụ: Sử dụng hàm sp.symbols ('x, y, z') để tạo các kí hiệu x, y, và z. Sau đósử dụng các kí hiệu này trong biểu thức y = x + y + 2*z. Kết quả in ra là biểu thứctoán học: x + y + 2*z. trong đó các kí hiệu đã được sử dụng
Hình: Code ví dụ hàm sp.symbols và output
1.2.3 Thư viện Matplotlib
a. Hàm plt.plot() để tạo đồ thị từ phương trìnhb. Hàm plt.title() để tạo tiêu đề cho đồ thịc. Hàm plt.legend() để thêm chú thích vào đồ thịd. Hàm plt.show() để hiển thị đồ thị lên màn hình
<b>1.3 Phương pháp giải bài tập</b>
Khai báo biến toàn cục “x”Khai báo giá trị a
1.3.1 Câu 1a
Khai báo phương trình f(x) và g(x) theo dạng Sympy
Khai báo intersection là giao điểm của hai phương trình f(x) và g(x)Giải phương trình f(x) = g(x) ta tìm được x1 (intersection[0]), x2(intersection[1])
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">Khai báo lại phương trình f(x) và g(x) theo dạng lambda
Khai báo x_arr chạy từ -1000 tới 1000 với bước là 0.1 để đồ thị trực quanhơn
Khai báo y_arrfx tương ứng với giá trị x_arr thế vào f(x) Khai báo y_arrgx tương ứng với giá trị x_arr thế vào g(x)In ra màn hình câu lệnh “Intersection point 1:” và giá trị x1, y1
y1 là kết quả sau khi thế giá trị x1 vào phương trình f(x)In ra màn hình câu lệnh “Intersection point 2:” và giá trị x2, y2
y2 là kết quả sau khi thế giá trị x2 vào phương trình g(x)Vẽ đồ thị f(x) màu đỏ và gắn nhãn f(x)
Khai báo phương trình f(x) và f(xm) là phương trình tịnh tiến của f(x)Định nghĩa phương trình tiếp tuyến: y = k * (x – x ) + y<small>0 0</small>
Khai báo fdiff là phương trình đạo hàm của phương trình f(x)Khai báo fdiffsub là giá trị k
Khai báo t, t0 là phương trình tiếp tuyến của f(x)
Khai báo intersection là giao điểm của phương trình t và phương trình f(xm)Khai báo intersectionfx là giao điểm của phương trình t và phương trình f(x)Khai báo lại phương trình f(x), f(xm), t theo dạng lambda
Khai báo x_arr chạy từ -1000 tới 1000 với bước là 0.1 để đồ thị trực quanhơn
Khai báo y_arrfx tương ứng với giá trị x_arr thế vào f(x)
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">Khai báo y_arrfxm tương ứng với giá trị x_arr thế vào f(xm)Khai báo y_arrt tương ứng với giá trị x_arr thế vào t
In ra màn hình câu lệnh “Equation of the tangent line to the curve f(x) :” vàphương trình t0
In ra màn hình câu lệnh “Intersection point 1:” và giá trị x1, y1y1 là kết quả sau khi thế giá trị x1 vào phương trình tIn ra màn hình câu lệnh “Intersection point 2:” và giá trị x2, y2
y2 là kết quả sau khi thế giá trị x2 vào phương trình t Vẽ đồ thị f(x) màu xanh và gắn nhãn “f(x)”
Vẽ đồ thị f(xm) màu đỏ và gắn nhãn “Shifted f(x)”Vẽ đồ thị t màu cam và gắn nhãn “Tangent line to f(x)”Tạo 2 giao điểm của t và f(xm) hình trịn màu xanhTạo giao điểm của t và f(x) hình trịn màu vàngGhi tiêu đề đồ thị là “Question 1b”
1.3.3 Câu 1c
Khai báo phương trình f(x)
Khai báo phương trình fdiff là phương trình đạo hàm của phương trình f(x)Định nghĩa phương trình tiếp tuyến: y = k * (x – x ) + y<small>0 0</small>
Viết phương trình func bằng cách thế tọa độ điểm (0, -4^3) vào phương trìnhtiếp tuyến của f(x)
Khai báo x0 là hoành độ tiếp điểm của phương trình tiếp tuyếnGiải phương trình func tìm x0
Thế x0[0] vào phương trình f(x) tìm y0Thế x0[1] vào phương trình f(x) tìm y1
Khai báo fdiffsub1 là kết quả sau khi thế x0[0] vào f(x)Khai báo fdiffsub 2 là kết quả sau khi thế x0[1] vào f(x)Khai báo t1 là phương trình tiếp tuyến thứ nhấtKhai báo t2 là phương trình tiếp tuyến thứ haiKhai báo intersection1 là giao điểm của f(x) với t1
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">Khai báo intersection2 là giao điểm của f(x) với t2
In ra màn hình “Equation of the tangent line 1 to the curve f(x) :” và phươngtrình t1
In ra màn hình “Equation of the tangent line 2 to the curve f(x) :” và phươngtrình t2
Khai báo lại phương trình f(x), t1, t1 theo dạng lambda
Khai báo x_arr chạy từ -1000 tới 1000 với bước là 0.1 để đồ thị trực quanhơn
Khai báo y_arrfx tương ứng với giá trị x_arr thế vào f(x)Khai báo y_arrt1 tương ứng với giá trị x_arr thế vào t1Khai báo y_arrt2 tương ứng với giá trị x_arr thế vào t2Vẽ đồ thị f(x) màu xanh nước biển và gắn nhãn “f(x)”Vẽ đồ thị t1 màu xanh lá cây và gắn nhãn “Tangent line 1”Vẽ đồ thị t2 màu cam và gắn nhãn “Tangent line 2”
Tạo 2 giao điểm của hai phương trình tiếp tuyến t1, t2 của phương trình f(x)là kim cương đỏ
Tạo 1 điểm mà phương trình tiếp tuyến của f(x) đi qua là hình trịn màu xanhlá cây
Ghi tiêu đề là “Question 1c”
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">2.1.1 Recurrent Neural Network (RNN)
Về mặt tốn học, mạng RNN có thể được mô tả như trong công thức (2.1) và(2.2). Công thứ (2.1), x<sub>t</sub> là vectơ đầu vào tại bước thứ t. h<sub>t</sub> là trạng thái ẩn tại bướcthứ t. f là một hàm phi tuyến tính (nonlinear function), thường là hàm tanh hayReLu. W là ma trận trọng số cho trạng thái ẩn ở bước trước đó h<sub>t −1</sub>, U là ma trậntrọng số cho đầu vào. Như vậy có thể thấy rằng, trạng thái ẩn ở bước thứ t được tínhdựa trên trạng thái ẩn ở bước trước đó t−1 và dữ liệu đầu vào ở bước hiện tại.
h f<sub>t</sub>= (W h<sub>t−1</sub>+U x) (2.1)
y<small>t</small>=softmax (V h<small>t</small> (2.2)Trong công thức (2.2), V là ma trận trọng số cho đầu ra của mạng, y<sub>t</sub> là mộtphân phối xác suất trên từ điển tại bước thứ t. Trạng thái ẩn h<sub>t</sub> được xem như là bộnhớ của RNN, nó lưu trữ thơng tin tính tồn được thực hiện ở các bước trước đó.Khơng giống như các mạng nơ-ron truyền thống, RNN chia sẽ chung bộ trọng số [
W, U, V] cho tất cả các bước, nghĩa là các phép tính tốn sẽ được thực hiện tươngtự nhau cho tất cả các bước lặp chỉ các dữ liệu đầu vào. Đây là một ưu điểm củaRNN giúp giảm số lượng tham số cần học cho mơ hình.
2.1.2 Long Short-term Memory (LSTM)
Mạng RNN chia sẽ chung một bộ trọng số giữa các bước lặp nên giảm đángkể số lượng tham số, tuy nhiên nó vẫn là một mạng rất sâu. Trong quá trình lantruyền ngược (backward), phải thực hiện nhiều bước để có tính được đạo hàm chonhững đầu vào đầu tiên của một chuỗi dữ liệu dài, do đó kết quả đạo hàm thườnglớn hơn hoặc nhỏ hơn 1 đáng kể, dẫn đến giá trị của đạo hàm thường bị bùng nổ(exploding) hoặc mất mát (vanishing). Long Short-term Memory là một biến thể cảitiếng của RNN được đề xuất bởi (Hochreiter & Schmidhuber, 1997) nhằm khắcphục hai vấn đề trên.
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19"><b>2.2 Mơ hình Transformer</b>
2.2.1 Encoder và Decoder2.2.2 Attention
Attention của mơ hình Transformer bao gồm 02 kỹ thuật là Scaled Product Attention và Multi-head Attention.
Dot-2.2.2.1 Scaled Dot-Product Attention
Hình 2.1: Scaled Dot-Product Attention(Nguồn: (Vaswani et al., 2023))
Sẽ có 03 ma trận Q, K và V được sử dụng trong kỹ thuật attention này, tươngứng với các khái niệm query, key và value. Các dòng trong trong ma trận Q và K sẽcó kích thước d<sub>k</sub>, các dịng trong ma trận V sẽ có kích thước d<sub>k</sub>. Các ma trận nàyđược tạo ra từ việc cho vector embedding đầu vào đi qua 03 bộ trọng số W<small>Q</small>, W<small>K</small> và
2.2.2.2 Multi-head Attention
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">Dữ liệu trong VLSP-2016 đã được chia sẵn thành hai tập huấn luyện và kiểmthử. Thống kê chi tiết của các kiểu thực thể và các tập dữ liệu được mô tả trong
<b>Bảng 4.1.</b>
Bảng 4.1: Thống kê kiểu thực thể trong tập VLSP 2016
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21"><b>5.2 Hướng phát triển</b>
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">Tiếng Việt…Tiếng Anh
Hochreiter, S., & Schmidhuber, J. (1997). Long Short-term Memory. NeuralComputation 9, , 1735–1780. A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N.,Kaiser, L., & Polosukhin, I. (2023). Attention Is All You Need (arXiv:1706.03762).arXiv.