1.课程回顾
例1:房价和面积—预测
给定一组房价和房屋面积的数据集,通过机器学习算法(监督学习)来拟合画出一条线,根据这条线来对未知的数据进行判断。假设机器通过这些房价数据学习得到一条房价—面积关系线,如上图中红线,那么如果你朋友的750英尺的房子,就可以通过这条红线来估算出房价,可以看出,大约是在150K美金左右。
这是一个典型的回归问题(Regression),因为结果(房价)可以是任意实数,且数据是可以连续的。
更进一步,由于变量1个—房屋尺寸,且预测结果(房价)和变量间的表达式可以用线性方程描述y = k*x + b。所有,此问题在机器学习中的术语叫做:单变量线性回归 Linear Regression with One Variable
例2:乳腺癌良性/恶性和尺寸关系
给定一组数据:乳腺癌肿瘤尺寸大小 和 癌症恶性/良性关系,通过机器学习,来预测一个给定肿瘤尺寸大小的患者,疾病是恶性还是良性的概率。这个问题和之前的房价问题有些区别,虽然同样的,变量只有一个,即x轴上的尺寸大小,但是y轴的结果却只有两种:0和1,0表示肿瘤分类为良性;1表示分类为恶性。
所以,这是一个典型的分类问题(Classification)由于这里结果只有两种,所以此分类问题为二元分类问题
2.分类Classification
这两个例子都比较通俗易懂,新接触到的名词虽然有点多但也无需过度理解,两个例子中涉及到了监督学习中的分类问题、回归问题。分类问题很好理解,机器预测值只有固定的几个类别,课程中为两种:0良性肿瘤 1 恶性肿瘤,所以称为二分类,除了二分类以外,其他的统称多分类。
3.回归Regression
与分类问题相对,回归问题的预测值范围比较自由,可以是连续的,且可取任意实数
4.监督学习Supervised Learning
课程中的两个问题:房价-房屋面积、肿瘤良恶—肿瘤尺寸都是属于监督学习。可以先简单理解,监督学习就是给定了数据集,且数据是规则明确的,有标签的。可以理解为结构化的、存储在数据库中的数据,喂给机器学习的情况,就叫做监督学习。
5.无监督学习Unsupervised Learning
与监督学习相对,如果给出的数据集、没有明确标签或者是非结构化的,那么这类数据的机器学习,就叫做无监督学习。除了监督学习、无监督学习、还有半监督学习的概念。具体可以看看知乎:https://www.zhihu.com/question/23194489/answer/25028661
6.假设hypothesis
我们以例1为例说明hypothesis(假设),这也涉及到后面的代价函数。
ℎ—hypothesis(假设),代表学习算法的解决方案或函数。
ℎ表示一个函数,实际上即模型的预测函数,在例1中,输入是房屋尺寸大小,就像你朋友想出售的房屋,因此 ℎ 根据输入的房屋面积值x 来得到此防房屋估价y,因此,ℎ是一个从x 到 y的映射,由于是单变量线性回归,映射关系可以简单表示为:等价于
举个栗子
很明显,在此例中,通过假设函数,我们可以对数据集以外的样本做预测,如果假设函数是: 那么如果你的朋友有一套面积为500(英尺)的房子,那么你就可以告诉他,你的房价预估在125K(12.5万)美金
误差
你那个朋友过来找到你了,说你的假设有误啊,我那套500英尺的房子,明明就是100K而已,你的数据集的数据还记录了我的房子呢......你这有误差啊?!
预测值125和真实值之间差距为25K,这里25K就被称为建模误差。
7.损失函数Cost Function
代价函数/损失函数,就是用于评估误差水平的函数,常见的损失函数有平方损失函数、交叉熵损失函数,其中前者多用于回归问题,后者多用于分类问题。理论上,给定一批房屋面积—价格数据点,我可以根据这批数据画出无数条假设函数直线用于模拟房价和面积之间的关系,那么怎么找到最优的那条线?这时,我们就会用到代价函数,好的代价函数必然使得数据集总体的误差最小。
举个例子,此时我有三个样本点 (1,1),(2,2),(3,3),我怎么确定一个假设函数h,使得这条线能最优化地拟合所有数据,能更精确地预测下一个位置样本点的数据,譬如x = 5时 y的值?这里人眼很明显一看就能确定 即可,不过对于机器,怎么去确定这个方程?
此时就需要用到代价函数,这里我们可以用回归问题通用的平方损失函数/平方代价函数,评估假设函数的误差水平。这里,例1的代价函数如下:
损失函数的意义就在于,通过求损失函数的值,我们可以评估预测函数的准确性,损失越小,则模型的预测越精准。所以,训练模型很多时候就是降低损失,找到损失函数的最小值,通过其最小值来产出最优的假设函数。
8.二元函数梯度下降Gradient Descent
图解
概述
目标
找到损失函数的最小值,即最小的点,所以我们利用梯度下降算法(而不是梯度上升)
为了找到损失函数的最小值,我们采用梯度下降算法,图中为二元函数梯度下降图解,如果参数为更多元,则无法绘制出相应的梯度下降图,不过这幅图恰巧能生动地解释梯度下降的含义。
这里x、y轴分别为参数所在维度,z轴代表代价函数J的大小,所有的参数点和损失函数值构成了五彩的三维曲面,最终目标:即通过梯度下降算法,找到最小的点。
肉眼可见右边红色箭头所指的点,为局部梯度最低点,即局部最小值点;左边红色箭头所指的点为整个三维曲面上的最小值点,即全局最低点。
公式
这里,批量梯度下降(batch gradient descent)算法的公式为:
for( j = 0 and j = 1)
参数解释
1.公式中为什么是,因为用于表示梯度下降,即逐渐降低,故用负号表示
2.公式中用的是:=符号,此含义表示,等式中的参数需要同时更新。如此处有两个参数正确的更新方式是:
第一步:
第二步:
其中第一步完成后才能进行第二步,且在每一步执行时,内部求temp1、temp2时也是并行的关系
学习率
批量梯度下降公式中,为学习率(learning rate)它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数
学习率过小
如果太小了,即我的学习速率太小,结果就是只能这样像小宝宝一样一点点地挪动,去努力接近最低点,这样就需要很多步才能到达最低点。所以,如果太小的话可能会很慢,因为它会一点点挪动,它会需要很多步才能到达全局最低点。
学习率过大
如果太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远。所以,如果太大,它会导致无法收敛,甚至发散
9.梯度下降的线性回归
线性回归模型 梯度下降算法
(for j = 0 and j = 1)
对损失函数/代价函数运用梯度下降方法,求导:
Tips:
j = 0时即对求导,
j = 1时即对求导