zoukankan      html  css  js  c++  java
  • CS229 Lecture 01

    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}}$

  • 相关阅读:
    爬取网易云音乐歌手和id
    【兼容调试】cffi library '_openssl' has no function, constant or global variable named 'Cryptography_HAS
    python如何去掉字符串‘xa0’
    python 中json和字符串互相转换
    vip视频播放
    一行Python代码画心型
    Java语言编写MD5加密方法,Jmeter如何给字符串MD5加密
    转载:oracle RAC集群启动和关闭
    转载:oracle 11g ADG实施手册(亲测,已成功部署多次)
    如何上传本地文件到github又如何删除自己的github仓库
  • 原文地址:https://www.cnblogs.com/wangzhao765/p/7693462.html
Copyright © 2011-2022 走看看