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.... PHƯƠNG PHÁP GIẢI BÀI T1.1 Giới thiệu chức năng thư viện1.1.1 Thư viện NumPy Numeric PythonThư v
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
Trang 2KHOA CÔNG NGHỆ THÔNG TIN
Trang 3Em đã 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 để hoà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 quá 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)
Trang 4CÔNG TRÌNH ĐƯỢC HOÀN THÀNH
TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
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
Ngoà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
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm về nội dung Dự án của mình Trường Đại học Tôn Đức Thắng không
liên quan đến những vi phạm tác quyền, bản quyền do tôi gây ra trong quá 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)
Trang 5TÓM TẮT
Bài báo cáo gồm các nội dung sau:
Chương 1: Phương pháp giải bài tập
i Giới thiệu chức năng, cách cài đặt, khai báo thư viện của thư viện NumPy, SymPy, Math và Matplotlib
ii Giới thiệu chức năng, ý nghĩa của các tham số đầu vào, kết quả đầu racủa các hàm sử dụng trong chương trình
iii Nêu phương pháp, bước làm cụ thể để giải bài tập
Chương 2: Mã nguồn và kết quả đầu ra
i Hình chụp màn hình mã nguồn
ii Hình chụp màn hình kết quả
Trang 6The report includes the following contents:
Chapter 1: Method of solving exercises
i Introducing the functions, installation and library declaration of NumPy, SymPy, and Matplotlib libraries
ii Introduce the functions, meanings of input parameters, and output results
of functions used in the program
iii State specific methods and steps to solve exercises
Chapter 2: Source code and output results
i Source code screenshot
ii Screenshot of the results
Trang 7MỤC LỤC
DANH MỤC HÌNH VẼ
CHƯƠNG 1 PHƯƠNG PHÁP GIẢI BÀI TÂP
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
Trang 81.3.1 Câu 1a
1.3.2 Câu 1b
1.3.3 Câu 1c
CHƯƠNG 2 MÃ NGUỒN VÀ KẾT QUẢ ĐẦU RA
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
2.2.1 Phần code Câu 1b
2.2.2 Kết quả Câu 1b
2.3 Phần code và kết quả Câu 1c
2.3.1 Phần code Câu 1c
2.3.2 Kết quả Câu 1c
TÀI LIỆU THAM KHẢO
Trang 9DANH MỤC HÌNH VẼ
Hình 2.1: Scaled Dot-Product Attention
Trang 10DANH MỤC BẢNG BIỂU
Bảng 4.1: Thống kê kiểu thực thể trong tập VLSP 2016
Trang 11CHƯƠNG 1 PHƯƠNG PHÁP GIẢI BÀI T
1.1 Giới thiệu chức năng thư viện
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 toán học kí hiệu trong Python Nó cho phép bạn thựchiện các tính toán biểu thức toán học, tính đạo hàm, tích phân, giải phương trình vànhiều tính toán kí hiệu khác
Cách cài đặt thư viện: Mở Command Prompt và gõ lệnh “pip install sympy”
Trang 12Hì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
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)
Trang 13a 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ệu
b 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
Trang 14Cú 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ì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.show() để hiển thị đồ thị lên màn hình
1.3 Phương pháp giải bài tập
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])
Trang 15Khai 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)
Khai báo biến toàn cục “x”
Khai báo giá trị a
Khai báo hàm câu 1b
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 ) + y0 0
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)
Trang 16Khai 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, y1
y1 là kết quả sau khi thế giá trị x1 vào phương trình t
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 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 xanh
Tạo giao điểm của t và f(x) hình tròn màu vàng
Ghi 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 ) + y0 0
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ến
Giải phương trình func tìm x0
Thế x0[0] vào phương trình f(x) tìm y0
Thế 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ất
Khai báo t2 là phương trình tiếp tuyến thứ hai
Khai báo intersection1 là giao điểm của f(x) với t1
Trang 17Khai 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 t1
Khai báo y_arrt2 tương ứng với giá trị x_arr thế vào t2
Vẽ đồ 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)
Trang 18CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1 Mạng neural hồi quy
2.1.1 Recurrent Neural Network (RNN)
Về mặt toá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), xt là vectơ đầu vào tại bước thứ t ht 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 đó ht −1, 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 ft= (W ht−1+U x) (2.1)
yt=softmax (V ht (2.2)Trong công thức (2.2), V là ma trận trọng số cho đầu ra của mạng, yt 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 ht được xem như là bộnhớ của RNN, nó lưu trữ thông tin tính toà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 toán sẽ được thực hiện tương
tự 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 đáng
kể 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
Trang 19Dot-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 dk, các dòng trong ma trận V sẽ có kích thước dk 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ố WQ, WK và
WV
2.2.2.2 Multi-head Attention
Trang 20CHƯƠNG 3 MÔ HÌNH ĐỀ XUẤT
Bảng 4.1: Thống kê kiểu thực thể trong tập VLSP 2016
Trang 21CHƯƠNG 5 KẾT LUẬN5.1 Kết luận
5.2 Hướng phát triển
Trang 22TÀI LIỆU THAM KHẢO