CS229 Lecture notes 01
机器学习课程主要分为4部分:监督学习;学习理论;无监督学习;增强学习。
$x^{(i)}$表示特征,$y^{(i)}$表示目标,$i=1...m$。m是训练数据的数量。n表示特征的数量。
回归问题:预测连续变量的值。
线性回归:
确定假设$h_{\theta}(x)=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}$。我们可以增加一个变量$x_{0}=1$,则该假设可以改写为$h(x)=\sum_{i=0}^{x}\theta_{i}x_{i}=\theta^{T}x$。
根据假设,我们定义代价函数$J(\theta)=\frac{1}{2}\sum^{m}_{i=1}(h_{\theta})x^{(i)})-y^{(i)})^2$。那么最终的目的就是找到一组$\theta$使得代价函数的值最小。
为了寻找最小的$\theta$,设计如下算法:对$\theta$取某个初始值,不停改变$\theta$使得$J(\theta)$越来越小,直到其收敛。
$\theta_{j}:=\theta_{j}-\alpha\frac{\partial}{\partial\theta_{j}}J(\theta)$
其中$\alpha$为学习速率。
根据代价函数,我们可以得到:
$\frac{\partial}{\partial\theta_{j}}J(\theta)=\frac{\partial}{\partial\theta_{j}}\frac{1}{2}(h_{\theta}(x)-y)^{2}=(h_{\theta}(x)-y)\cdot\frac{\partial}{\partial\theta_{j}}(h_{\theta}(x)-y)=(h_{\theta}(x)-y)\cdot\frac{\partial}{\partial\theta_{j}}(\sum^{n}_{i=0}\theta_{i}x_{i}-y)=(h_{\theta}(x)-y)x_{j}$
代入得:
$\theta_{j}:=\theta_{j}+\alpha(y^{(i)}-h_{\theta}(x^{(i)}))x_{j}^{(i)}$
该规则满足LMS。
根据以上推导,得到算法如下:
重复直到收敛{
$\theta_{j}:=\theta_{j}+\alpha(y^{(i)}-h_{\theta}(x^{(i)}))x_{j}^{(i)}$
}
这就是梯度下降法。
线性回归的代价函数是一个二次函数,所以一定存在一个全局的最优解。
但是梯度下降每次迭代要对所有训练数据进行计算,若对其进行优化,遍历所有训练集,每次迭代只使用一组训练数据,这就是随机梯度下降。
其算法如下:
重复直到收敛{
for i=1 to m,{
$\theta_{j}:=\theta_{j}+\alpha(y^{(i)}-h_{\theta}(x^{(i)}))x_{j}^{(i)}$
}
}
normal equation:
我们也可以直接把$\theta$算出来。
我们定义矩阵的导数如下:
$\nabla_{\theta}J= \left[ \begin{array}{ccc} \frac{\partial}{\partial\theta_{0}}\\ ...\\ \frac{\partial}{\partial\theta_{n}} \end{array} \right] $
又有定义方阵A的迹$trA=\sum_{i=1}^{n}A_{ii}$
矩阵A的迹有如下性质:
$trAB=trBA$
$trA=trA^{T}$
$tr(A+B)=trA+trB$
$traA=atrA$
$\nabla_{A}trAB=B^{T}$
$\nabla_{A^{T}}f(A)=(\nabla_{A}f(A))^T$
$\nabla_{A}trABA^{T}C=CAB+C^{T}AB^{T}$
$\nabla_{A}|A|=|A|(A^{-1})^T$
我们定义如下的矩阵并进行以下计算:
$X= \left[ \begin{array}{ccc} (x^{(1)})^T \\ ... \\ (x^{(m)})^T \end{array} \right]$
则$X\theta= \left[ \begin{array}{ccc} (x^{(1)})^{T}\theta \\ ... \\ (x^{(m)})^{T}\theta \end{array} \right] = \left[ \begin{array}{ccc} h_{\theta} x^{(1)}) \\ ... \\ h_{\theta}(x^{(n)}) \end{array} \right]$
$y= \left[ \begin{array}{ccc} y^{(1)} \\ ... \\ y^{(m)} \end{array} \right] $
所以$X\theta-y= \left[ \begin{array}{ccc} h_{\theta}(x^{(1)})-y^{(1)} \\ ... \\ h_{\theta}(x^{(n)})-y^{(m)} \end{array} \right] $
有$\frac{1}{2}(X\theta-y)^{T}(X\theta-y)=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2}=J(\theta)$
又考虑有$\nabla_{A^T}trABA^{T}C=B^{T}A^{T}C^{T}+BA^{T}C$
因此有:
$\nabla_{\theta}J(\theta)=\nabla_{\theta}\frac{1}{2}(X\theta-y)^{T}(X\theta-y)$
$=\frac{1}{2}\nabla_{\theta}(\theta^{T}X^{T}X\theta-\theta^{T}X^{T}y-y^{T}X\theta+y^{T}y)$
$=\frac{1}{2}\nabla_{\theta}tr(\theta^{T}X^{T}X\theta-\theta^{T}X^{T}y-y^{T}X\theta+y^{T}y)$
$=\frac{1}{2}\nabla_{\theta}(tr\theta^{T}X^{T}X\theta-2try^{T}X\theta)$
$=\frac{1}{2}(X^{T}X\theta+X^{T}X\theta-2X^{T}y)$
$=X^{T}X\theta-X^{T}y$
若$J(\theta)$取到极值,应有$X^{T}X\theta=X^{T}y$。解得$\theta=(X^{T}X)^{-1}X^{T}y$。
概率解释:
假设$y^{(i)}=\theta^{T}x{(i)}+\epsilon^{(i)}$,其中$\epsilon$作为残差,其相互独立并且都服从$X(0, \sigma^{2})$的正态分布。
那么有$p(\epsilon^{(i)})=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(\epsilon^{(i)})^{2}}{2\sigma^{2}})$
代入,有:$p(y^{(i)}|x^{(i)};\theta)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}})$
那么$\theta$的极大似然函数为:$L(\theta)=L(\theta;X,y)=p(y|X;\theta)$
$L(\theta)=\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta)=\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}})$
取对数有:$l(\theta)=logL(\theta)=log\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}})$
$=\sum_{i=1}^{m}log\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^{T}x^{(i)})^{2}}{2\sigma^{2}})$
$=mlog\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^{2}}\cdot\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2}$
若希望$l(\theta)$最大,则需要使得$\frac{1}{2}\sum_{i=1}^{m}(y^{(i)}-\theta^{T}x^{(i)})^{2}$最小。这与之前推导的结果相同。
局部加权线性回归:
对于线性回归,有:求使得$\sum_{i}(y^{(i)}-\theta^{T}x^{(i)})^{2}$最小的$\theta$,然后输出$\theta^{T}x$。
对于局部加权线性回归,有:求使得$\sum_{i}w^{(i)}(y^{(i)}-\theta^{T}x^{(i)})^{2}$最小的$\theta$,然后输出$\theta^{T}x$。
权重与参数的位置相关,距离近的参数的权值更大。一个显然的例子是$w^{(i)}=exp(-\frac{(x^{(i)}-x)^{2}}{2\tau^{2}})$。这里$\tau$控制了权重函数变化的速度。
逻辑回归:
二分类问题相比于回归问题,假设$h_{\theta}(x)=g(\theta^{T}x)=\frac{1}{1+e^{1\theta^{T}x}}$,其中$g(z)=\frac{1}{1+e^{-z}}$。
对于函数$g(z)$,有$g'(z)=\frac{d}{dz}\frac{1}{1+e^{-z}}=\frac{1}{(1+e^{-z})^{2}}(e^{-z})$
$\frac{1}{(1+e^{-z}}\cdot(1-\frac{1}{(1+e^{-z}})=g(z)(1-g(z))$
考虑$P(y=1|x;\theta)=h_{\theta}(x)$,$P(y=0|x;\theta)=1-h_{\theta}(x)$。
可以写作$p(y|x;\theta)=(h_{\theta}(x))^{y}(1-h_{\theta}(x))^{1-y}$。
那么其似然函数$L(\theta)=\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta)=\prod_{i=1}^{m}(h_{\theta}(x))^{y}(1-h_{\theta}(x))^{1-y}$
取对数,有$l(\theta)=logL(\theta)=\sum_{i=1}^{m}y^{(i)}logh(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))$
那么如何求$l(\theta)$的最大值呢?我们可以利用梯度下降法$\theta:=\theta+\alpha\nabla_{\theta}l(\theta)$。
$\frac{\partial}{\partial\theta_{j}}l(\theta)=(y\frac{1}{g(\theta^{T}x)}-(1-y)\frac{1}{1-g(\theta^{T}x)})\frac{\partial}{\partial\theta_{j}}g(\theta^{T}x)$
代入前面关于$g(z)$的结论$g'(z)=g(z)(1-g(z))$
$=(y\frac{1}{g(\theta^{T}x)}-(1-y)\frac{1}{1-g(\theta^{T}x)})g(\theta^{T}x)(1-g(\theta^{T}x))\frac{\partial}{\partial\theta_{j}}\theta^{T}x$
$=(y(1-g(\theta^{T}x))-(1-y)g(\theta^{T}x))x_{j}$
$=(y-h_{\theta}(x))x_{j}$
因此,得到梯度下降公式$\theta_{j}:=\theta_{j}+\alpha(y^{(i)}-h_{\theta}(x^{(i)}))x_{j}^{(i)}$
感知器:
$ f(x)=\left\{ \begin{array}{rcl} 1& & if z \ge 0 \\ 0& & if z<0 \end{array} \right.$
令$h_{\theta}(x)=g(\theta^{T}x)$,若我们应用$\theta_{j}:=\theta_{j}+\alpha(y^{(i)}-h_{\theta}(x^{(i)}))x_{j}^{(i)}$
则我们获得了感知学习算法。
另一种求$l(\theta)$的最大值的方法:牛顿法
$\theta:=\theta-\frac{f(\theta)}{f'(\theta)}$
可以通过该迭代公式,求得$f(\theta)=0$时的$\theta$。
实际上,我们需要求的是$f'(\theta)=0$,即$f(\theta)$取极值的位置点。
所以实际的迭代公式为$\theta:=\theta-\frac{l'(\theta)}{l''(\theta)}$。
如果我们把该公式一般化(向量化),即:
$\theta:=\theta-H^{-1}\nabla_{\theta}l(\theta)$
其中$H_{ij}=\frac{\partial^{2}l(\theta)}{\partial\theta_{i}\partial\theta_{j}}$
广义线性模型:
服从以下概率密度$p(y;\eta)=b(y)exp(\eta^{T}T(y)-a(\eta))$的分布被称为指数分布族。
其中$\eta$称为自然参数,$T(y)$称为充分统计量。
这里,当固定了a, b, T时,$p(y;\eta)$是一个关于$\eta$变量的概率分布函数。(通常有$T(y)=y$)
伯努利分布:
$p(y;\phi)=\phi^{y}(1-\phi)^{1-y}=exp(ylog\phi+(1-y)log(1-\phi))$
$=exp((log(\frac{\phi}{1-\phi}))y+log(1-\phi))$,其中$\phi=log(\frac{\phi}{1-\phi})$。
这里,a, b, T如下:
$T(y)=y$
$a(\eta)=-log(1-\phi)=log(1+e^{\phi})$
$b(y)=1$
高斯分布:(这里我们假设$\sigma^{2}=1 $)
$p(y;\mu)=\frac{1}{\sqrt{2\pi}}exp(-\frac{1}{2}(y-\mu)^{2})$
$=\frac{1}{\sqrt{2\pi}} exp(-\frac{1}{2}y^{2})\cdot exp(\mu y-\frac{1}{2}\mu^{2})$
这里,a, b, T如下:
$\eta = \mu$
$T(y)=y$
$a(\eta)=\frac{\mu^2}{2}=\frac{\eta^2}{2}$
$b(y)=\frac{1}{\sqrt{2\pi}}exp(-\frac{y^{2}}{2})$
建立广义线性模型的步骤:
1. 对于$y|x;\theta$,建立其对应的指数分布族的对象;
2. 得出$h(x)=E[T(y)|x]$
3. $\eta=\theta^{T}x (\eta_{i}=\theta_{i}^{T}x, \eta\in R^{n})$
这里,当第一步确定了以后,第二步和第三步都是自动进行的。
例如:伯努利分布
有$h_{\theta}(x)=E[y|x;\theta]=P(y=1|x;\theta)$
$=\phi=1/(1+e^{-\eta})=1/(1+e^{-\theta^{T}x})$
正则响应函数:$g(\eta)=E[T(y);\eta]$
正则关联函数:$g^{-1}$
Softmax Regression
多项式分布,k分类问题。$y\in\{1,...,k\}$
假设参数$\phi_{1}...\phi_{k}$
有$P(y=i)=\phi_{i}, \phi_{k}=1-(\phi_{1}+...+\phi_{k-1})$
因此假设参数为$\phi_{1}...\phi_{k-1}$
这里$T(y)_{i}=1\{y=i\}$,$T(k)=[0,...,0]^T$。
那么,有$p(y;\phi)=\phi_{1}^{1\{y=1\}}\phi_{2}^{1\{y=2\}}...\phi_{k}^{1\{y=k\}}$
$=\phi_{1}^{(T(y))_1}\phi_{2}^{(T(y))_2}...\phi_{k}^{1-\Sigma_{i=1}^{k-1}1\{y=i\}_i}$
$=b(y)exp(\eta^{T}T(y)-a(\eta))$
其中:$\eta =[log(\phi_1/\phi_k), log(\phi_2/\phi_k), ... ,log(\phi_{k-1}/\phi_k)]^T$
$a(\eta)=-log(\phi_k)$
$b(y)=1$
另,可推导得:$\phi_i=\frac{e^{\eta_i}}{\sum_{j=1}^{k}e^{\eta_j}}$
代入$\eta_{i}=\theta^{T}_{i}x$,有$p(y=i|x;\theta)=\frac{e^{\theta^{T}_{j}x}}{\sum_{j=1}^{k}e^{\theta_{j}^{T}x}}$
因此,$h_{\theta}(x)=[\frac{exp(\theta_{1}^{T}x)}{\sum^{k}_{j=1}exp(\theta_{j}^{T}x)},...,\frac{exp(\theta_{k-1}^{T}x)}{\sum^{k}_{j=1}exp(\theta_{j}^{T}x)}]^T$
极大似然函数$l(\theta)=\sum_{i=1}^{m}\prod_{l=1}^{k}(\frac{exp(\theta_{l}^{T}x^{(i)})}{\sum_{j=1}^{k}exp(\theta_{j}^{T}x^{(i)})})^{1\{y^{(i)}=l\}}$