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

CS229 Lecture 01的更多相关文章

  1. ML Lecture 0-1: Introduction of Machine Learning

    本博客是针对李宏毅教授在Youtube上上传的课程视频<ML Lecture 0-1: Introduction of Machine Learning>的学习笔记.在Github上也po ...

  2. 李宏毅老师机器学习课程笔记_ML Lecture 0-1: Introduction of Machine Learning

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  3. CS229 Lecture 02

    最近忙成狗,各种意义上.第二章其实之前已经看过了但是已经完全忘记了,于是重新看了一遍当复习. 判别学习算法:直接学习$p(y|x)$,或学习一个假设$h_{\theta}(x)$输出结果 生成学习算法 ...

  4. [Stats385] Lecture 01-02, warm up with some questions

    Theories of Deep Learning 借该课程,进入战略要地的局部战斗中,采用红色字体表示值得深究的概念,以及想起的一些需要注意的地方. Lecture 01 Lecture01: De ...

  5. 机器学习基石(台湾大学 林轩田),Lecture 2: Learning to Answer Yes/No

    上一节我们跟大家介绍了一个具体的机器学习的问题,以及它的内容的设定,我们今天要继续下去做什么呢?我们今天要教大家说到底我们怎么样可以有一个机器学习的演算法来解决我们上一次提到的,判断银行要不要给顾客信 ...

  6. K-Means 聚类算法

    K-Means 概念定义: K-Means 是一种基于距离的排他的聚类划分方法. 上面的 K-Means 描述中包含了几个概念: 聚类(Clustering):K-Means 是一种聚类分析(Clus ...

  7. 【十大经典数据挖掘算法】EM

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 极大似然 极大似然(Maxim ...

  8. 在线最优化求解(Online Optimization)之一:预备篇

    在线最优化求解(Online Optimization)之一:预备篇 动机与目的 在实际工作中,无论是工程师.项目经理.产品同学都会经常讨论一类话题:“从线上对比的效果来看,某某特征或因素对xx产品的 ...

  9. 机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型

    本文简单整理了以下内容: (一)线性回归 (二)二分类:二项Logistic回归 (三)多分类:Softmax回归 (四)广义线性模型 闲话:二项Logistic回归是我去年入门机器学习时学的第一个模 ...

随机推荐

  1. 看图知义,Winform开发的技术特点分析

    整理一下自己之前的Winform开发要点,以图文的方式展示一些关键性的技术特点,总结一下. 1.主体界面布局 2.权限管理系统 3.工作流模块 4.字典管理 5.通用的附件管理模块 6.系统模块化开发 ...

  2. kafka如何保证消息得顺序性

    1. 问题 比如说我们建了一个 topic,有三个 partition.生产者在写的时候,其实可以指定一个 key,比如说我们指定了某个订单 id 作为 key,那么这个订单相关的数据,一定会被分发到 ...

  3. Elasticsearch java api操作(一)(Java Low Level Rest Client)

    一.说明: 一.Elasticsearch提供了两个JAVA REST Client版本: 1.java low level rest client: 低级别的rest客户端,通过http与集群交互, ...

  4. hive优化之小文件合并

    文件数目过多,会给HDFS带来压力,并且会影响处理效率,可以通过合并Map和Reduce的结果文件来消除这样的影响: set hive.merge.mapfiles = true ##在 map on ...

  5. kafka容器报内存不足异常(failed; error='Cannot allocate memory' (errno=12))

    一.启动kafka broker时异常 nohup /mnt/sata1/kafka_2.11-0.10.0.1/bin/kafka-server-start.sh /mnt/sata1/kafka_ ...

  6. 项目API接口鉴权流程总结

    权益需求对接中,公司跟第三方公司合作,有时我们可能作为甲方,提供接口给对方,有时我们也作为乙方,调对方接口,这就需要API使用签名方法(Sign)对接口进行鉴权.每一次请求都需要在请求中包含签名信息, ...

  7. 给编译出的程序添加图标(exe的图标)

    安装依赖: go get github.com/akavel/rsrc 在对应程序的源码路径下创建manifest文件,图标也要放进去(xxx.ico), 命名:main.exe.manifest : ...

  8. Educational Codeforces Round 102 (Rated for Div. 2)

    比赛地址 A(水题) 题目链接 题目: 给出一个数组\(a\)并能进行一个操作使得数组元素更改为数组任意其他两元素之和,问是否可以让数组元素全部小于等于\(d\) 解析: 排序后判断最大值是否小于等于 ...

  9. 奇技淫巧,还是正统功夫? - Python推导式最全用法

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  10. h5-video,视频在微信里变形、有黑边

    如这种情况: 微信可谓是video标签的重灾区,如果你兼容了安卓的微信,那么在其他浏览器一般也没问题了除了个别(IE:你们看我干吗?). 解决方案: <video src="video ...