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