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. 架构设计哲学【三种方式:支持DevOps的原则】

    三种方式:支持DevOps的原则 2012年8月22日作者Gene Kim 45条评论 这篇文章是杨波老师分享的一篇文章:这几年对他架构影响最深的一篇文章.主要描述是关于DevOps的,但对系统架构同 ...

  2. Mysql大概1700W大表删除1000W左右数据,发现数据大小和索引大小并没有减少思考

    MySQL删除操作其实是假删除 因为近期在重构优化一个业务的时候 发现有一张表(send_log)数据量将近1700W 左右  占用数据大小17G,索引18G左右  而我们的核心应用在使用的时候 会去 ...

  3. lambda表达式之方法引用

    /** * 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器.<br> * 与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码. ...

  4. .net通过iTextSharp.pdf操作pdf文件实现查找关键字签字盖章

    之前这个事情都CA公司去做的,现在给客户做demo,要模拟一下签字盖章了,我们的业务PDF文件是动态生成的所以没法通过坐标定位,只能通过关键字查找定位了. 之前在网上看了许多通多通过查询关键字,然后图 ...

  5. Hbase Rowkey设计原则

    Hbase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这三个维度可以对HBase中的数据进行快速定位 ...

  6. 域名解析 看Cname 信息

    CMD 命令: nslookup -q=cname www.yuzhentan.com

  7. 设计模式之委派模式(Delegate Pattern)深入浅出

    学习目标:精简程序逻辑,提升代码的可读性. 内容定位:希望通过对委派模式的学习,让自己写出更加优雅的代码的人群. 委派模式定义: 委派模式(Delegate Pattern)的基本作用是负责任务的调度 ...

  8. 【剑指 Offer】12.矩阵中的路径

    题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格. 如果一条路径经过了矩阵的某一格,那么 ...

  9. 【C++】《C++ Primer 》第十九章

    第十九章 特殊工具与技术 一.控制内存分配 1. 重载new和delete new表达式的工作机理: string *sp = new string("a value"); //分 ...

  10. IPC 经典问题:Sleeping Barber Problem

    完整代码实现: #include <stdio.h> #include <unistd.h> #include <time.h> #include <stdl ...