吴恩达ML简略总结

机器学习概览

监督学习

监督学习,指根据一个已有正确答案的数据集,训练后得到一个算法可以根据特征数据对结果数据进行预测并且预测结果尽可能符合正确结果

  1. 回归问题 : 例如课程中所例举的房价预测问题,虽然给定的数据集是离散的,但是在数据可视化后对所有的点进行拟合,即可根据房子平方数预测房价在这里插入图片描述在这里插入图片描述
  2. 分类问题:问题的结果只有有限个,例如诊断肿瘤的问题,根据所给的数据集把诊断结果划分为良性与恶性,分类问题又分为单特征分类问题多特征分类问题,单特征分类问题指根据单个特征数据来划分数据集,例如根据肿瘤大小判断良性/恶性;多特征问题通过多个特征数据划分数据集,例如,肿瘤诊断后有病人年龄和肿瘤大小两个特征数据,以此划分决策界限,判断良/恶性肿瘤在这里插入图片描述在这里插入图片描述

单变量线性回归

单变量模型
在这里插入图片描述
通过训练数据集与学习算法得到假设函数,在将单变量输入假设函数后的到的估计值要尽可能接近目标变量
房价预测的假设函数:
在这里插入图片描述
θ \theta θ是假设函数的参数,是通过训练数据集所确定的,所选择的参数应该要使得通过假设函数得到的预测值应该近似正确值。
代价函数,计算预测值与正确值的均方误差得:
在这里插入图片描述
在这里插入图片描述
代价函数采用1/2的均方误差是为了后续使用梯度下降时,由于偏导可以将其约去,方便计算

记为J( θ \theta θ),即代价函数,参数最优化的目标就是使代价函数取到最小值,在只有一个参数的假设函数中,所得到的代价函数曲线为一条二次曲线,其最低点即为代价函数的最小值点,即为最优的参数
在这里插入图片描述
对于含有两个或多个参数的假设函数,所绘制出的代价函数将是一个碗装的图像(称为凸函数),图像的最低点即为最优化的参数(常用等高线表示凸函数):
在这里插入图片描述
梯度下降算法,Gradient decent,对于有一个或者两个参数的代价函数可以通过对 θ \theta θ求偏导,并令偏导数值为零即可求得使代价函数最小的参数值,但是对于含有多个参数的代价函数,采用数学方程来计算代价函数的最小值点会十分复杂,产生极大的运算开销,故先通过学习算法训练出初始的一组参数,然后不断的迭代优化器,使其到达代价函数的最小位置,这里采用梯度下降的算法进行优化,即每一次迭代都向代价函数的梯度方向更新参数的值,直到下降到局部最优的点,如图所示:
在这里插入图片描述
且每一次迭代参数的值时,必须同步更新;
在这里插入图片描述
其中 α \alpha α决定梯度下降的不长,称为学习率,学习率如果太小会导致梯度下降算法收敛的很慢,不过一定可以收敛到最小的代价函数;学习率过大会导致错过代价函数的最小值点,可能不会收敛,故应当选择合适的学习率。

多变量线性回归

代价函数,如单变量线性回归中房价预测的例子,在实际情况中对于房价的预测必定不仅仅需要房间大小一个特征变量,可能还会有楼层、卧室数、房子年龄等变量,因此通过训练得到的假设函数不仅仅只有一个输入变量(特征变量),由此可以得到的假设函数如下:
在这里插入图片描述
特征变量x0=1,则可以把假设函数看作是x向量和 θ \theta θ向量的内积,
即:
hθ(x) = θTX;
对于多变量线性回归的梯度下降算法与单变量线性回归模型的梯度下降算法是一样的,只是需要同时迭代更新多个参数值。
在这里插入图片描述
在实际中,多个特征值的取值范围可能会相差很大,这样往往会造成绘制的代价函数的等高线十分狭长,从而导致梯度下降收敛的特别慢,因而引入特征缩放(feature scaling),如图左通过将特征变量除其最大值以限制特征变量在相似的特征区间
在这里插入图片描述
此外还可以通过均值归一化对数据按比例缩放
在这里插入图片描述

此外除了用梯度下降算法迭代求得最优的 θ \theta θ参数外,还可以通过正规方程直接求到最优参数,
在这里插入图片描述
然而,正规方程也存在一定的问题,即XTX可能是奇异矩阵,即不可逆矩阵,有如下两种情况:

  1. 特征变量存在线性关系;
  2. 特征变量过多导致特征变量矩阵的列数<维数,此时可以适当的减少特征变量
    如图:
    在这里插入图片描述

逻辑回归

Logistic回归本质上是classification问题,在拟合好假设函数hθ(x)后根据阈值(threshhold)对数据集进行分类
在这里插入图片描述

假设函数

在二元分类问题中y作为结果只能是0或1,而hθ(x)可以<0或者>1,故如果采用线性回归模型的代价函数则不合适,在线性回归中hθ(x) = θ \theta θTX,构造一个函数g(z) = 1/(1+e-z) , z = θ \theta θTX,则可将假设函数的结果限制在[0,1],这个函数称为Logistic函数(sigmoid function/logistic function),如图为该假设函数的图像:
在这里插入图片描述
hθ(x) >0.5时,y=1;
hθ(x) <0.5时,y=0;

例如:
在这里插入图片描述
当给定一个特征变量x1,为肿瘤的大小,则根据逻辑函数求得hθ(x)=0.7,其含义为在所给肿瘤大小特征以及参数 θ \theta θ的条件下,y=1(即为恶性肿瘤)的概率为0.7;

决策边界

在这里插入图片描述
z = θ \theta θTX,根据假设函数曲线,只要z<0,则hθ(x)<0.5,取y=0;z>0,则hθ(x)>0.5,取y=1
例如图
在这里插入图片描述
在通过训练已经确定参数的值的情况下,很容易就可以推出决策边界,在此例中z=θ01x12x2,假设通过训练后得到的参数θ0=-3,θ1=1,θ2=1;那么可以得到决策边界x1+x2=3,则x1+x2<3时,y=0;x1+x2>3时,y=1

正则化

通过减小代价函数的 θ \theta θ参数来简化假设函数hθ(x)
λ \lambda λ为对 θ \theta θ的惩罚程度,即正则化参数
使假设函数的曲线变得平滑,泛化
在这里插入图片描述
在这里插入图片描述

线性回归模型的正则化
Logistic模型的正则化
过拟合与欠拟合

过拟合,数据集特征变量过多造成拟合的假设函数波动大,具有高方差,不能泛化新的样本,不能作为一个好的预测模型,如图3
Adressing overfitting:

  1. 减少特征变量;
  2. 采用正则化;
    在这里插入图片描述
    欠拟合;由于特征变量太少或训练集太少而不能很好的拟合出假设函数,具有高偏差;

支持向量机SVM

无监督学习

无监督学习是指给定的数据没有属性或者标签进行区分,数据都是一样的,通过聚类算法自行找到数据的结构并把数据分为多个簇
在这里插入图片描述
例如:新闻的聚类

在这里插入图片描述
例:

聚类: 收集1,000,000个不同基因的集合,并找到一种方法将这些基因自动分组成不同的相似或相关的不同变量组,如寿命,位置,角色等。

非聚类:“鸡尾酒会算法”允许您在混乱的环境中查找结构。 (即在鸡尾酒会上从声音网格中识别个别声音和音乐)

K-means算法

原理:如图,需要将绿色的无标签的数据分成两类,第一步,将随机生成两个点,称为聚类中心
在这里插入图片描述
K均值算法是一个迭代算法,第一个是进行簇分配,第二个是移动聚类中心,即每一次内循环时都要进行簇分配,将各点分配给离该点最近的聚类中心,
在这里插入图片描述
将各店分配给聚类中心后,如图,再分别算出各类点(即蓝色点和红色点)的均值,把聚类中心移动到均值位置,进行下一次循环,并依次迭代直到聚类中心已经位于簇的均值点位置不再改变,此时视为已将这些无标签数据分类完成
在这里插入图片描述


神经网络学习

如图为房价预测中的非线性假设模型的例子,即房价并不等于房间大小,卧室数等与假设函数参数的线性组合;而是如图所示:
在这里插入图片描述
再举个非线性假设模型的例子,比如说要用机器学习算法做一个分类器来识别一副图像是否为一辆汽车,计算机处理后会得到一个数据矩阵(表示像素值强度的网格),简单而言当要用机器学习算法构造一个汽车识别器时,需要提供一些带标签的样本,其中一类不是汽车的图像和另一类是汽车的图像,将样本集输入至学习算法训练出一个分类器,若取图像中的两个像素点作为特征,则非汽车样本和汽车样本将会分布在坐标中的不同区域
在这里插入图片描述
然而一副图像不可能指取两个像素点作为特征向量,对于一个50*50的像素矩阵,如果用灰度值表示则会有2500个特征,如果用RGB表示,则有7500个特征,如果用回归模型学习这个非线性假设模型,将会非常复杂,因此需要引入神经网络算法进行分析。
神经元模型

在这里插入图片描述

层1为输入层,层2为隐藏层(一个神经网络可能不止一个隐藏层),层3为输出项
把神经网络与大脑神经类比,输入层就类似于大脑神经的轴突,而输出层就类似于大脑神经的终端,中间可能会经过多个神经元(即对于一个神经网络可能有多个隐藏层),这些神经元的功能我们是不知道的,而构造的神经网络亦是如此,隐藏层的功能是不确知的,而可以通过假设函数、输入层和输出层的大量数据训练出合适的神经参数,以模拟实际的隐藏层(或者说大脑神经的神经元)的功能。

上图描述了单个神经元模型的组成,而多个上图所示的神经元结合在一起就可以构成一个神经网络,如下图所示:
在这里插入图片描述
ai(j):表示第j层第i个神经元的激活项(所谓的激活项就是由具体的神经元计算并输出的值)

Θ \Theta Θ是从输入层映射到第一层隐藏层的权重以及从第一层隐藏层映射到第二层隐藏层的权重,也称之为模型的参数
在这里插入图片描述
如上图所添加的x0和a0,为模型的偏置单元,其值总为1
其中第一个算式a1(2)激活值等于sigmoid函数(或者说logical激活函数)作用在这组输入的线性组合的结果,a2(2)和a3(2)亦如此,那么也就是说 Θ \Theta Θ(1)控制着三个输入层单元到三个隐藏层单元的映射,是一个3*4的矩阵;更一般的,如果一个神经网络在在第j层有sj个单元,在j+1层有sj+1个单元,那么 Θ \Theta Θ(j)就是一个sj+1*sj+1的矩阵

仔细观察上图中的四个算式,很容易可以将上述的神经网络向量化:
在这里插入图片描述
上述的运算称为神经网络的前向传播
下面将举两个例子表明如何用神经网络来计算逻辑与以及逻辑或的:

占位符

再思考本节中第一个关于识别图片是否是汽车的例子,就是将图片的原始像素点作为原始输入,映射到第一层的隐藏层经过复杂的运算得到更多的特征,得到的结果再依次作为输入进入下一层隐藏层得到更加复杂的特征,最后这些特征被应用到最后一层逻辑回归分类器,使神经网络准确预测出所给的图片是否是汽车。

如图为神经网络用于多元分类的一个直观例子:

在这里插入图片描述
在这里插入图片描述
根据上述的用于多元分类的神经网络,介绍神经网络的代价函数和反向传播算法;

代价函数

反向传播算法

梯度检测

随机初始化

神经网络的正则化

  • 对于隐藏层数较少的神经网络,特征值较少,更可能造成欠拟合,产生高偏差
  • 对于隐藏层数较多的神经网络,具有过多的特征值,计算代价大,更有可能造成过拟合,而具有高方差,可以通过增大 λ \lambda λ的值实现对神经网络权重 θ \theta θ的惩罚。

在这里插入图片描述

学习曲线

学习曲线可以判断某个学习算法是否具有偏差或者方差,从而改进算法
绘制学习曲线
首先,
列出训练集的损失函数和交叉验证误差集的损失函数:
J t r a i n ( θ ) = 1 2 m ∑ i = 0 m ( h θ ( x ( i ) ) − y i ) 2 J_{train}(\theta) = \frac{1}{2m}\sum_{i=0}^{m}(h_{\theta}(x^{(i)})-y^i)^2 Jtrain(θ)=2m1i=0m(hθ(x(i))yi)2

J c v ( θ ) = 1 2 m c v ∑ i = 0 m ( h θ ( x ( i ) ) − y i ) 2 J_{cv}(\theta) = \frac{1}{2m_{cv}}\sum_{i=0}^{m}(h_{\theta}(x^{(i)})-y^i)^2 Jcv(θ)=2mcv1i=0m(hθ(x(i))yi)2

m: 样本总数,为一个常数

机器学习系统设计


--------------------------------------------2019.4.11----------------------------------------
--------------------------------------------------- 待更----------------------------------------------

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值