You are on page 1of 13

Đại học Bách Khoa Hà Nội

Bài tập lớn môn kĩ thuật lập trình


EE3490
1
Mã lớp: 105006

Giáo viên: TS.Vũ Hải

Họ và tên sinh viên Mã số sinh viên


Nguyễn Công Hải 20161291
Mạnh Xuân Huy 20161818
Hà Quốc Việt 2016
Đề tài:Lập trình tính cực tiểu địa phương sử dụng phương pháp
Gradient Descent khi cho vào một chuỗi tín hiệu 1 chiều

Mục lục :
Phần 1: Giới thiệu bài toán

Phần 2: Trình bày code

Phần 3: Chạy thử


Phần 1: Giới thiệu bài toán
• Cho một tập điểm 2 chiều được biểu diễn trên mặt phẳng
Oxy. Ta phải tìm một phương trình y = f(x) sao cho tổng
khoảng cách giữa đường biểu diễn của phương trình và tập
điểm theo trục Oy là nhỏ nhất.
• Lần này ta xét phương trình tuyến tính dạng y = mx + b. Mục
đích là phải tìm m và b sao cho hàm tối ưu:

1 𝑁
J m ,𝑏 = σ𝑖=1(𝑦𝑖 − 𝑚𝑥𝑖 + 𝑏 )2
𝑁

nhỏ nhất với xi ,yi là tọa độ của điểm i được liệt kê.
• Cách giải quyết bài toán: Sử dụng Gradient Descent.
.
Gradient Descent là gì?
• Để tìm được giá trị nhỏ nhất của hàm tối ưu ,một cách làm
đó là chọn một giá trị m, b nào đó. Từ điểm đó ta nạp và tái
nạp 2 biến số trên theo hàm độ dốc và learning rate để đi
dần dần đến cực tiểu.
Cách làm
1. Chọn một giá trị m, b bất kỳ.
2. Chọn một learning rate α (thường là 0.0001, 0.0003, 0.001,
0.003, 0. ) .
3. Thực hiện lặp n lần các phép toán dưới đây.
Lặp đến khi hội tụ {
𝜕
gradM := m - α 𝐽 𝑚, 𝑏
𝜕𝑚
𝜕
gradB := b - α 𝐽 𝑚, 𝑏
𝜕𝑏
m := gradM
b := gradB
}
Kiểm chứng độ chính xác.
• Để kiểm chứng độ chính xác, ta biểu diễn hàm tối ưu trên
đồ thị.
Phần II: Trình bày code.
• Khởi tạo class GradientDescent.
Bốn phần chính trong class GradientDescent bao gồm.
1. Function giúp đọc file csv biểu diễn tọa độ các điểm.
• Function giúp chọn và tái nạp m và b.
• Function chạy Gradient Descent qua 500000 lần.
Phần III: Chạy thử.
Cảm ơn các bạn đã theo dõi!

You might also like