Nghiệm của hàm mất mát

Một phần của tài liệu (LUẬN văn THẠC sĩ) một số áp dụng của giải tích toán học trong machine learning và deep learning (Trang 40 - 47)

Nhận thấy rằng hàm mất mát J(θ) có gradient tại mọi nơi. Giá trị tối ưu củaθ có thể tìm được thông qua việc giải phương trình đạo hàm của J(θ) theo θ bằng 0. Gradient của hàm số này

∇J(θ)

∇θ =X

T Xθ−y=XTXθ−XTy.

Giải phương trình gradient bằng 0 tương đương với

∇J(θ)

∇θ = 0⇔XTXθ =XTy.

Nếu ma trận vuôngXTX khả nghịch, phương trình trên có nghiệm duy nhất θ = XTX−1XTy.

Nếu ma trận XTX không khả nghịch, nghiệm đặc biệt của phương trình có thể được xác định dựa vào ma trận giả nghịch đảo, được ký hiệu là XTX†.

Nghiệm đặc biệt được xác định bằng

θ = XTX†XTy.

Ma trận giả nghịch đảo luôn tồn tại kể cả khi ma trận đó không vuông. Khi ma trận là vuông và khả nghịch, giả nghịch đảo chính là nghịch đảo. Tổng quát, nghiệm của bài toán là

θ = XTX†XTy

Với

A :=XTX, ma trận A được biễu diễn dưới dạng

trong đó U∈R(n+1)×(n+1), V ∈R(n+1)×(n+1) là những ma trận trực giao và

D =diag(λ1, ..., λr,0, ...,0)

với D ∈R(n+1)×(n+1), r =rankA và λi>0. Đặt

D† =diag(1/λ1, ...,1/λr,0, ...,0). Ma trận giả nghịch đảo của A được xác định bởi

A† =VD†UT.

∗ Chú ý. Có một kỹ thuật nhỏ giúp tránh trường hợp XTX không khả nghịch là biến nó thành

A=XTX+λI

với λ là một số dương nhỏ và I∈R(n+1) là ma trận đơn vị.

Ma trận A là khả nghịch vì nó là một ma trận xác định dương. Thật vậy, với mọi w6=0, ta có wTAw=wT(XTX+λI)w=wTXTXw+λwTw=kXwk22+λkwk22>0. Xét hàm mất mát J(θ) = 1 2 kXTθ−yk22+λkθk22 . Phương trình gradient theo θ bằng 0

∇J(θ)

∇θ = 0⇔ XT(Xθ−y) +λθ= 0⇔ XTX+λIθ=XTy. Nghiệm của J(θ) chính là

θ = XTX+λI−1XTy.

Mô hình machine learning với hàm mất mát ở trên còn được gọi là hồi quy ridge. Ngoài việc giúp phương trình gradient theo hệ số bằng không có nghiệm duy nhất, hồi quy ridge còn giúp mô hình tránh được overfitting.

3.4. Ví dụ minh họa3.4.1. Bài toán 3.4.1. Bài toán

Bài toán ước lượng giá một căn nhà.

Bạn làm ở công ty bất động sản, bạn có dữ liệu về diện tích và giá nhà, giờ có một ngôi nhà mới bạn muốn ước tính xem giá ngôi nhà đó khoảng bao nhiêu. Trên thực tế thì giá nhà 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á nhà chỉ phụ thuộc vào diện tích căn nhà. Bạn có dữ liệu về diện tích và giá bán của 30 căn nhà như sau:

Diện tích (m2) Giá (triệu VNĐ) Diện tích (m2) Giá (triệu VNĐ)

30 448.524 66.2069 995.531 32.4138 509.248 68.6207 1069.78 34.8276 535.104 71.0345 1074.42 37.2414 551.432 73.4483 1103.88 39.6552 623.418 75.8621 1138.69 42.069 625.992 78.2759 1153.13 44.4828 655.248 80.6879 1240.27 46.8966 701.377 83.1034 1251.9 49.3101 701.377 85.5172 1287.97 51.7241 757.881 87.931 1320.47 54.1379 831.004 90.3448 1374.92 56.5517 855.409 92.7586 1410.16 58.9655 866.707 95.1724 1469.69 61.3793 902.545 97.5862 1478.54 63.7931 952.261 100 1515.28

3.4.2. Giải bài toán trên Python import m a t p l o t l i b . p y p l o t a s p l t import numpy a s np from s k l e a r n . l i n e a r _ m o d e l import L i n e a r R e g r e s s i o n import pandas a s pd path_csv = " d a t a _ l i n e a r . c s v " d a t a = pd . read_csv ( path_csv ) . v a l u e s N = d a t a . s h a p e [ 0 ] x = d a t a [ : , 0 ] . r e s h a p e (−1 , 1 ) y = d a t a [ : , 1 ] . r e s h a p e (−1 , 1 ) p l t . s c a t t e r ( x , y )

p l t . x l a b e l ( ’ Met␣ vuong ’ ) p l t . y l a b e l ( ’ Gia ’ )

x = np . h s t a c k ( ( np . o n e s ( ( N, 1 ) ) , x ) )

Hình 3.1: Biểu đồ dữ liệu về giá và diện tích

d f = pd . read_csv ( " d a t a _ l i n e a r . c s v " ) x = np . a r r a y ( d f [ " Dien ␣ t i c h " ] ) y = np . a r r a y ( d f [ " Gia " ] ) X_n = np . a r r a y ( [ [ 1 , x [ i ] ] f o r i in range(len( x ) ) ] ) X_n = np . m a t r i x (X_n) y = np . expand_dims ( y , a x i s = −1) y = np . m a t r i x ( y ) w = np . l i n a l g . i n v (X_n . T∗X_n)∗X_n . T∗y print( "w␣=␣ " , w) def p r e d i c t ( x , w ) : return i n t( x∗w[ 1 ] +w [ 0 ] ) p r e d i c t ( 5 0 ,w)

p l t . p l o t ( [ xmin , xmax ] , [ model ( xmin , w) , model ( xmax , w ) ] , c o l o r =" r e d " ) p l t . s c a t t e r ( x , [ ya [ i ] [ 0 ] f o r i in range(len( ya ) ) ] , )

Kết quả khi chạy w = [ [−7 . 0 6 4 2 6 8 6 5 ]

Chương 4

MÁY VECTOR HỖ TRỢ

Support Vector Machine - tạm dịch là Máy vector hỗ trợ (Support Vector Machine - SVM). Thuật toán SVM ban đầu được tìm ra bởi Vladimir N. Vapnik và dạng chuẩn hiện nay sử dụng lề mềm được tìm ra bởi Vapnik và Corinna Cortes năm 1995.

Support vector machine (SVM)là một khái niệm trong thống kê và khoa học máy tính cho một tập hợp các phương pháp học có giám sát liên quan đến nhau để phân loại và phân tích hồi quy. Các SVM được sử dụng phổ biến hơn trong các vấn đề phân lớp. SVM dạng chuẩn nhận dữ liệu vào và phân loại chúng vào hai lớp khác nhau. Do đó SVM là một thuật toán phân loại nhị phân. Với một bộ các ví dụ luyện tập thuộc hai thể loại cho trước, thuật toán luyện tập SVM xây dựng một mô hình SVM để phân loại các ví dụ khác vào hai thể loại đó. Một mô hình SVM là một cách biểu diễn các điểm trong không gian và lựa chọn ranh giới giữa hai thể loại sao cho khoảng cách từ các ví dụ luyện tập tới ranh giới là xa nhất có thể. Các ví dụ mới cũng được biểu diễn trong cùng một không gian và được thuật toán dự đoán thuộc một trong hai thể loại tùy vào ví dụ đó nằm ở phía nào của ranh giới.

Support Vector Machine xây dựng một siêu phẳng hoặc một tập hợp các siêu phẳng trong một không gian nhiều chiều hoặc vô hạn chiều, có thể được sử dụng cho phân lớp, hồi quy hoặc các nhiệm vụ khác. Một cách trực giác, để phân loại tốt nhất thì các siêu phẳng nằm ở càng xa các điểm dữ liệu của tất cả các lớp càng tốt, vì nói chung lề càng lớn thì sai số tổng quát hóa của thuật toán phân loại càng bé. Tóm lại, các SVM dựa trên ý tưởng tìm một siêu phẳng chia tốt nhất một tập dữ liệu thành hai lớp và sao cho lề được tối ưu nhất.

Các kết quả trong chương này chủ yếu được tham khảo từ các tài liệu [1], [3], [6], [8] trong: “ Danh mục tài liệu tham khảo ”.

Hình 4.1: Tập dữ liệu có thể phân tách tuyến tính

4.1. Tập dữ liệu có thể phân tách tuyến tính Cho siêu phẳng H ∈Rn được xác định bởi

Hw,a ={x∈Rn|x1w1+...+xnwn =a},

trong đó w1, ..., wn, a∈R và siêu phẳng Hw,a được xác định bởi phương trình

wTx=a.

Ta đã biết rằng khoảng cách từ một điểm x0 ∈ Rn và một siêu phẳng Hw,a

được cho bởi đẳng thức

d(Hw,a,x0) = |wTx0−a| kwk .

Giả sử có hai lớp dữ liệu được mô tả bởi các vector đặc trưng trong không gian nhiều chiều. Hơn nữa, hai lớp dữ liệu này là tách biệt tuyến tính, tức tồn tại một siêu phẳng phân chia chính xác hai lớp đó. Hãy tìm một siêu phẳng sao cho tất cả các điểm thuộc một lớp nằm về cùng một phía của siêu phẳng đó và ngược phía với toàn bộ các điểm thuộc lớp còn lại. Chúng ta đã biết rằng có vô số siêu phẳng có thể thực hiện được việc phân chia này nhờ vào thuật toán Perceptron.

Hình 4.2: Siêu phẳng có thể phân tách tập dữ liệu

Có một câu hỏi đặt ra: Trong vô số các phẳng phân chia đó, đâu là phẳng phân chia tốt nhất ?

Gọi khoảng cách nhỏ nhất từ một điểm thuộc một lớp tới đường phân chia là lề. Ta cần tìm một phẳng phân chia sao cho lề của hai lớp là như nhau đối với phẳng phân chia đó. Hơn nữa, độ rộng của lề càng lớn thì khả năng xảy ra phân loại lỗi càng thấp. Bài toán tối ưu trong SVM chính là bài toán đi tìm đường phân chia sao cho lề rộng nhất.

Một phần của tài liệu (LUẬN văn THẠC sĩ) một số áp dụng của giải tích toán học trong machine learning và deep learning (Trang 40 - 47)

Tải bản đầy đủ (PDF)

(54 trang)