Tải bản đầy đủ (.docx) (24 trang)

Tìm hiểu thuật toán tối ưu thông qua thự viện AI, ML machine learning

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 (1.53 MB, 24 trang )

ĐẠ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 tố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 1


NHẬ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 2


LỜI CẢM ƠN
Trong quá trình làm bài báo cáo, em đã nhận được sự giúp đỡ, đóng góp ý
kiến và chỉ bảo nhiệt tình của thầy cơ, gia đình và bạn bè.
Em xin gửi lời cảm ơn chân thành đến cô Nguyễn Thị Thanh Trúc - giảng viên
khoa Công nghệ phần mềm - Trường ĐH CNTT- ĐHQG Tp HCM người đã tận
tình hướng dẫn, góp ý và chỉ bảo em trong suốt q trình làm báo cáo.

Ngồ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ần
mề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ở
lý thuyết vững vàng và từ đó hồn thành tốt đồ án.
Cuối cùng, em xin chân thành cảm ơn gia đình và bạn bè, đã ln tạo điều kiện,
quan tâm, giúp đỡ, động viên em trong suốt q trình hồn thành đồ án.

Thành phố Hồ Chí Minh, ngày 26 tháng 06 năm 2021


Trang 3


MỤC LỤC

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

2

LỜI CẢM ƠN

3

MỤC LỤC

4

I.

5

Tổng Quan
1.1.

Giới thiệu đề tài

5

1.1.1.


Tổng quan

5

1.1.2.

Giới thiệu bài toán

5

1.2.

Mục tiêu,phương pháp thực hiện,đóng góp

5

1.2.1.1.

Mục tiêu

5

1.2.1.2.

Phương pháp thực hiện

5

1.2.1.3.


Đóng góp

5

1.3.

Cấu Trúc đồ án chuyên ngành

II. Cơ Sở Lý Thuyết

5
5

1.1.

Thuật toán Gradient Descent

5

1.2.

Ưu điểm và nhược điểm của Gradient Descent

5

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.

6
6



Bài tốn

6



Thiết lập cơng thức

7



Loss function

8



Biểu diễn bài tốn


10

Thu thập và xử lý dữ liệu

11

1.2.

1. Dữ liệu sau khi thu thập được bao gồm 1840 dịng sau khi craw data:

11

2. Mơ tả các biến:

13

3. Xử lý dữ liệu trước khi đưa vào sử dụng :

14

4. Trực quan hố dữ liệu

15

1.3.
IV.

Phân tích bài toán

6


Bắt đầu training dữ liệu sử dụng Gradient Descent
Kết Luận

18
21

Trang 4


I.

Tổng Quan
1.1. Giới thiệu đề tài
1.1.1. Tổng quan
Những năm gần đây, khi mà khả năng tính tố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
bởi các hãng công nghệ lớn, Machine Learning đã tiến thêm một bước
dài và một lĩnh vực mới được ra đời gọi là Deep Learning (Học Sâu thực sự tôi không muốn dịch từ này ra tiếng Việt). Deep Learning đã
giúp máy tính thực thi những việc tưởng chừng như không thể vào 10
năm trước: phân loại cả ngàn vật thể khác nhau trong các bức ảnh, tự
tạo chú thích cho ảnh, bắt chước giọng nói và chữ viết của con người,
giao tiếp với con người, hay thậm chí cả sáng tác văn hay âm
nhạc,khai phá dữ liệu.
Từ đó chúng ta có thể ứng dụng nó vào việc dự đố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ự đốn để có hiểu xuất nhanh nhất,đúng
nhất và ít tài ngun nhất từ đó các thuật tố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 tốn
Trong Machine Learning nói riêng và Tốn Tối Ưu nói chung,
chúng ta thường xun phải tìm giá trị nhỏ nhất (hoặc đôi khi là lớn
nhất) của một hàm số nào đó. Ví dụ như các hàm mất mát trong hai
bài Linear Regression và K-means Clustering. Nhìn chung, việc tìm
global minimum của các hàm mất mát trong Machine Learning là rất
phứ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 tố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 tồ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
số rồi tìm điểm làm cho hàm có giá trị nhỏ nhất.
Trang 5


Tuy 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ạp
củ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 ta
coi là gần với nghiệm của bài tốn, sau đó dùng một phép tố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. Gradient
Descent (viết gọn là GD) và các biến thể của nó là một trong những
phươ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ài
toá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ự đốn với
tậ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 tố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ện
numpy,pandas ,matplotlib
1.2.1.3. Đóng góp
 Hệ thống lại kiến thức bài tố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 optimization
algorithm) được sử dụng trong các bài toán Machine Learning và Deep
Learning (thường là các bài toán tối ưu lồi — Convex Optimization) với mục
tiê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 or
declination 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. Đối
với hàm số đơn biến, chúng ta sử dụng khái niệm Derivative thay
cho Gradient.

Trang 6




Descent: là từ viết tắt của descending, nghĩa là giảm dần.Gradient
Descent 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 thi
như 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 (Loss
function).
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ải
quyết được vấn đề tối ưu model neural network bằng cách cập nhật
trọng số sau mỗi vòng lặp.
 Nhược điểm :
 Vì đơn giản nên thuật tốn Gradient Descent cịn nhiều hạn chế
như phụ thuộc vào nghiệm khởi tạo ban đầu và learning rate.
 Ví dụ 1 hàm số có 2 global minimum thì tùy thuộc vào 2 điểm khởi
tạo ban đầu sẽ cho ra 2 nghiệm cuối cùng khác nhau.
 Tốc độ học quá lớn sẽ khiến cho thuật toán khơng hội tụ, quanh
quẩn bên đích vì bước nhảy q lớn; hoặc tốc độ học nhỏ ảnh
hưởng đến tốc độ training.


III.

Thực Nghiệm
1.1.Phân tích bài tốn và Áp dụng Gradient descent vào bài tốn
1.1.1.1. Phân tích bài tốn
 Bài tố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ản
giả 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 7


Nếu giờ yêu cầu ước lượng nhà 50 mét vuông khoảng bao nhiêu
tiề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 8


Hì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áy
tính thì khơng, nó phải đi tìm bằng thuật tốn Gradient descent ở phía
dưới. (Từ model và đường thẳng có thể bị sử dụng thay thế lẫn nhau
trong phần còn lại của bài viết).
 Inference: dự đốn xem giá của ngơi nhà 50 m2 có giá bao nhiêu dựa

trê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 9


Thay vì dùng kí hiệu a, b cho phương trình đường thẳng; để tiện cho biểu
diễ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ự đố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 10


Sự 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ự đốn được tính bằng:
.Và độ
chênh lệch trên tồn bộ dữ liệu tính bằng tổng chênh lệch của từng điểm:

Nhận xét:
● J khơng âm
● J càng nhỏ thì đường thẳng càng gần điểm dữ liệu. Nếu J = 0 thì
đường thẳng đi qua tất các điểm dữ liệu.
=> Bài tốn tìm đường thẳng gần các điểm dữ liệu nhất trở thành tìm

Trang 11


Bài tốn tìm đường thẳng gần các điểm dữ liệu nhất trở thành tìm w0,w1
sao cho hàm J nhỏ nhất. Nhưng vì tìm giá trị nhỏ nhất của J cũng giống
tì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 tốn gradient descent là tính đạo
hà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 tố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 12


X[:, 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ận
X.

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 13


Code lây link và craw data :

Trang 14


2. 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 q 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ộ.

HuongBanCong: hướng ban cơng của căn hộ.
Trang 15



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 16


4. Trực quan hoá dữ liệu

Trực quan dữ liệu giá trị dạng số:

Trang 17






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ấp
hơ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 18



Nội thất được bàn giao thô được ưa chuộng trong những
khu 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 19


1.3.Bắt đầu training dữ liệu sử dụng Gradient Descent


Trang 20


Kết quả sau khi chạy :

Trang 21


Trang 22


Nhậ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ự đố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
 Training và đưa ra được dự đoán về giá nhà
Trang 23


 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 tốn áp dụng vào bài tố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 tố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

Trang 24



×