CS229 Lecture 01
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的更多相关文章
- ML Lecture 0-1: Introduction of Machine Learning
本博客是针对李宏毅教授在Youtube上上传的课程视频<ML Lecture 0-1: Introduction of Machine Learning>的学习笔记.在Github上也po ...
- 李宏毅老师机器学习课程笔记_ML Lecture 0-1: Introduction of Machine Learning
引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...
- CS229 Lecture 02
最近忙成狗,各种意义上.第二章其实之前已经看过了但是已经完全忘记了,于是重新看了一遍当复习. 判别学习算法:直接学习$p(y|x)$,或学习一个假设$h_{\theta}(x)$输出结果 生成学习算法 ...
- [Stats385] Lecture 01-02, warm up with some questions
Theories of Deep Learning 借该课程,进入战略要地的局部战斗中,采用红色字体表示值得深究的概念,以及想起的一些需要注意的地方. Lecture 01 Lecture01: De ...
- 机器学习基石(台湾大学 林轩田),Lecture 2: Learning to Answer Yes/No
上一节我们跟大家介绍了一个具体的机器学习的问题,以及它的内容的设定,我们今天要继续下去做什么呢?我们今天要教大家说到底我们怎么样可以有一个机器学习的演算法来解决我们上一次提到的,判断银行要不要给顾客信 ...
- K-Means 聚类算法
K-Means 概念定义: K-Means 是一种基于距离的排他的聚类划分方法. 上面的 K-Means 描述中包含了几个概念: 聚类(Clustering):K-Means 是一种聚类分析(Clus ...
- 【十大经典数据挖掘算法】EM
[十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 极大似然 极大似然(Maxim ...
- 在线最优化求解(Online Optimization)之一:预备篇
在线最优化求解(Online Optimization)之一:预备篇 动机与目的 在实际工作中,无论是工程师.项目经理.产品同学都会经常讨论一类话题:“从线上对比的效果来看,某某特征或因素对xx产品的 ...
- 机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型
本文简单整理了以下内容: (一)线性回归 (二)二分类:二项Logistic回归 (三)多分类:Softmax回归 (四)广义线性模型 闲话:二项Logistic回归是我去年入门机器学习时学的第一个模 ...
随机推荐
- sendfile“零拷贝”和mmap内存映射
在学习sendfille之前,我们先来了解一下浏览器访问页面时,后台服务器的大致工作流程. 下图是从用户访问某个页面到页面的显示这几秒钟的时间当中,在后台的整个工作过程. 如上图,黑色箭头所示的过程, ...
- Playwright VS Selenium VS Puppeteer VS Cypress
参考:https://www.testim.io/blog/puppeteer-selenium-playwright-cypress-how-to-choose/ 这四款自动化测试框架在我们的公众号 ...
- Flink学习之路(一)Flink简介
一.什么是Flink? Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能. 二.Flink特点 1.现有的开源计算方案,会把流处 ...
- Oracle RedoLog-二进制格式分析,文件头,DML,DDL
上篇文章,简单介绍了 RedoLog 是什么,以及怎么从 Oracle Dump 二进制日志.接下来,分析下 Redo Log 二进制文件的格式,主要包括:文件头,重做日志头,DML-INSERT 操 ...
- SpringBoot同时接收单个对象和List<object>参数
最近做项目的有个需求,是把多个文件移动到另一个文件夹下,这需要把 新的文件夹id -- Long类型 多个文件的信息 -- List< Object > 类型 这两个参数传给后台,我的后台 ...
- Linux学习笔记 | 常见错误之VMware启动linux后一直黑屏
方法1: 宿主机(windows)管理员模式运行cmd 输入netsh winsock reset 然后重启电脑 netsh winsock reset命令,作用是重置 Winsock 目录.如果一台 ...
- JS navigator.userAgent
var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > - ...
- sa-token 之权限验证
权限验证 核心思想 所谓权限验证,验证的核心就是当前账号是否拥有一个权限码 有:就让你通过.没有:那么禁止访问 再往底了说,就是每个账号都会拥有一个权限码集合,我来验证这个集合中是否包括我需要检测的那 ...
- springBoot实现redis分布式锁
参考:https://blog.csdn.net/weixin_44634197/article/details/108308395 .. 使用redis的set命令带NX(not exist)参数实 ...
- C#使用ODP.NET连接oracle数据库
ODP.NET:Oracle Data Provider for .NET 分为三种: ODP.NET, Managed Driver 不需要安装oracle客户端 ODP.NET,Unmanaged ...