这是一个督促自己学习的笔记
文章目录
第一节
1.1监督学习
监督学习主要分为两类,回归问题和分类问题
回归问题,就是让模型预测一个连续的值

分类问题,是给模型一些特征,根据这些特征对新的元素进行分类,与回归问题要预测连续的值不同,分类问题预测离散的值

1.2 无监督学习
无监督学习,就是给算法大量的数据,然后算法找出这些数据的结构,无监督学习主要应用于聚类问题
聚类算法可以将无标签的数据分为一个个cluster

例如,聚类算法将不同的dna片段分为一个个cluster

再比如著名的鸡尾酒派对问题,两个话筒记录不同强度的混合交谈声,通过调用聚类算法可以将这两个人的声音分离

第二节
2.1模型描述
下图是一个一元线性回归模型,机器学习模型就是输入一系列训练集,经过机器学习算法得到的假设函数(hypothesis),通过这个函数,我们输入x,就可以得到y

2.2 代价函数
平方误差代价函数

我们先将这个代价函数简化为过原点的直线

如下图所示,通过选择不同的参数θ1,我们得到了J(θ1)函数的图像,该函数的最小值点对应的线性回归模型拟合的最好

好的,现在回到未简化的线性回归模型,这种模型对应的代价函数是二元函数,如下图所示


将这个二元函数画为等高线图
可以看见,当参数点位于等高线的最中间时,代价函数最小,模型拟合的最好



2.5 梯度下降
梯度下降算法就是通过不断地改变θ0和θ1,最终得到代价函数的最小值

梯度下降算法有个特点,就是初始下降位置不同,其最终得到的局部最小值不同,如下图所示


下图为梯度下降算法的数学公式,记住参数θ0和θ1需要同时改变

2.6 梯度下降知识点总结

梯度下降的学习率α不应过大或过小
过小的话,梯度下降的速度会很慢
过大的话,步子迈的太大,可能永远也无法到达局部最小值

选择合适的学习率之后,梯度下降算法会根据该点导数自动调整步伐,所以我们不需要修改α

2.7 线性回归的梯度下降


机器学习中的有些代价函数是非凸函数,有多个局部最小值,这样我们很难去使用梯度下降的方法来求得代价函数的全局最小值,可能得用到退火算法之类的高级最优化方法,但是很幸运的是,线性回归模型是可凸优化函数,没有局部最优解,只有全局最优解,故可以使用梯度下降法求全局最优解
如下图所示

以上的梯度下降法叫做Batch梯度下降,这种梯度下降算法每进行一次梯度下降,都得用到全部训练集
好了,到此为止我们学习完了第一种机器学习算法—梯度下降法,除了它以外,我们还有另一种求解最小值的算法,叫做正规方程组算法(normal equations algorithm),与之相比,梯度下降法更适用于大规模数据集
第四节
4.1 Multiple feature
多元线性回归模型,就是有多个特征的线性模型
其方程为
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n h_{\theta}(x)=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+\cdots+\theta_{n}x_{n} hθ(x)=θ0+θ1x1+θ2x2+⋯+θnxn
方程有另一种简便写法
h θ ( x ) = θ T x h_{\theta}(x)=\theta^{T}x hθ(x)=θTx
x = [ x 0 x 1 ⋮ x n ] , θ = [ θ 0 θ 1 ⋮ θ n ] x=\begin{bmatrix} x_{0}\\ x_{1}\\ \vdots\\ x_{n} \end{bmatrix},\theta=\begin{bmatrix} \theta_{0}\\ \theta_{1}\\ \vdots\\ \theta_{n} \end{bmatrix} x=⎣⎢⎢⎢⎡x0x1⋮xn⎦⎥⎥⎥⎤,θ=⎣⎢⎢⎢⎡θ0θ1⋮θn⎦⎥⎥⎥⎤

4.2 多元梯度下降法
多元梯度下降法和一元梯度下降法框架相同,只是多元梯度下降法每一次梯度下降,都需要对每个元素进行修改
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_{j}:=\theta_{j}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)} θj:=θj−αm1i=1∑m(hθ(x(i))−y(i))xj(i)

4.3 特征缩放
对于多元梯度下降,我们需要对每个元素进行标准化,即让每个元素的范围在0~1之间
如下图所示,如果两个元素之间的规模相差过大,梯度下降的路径可能会来回振荡,导致速度减慢


缩放的方法
类似于正态分布的标准化
x = x − μ r a n g e 或 者 标 准 差 x=\frac{x-\mu}{range或者标准差} x=range或者标准差x−μ

4.4 学习率
一般来说,损失值与梯度下降次数的关系图应如下图所示,总体递减,最后收敛(converge)

但如果你的学习率α过大,梯度下降的步子迈的太开,损失函数J(θ)的图像可能会如下图左上角所示,逐渐增加,也有可能会像下图左下角那样,不断振荡
减小学习率α可以解决上述问题

4.5 特征与多项式回归
有时候,可以自己根据已有的特征创建新的特征,模型可能会拟合的更好
例如下图的房屋价格预测

如下图的散点图所示,通过观察我们知道单纯的线性函数是无法很好的拟合这些数据的,于是我们采用多项式回归的方式来拟合这些数据,由于二次多项式在递增过后可能会递减,不符合房屋价格的趋势,故最终我们打算采用三次多项式模型
那么如何将三次多项式套入线性回归模型呢?
采用多元线性回归模型,将特征一一对应,如下图所示
但是采用这种方法的话我们得考虑特征的规模

考虑特征的规模效应,有时候采用第二个模型拟合性会更好

4.6 正规方程组算法(Normal equations algorithm )
正规方程组算法是区别于迭代方法的直接解法
其实对于一些代价函数,我们并不需要使用梯度下降法去逐步接近最小值点,我们可以直接通过求导的方法得到θ,如下图所示

如下图所示的房价预测问题中,有n个特征,m=4个样本,我们可以构造两个矩阵X(m x (n+1))和y(m x 1)
极小值点θ可以如下公式求得
θ = ( X T X ) − 1 X T y \theta=(X^{T}X)^{-1}X^{T}y θ=(XTX)−1XTy


下面是梯度下降与normal equation算法的优缺点对比
当样本集n在10000以内的时候,倾向于采用normal equation算法

正规方程组算法一般不适用或者不能用于较为复杂的算法,例如后面要讲到的分类算法(logistic回归算法),但是在线性回归模型中,normal equation算法依旧是梯度下降法的不错替代算法
4.7 正规方程组在矩阵不可逆时的解决方法
因为
θ = ( X T X ) − 1 X T y \theta=(X^{T}X)^{-1}X^{T}y θ=(XTX)−1XTy
所以当矩阵 X T X X^{T}X XTX不可逆时,该怎么办呢?

1.如果有冗余特征(redundant features),即特征值线性相关(例如 x1 = 常数 * x2),那么就删去冗余的特征
2.如果特征数量太多,就删去一些特征,或者采用正则化方法
第六节
6.1 分类
对于分类问题,我们一般使用logistic regression算法,而线性回归算法表现得很差



6.2 假设陈述

logistic regression算法的hypothesis函数为
h θ ( x ) = g ( θ T x ) , g ( x ) = 1 1 + e − z h_{\theta}(x)=g(\theta^{T}x),g(x)=\frac{1}{1+e^{-z}} hθ(x)=g(θTx),g(x)=1+e−z1
h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_{\theta}(x)=P(y=1|x;\theta) hθ(x)=P(y=1∣x;θ)
本质上logistic回归算法输出的是概率

6.3 决策界限
决策界限是一个分界线,也是一个函数
如果数据点在决策界限之外,那么hypothesis函数的值就<0.5,y的预测值为0
如果数据点在决策界限之内,那么hypothesis函数的值就>=0.5,y的预测值为1

下图中将x1_x2平面划分为两块的直线就是决策界限

下图为非线性决策界限,采用多项式的方法来进行决策
决策边界是由θ来决定的,而我们使用训练集来对θ进行拟合

当然,通过多项式拟合曲线,我们还可以得到更复杂的决策边界

6.4 代价函数

对于linear regression,其代价函数为
J ( θ ) = 1 m ∑ i = 1 m 1 2 ( h θ ( x i ) − y ( i ) ) 2 J(\theta)=\frac{1}{m}\sum_{i=1}^{m}\frac{1}{2}(h_{\theta}(x^{i})-y^{(i)})^{2} J(θ)=m1i=1∑m21(hθ(xi)−y(i))2
= 1 2 m ∑ i = 1 m ( h θ ( x i ) − y ( i ) ) 2 =\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{i})-y^{(i)})^{2} =2m1i=1∑m(hθ(xi)−y(i))2
而单个样本logistic regression的代价函数为
C o s t ( h θ ( x ) − y ) = 1 2 ( h θ ( x ) − y ) 2 Cost(h_{\theta}(x)-y)=\frac{1}{2}(h_{\theta}(x)-y)^{2} Cost(hθ(x)−y)=21(hθ(x)−y)2
其中
h θ ( x ) = 1 1 + e − θ T x h_{\theta}(x)=\frac{1}{1+e^{-\theta^{T}x}} hθ(x)=1+e−θTx1
显然hypothesis函数是一个非线性的复杂函数,因此
logistic regression的代价函数是非凸函数,有多个局部最小值,无法使用梯度下降法求最优解

因此,我们必须寻找另一个代价函数
C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) i f y = 1 − l o g ( 1 − h θ ( x ) ) i f y = 0 Cost(h_{\theta}(x),y)=\begin{cases} -log(h_{\theta(x)}) \ \ \ \ \ if\ y=1\\ -log(1-h_{\theta(x)}) \ \ \ \ \ if\ y=0 \end{cases} Cost(hθ(x),y)={
−log(hθ(x)) if y=1−log(1−hθ(x)) if y=0
当y=1时,如果预测值h(x)很接近1,那么cost值就会很小
但预测值很接近0时,cost就会很大

当y=0时,如果预测值h(x)很接近1,那么cost值就会很大
但预测值很接近0时,cost就会很小

这就是一种惩罚机制,当我们预测的值与实际值越接近,cost值就越小
6.5 简化代价函数与梯度下降

所以logistic regression的代价函数为
J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) J(\theta)=\frac{1}{m}\sum_{i=1}^{m}Cost(h_{\theta}(x^{(i)}),y^{(i)}) J(θ)=m1i=1∑mCost(hθ(x(i)),y(i))
= − 1 m [ ∑ i = 1 m y ( i ) l o g h θ ( x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] =-\frac{1}{m}[\sum_{i=1}^{m}y^{(i)}logh_{\theta}(x^{(i)})+(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))] =−m1[i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]


6.6 高级优化
给出参数θ,如果我们的优化只需计算
J ( θ ) , ∂ ∂ θ j J ( θ ) J(\theta),\frac{\partial}{\partial\theta_{j}}J(\theta) J(θ),∂θj∂J(θ)
那么我们不仅可以使用梯度下降算法,还可以使用很多高级算法
如
- 共轭梯度下降算法(Conjugate gradient)
- BFGS
- L-BFGS
这些算法都比较复杂,但是好处就是不用自己去选择学习率α,并且优化的速度也比梯度下降算法快

6.7 多元分类 一对多
对于一些分类问题,只有两种情况:是/否
但是更多的分类问题,是要求分出多个类别的,如下图所示

于是,如何通过logistic regression算法来进行多元分类呢?
如下图所示,我们的数据集总共有三种类别,于是我们进行三次分类
每一次分类都将其余的数据设为同一种类型,这样就相当于进行二元分类了

于是我们就得到了多元分类的hypothesis函数
h θ i ( x ) = P ( y = i ∣ x ; θ ) ( i = 1 , 2 , 3 ) h_{\theta}^{i}(x)=P(y=i|x;\theta)\ \ \ \ \ \ (i=1,2,3) hθi(x)=P(y=i∣x;θ) (i=1,2,3)

得到多元分类的hypothesis函数后,对于每个新输入的数据x,通过计算
m a x ( h θ ( i ) ) ( x ) max(h_{\theta}^{(i)})(x) max(hθ(i))(x)
从而得出x的类别
第七节
7.1 过拟合问题
在回归问题中,我们经常会遇到一个问题:
当我们的模型的特征太少时,可能与实际数据拟合的不好,导致高偏差(high bias),即称为欠拟合
当我们的模型特征太多,数据数量太少,不足以约束特征,导致高方差(high variance),即称为过拟合
过拟合可能会带来的问题是:==这个模型可能在训练集中表现得很好,但是缺乏泛化能力(generalize),在实际测试集上可能表现的会较差
如下图所示,这是一个房价预测的回归问题,当出现过拟合时,拟合曲线十分弯曲,不符合实际的房价情况

下图为logistic regression的过拟合问题

那么如何调整过模型过拟合的问题呢?
- 减少特征的数量
- 手动选择去除一些特征
- 模型选择算法
- 正则化
- 保留所有参数θ,但是减小量级(magnitude)或者是参数的值

- 保留所有参数θ,但是减小量级(magnitude)或者是参数的值
7.2 代价函数
为了实现正则化,我们需要对代价函数进行一些修改
显然,当我们的特征值过多时,拟合出来的曲线是不平滑的,如下图所示,但如果我们在代价函数处加入对高阶参数的惩罚项,那么在进行最优化时,高阶参数的值会被优化的很小,拟合的曲线会更加平滑

如果使参数的值较小,那么我们就能得到一个更简单的假设模型
这里的原因还不太清楚


于是我们将代价函数更改为如下形式
J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j 2 ] J(\theta)=\frac{1}{2m}[\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2}+\lambda\sum_{j=1}^{n}\theta_{j}^{2}] J(θ)=2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑nθj2]
其中λ称为正则化参数,如果λ过大,如下图所示,那么所有的参数都将被优化为0,拟合的模型就是一条直线,偏差非常高,如下图所示

这只是简单的正则化的介绍,下次将深入认识正则化
7.3 线性回归的正则化
线性回归求最优解有两种方法
- 梯度下降法
- 正规方程法
先讲梯度下降法
下图为线性回归的正则化代价函数
J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j 2 ] J(\theta)=\frac{1}{2m}[\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2}+\lambda\sum_{j=1}^{n}\theta_{j}^{2}] J(θ)=2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑nθj2]

对于正则化的代价函数,我们的梯度下降算法也要稍作修改
- 我们将第0项θ0的更新单独分开,因为惩罚函数不对θ0进行惩罚
- 我们将其余项的梯度下降函数修改为 θ j : = θ j − α [ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) + λ m θ j ] \theta_{j}:=\theta_{j}-\alpha[\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}+\frac{\lambda}{m}\theta_{j}] θj:=θj−α[m1i=1∑m(hθ(x(i))−y(i))xj(i)+mλθj]
即 θ j : = θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_{j}:=\theta_{j}(1-\alpha\frac{\lambda}{m})-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)} θj:=θj(1−αmλ)−αm1i=1∑m(hθ(x(i))−y(i))xj(i)
如下图所示,相比较原来的梯度下降函数,新的函数会先将自己乘以一个小于1的常数虽然还不知道有什么意义,这样对每个参数而言惩罚力度都是一致的吧,这样感觉不太行

然后是正规方程法

与普通的正规方程法相比,新的方程加入了一个(n+1)x(n+1)的矩阵
θ = ( X T X + λ [ 0 1 1 ⋱ 1 ] ⏟ ( n + 1 ) ∗ ( n + 1 ) ) − 1 X T y \theta=(X^{T}X+\lambda \underbrace{\begin{bmatrix} 0\\ \ &1\\ \ &\ &1\\ \ &\ &\ &\ddots\\ \ &\ &\ &\ & 1 \end{bmatrix}}_{(n+1)*(n+1)} )^{-1}X^{T}y θ=(XTX+λ(n+1)∗(n+1) ⎣⎢⎢⎢⎢⎡0 1 1 ⋱ 1⎦⎥⎥⎥⎥⎤)−1XTy
并且通过数学证明,新的方程的括号内的矩阵一定可逆

所以,正则化对于正规方程法而言还可以解决一些不可逆的情况
7.4 logistic回归的正则化
logistic回归的正则化和线性回归大致相同
J ( θ ) = − 1 m [ ∑ i = 1 m y ( i ) l o g h θ ( x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(\theta)=-\frac{1}{m}[\sum_{i=1}^{m}y^{(i)}logh_{\theta}(x^{(i)})+(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))]+\frac{\lambda}{2m}\sum_{j=1}^{n}\theta_{j}^{2} J(θ)=−m1[i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]+2mλj=1∑nθj2


下面是一些高级优化方法的正则化
这里我们先不深入了解

第八节
8.1 非线性假设
对于非线性分类,我们可以采用多项式logistic regression来进行分类
而所谓多项式拟合其实就是采用泰勒级数的方法来对多元函数进行拟合
当n=2时,二元函数泰勒展开到第二阶就会新增6个特征,这勉强可以接受
但是当n=100时,多元函数展开到第二阶会新增5000个特征,而特征一多又会导致过拟合
也许你会想着减少第二阶的特征数量,比如只用
x 1 2 , x 2 2 , x 3 2 , ⋯ x_{1}^{2},x_{2}^{2},x_{3}^{2},\cdots x12,x22,x32,⋯
但是这会导致模型欠拟合
这就是logistic regression在进行多特征进行分类时的局限性

例如,在计算机视觉问题中,对于汽车的分类,如果只取两个像素点,即输入两个特征,那么我们可以用简单的logistic regression来进行分类
可是,一张最简单的汽车图片也有2500个像素,如果是彩色图片(RGB)
那将会有3x2500=7500个像素,即7500个特征,如果采用logistic regression进行多项式分类,那么拟合到第二阶就会产生3百万个新特征,这相当夸张

于是,为了解决多特征分类问题,神经网络模型闪亮登场
8.2 神经元与大脑
这节课吴恩达老师没讲什么干货
8.3 模型展示 (1)
下图为神经网络的一个神经元的构造
它含有三个输入,一个输出,其中神经元执行logistic regression,所以你可以将其理解为三个特征的线性分类,决策界限就是三维空间的一个平面

下图就是一个单隐藏层的神经网络了,注意,每一层神经网络都有一个bias unit,其值为1,但是一般不画出

如下图所示,如果你之前学过吴恩达的深度学习,你可以将θ^(j)理解为W[j]

8.4 模型展示(2)
神经网络模型其实就是一个logistic regression模型,但是它含有隐藏层,这可以帮助它进行更复杂的非线性拟合

正向传播

多个隐藏层的神经网络模型展示

例子与直觉理解(一)
采用神经网络模型,我们可以进行复杂的非线性分类
下面是三个简单的线性分类,AND,OR和NOT,采用一个神经元(即logistic回归)就可以进行分类



8.6 例子与直觉理解(二)
那么,我们如何使用神经网络模型来进行复杂分类呢?
下图就是一个复杂分类,对于异或问题,我们不可能用简单的线性模型来进行分类,如下图所示

但是,通过AND,OR,NOT这三个神经元组成的神经网络模型,却可以对异或问题进行分类!

8.7 多元分类
多元分类即输出有多个值,下图即为多元分类的模型,hypothesis函数有四个输出值

我们这里采用四阶列向量来表示y,而不是{1,2,3,4}

期中小结
代价函数
未正则化
线性回归的代价函数
J ( θ ) = 1 m ∑ i = 1 m 1 2 ( h θ ( x i ) − y ( i ) ) 2 J(\theta)=\frac{1}{m}\sum_{i=1}^{m}\frac{1}{2}(h_{\theta}(x^{i})-y^{(i)})^{2} J(θ)=m1i=1∑m21(hθ(xi)−y(i))2
= 1 2 m ∑ i = 1 m ( h θ ( x i ) − y ( i ) ) 2 =\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{i})-y^{(i)})^{2} =2m1i=1∑m</

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



