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. 远程控制卡 使用ipmitools设置ipmi

    远程控制卡 使用ipmitools设置ipmi 使用DELL的远程控制卡可以方便的管理服务器 在CentOS中可以使用ipmitools管理 IPMI( Intelligent Platform Ma ...

  2. linux security module机制

    linux security module机制 概要 Hook机制,linux MAC的通用框架,可以使用SElinux, AppArmor,等作为不同安全框架的实现

  3. eclipse中把spring源码关联至当前工程

    1.下载并导入spring的相关jar包下载对应版本的spring 2.在当前工程中,选择Referenced Libraries,展开后,选择相应的jar包,右击并选择Properties 3. 在 ...

  4. python实现域名注册查询

    author:摘繁华-蓝白社区 联合出品 域名生成与查询 文件说明: [x] .py源文件 [x] .exe可执行文件 [x] .config.json配置文件 ps: .exe和config.jso ...

  5. Linux运维入门到高级全套系列PDF

    Linux运维入门到高级全套系列PDF(转) [日期:2016-08-01] 来源:Linux社区  作者:Linux [字体:大 中 小]     Linux 学习技巧 初学者可以自己安装虚拟机,然 ...

  6. 网络设置-指定ip

    1 克隆centos6.设置网卡 vim /etc/udev/rules.d/70-persistent-net.rules 确定光标所在的位置 d3d删除以下三行,更改NAME为0 vim /etc ...

  7. ATM_tests

    ATM取款机练习程序 一.程序分析 自顶向下.逐步细化 按照程序执行的流程,将程序分解为若干个功能相对独立的函数(方法),每个函数(方法)负责某一功能,然后根据程序执行的流程,将函数(方法)组装(调用 ...

  8. openstack octavia的实现与分析(二)原理,架构与基本流程

    [了解] 其实说白了,Octavia就是将用户的API请求经过逻辑处理,转换成Haproxy或者Nginx的配置参数,下发到amphora虚机中. Octavia的内部实现中,逻辑流程的处理主要使用T ...

  9. FastApi学习(二)

    前言 继续学习 此为第二篇, 还差些知识点就可以结束, 更多的比如用户的身份校验/ swagger 文档修改等以后会单独写 正文 使用枚举来限定参数 可以使用枚举的方式来限定参数为某几个值之内才通过 ...

  10. HBASE Shell基本命令

    定义 HBASE是一种分布式.可扩展.支持海量数据存储的NoSQL数据库. HBASE数据模型 逻辑上,HBASE的数据模型同关系型数据库类似,数据存储到一张表中,有行有列,但是从HBASE的底层物理 ...