Hàm logistic ở đâu ra?

Tiêu đề của bài viết này có thể hơi exaggerated. Hàm logistic, theo wikipedia, được phát minh khoảng 1844 bởi một nhà toán học người Pháp, và sau đó được phát minh lại vào khoảng 1920, tức là trước cả thời đại của khoa học máy tính. Mặc dù vậy, hàm logistic được sử dụng rộng rãi trong các thuật toán máy học như logistic regression, neural network… Bài này chỉ ra ý nghĩa đằng sau hàm logistic trong ngữ cảnh logistic regression.

1. Tổng quan

Trong công trình gốc, hàm logistic được định nghĩa là lời giải của phương trình vi phân sau:

\displaystyle \frac{d}{dt}\sigma\left(t\right)=\sigma\left(t\right)\left(1-\sigma\left(t\right)\right)

với điều kiện biên \sigma\left(0\right)=\frac{1}{2}. Lời giải cho phương trình vi phân này là:

\displaystyle \sigma\left(t\right) = \frac{e^t}{e^t+e^c}

Chọn e^c = 1, ta được công thức quen thuộc của hàm logistic:

\displaystyle \sigma\left(t\right) = \frac{1}{1+e^{-t}} = \frac{e^t}{1 + e^t}

Như vậy có thể định nghĩa logistic là hàm có đạo hàm là \sigma\left(t\right)\left(1-\sigma\left(t\right)\right). Theo tính chất này thì logistic là một trường hợp đặc biệt của các hàm sigmoid. Trên thực tế, người ta cũng hay dùng từ sigmoid để chỉ trường hợp đặc biệt của nó là hàm logistic.

Từ một góc nhìn khác, nếu p là một số thực nằm trong khoảng từ 0 đến 1: 0 \leq p \leq 1 thì người ta định nghĩa hàm logit (hay log-odd) của p là:

\displaystyle \text{logit}\left(p\right)=\log\left(\frac{p}{1-p}\right)

Đây gọi là hàm logit, được phát minh vào khoảng năm 1944. Do định nghĩa bằng hàm logarithm nên tập xác định của hàm logit được giới hạn trong \left(0, 1\right). Dễ dàng ta cũng thấy:

\displaystyle \begin{aligned}\text{logit}\left(p\right)= & \log\left(\frac{p}{1-p}\right)=z \\ \Rightarrow & \frac{p}{1-p}=e^{z} \\ \Rightarrow & p=\frac{e^{z}}{1+e^{z}}=\frac{1}{1+e^{-z}}=\sigma\left(z\right)\end{aligned}

Nói cách khác, hàm logistic là hàm ngược của hàm logit: \sigma\left(x\right) \equiv \text{logit}^{-1}\left(x\right)

2. Hàm logistic trong logistic regression

Còn nhớ trong logistic regression, ta giả sử xác suất của input x thuộc lớp y=1 tuân theo hàm logistic:

\displaystyle p\left(y=1\vert \mathbf{x}\right) = \frac{1}{1+\exp\left(-\boldsymbol{\theta}^\top\mathbf{x}\right)}    (1)

Thực ra công thức này không phải ngẫu nhiên mà có, nó xuất phát từ một giả sử sâu xa hơn về phân bố của dữ liệu, như sẽ thấy sau đây.

Giả sử ta có tập dữ liệu \left\{ \left(\mathbf{x}_{i},y_{i}\right)\right\} _{i=1}^{N} trong đó \mathbf{x}_i\in\mathbb{R}^dy_{i}\in\left\{0, 1\right\}. Ở đây ta muốn xây dựng phân bố xác suất p\left(y=1\vert \mathbf{x}\right), mà ta biết rằng:

\displaystyle p\left(y\vert \mathbf{x}\right) = \frac{p\left(y\right)p\left(\mathbf{x}\vert y\right)}{p\left(\mathbf{x}\right)}

Kí hiệu xác suất prior p\left(y=1\right) = \pi. Ta giả sử thêm rằng:

p\left(\mathbf{x}\vert y\right)=\mathcal{N}\left(\mathbf{x};\mu_{y},\boldsymbol{\Sigma}\right)

Điều này nghĩa là ta giả sử dữ liệu của lớp 0 và lớp 1 tuân theo 2 phân bố Gaussian khác nhau nhưng có cùng covariance \boldsymbol{\Sigma}. Đây la giả sử quan trọng nhất bên dưới mô hình logistic regression (cũng như Linear Discriminant Analysis).

Ngoài ra có một giả sử nhỏ nữa là ta sẽ vờ như cả thế giới chỉ có 2 lớp 0 và 1, khi đó p\left(y=0\right)=1-p\left(y=1\right)=1-\pi.

Xuất phát từ giả sử này, ta sẽ dần dần xây dựng mô hình logistic regression, đặc biệt là công thức (1).

Thật vậy. Do ta quan tâm đến việc phân lớp, nên ta sẽ xem xét tỉ số log-odd sau:

\displaystyle \log\frac{p\left(y=1\vert \mathbf{x}\right)}{p\left(y=0\vert \mathbf{x}\right)}   (2)

Vector \mathbf{x} sẽ thuộc lớp 1 nếu tỉ số này lớn hơn 0 (vì khi đó p\left(y=1\vert\mathbf{x}\right)>p\left(y=0\vert\mathbf{x}\right)), và thuộc lớp 0 nếu tỉ số này nhỏ hơn 0. Ta có:

\begin{aligned}\log\frac{p\left(y=1\vert\mathbf{x}\right)}{p\left(y=0\vert\mathbf{x}\right)} & =\log\frac{\pi p\left(\mathbf{x}\vert y=1\right)}{\left(1-\pi\right)p\left(\mathbf{x}\vert y=0\right)}=\log\frac{\pi\mathcal{N}\left(\mathbf{x};\mu_{1},\boldsymbol{\Sigma}\right)}{\left(1-\pi\right)\mathcal{N}\left(\mathbf{x};\mu_{0},\boldsymbol{\Sigma}\right)}\\ & =\log\frac{\pi}{1-\pi}+\log\frac{\mathcal{N}\left(\mathbf{x};\mu_{1},\boldsymbol{\Sigma}\right)}{\mathcal{N}\left(\mathbf{x};\mu_{0},\boldsymbol{\Sigma}\right)}\\ & =\log\frac{\pi}{1-\pi}-\frac{1}{2}\left(\mathbf{x}-\mu_{1}\right)^{\top}\boldsymbol{\Sigma}^{-1}\left(\mathbf{x}-\mu_{1}\right)+\frac{1}{2}\left(\mathbf{x}-\mu_{0}\right)^{\top}\boldsymbol{\Sigma}^{-1}\left(\mathbf{x}-\mu_{0}\right)\\ & =\log\frac{\pi}{1-\pi}+\mu_{1}^{\top}\boldsymbol{\Sigma}^{-1}\mathbf{x}-\frac{1}{2}\mu_{1}^{\top}\boldsymbol{\Sigma}^{-1}\mu_{1}-\mu_{0}^{\top}\boldsymbol{\Sigma}^{-1}\mathbf{x}+\frac{1}{2}\mu_{0}^{\top}\boldsymbol{\Sigma}^{-1}\mu_{0}\\ & =\left(\mu_{1}-\mu_{0}\right)^{\top}\boldsymbol{\Sigma}^{-1}\mathbf{x}+\frac{1}{2}\mu_{0}^{\top}\boldsymbol{\Sigma}^{-1}\mu_{0}-\frac{1}{2}\mu_{1}^{\top}\boldsymbol{\Sigma}^{-1}\mu_{1}+\log\frac{\pi}{1-\pi}\\ & =\boldsymbol{\theta}^{\top}\mathbf{x}+\theta_{0}\end{aligned}

Trong đó \boldsymbol{\theta}=\boldsymbol{\Sigma}^{-1}\left(\mu_1-\mu_0\right)\in \mathbb{R}^d\theta_{0}=\frac{1}{2}\mu_{0}^{\top}\boldsymbol{\Sigma}^{-1}\mu_{0}-\frac{1}{2}\mu_{1}^{\top}\boldsymbol{\Sigma}^{-1}\mu_{1}+\log\frac{\pi}{1-\pi} là giá trị vô hướng.

Như vậy có thể thấy trong không gian \mathbb{R}^d, tỉ số log-odd trong (2) tạo thành một siêu phẳng có phương trình \boldsymbol{\theta}^{\top}\mathbf{x}+\theta_{0}. Đây chính là siêu phẳng phân tách 2 lớp 0 và 1, các điểm nằm trên siêu phẳng này (nghĩa là các điểm x sao cho \boldsymbol{\theta}^{\top}\mathbf{x}+\theta_{0} = 0) có xác suất thuộc về lớp 0 và lớp 1 đều bằng nhau.

Như vậy ta có:

{\displaystyle \log\frac{p\left(y=1\vert\mathbf{x}\right)}{p\left(y=0\vert\mathbf{x}\right)}=\log\frac{p\left(y=1\vert\mathbf{x}\right)}{1-p\left(y=1\vert\mathbf{x}\right)}=\boldsymbol{\theta}^{\top}\mathbf{x}+\theta_{0}}

Suy ra:

{\displaystyle p\left(y=1\vert\mathbf{x}\right)=\frac{1}{1+\exp\left(\boldsymbol{-\theta}^{\top}\mathbf{x}-\theta_{0}\right)}}

Đây chính là công thức (1).

Việc còn lại chỉ là viết công thức Negative log-likelihood cho toàn miền xác định. Bằng cách viết hơi tricky, việc lấy log là dễ dàng và ta có thể dùng gradient descent để tìm kết quả. Hàm NLL là convex nên gradient descent đảm bảo ta sẽ tìm được tối ưu toàn cục. Những chi tiết này đã được trình bày trong bài trước.

Một số câu hỏi đặt ra:

  • Mọi chuyện sẽ thế nào nếu ta giả sử 2 phân bố Gaussian của 2 lớp có ma trận covariance khác nhau?
  • Nếu ta giả sử mỗi lớp được mô hình bằng mixture of Gaussian, điều gì sẽ xảy ra?
Advertisements

One comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s