[Nhập môn Machine Learning] Bài 3: Linear Regression - Hypothesis Function và Cost Function



Ở bài viết trước ta đã tìm hiểu về Supervised Learning và Unsupervised Learning. Ta thấy rằng trên thế giới này thật ra có rất nhiều vấn đề khác nhau có thể giải quyết bằng Machine Learning. Tuy nhiên, cũng giống như toán học, với những bài toán khác nhau, ta cần những phương pháp giải khác nhau và ở bài viết này chúng ta sẽ cùng tìm hiểu một trong những phương pháp đó.

Linear Regression

Như các bạn đã biết, Machine Learning học tập thông qua dữ liệu, nên sẽ thật kỳ cục nếu tôi không mang chúng vào bài viết này. Ở dưới chính là một đồ thị biểu thị sự tương quan giữa diện tích của một miếng đất và giá bán của chúng, với trục y (trục tung) là giá bán và trục x (trục hoành) là giá bán được. Mỗi chấm đen trên đồ thị tương ứng với một mẫu (example) mà chúng ta thu thập được.
Ý tưởng chính của Linear Regression là cố gắng tìm một đường thẳng để đường thẳng đó gần với tất cả các điểm trên đồ thị của chúng ta nhất có thể (khoảng cách từ đường thẳng đó đến các điểm là nhỏ nhất). Và trong trường hợp trên, đó là đường này.
Một khi đã tìm được đường thẳng phù hợp, ta có thể dự đoán giá cả của một mảnh đất bất kỳ dựa trên đường thẳng này.
Lưu ý rằng, Linear Regression như cái tên của nó là phương pháp cho các bài toán hồi quy (regression) nên thứ mà chúng ta sẽ dự đoán là một giá trị thực.

Hypothesis Function

Bạn có thể gọi bằng tiếng Việt là hàm giả định hoặc hàm dự đoán cho Hypothesis function.  Tuy nhiên, vẫn chưa có cách gọi thống nhất cho khái niệm này.

Bạn có thể nghĩ rằng việc dự đoán của máy phải là những thứ sâu xa khó hiểu nhưng việc này về căn bản là xây dựng một hàm toán học giúp chúng ta biến đổi giá trị từ x qua y sao cho giá trị của y được dự đoán đúng hoặc gần đúng với giá trị thực tế của các mẫu dữ liệu mà ta đã thu thập được.
Ta sử dụng $h_\theta(x)$ để ký hiệu cho hypothesis function.
Công thức của Hypothesis Function là:
\[h_\theta(x)=\theta_1\times x+\theta_0\]
có thể viết ngắn gọn lại là
\[h_\theta(x)=\theta_1 x +\theta_0\]

Ký hiệu $\theta$ ở đây ta đọc là "theta". Vây $\theta_1$ đọc là "theta một" và $\theta_0$ đọc là "theta không", các phần tử này tượng trưng cho các trọng số của chúng ta.Tại sao lại có công thức này à?

Nếu bạn đã học cấp 3, bạn cũng biết rằng phương trình của một đường thằng sẽ có dạng.
\[y=ax+b\]
và trong Linear Regression, chúng ta đang cố gắng vẽ một đường thẳng đi qua các mẫu dữ liệu nên công thức của đường thẳng đó phải là $h_\theta(x)=\theta_1 x +\theta_0$. Còn lý do vì sao không dùng $a$ với $b$ cho thân thuộc thì sử dụng $\theta$ giúp dễ dàng phân biệt với các công thức khác.

Thật ra, hàm Hypothesis của chúng ta có thể mở rộng ra với nhiều trọng số hơn nữa
\[h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n\]
nhưng chúng ta sẽ tìm hiểu về nó sau. Để đơn giản tôi sẽ chỉ sử dụng 2 trọng số để giới thiệu thôi.

Các ký hiệu cần biết trước khi tiếp tục

Trong Machine Learning, có vài ký hiệu được sử dụng để biểu thị các ý nghĩa cụ thể như:
$m$ - số lượng mẫu dữ liệu thu thập được
$x$ - giá trị đầu vào (các dữ kiện mà ta dùng để đưa dự đoán) 
$y$ -  giá trị thực thu được trong dữ liệu (vd: giá thật được bán của miếng đất)
$x^{(i)}$ - giá trị đầu vào thứ $i$ trong các mẫu dữ liệu
$y^{(i)}$ - giá trị thực thứ $i$ trong các mẫu dữ liệu
$(x,y)$ - một bản ghi đầy đủ của dữ liệu mà ta thu thập được

Cost Function

Sau khi đã có công thức cho hàm dự đoán của chúng ta rồi, công việc tiếp theo của ta là tìm ra các trọng số $\theta_1$ và $\theta_0$ để có thể vẽ được đường thẳng mà ta đã đề ra ban đầu. Ta không thể sử dụng cách thế từng cặp $x$, $y$ vào phương trình để tìm các trọng số như ta đã làm thời cấp 3 vì đó là công thức đường thẳng thoả điều kiện đường thẳng đi qua các điểm. Trong thực tế, dù mối quan hệ giữa $x$ và $y$ là tuyến tính (tăng/giảm theo một đường thẳng) nhưng các điểm dữ liệu không hoàn toàn nằm hẳn trên một đường thẳng mà xấp xỉ xung quanh nó.

Trong Machine Learning, Cost Function là cái tên ám chỉ một hàm dùng để đo độ chính xác của hàm dự đoán từ đó giúp tìm các trọng số tối ưu cho hàm dự đoán của chúng ta. Hàm này được định nghĩa như sau:
\[J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2\]
Với mỗi cặp dữ liệu $x$, $y$ ta sử dụng $x$ để tạo ra dự đoán và tìm chênh lệch với $y$. Sau đó bình phương lên để mất dấu rồi cộng tất cả các sai số của từng dữ liệu và lấy trung bình cộng. Trong môn thống kê, nó còn được biết đến với cái tên Mean Squared Error (MSE).

Với sự giúp đỡ của Cost Function, bây giờ bài toán tìm trọng số tối ưu của ta có thể chuyển thành tìm các trọng số $\theta_0$, $\theta_1$ để giá trị của Cost Function là nhỏ nhất. Tại sao ư?

Bạn còn nhớ chứ, mục tiêu ban đầu của chúng ta là tìm một đường thẳng sao cho đường thẳng đó gần các dữ liệu nhất có thể. Khi giá trị Cost Function nhỏ nhất (khoảng cách giữa các giá trị dự đoán và giá trị thực nhỏ nhất) cũng mang ý nghĩa tương tự.

Dưới đây là một minh họa
Trường hợp này ta cố gắng cho đường thẳng đi qua càng nhiều điểm nhất có thể. Đây không phải là một cách thức tốt vì ở các điểm còn lại, giá trị dự đoán của ta sẽ có sai lệch lớn so với thực tế. Lúc đó hàm dự đoán của ta có độ chính xác không cao và đó chắc chắn không phải mục tiêu của Machine Learning.

Ngược lại, trường hợp này đường thẳng của ta đi qua ít điểm hơn nhưng khoảng cách của nó giữa các điểm khác là không nhiều. Sai lệch dự đoán so với thực tế gần nhau thể hiện một mô hình tốt. Mục đích của Cost Function là tìm các trọng số tối ưu để tạo nên đường thẳng này.

Bài viết tiếp theo sẽ giúp bạn nắm rõ hơn về sự liên kết giữa Cost Function và Hypothesis Function, cách chúng hoạt động và ảnh hưởng lẫn nhau.

Tổng kết

Ở bài viết này chúng ta đã biết đến Linear Regression như là một phương pháp để giải các bài toán hồi quy và ta cần:
  • Hypothesis Function sử dụng các trọng số $\theta$ để biến đổi $x$ thành giá trị dự đoán $y$
  • Cost Function để kiểm tra độ hiệu quả của Hypothesis Function đồng thời là công cụ để tìm kiếm các trọng số tối ưu. 

Nhận xét

Đăng nhận xét

Bài đăng phổ biến từ blog này

Thuật toán tính lũy thừa nhanh. Giải thích một cách đơn giản

Phép phân tích ma trận A=LU

Độc lập tuyến tính và phụ thuộc tuyến tính