Ứng dụng như thế nào?GIỚI THIỆUMục đíchRỨng dụng giá trị lớn nhất, nhỏ nhất trong thuật toán Gradient Descent là để tìm điểm cực tiểu của hàm số.. Toán Kỹ ThuậtThuật toán Gradient Descen
Trang 1TRƯỜNG ĐẠI HỌC VĂN LANG KHOA KỸ THUẬT CƠ-ĐIỆN VÀ MÁY
TÍNH
🙞 ···☼··· 🙜
DỰ ÁN HỌC TẬP
ĐỀ TÀI: Ứng dụng giá trị lớn nhất, nhỏ nhất
trong thuật toán Gradient Descent
Giảng viên
hướng dẫn
: TS Trương Quốc Trí
Học phần : Toán Kỹ Thuật
(231_71MATT10014_04) Sinh viên thực
hiện
: Hồ Trung Trực – 2374601080186 Nguyễn Hoàng Bảo Nhật – 2374601080018
Nguyễn Tấn Đạt – 2374601080006 Phạm Thành Nhân –
2374601080017
Lê Nguyễn Tường Vy - 2374601080033
Trang 2Toán Kỹ Thuật
Thành phố Hồ Chí Minh, tháng 12, năm 2023
Trang 3Toán Kỹ Thuật MỤC LỤC
LỜI MỞ ĐẦU 3
GIỚI THIỆU 3
CHƯƠNG 1: CỰC ĐẠI, CỰC TIỂU 4
1 Khái niệm 4
2 Bài toán cực trị 4
CHƯƠNG 2: TỐI ƯU HÓA LÀ GÌ? 5
CHƯƠNG 3: GRADIENT DESCENT LÀ GÌ? 5
1 Gradient là gì? 5
2 Gradient Descent là gì? 6
CHƯƠNG 4: ỨNG DỤNG 7
1.Tối ưu hóa Hàm chi phí 7
2 Tối ưu hóa tham số trong Mô hình Linear Regression 8
3 Tối ưu hóa tham số trong Mô hình Logistic Regression 10
CHƯƠNG 5: VÍ DỤ VỚI PYTHON 12
CHƯƠNG 6: THẢO LUẬN 13
1 Những hạn chế 13
2 Thuật toán ML nào sử dụng phương pháp GD? 14
3 Thuật toán tối ưu khác ngoài Gradient Descent 14
KẾT LUẬN 15
TÀI LIỆU THAM KHẢO 16
Trang 4Toán Kỹ Thuật LỜI MỞ ĐẦU
Trí tuệ nhân tạo hay (AI - Artificial Intelligence) ngày nay đã đi vào mọi hoạt động trong cuộc sống hằng ngày của chúng ta, hiển
nhiên đến mức ta không nhận ra được chúng tồn tại Cùng với tốc độ
phát triển của công nghệ ngày nay, khi mà khả năng tính toán của các
máy tính được nâng lên một tầm cao mới và lượng dữ liệu khổng lồ
được thu thập khắp nơi trên thế giới, Machine Learning (Học máy) đã
tiến thêm một bước dài dẫn đến mô hình Deep Learning (Học sâu) Một
trong những bài toán trong Deep Learning là bài toán tìm ra Loss
Function thấp nhất hay tính và tìm ra giá trị cực đại (Maximum) tìm
cách đưa về giá trị cực tiểu (Minimum) Để làm được những điều này,
phổ biến nhất chúng ta có thể áp dụng thuật toán Gradient Descent
Vậy Gradient Descent là gì? Nó được hình thành và vận hành ra sao?
Ứng dụng như thế nào?
GIỚI THIỆU Mục đíchR
Ứng dụng giá trị lớn nhất, nhỏ nhất trong thuật toán Gradient Descent
là để tìm điểm cực tiểu của hàm số Trong nhiều bài toán tối ưu, mục
tiêu là tìm giá trị nhỏ nhất của hàm số Thuật toán Gradient Descent
dựa trên ý tưởng rằng giá trị của hàm số sẽ giảm dần khi chúng ta di
chuyển theo hướng ngược với gradient của hàm số
Các nội dung thực hiện trong trong đề tài:
Trong bài sẽ trình bày cái nhìn tổng thể về cực đại, cực tiểu và thuật
toán tối ưu hóa Gradient Descent Từ cơ sở đó, trình bày chi tiết về ứng
dụng giá trị lớn nhất, giá trị nhỏ nhất trong Gradient Descent thông
qua 2 ứng dụng: Gradient Descent trong One Dimension (1D), Giảm
dần độ dốc với lỗi bình phương trung bình (MSE) Hơn nữa, tìm hiểu
thêm ví dụng trong python và thảo luận các vấn để liên quan đến GD.q
Phương pháp/ lý thuyết liên quan
Giá trị lớn nhất, giá trị nhỏ nhấtR
Giá trị lớn nhất, giá trị nhỏ nhất của hàm số là những giá trị của
hàm số cao nhất, thấp nhất trong miền của hàm số.q
Gradient Descent
Gradient Descent là một thuật toán tối ưu được sử dụng để tìm
giá trị cực tiểu của một hàm số.q
Trang 5Toán Kỹ Thuật Thuật toán Gradient Descent
Thuật toán này hoạt động bằng cách bắt đầu từ một điểm bất kỳ
trong miền của hàm số, sau đó liên tục cập nhật điểm đó theo
hướng ngược với gradient của hàm số tại điểm đó
CHƯƠNG 1: CỰC ĐẠI, CỰC TIỂU
1.Khái niệm
Trong toán học, maxima và minima là hai khái niệm được sử dụng để
mô tả các điểm trong đồ thị của một hàm số, nơi hàm số đạt được giá
trị lớn nhất hoặc nhỏ nhất (Vd: tìm giá trị nhỏ nhất của hàm chi phí)
Maxima là điểm trong đồ thị của một hàm số nơi hàm số đạt được giá trị lớn nhất trong một vùng nhất định
Minima là điểm trong đồ thị của một hàm số nơi hàm số đạt được giá trị nhỏ nhất trong một vùng nhất định
Local và global là hai từ được sử dụng để phân biệt giữa các điểm cực trị xảy ra trong một vùng nhất định và các điểm cực trị xảy ra
trong toàn bộ miền xác định của hàm
Local maxima là điểm cực trị lớn nhất trong một vùng nhất định
Local minima là điểm cực trị nhỏ nhất trong một vùng nhất định
Global maxima là điểm cực trị lớn nhất trong toàn bộ miền xác định của hàm số
Global minima là điểm cực trị nhỏ nhất trong toàn bộ miền xác định của hàm số
Hình 1.1: Mô phỏng maxima, minima và global, local (Nguồn:
2.Bài toán tìm cực trị
A = f’’xx(a, b), B = f’’xy(a, b), C = f’’yy(a, b), D = AC - B2
Trang 6Toán Kỹ Thuật
• D > 0 và A < 0 => P(a, b) là local maximum (cực đại địa phương)
• D > 0 và A > 0 => P(a, b) là local minimum (cực tiểu địa phương)
• D < 0 => P(a, b) là saddle point (điểm yên ngựa)
• D = 0 và A < 0 => no conclusion (không có kết quả)
Bài toán cho hàm đa biến:
Giả sửu ta có hàm số hai biến f(x,y)=xy−2x−2y−x2 −y2 Tìm giá trị
lớn nhất hoặc nhỏ nhất của hàm số?
Giải:
Đạo hàm toàn phần của hàm số f(x,y) theo và là:x y f’x = y - 2 - 2xq
f’y = x - 2 - 2y Giải hệ phương trình f’ = 0 và f’ = 0, ta được nghiệm (x y x,y)=(-2 ; -2)
Để kiểm tra xem điểm P = (-2 ; -2) có phải là điểm cực trị của hàm số
f’(x,y) hay không, ta tính đạo hàm bậc hai của hàm số:
A = f’’ =q - 2(xx)
B = f’’ = q 1(xy)
C = f’’ =q - 2(yy)
D = AC – B = (- 2).(- 2) – (1) = 3 > 02 2
A < 0 , D > 0 q => P(-2,-2) là một cực đại địa phương (Local Maxima)
Tuy nhiên, xét đến trường hợp ngoài đời sống Chúng ta rất khó biết
được phương trình thực tế của các quá trình trong cuộc sống thực mà
chúng ta đang giải quyết Ngoài ra, có rất nhiều biến liên quan đến
phương trình Cách tìm cực trị này sẽ không hữu ích trong những
trường hợp đó Phương trình ML thực tế là đa chiều và có rất nhiều yếu
tố tác động Và bài toán tìm giá trị lớn nhất, nhỏ nhất (cực trị) ở trên sẽ
không hiệu quả Vì vậy, cần tối ưu hóa quá trình này
CHƯƠNG 2: TỐI ƯU HÓA LÀ GÌ?
Trong học máy, tối ưu hóa là quá trình tìm kiếm các tham số hoặc trọng số lý tưởng để tối đa hóa hoặc giảm thiểu hàm chi phí hoặc tổn
thất Các ứng dụng phổ biến: Chi phí tối thiểu, lợi nhuận tối đa, sai sót
tối thiểu, thiết kế tối ưu, quản lý tối ưu, nguyên tắc biến đổi
Có một số nhóm thuật toán chính trong danh mục này:bracketing, local descent, first-order, and second-order Trong
danh mục này, thuật toán giảm độ dốc (Gradient Descent) là phổ biến
nhất
Trang 7Toán Kỹ Thuật CHƯƠNG 3: GRADIENT DESCENT LÀ
GÌ?
1.Gradient là gì?
Độ dốc: Trong phép tính vectơ, độ dốc là dạng tổng quát hóa nhiều
biến của đạo hàm Độ dốc của hàm vô hướng f(x₁, x₂, x₃, …., xₙ) [sau
đây gọi tắt là f] được ký hiệu là f , trong đó (ký hiệu nabla) được gọi ∇ ∇
là toán tử del Nó gói tất cả thông tin phái sinh từng phần vào một
vectơ
∇ f =[∂f
∂x1
∂f
∂x2
∂f
∂x3
⋮
∂f
∂xn]
2.Gradient Descent là gì?
Giảm độ dốc (GD) là một thuật toán tối ưu hóa bậc nhất lặp lại,
được sử dụng để tìm cực tiểu cục bộ (cực trị) của một hàm nhất định
Phương pháp này thường được sử dụng trong học máy (ML) và học sâu
(DL) để giảm thiểu hàm chi phí/tổn thất (ví dụ: trong hồi quy tuyến
tính).q
Giả sử hàm trong hình trên thể hiện địa hình gồ ghề của phong cảnh
đồi núi với chính bạn đang đứng trên ngọn núi trung tâm Nhiệm vụ
của bạn là đi xuống dốc càng nhanh càng tốt bằng cách bước từng
bước nhỏ cho đến khi không thể xuống thêm được nữa, tức là cho đến
khi bạn tìm thấy mức tối thiểu
Địa hình gồ ghề tương tự như hàm chi phí(hoặc hàm mất mát) Tối
thiểu hàm chi phí cũng tương tự như việc cố gắng xuống đồi Cảm
nhận độ dốc của địa hình xung quanh bạn tương tự như tính độ dốc và
bước một bước cũng tương tự như một bước lặp lại việc cập nhật các
tham số
Trang 8Toán Kỹ Thuật
Hình 3.1: Mô phỏng Gradient Descent (Nguồn: https://ndquy.github.io/posts/gradient-descent-2/ )
Thuật toán Gradient Descent:
1 Dự đoán một điểm khởi tạo θ=θ0
2 Cập nhật θ đến khi đạt được kết quả chấp nhận được
θ=θ−η ∇θj(θ)
-Với ∇θj(θ) là đạo hàm của hàm mất mát tại θ
-Với η là tốc độ học (Learning rate) Mức độ
giảm độc dốc của các bước theo hướng cực
tiểu cục bộ lớn đến mức nào được xác định bởi
tốc độ học, tốc độ này cho biết chúng ta sẽ di
chuyển nhanh hay chậm đến trọng số tối ưu
Mục tiêu của thuật toán giảm độ dốc là tối
thiểu hóa hàm đã cho (giả sử hàm chi phí) Để
đạt được mục tiêu này, nó thực hiện lặp đi lặp lại hai bước:
Tính độ dốc (độ dốc), đạo hàm bậc nhất của hàm số tại điểm đó
Thực hiện một bước (di chuyển) theo hướng ngược lại với độ dốc, hướng ngược lại của độ dốc tăng từ điểm hiện tại lên alpha nhân với độ dốc tại điểm đó
CHƯƠNG 4: ỨNG DỤNG
1 Tối ưu hóa Hàm chi phí
Trang 9Toán Kỹ Thuật = w², là một parabol Mức tối thiểu là (0,0)
Mức hiện tại là 31,36 và đường màu cam
độ thay đổi hiện tại của trọng số là -11,2
cần di chuyển “xuống dốc” (hoặc trở nên
m bằng 0 Đây là lúc độ dốc giảm xuống
Hình 4.1: Mô
(vớiq f ‘(w) = 2w)
ωj +1=ωj−α δ
δωjf(ωj)⟹ ωj+1=ωj−α (2ωj)
Bằng cách chia tỷ lệ độ dốc bằng một giá trị được gọi là tốc độ học
và trừ độ dốc được chia tỷ lệ khỏi giá trị hiện tại của trọng số, đầu ra sẽ
giảm thiểu Điều này có thể được nhìn thấy trong hình ảnh dưới đây
Trong mười lần lặp (w₀ đến w₉), tốc độ học 0,1 được sử dụng để giảm
thiểu hàm chi phí
Iteratio n(j¿ Weight ( wj¿ δf(w
δwj −α
δf ( δw
Loss(
f (wj)) α f (wj δf(wj)
δwj
0 -5.60
-11.2 0
1.12 31.36 0.
1 w2 2w
1 -4.48 -8.96 0.90 20.07
ωj +1=ωj−α δ
δωj f
2 -3.58 -7.17 0.72 12.85
3 -2.87 -5.73 0.57 8.22
4 -2.29 -4.59 0.46 5.26
5 -1.84 -3.67 0.37 3.37
6 -1.47 -2.94 0.29 2.16
7 -1.17 -2.35 0.23 1.38
8 -0.94 -1.88 0.19 0.88
9 -0.75 -1.50 -.15 0.56
Hình 4.2: Sử dụng tốc độ học tập là 0,1 và trọng số bắt đầu là -5,6, mười lần lặp đầu tiên (Nguồn:
Bảng này trình bày cách mỗi thành phần của công thức giúp giảm
thiểu chi phí (cực tiểu của chi phí) Bằng gradient descent, trọng số
mới trở nên dương hơn và độ dốc của gradient mới ít dốc hơn Khi độ
dốc trở nên dương hơn, mỗi lần lặp sẽ mang lại một bản cập nhật nhỏ
hơn
qqqq⇒Việc triển khai cơ bản này của việc giảm độ dốc có thể được áp
dụng cho hầu hết mọi hàm chi phí, kể cả những hàm có nhiều trọng số
Có thể xem xét một vài biến thể của sai số bình phương trung bình
2.Tối ưu hóa tham số trong Mô hình Linear
Regression
Trang 10Toán Kỹ Thuật Gradient Descent để điều chỉnh trọng số của mô hình dự đoán sao
cho sai số giữa giá dự đoán và giá thực tế là nhỏ nhất Mục tiêu là di
chuyển theo hướng giảm gradient của hàm mất mát, nơi giá trị đạo
hàm là nhỏ nhất
Một hàmqrủi ro phổ biến cho học máy là Lỗi bình phương trung bình
(MSE)
MSE=1
n∑
i=1
n
(Yi− ŷi)2
Hàm này tìm ra sự khác biệt giữa dự đoán của mô hình ( ) và đầuŶ
ra dự kiến ( ) Sau đó, nó bình phương sự khác biệt để đảm bảo đầu raY
luôn dương Điều này có nghĩa là sự chênh lệch được lặp lại trên Ŷ Y
một tập hợp các điểm có số lượng mẫu Bằng cách tính tổng bình n
phương của tất cả các điểm này và chia cho Đây là một cách dễ n
dàng để đánh giá hiệu suất của mô hình trên tất cả các điểm cùng một
lúc Ví dụ:
^y y ( ^y y− ) (^y y− )2
1 0
-6
1 2
1 3
-1
2 3
2 0
∑( ^y− y )2 60
Ví dụ sau đây là một bài toán hồi quy tuyến tính đơn giản Có một mẫu về chiều cao (h)
và cân nặng (w) của 150 nam giới trưởng thành Trong trường hợp này, MSE có tác dụng
đo lường mức độ sai số trung bình bình phương giữa cân nặng thực tế và cân nặng được
dự đoán bởi mô hình
Khi thuật toán Gradient Descent được áp dụng và các tham số của mô hình (độ dốc và
giao điểm) được cập nhật theo hướng giảm độ dốc của MSE, mục tiêu là giảm thiểu MSE
để mô hình dự đoán gần với dữ liệu thực tế nhất có thể Khi MSE đạt đến giá trị thấp và
không thay đổi đáng kể qua các lần lặp, mô hình có thể được coi là tối ưu đối với bộ dữ
liệu huấn luyện
Trang 11Toán Kỹ Thuật
Đối với mô hình, chúng ta có thể nói rằng cân nặng (w) có thể được dự đoán bằng
phương trình tuyến tính của độ cao (h)
wi,dự đoán=α.h βi+
Chúng em muốn tìm các tham số α và β (độ dốc và giao điểm) giúp giảm thiểu sai số
bình phương trung bình (mất mát) giữa giá trị dự đoán và giá trị thực Vì vậy, hàm mất
mát của chúng em (trong trường hợp này là “lỗi bình phương trung bình” hoặc MSE)
trông như thế này:
MSE=1N∑
i=1
N (wi,thựctế−wi,dự đoán)2 Gradient của MSE theo α (độ dốc):
∇αMSE=−2
N∑
i=1
N
hi.(wi,thựctế−wi,dự đoán ) Gradient của MSE theo β (giao điểm):
∇βMSE=−2
N∑
i=1
N (wi,thực tế−wi,dự đoán ) Cập nhật các tham số:
α=α−learning_rate ∇αMSE β=β−learning_rate ∇βMSE
Lặp lại quá trình trên cho một số lần lặp cố định
Bắt đầu bằng một dự đoán không tốt về độ dốc và độ lệch chuẩn của đường này Sau
khoảng 15 lần lặp lại quá trình giảm độ dốc, mô hình hồi quy gần như tối ưu
Hình 4.3: Quá trình trươc và sau áp dụng Gradient Descent (Nguồn: https://www.toptal.com/python/gradient-descent-in-tensorflow )
Trang 12Toán Kỹ Thuật Chúng ta có thể thấy sai số bình phương trung bình trông như thế nào
đối với một vài đường dự đoán không tốt và sau đó là chính xác
(α=6,04, β=-230,5)
Hình 4.4: Quá trình áp dụng thuật toán Gradient Descent (Nguồn: https://www.toptal.com/python/gradient-descent-in-tensorflow )
3.Tối ưu hóa tham số trong Mô hình Logistic
Regression
Cũng tương tự mô hình Linear Regression, việc sử dụng Gradient
Descent trong mô hình Logistic Regression để điều chỉnh trọng số
của mô hình dự đoán sao cho sai số giữa giá dự đoán và giá thực tế
là nhỏ nhất và sử dụng sai số bình phương trung bình (MSE) làm
hàm chi phí Nhưng trong mô hình Logistic Regression , việc sử dụng
giá trị trung bình của chênh lệch bình phương giữa kết quả thực tế
và kết quả dự đoán làm hàm chi phí có thể đưa ra đồ thị lượn sóng,
chứa nhiều cực t
Hình 4.5: Đồ thị biểu diễn kết quả dự đoán.
(Nguồn: https://www.baeldung.com/cs/gradient-descent-logistic-regression )
Trong trường hợp này, việc tìm giải pháp tối ưu bằng phương pháp
giảm độ dốc là không thể Thay vào đó, chúng ta sử dụng hàm
logarit để biểu thị chi phí của hồi quy logistic
Khi xử lý một bài toán phân loại nhị phân, chi phí lỗi logarit phụ
thuộc vào giá trị của y Chúng ta có thể xác định chi phí cho hai
trường hợp riêng biệt:
Trang 13Toán Kỹ Thuật
cost(hθ(x),y)={−log (hθ(x)),if y=1
−log(1−hθ(x)),if y=0
Hình 4.6: Đồ thị biểu diễn hai hàm trên
(Nguồn: https://www.baeldung.com/cs/gradient-descent-logistic-regression )
Vì đầu ra có thể là 0 hoặc 1, nên chúng ta có thể đơn giản hóa
phương trình thành:
cost(hθ(x),y)=− y(i )× log(hθ(x(i )))−(1− y (i ))× log(hθ(x( i )))
Với m phần tử trong tập dữ liệu ta có thể tính như sau:
J(θ)=−1
m ∑
i=1
m [y( i )× log(hθ(x( i)))+(1− y(i ))×log(hθ(x( i))) ]
Tiếp đến ta giảm thiểu hàm chi phí bằng Gradient Descent chúng ta
đang sử dụng hàm sigmoid làm hàm giả thuyết trong hồi quy
logistic
Để giảm thiểu hàm chi phí, chúng ta cần chạy giảm độ dốc trên
từng tham số θj
θj←θj−α ∂
∂θjJ (θ)
Để hoàn thành thuật toán, chúng ta cần giá trị ∂
∂θjJ(θ), đó là:
∂
∂θj
J(θ)=1
m∑
i=1
m
(hθ(x( i ))− y(i )) x(i)j Đặt vào hàm gradient descent sẽ dẫn đến quy tắc cập nhật:
θj←θj−α1
m∑
i=1 m
(hθ(x(i))− y(i ))x( )ji
Trang 14Toán Kỹ Thuật Bằng cách lặp lại qua các mẫu huấn luyện cho đến khi hội tụ, chúng
ta đạt được các tham số tối ưu θ dẫn đến chi phí tối thiểu
CHƯƠNG 5: VÍ DỤ VỚI PYTHON
Hình 5.1: Ví dụ Gradient Descent trong Linear Regression
Kết quả:
Hình 5.2: Kết quả chương trình