Nhưng vấn đề là cần phải dự đoán để có hiểu xuất nhanh nhất,đúngnhất và ít tài nguyên nhất từ đó các thuật toán tối ưu được ra đời đểgiúp thực hiện các bài toán như trên như : Gradient D
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỒ ÁN MÔN HỌC
ĐỒ ÁN 1
Đề tài: Tìm hiểu thuật toán tối ưu thông qua
thự viện AI, ML Machine Learning
❖ Giảng viên hướng dẫn ❖
Ths.Nguyễn Thị Thanh Trúc
❖ Lớp ❖
SE121.L21.PMCL
❖ Sinh viên thực hiện ❖
Lương Việt Anh – 17520238
Tp Hồ Chí Minh, tháng 06 năm 2021
Trang 2NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
, ngày tháng ……… năm 2021
Người nhận xét (Ký tên và ghi rõ họ tên)
Trang 3Ngoài ra, em cũng xin gửi lời cảm ơn đến những thầy cô giáo trong trường
ĐH CNTT- ĐHQG Tp HCM nói chung, các thầy cô trong Khoa Công nghệ phầnmềm nói riêng đã dạy dỗ cho em kiến thức về lập trình, qua đó em có được cơ sở
Trang 41.1 Phân tích bài toán và Áp dụng Gradient descent vào bài toán 6
1.3 Bắt đầu training dữ liệu sử dụng Gradient Descent 18
Trang 5Từ đó chúng ta có thể ứng dụng nó vào việc dự đoán Ví dụ, bạn cóthể dự đoán giá của căn hộ dựa trên các dữ liệu về giá các căn hộ bạn
đã có
Nhưng vấn đề là cần phải dự đoán để có hiểu xuất nhanh nhất,đúngnhất và ít tài nguyên nhất từ đó các thuật toán tối ưu được ra đời đểgiúp thực hiện các bài toán như trên như : Gradient Descent,Stochastic Gradient Descent, Momentum,
1.1.2 Giới thiệu bài toán
Trong Machine Learning nói riêng và Toán Tối Ưu nói chung,chúng ta thường xuyên phải tìm giá trị nhỏ nhất (hoặc đôi khi là lớnnhất) của một hàm số nào đó Ví dụ như các hàm mất mát trong haibài Linear Regression và K-means Clustering Nhìn chung, việc tìmglobal minimum của các hàm mất mát trong Machine Learning là rấtphức tạp, thậm chí là bất khả thi Thay vào đó, người ta thường cốgắng tìm các điểm local minimum, và ở một mức độ nào đó, coi đó lànghiệm cần tìm của bài toán
Các điểm local minimum là nghiệm của phương trình đạo hàm bằng
0 Nếu bằng một cách nào đó có thể tìm được toàn bộ (hữu hạn) cácđiểm cực tiểu, ta chỉ cần thay từng điểm local minimum đó vào hàm
Trang 6Tuy nhiên, trong hầu hết các trường hợp, việc giải phương trìnhđạo hàm bằng 0 là bất khả thi Nguyên nhân có thể đến từ sự phức tạpcủa dạng của đạo hàm, từ việc các điểm dữ liệu có số chiều lớn, hoặc
từ việc có quá nhiều điểm dữ liệu
Hướng tiếp cận phổ biến nhất là xuất phát từ một điểm mà chúng tacoi là gần với nghiệm của bài toán, sau đó dùng một phép toán lặp đểtiến dần đến điểm cần tìm, tức đến khi đạo hàm gần với 0 GradientDescent (viết gọn là GD) và các biến thể của nó là một trong nhữngphương pháp được dùng nhiều nhất
Trong đồ này chúng tôi sẽ áp dụng Gradient Descent cho bàitoán về dự đoán giá nhà mục tiêu là dự đoán hay dự báo (prediction/forecasting), hồi quy tuyến tính dùng để “khớp” mô hình dự đoán vớitập dữ liệu quan sát được của (x,y)
1.2.Mục tiêu,phương pháp thực hiện,đóng góp
1.2.1.1 Mục tiêu
Hiểu Được thuật toán tối ưu Gradient Descent
Tìm hiểu về kiến thức deep learning để có thể áp dụng cho bài toán
Thu thập và training bộ dữ liệu để đưa ra kết quả 1.2.1.2 Phương pháp thực hiện
Sử dụng ngôn ngữ python và các thư việnnumpy,pandas ,matplotlib
1.2.1.3 Đóng góp
Hệ thống lại kiến thức bài toán hồi quy sử dụng Gradient Descent
Tìm hiểu và áp dụng Gradient Descent vào bài toán
Chạy training bộ dữ liệu thu được và đánh giá kết quả
II Cơ Sở Lý Thuyết
1.1 Thuật toán Gradient Descent
Gradient Descent là một thuật toán tối ưu lặp (iterative optimizationalgorithm) được sử dụng trong các bài toán Machine Learning và DeepLearning (thường là các bài toán tối ưu lồi — Convex Optimization) với mụctiêu là tìm một tập các biến nội tại (internal parameters) cho việc tối ưu models.Trong đó:
Gradient: là tỷ lệ độ nghiêng của đường dốc (rate of inclination ordeclination of a slope) Về mặt toán học, Gradient của một hàm số
là đạo hàm của hàm số đó tương ứng với mỗi biến của hàm Đốivới hàm số đơn biến, chúng ta sử dụng khái niệm Derivative thaycho Gradient
Trang 7 Descent: là từ viết tắt của descending, nghĩa là giảm dần.GradientDescent có nhiều dạng khác nhau như Stochastic Gradient Descent(SGD), Mini-batch SDG Nhưng về cơ bản thì đều được thực thinhư sau:
1 Khởi tạo biến nội tại
2 Đánh giá model dựa vào biến nội tại và hàm mất mát (Lossfunction)
3 Cập nhật các biến nội tại theo hướng tối ưu hàm mất mát(finding optimal points)
4 Lặp lại bước 2, 3 cho tới khi thỏa điều kiện dừng
1.2 Ưu điểm và nhược điểm của Gradient Descent
Ưu điểm :
Thuật toán gradient descent cơ bản, dễ hiểu Thuật toán đã giảiquyết được vấn đề tối ưu model neural network bằng cách cập nhậttrọng số sau mỗi vòng lặp
III Thực Nghiệm
1.1.Phân tích bài toán và Áp dụng Gradient descent vào bài toán
1.1.1.1 Phân tích bài toán
Bài toán
Trên thực tế giá nhà thì phụ thuộc rất nhiều yếu tố: diện tích, sốphòng, gần trung tâm thương mại, nhưng để cho bài toán đơn giảngiả sử giá căn hộ chung cư chỉ phụ thuộc vào diện tích giá căn hộchung cư
Ví dụ : có bảng đồ thị quan hệ giữa diện tích và giá nhà :
Trang 8Nếu giờ yêu cầu ước lượng nhà 50 mét vuông khoảng bao nhiêutiền thì ta sẽ phải vẽ một đường thẳng gần với các điểm trên nhất vàtính giá nhà ở điểm 50.
Trang 9Hình 2: Ước tính giá căn nhà 50 m2
Về mặt lập trình cũng cần làm 2 việc như vậy:
Training: tìm đường thẳng (model) gần các điểm trên nhất Mọi người
có thể vẽ ngay được đường thẳng mô tả dữ liệu từ hình 1, nhưng máytính thì không, nó phải đi tìm bằng thuật toán Gradient descent ở phíadưới (Từ model và đường thẳng có thể bị sử dụng thay thế lẫn nhautrong phần còn lại của bài viết)
Inference: dự đoán xem giá của ngôi nhà 50 m2 có giá bao nhiêu dựatrên đường tìm được ở phần trên
Thiết lập công thức
Phương trình đường thẳng có dạng y = ax + by=ax+b
Trang 10Thay vì dùng kí hiệu a, b cho phương trình đường thẳng; để tiện cho biểudiễn ma trận phần sau ta sẽ w1=a,w0=b
Nên phương trình được viết lại thành: y=w1∗x+w0
=>Việc tìm đường thẳng giờ thành tìm w0,w1.
Để tiện cho việc thiết lập công thức, ta sẽ đặt ký hiệu cho dữ liệu ở bảng dữliệu: (x1,y1) =(53,1600),( x2,y2) =(50,4500),….
Tức là nhà diện tích xi thực sự có giá yi Còn giá trị mà model hiện tại đang
dự đoán kí hiệu là :
Loss function
Việc tìm w0,w1 có thể đơn giản nếu làm bằng mắt nhưng máy tính
không biết điều đấy, nên ban đầu giá trị được chọn ngẫu nhiên ví dụ w0=0,w1=1 sau đấy được chỉnh dần
Trang 11Sự khác nhau tại điểm x = 32 của model đường thẳng y = x và giá trị thực
tế ở dữ liệu đưa vào.Rõ ràng có thể thấy đường y = x không hề gần cácđiểm hay không phải là đường mà ta cần tìm Ví dụ tại điểm x = 32 (nhà
32 m2 ) giá thật là 400 triệu nhưng giá mà model dự đoán chỉ là 32 triệu.Nên giờ cần 1 hàm để đánh giá là đường thẳng với bộ tham số(w0,w1)=(0,1) có tốt hay không Với mỗi điểm dữ liệu (xi,yi) độ chênh
lệch giữa giá thật và giá dự đoán được tính bằng: .Và độchênh lệch trên toàn bộ dữ liệu tính bằng tổng chênh lệch của từng điểm:
Trang 12Bài toán tìm đường thẳng gần các điểm dữ liệu nhất trở thành tìm w0,w1sao cho hàm J nhỏ nhất Nhưng vì tìm giá trị nhỏ nhất của J cũng giốngtìm giá trị nhỏ nhất của k*J (k là số thực, dương) nên ta sẽ đi tìm giá trịnhỏ nhất của
⮚ Từ việc tìm đường thẳng (model) => tìm w0,w1 để hàm J nhỏ nhất.Giờ cần một thuật toán để tìm giá trị nhỏ nhất của hàm J Đó chính làgradient descent
1.1.1.2 Áp dụng Gradient descent vào bài toán
Ta cần tìm giá trị nhỏ nhất của hàm
Việc quan trọng nhất của thuật toán gradient descent là tính đạohàm của hàm số nên giờ ta sẽ đi tính đạo hàm theo từng biến
Nhắc lại kiến thức h'(x) = f(g(x))’ = f'(g)*g'(x) Ví dụ:
Biểu diễn bài toán
Do với môi điểm xi,yi ta cần phải tính (w0+w1∗xi−yi) nên thay vì tính
cho từng điểm dữ liệu một ta sẽ biểu diễn dưới dạng ma trận, X kích thước n *
2, Y kích thước n * 1 (n là số điểm dữ liệu trong tập dữ liệu mà ta có)
Trang 13X[:, i] hiểu là ma trận kích thước n*1 lấy dữ liệu từ cột thứ i của ma trận
X, nhưng do trong python chỉ số bắt đầu từ 0, nên cột đầu tiên là cột 0, cột thứhai là cột 1, … Phép tính sum(X) là tính tổng tất cả các phần tử trong ma trậnX
1.2.Thu thập và xử lý dữ liệu
1 Dữ liệu sau khi thu thập được bao gồm 1840 dòng sau khi craw data:
Trang 14Code lây link và craw data :
Trang 152 Mô tả các biến:
● DiaChi: địa chỉ của chung cư, ở thành phố Hồ Chí Minh
● TinhTrangBDS: là chung cư này đã bàn giao chưa, hay vẫn
còn đang trong quá trìnhg xây dựng
● DienTich: diện tích thực ở(sử dụng) trên sổ hồng, đơn vị:
triệu/m2
● PhongNgu: số lượng phòng ngủ.
● TenPhanKhu: căn hộ đó thuộc block nào trong khu chung cư
ấý Vì 1 khu chung cư có rất nhiều block, các block ở vị trí khác nhau
sẽ có giá khác nhau
● SoTang: căn hộ nằm ở tầng thứ mấy.
● PhongTam: số lượng nhà vệ sinh.
● Loại: chung cư hay nhà ở xã hội.
● GiayTo: giấy tờ pháp lý của căn hộ, có đang tranh chấp hay
không, có hợp pháp hay không
● MaCanHo: mã căn hộ (giống như số nhà).
● TinhTrangNoiThat: căn hộ đã có nội thất hay chưa(sofa, lò vi
sóng, máy lạnh, )
● HuongCuaChinh: hướng cửa chính của căn hộ.
Trang 16● DacDiem: Đặc điểm căn hộ ( căn trong góc, hay căn chính
giữa, )
● Gia: giá bán của căn hộ.
3 Xử lý dữ liệu trước khi đưa vào sử dụng :
● Chỉ lấy các dòng dữ liệu có dữ liệu về: diện tích, phòng ngủ,phòng tắm và giá Và quy đổi giá tiền VNĐ sang Triệu VNĐ để dữliệu bớt lớn
● Dữ liệu đưa vào là 1840 dòng sau khi xử lý còn 1778:
● Cái nhìn tổng quan về data sau khi xử lý chưa clean :
● Sau khi clean ta nhận được một file dataset như sau:
Trang 174 Trực quan hoá dữ liệu
● Trực quan dữ liệu giá trị dạng số:
Trang 18⮚ phòng ngủ và phòng tắm không ảnh hưởng nhiều đến giá
● Tương quan giữa tình trạng bđs và giá:
⮚ Có thể thấy những chung cư đã được bàn giao có thấphơn so với chưa được bàn giao
● Tương quan giữa tình trạng nội thất và giá:
Trang 19⮚ Nội thất được bàn giao thô được ưa chuộng trong nhữngkhu căn hộ với giá cao
● Tương quan giữa loại chung cư và giá:
⮚ Những căn chung cư có giá trung bình đến cao thường là Duplex
● Một số tương quan khác:
Trang 201.3.Bắt đầu training dữ liệu sử dụng Gradient Descent
Trang 21Kết quả sau khi chạy :
Trang 23Nhận Xét :Ở Hình 1 sau khi code chạy đường màu đỏ là giá trị dự đoán,
chấm xanh là giá trị thực tế.Nhưng độ chính xác chưa cao do những data nhiễu được đưa vào thì dự đoán sẽ sai lệch rất lớn và giá trị có nhưng giá trị
từ dữ liệu không đúng so với thực tế Ở hình 2 cho ra kết quả nhưng do số lớn nó hiện thị kết quả không như mong muốn
IV Kết Luận
Kết quả đạt được
Hiểu về thuật toán Gradient Descent
Trang 24 Sử dụng được một số thư viện để sử dụng cho machine learning
Khó khăn
Do bộ dữ liệu có thể gây nhiễu nên kết quả sai lệch vẫn lớn
Do chưa xử lý tốt bộ dữ liệu dẫn đến sai lệch lớn
Tính toán áp dụng vào bài toán chưa được tốt
Chưa áp dụng để tính cho khu vực lớn
Hướng Phát triển
Sử dụng bài toán vào một khu vực lớn hơn
Tính toán sẽ không chỉ áp dụng dự đoán giá chung cư dựa vào diện tích
mà sẽ áp dụng dựa thêm vào vị trí, nội thất và số phòng
Áp dụng hàm nhiều biến cho Gradient Descent