- vừa được xem lúc

[Basic Machine Learning] Part 1 - Linear Regression + Gradient Descent Explained - Series Study ML with me

0 0 22

Người đăng: Khang Hoang Nguyen

Theo Viblo Asia

Chào mừng các bạn tới series tự học Machine Learning cùng mình. Mình tên là Khang và mình đang trong quá trình ôn tập kiến thức máy học. Mục đích của mình viết series này để chia sẻ kiến thức cơ bản về máy học (ML). Trong quá trình viết bài này, mình có thường sử dụng những từ ngữ chuyên ngành bằng tiếng anh, mình mong các bạn bỏ qua. Ngoài ra, sau khi các bạn đọc bài thì có thắc mắc hay phát hiện mình có sai sót gì thì có thể comment lại ở dưới giúp mình, mình sẽ cố gắng dành thời gian giải đáp.

Trong phần 1 (Part 1) này, mình sẽ giới thiệu sơ qua về kiến thức Linear Regression và cách mình optimize Loss function bằng cách dùng Gradient Descent.

1. Machine Learning overview

Let's get started. Vậy thì machine learning là gì ? Machine learning (Máy học) là một nhánh của AI (artificial intelligence) để tập trung vào việc sử dụng data và thuật toán của máy cho việc bắt chước con người trong việc học và cải thiện accuracy . Machine learning được dùng trong nhiều lĩnh vực như:

  • Ngân hàng (Fraud Detection)
  • Kinh Doanh (Stock prediction)

Phần trên này mình chỉ lược sơ qua lại kiến thức overview của Machine Learning. Còn bây giờ mình sẽ vô trọng tâm của bài hôm nay.

2. Linear Regression

Tổng quát + Ví dụ

Linear Regression chỉ là 1 công thức f(x) = ax + b bình thường trong toán học của mình với 1 giá trị của x sẽ đưa ra 1 giá trị của y. Thế nhưng, trong thực tế, có rất nhiều dữ liệu (x, y) khi ta cho x vào phương trình f(x) = ax + b, thì giá trị f(x) khác với giá trị y của dữ liệu. Đây là 1 bài toán của Supervised Learning.

Ví dụ thực tế: Ta có phương trình f(x) = 1 + 3x và 2 dữ liệu giá trị (x, y): A(1, 4) và B(2, 5) Lúc ta thế A vào phương trình, ta có f(1) = 1 + 3 * 1 = 4 = y => A là điểm nằm trên đường thẳng của f(x).

Thế nhưng, khi chúng ta thế B vào phương trình trên, ta có f(2) = 1 + 3 * 2 = 7 != y (y = 5)

Tương tự như vậy, nếu ta có rất nhiễu dữ liệu giá trị (x, y) thì ta sẽ plot được 1 line graph dưới đây.

Trong đó:

  • line (đường màu đỏ) là function f(x)
  • Các chấm là dữ liệu của x và y

Qua đó, ta nhận biết được đường màu đỏ (f(x)) có thể được gọi là 1 machine learning model.

Ví dụ ở trên chỉ biểu diễn 1 function của f(x) với giá trị của y phụ thuộc vào 1 giá trị của x. Trong trường hợp f(x) là 1 function có nhiều biến x_1, x_2, x_3, .... , x_n

Ví dụ: Trong bài toán House Prediction như hình ở dưới

Ta thấy rằng Price phụ thuộc vào rất nhiều yếu tố như: số phòng ngủ, số nhà tắm, diện tích, etc... Những yếu tố đó là x_1, x_2 , ... x_n.

Từ đó, ta có công thức tổng quát của Linear Regression trong Machine Learning là:

h(x) = θ_0 + θ_1 * x_1 + θ_2 * x_2 + θ_n * x_n

Trong đó:

  • x_1 -> x_n : là các giá trị tương ứng với các cột trong data
  • θ_0 -> θ_n: trọng số (weights) của những giá trị tương ứng với các cột (weight càng cao thì ảnh hưởng của cột đó càng lớn)

Cách đo lường độ sai số của Linear Regression (Measure Performance)

Để đo lường độ sai số của function trong việc predict các giá trị y dựa trên nhiều biến x, ta có 1 function khác gọi là Loss Function

Loss Function: J(θ0>θm)=(1/n)Σi=0n(h(xi)yactual)2J(θ_0 -> θ_m) = (1/n) * \Sigma_{i=0}^{n} (h(x^{i}) - y_{actual}) ^ 2

Trong đó:

  • i: data thứ i (hàng thứ mấy)
  • n: tổng data (tổng hàng row)
  • h(xi)h(x^i) : giá trị dự đoán (predicted value)
  • m: tổng các cột (features)

Để function h(xi)h(x^i) dự đoán được tốt nhất, chúng ta phải minimize Loss Function.

Gradient Descent

Có rất nhiều cách để minimize 1 function nói chung và Loss Function nói riêng. Nhưng trong bài này, mình chỉ đề cập tới Gradient Descent.

Hình bên dưới mình sẽ plot 1 graph function:

image.png Click here to see image

Tổng quát, thường thường thì 1 loss function sẽ được assume là convex function (hàm lõm) (có trường hợp không convex, nhưng mình không đề cập trong bài này). Thì để tìm được giá trị minimum của Loss Function, chúng ta cần phải tới (hay hội tụ) tại điểm local minimum của convex function.

image.pngClick here to see the motion detail

Gradient Descent tận dùng việc đạo hàm (derivatives) tại điểm bắt đầu để xác định được hướng cho bước tiếp theo (những dấu chấm đen di chuyển trên màu đỏ parabol - hình bên trái). Khi càng gần về local minimum, sự khác biệt của vị trí (giá trị) của Loss Function trước và sau khi thay đổi sẽ càng nhỏ. Khi tới được local minimum, thì đạo hàm tại đó sẽ bằng 0 đồng nghĩa với việc chúng ta đã thành công minimize được Loss Function. Nhìn hình bên phải, ta thấy đường line (function f(x)) di chuyển khi chấm đen (hình bên phải) di chuyển về phía local minimum. Từ đó ta thấy được có sự thay đổi của Θ\Theta ở f(x). Sau khi minimize được Loss Function, ta sẽ có giá trị của Θ\Theta. Khi đó, ta gán giá trị của Θ\Theta vào phương trình f(x) ban đầu để thực hiện việc dự đoán (Prediction).

Ở đây, mình sẽ nói các bước dùng Gradient Descent để minimize loss:

  • Bước 1: Ngẫu nhiên đặt giá trị của $\Theta. ( Θ0\Theta_{0} - > Θm\Theta_{m} với m là tổng số features trong dataset).
  • Bước 2: Thay đổi Θj\Theta_{j} ( 0 <= j <= m)
    • Θj<Θj(old)α\Theta_{j} <- - \Theta_{j (old)} - \alpha δJ(Θ0>Θm)δΘj\frac{\delta J(\Theta_{0} -> \Theta_{m})}{\delta \Theta_{j}}
    • Tiếp tục chạy bước 2 cho đến khi thoả mãn 2 điều kiện này:
      • Thoả mãn điều kiện số iteration yêu cầu (được người dùng điền vào).
      • Khi Θj\Theta_{j}Θj(old)\Theta_{j (old)} có sự khác biệt cực kì nhỏ.

Trong đó:

  • Θj(old)\Theta_{j (old)} : là giá trị cũ
  • Θj\Theta_{j} : là giá trị mới được update
  • α\alpha: là learning rate
  • δJ(Θ0>Θm)δΘj\frac{\delta J(\Theta_{0} -> \Theta_{m})}{\delta \Theta_{j}}: đạo hàm của Loss Function

Chú ý: Learning rate α\alpha

Ta chú ý trong việc chọn α\alpha learning rate (nhìn hình bên dưới để dễ hình dung):

  • Nếu α\alpha quá nhỏ, thì quá trình hội tụ tại điểm local minimum rất là lâu.
  • Nếu α\alpha quá lớn, thì quá trình hội tụ tại điểm local minimum sẽ bị overshooting (nhảy qua lại, thậm chí có trường hợp không về lại được local minimum - phân kì).

image.pngClick here to see image

3. Tổng kết

Vậy là chúng ta mới làm quen với Linear Regression và cách dùng Gradient Descent để tăng performance của Linear Regression model. Trong bài này, chúng ta cần hiểu kĩ cách hoạt động của Linear Regression model hoạt động như thế nào và cách để tăng accuracy của model. Gradient descent đã tận dụng được đạo hàm trong toán học để giúp cho quá trình hội tụ nhanh hơn. Bên cạnh đó, việc lựa chọn Learning rate α\alpha cũng ảnh hưởng đến kết quả của việc tìm được local minimum trong Loss Function.

Đây là bài viết đầu tiên của mình, nếu có còn sai sót thì mong các bạn bỏ qua và comment phía dưới giúp mình để mình có thể ra được những bài chất lượng hơn trong tương lai gần. Đương nhiên là mình sẽ tiếp tục Series Study ML with me để giúp các bạn cũng như bản thân mình củng cố kiến thức Machine Learning. Mình cám ơn các bạn đã theo dõi mình tới tận đây. Peace out !

Bình luận

Bài viết tương tự

- vừa được xem lúc

Hành trình AI của một sinh viên tồi

Mình ngồi gõ những dòng này vào lúc 2h sáng (chính xác là 2h 2 phút), quả là một đêm khó ngủ. Có lẽ vì lúc chiều đã uống cốc nâu đá mà giờ mắt mình tỉnh như sáo, cũng có thể là vì những trăn trở về lý thuyết chồng chất ánh xạ mình đọc ban sáng khiến không tài nào chợp mắt được hoặc cũng có thể do mì

0 0 131

- vừa được xem lúc

[Deep Learning] Key Information Extraction from document using Graph Convolution Network - Bài toán trích rút thông tin từ hóa đơn với Graph Convolution Network

Các nội dung sẽ được đề cập trong bài blog lần này. . Tổng quan về GNN, GCN. Bài toán Key Information Extraction, trích rút thông tin trong văn bản từ ảnh.

0 0 204

- vừa được xem lúc

Tìm hiểu về YOLO trong bài toán real-time object detection

1.Yolo là gì. . Họ các mô hình RCNN ( Region-Based Convolutional Neural Networks) để giải quyết các bài toán về định vị và nhận diện vật thể.

0 0 272

- vừa được xem lúc

Encoding categorical features in Machine learning

Khi tiếp cận với một bài toán machine learning, khả năng cao là chúng ta sẽ phải đối mặt với dữ liệu dạng phân loại (categorical data). Khác với các dữ liệu dạng số, máy tính sẽ không thể hiểu và làm việc trực tiếp với categorical variable.

0 0 244

- vừa được xem lúc

TF Lite with Android Mobile

Như các bạn đã biết việc đưa ứng dụng đến với người sử dụng thực tế là một thành công lớn trong Machine Learning.Việc làm AI nó không chỉ dừng lại ở mức nghiên cứu, tìm ra giải pháp, chứng minh một giải pháp mới,... mà quan trọng là đưa được những nghiên cứu đó vào ứng dụng thực tế, được sử dụng để

0 0 55

- vừa được xem lúc

Xây dựng hệ thống Real-time Multi-person Tracking với YOLOv3 và DeepSORT

Trong bài này chúng ta sẽ xây dựng một hệ thống sử dụng YOLOv3 kết hợp với DeepSORT để tracking được các đối tượng trên camera, YOLO là một thuật toán deep learning ra đời vào tháng 5 năm 2016 và nó nhanh chóng trở nên phổ biến vì nó quá nhanh so với thuật toán deep learning trước đó, sử dụng YOLO t

0 0 303