机器学习 吴恩达 笔记

第二周 单特征值

房价问题 是回归问题和监督学习 ,单变量线性回归

(x,y)是指一个训练样本,xi,yi是指第i个 , x是特征值输入,y是输出,即房价,m是样本数量

假设函数 hypothesis h为预测值

要做的就是选择的值,使代价函数最小

这是只有一个变量的预测函数和代价函数

这是有两个变量的代价函数

梯度下降算法 其实就是下山的时候找最快的路,更改起点,会得到不同的局部最优解

应该同时更新变量数值。

导数项的意义就是让变量减去导数(斜率),从而向最低点靠近

学习率太低会导致梯度下降很慢,太高的话会每次都越过最小值,从而发散

计算得到的两个梯度下降导数

如果是线性回归的梯度下降算法,一会得到全局最优解,因为他的代价函数是一个碗状的形状,

这种算法的名称叫做batch梯度下降算法,每一步都会使用所有的样本。

 

第三周

回顾线性代数

第四周

下载matlab

第五周 多特征值

Xj^i 第i个样本的第j个特征值,此时假设函数hx变成了

如果将x0看做1,此时

如果特征值之间的取值范围差别很大的话,可以使用特征缩放,比如

目的是为了让特征值的取值大约在-1~1之间取值,一般不能在超过-3~3或-1/3~1/3

均值归一化这样会让特征值的平均值约为0

这两个方法是为了让那个梯度下降更加快

判断梯度下降是否正确工作  1.(常用)通过迭代次数曲线,看代价函数是否逐渐减少来判断,如果不是逐渐减少的,通常的原因就是学习率设置的过大  2.通过自动判断,如果代价值小于0.001或者一个固定值,那么就可以判断其已经收敛

吴恩达常用的学习率一般是以3倍为间隔取的 0.001 0.003 0.01 0.03 0.1 0.3 1

创造特征值 比如房子的宽度和长度的乘积

非线性的拟合 可以设置

正规方程

举例说明

这样就得到了一个直接计算的方法而且不需要进行特征缩放

 正规方程不需要选择学习率不需要迭代,但是需要计算所以n不能太大,在10000以内就可以使用

这里的并不是一个而是一个矩阵,其中包含0--n

 

第六周 octave

//

v= 1:0.1:2从1开始以0.1递增

ones(2,3)23的矩阵 元素全为1

rand随机数矩阵  zeros全零矩阵  eye(4)单位矩阵

hist(w)绘制直方图

 size (A)大小  size(A,1)行数 但是常用length

load xxx.dat 读取数据

who 展示所有变量 whos 所有变量的详细信息

clear a 删除变量 clear 全清

save xx.mat   v

 

第七周 logistic回归(sigmoid函数)

解决的是分类问题, y是1 或者 0,此时hx其实就是对于特征值序列x而言y是1的概率是多少

这个就进一步简化了这个问题,预测结果其实就是预测z==是否大于0

决策边界就是z=0的那条线或面,一旦有了theta就会得知决策边界,而数据训练是为了拟合theta

怎样确定theta呢?

logistics回归的代价函数如果用线性回归的会成为一个非凸函数,即有很多局部最优解,所以我们应该更改一下这个代价函数,如下:

此时代价函数就是一个凸函数,所以我们的任务就是找到最小的代价之下的theta是什么,这样又可以使用梯度下降算法了

结果发现跟线性回归的公示完全一样,但是有一点不一样那就是hx变了

想一想,梯度下降算法就是计算两个值,J(theta)(如果你想判断收敛状态的话才计算这个)和J(theta)的导数

更好的优化方法,BFGS,LBFGS等不需要选择学习率,比梯度下降收敛的快,(章节7高级优化用代码展示了这个方法)

多类别问题,y就有多个取值了,可以将其变成二元分类问题,将一类看做正类,其他所有类看做负类,这样就会形成n个分类器

第八周 正则化

欠拟合 没有很好的拟合数据

过拟合  拟合所有数据,可能因为特征值太多,导致代价函数接近于0,无法泛化到新的数据模型

解决方法,一减少特征值数量,人工检查或者模型选择方法,二是正则化,保持特征值数量,但是减少theta的值

因为不知道哪个特征值是相关性不较低的,所以要缩小所有的theta值,这样就要求我们修改代价函数变成

如果theta设置太大,就会将所有特征值抵消掉,出现欠拟合,所以需要正确选择theta。

 

线性回归中

梯度下降的正则化方法

正规方程的正则化 不仅能减小特征值的相关性,还能防止公式中不可逆现象的发生

 

第九周 神经网络

解决非线性问题

看到的是像素亮度值的矩阵,让大脑的某一个神经去学习执行别的功能。

简单的神经网络,其中告诉了我们一些基础的知识点,X0A0等常为1的变量被称作偏置量,theta其实就是常说的权重,而且每一层的权重都不同,变量的上表表示的是第几层,sigmoid函数和logistic函数其实就是激活函数 ,激活函数计算出的激活值其实就是下一层所要使用的输入特征值

神经网络的计算方法,其中最后一步实际上就是线性回归,其中theta的上角标表示的是第几层,下角标第一个表示的是目标输出是下一层的第几个,下角标的二个是本层第几个

逻辑AND的神经网络示例

告诉我们怎样通过神经网络实现稍微复杂的逻辑,右  上方是该逻辑的正确图像

神经网络解决的多元分类问题,之前使用的logistic解决多元分类问题,就是将一个类别看做正样本,剩下的看做一类看做负样本,神经网络分类器是将结果看做一个四维的输出向量,如果输出的结果是【1,0,0,0】就是行人

第九周 神经网络

基础知识:L表示的是一共有多少层,Si表示第i层一共有多少个神经元,k表示一共有多少维的输出,小写的delta表示的是激活值与我们预期的激活值之间的error(隐藏层中的输出值不叫激活值,其实隐藏层也分两块,z就是上层计算所得到的输出值,而a是g(z)是在使用激活函数之后得到的激活值)

数据集的表示是

线性回归代价函数,就是实际值与预测值的标准差;

logistics不能使用,因为其不是凸函数,所以进行了变化,变成了求log;

而神经网络的代价函数可以使用logistic的,区别在于多个分类结果要都进行log操作,最后是加上了正则化的操作,将所有层的theta的平方加起来

这个图告诉我们的是如何求小delta,其中*表示的是Hadamard乘积,其实就是两个向量的对应元素相乘

利用反向传播算法来优化代价函数,第一步先整理数据集,设大写delta全为0,目的是之后为了求偏导数,然后进行正向传播,设特征值为第一层,计算出每一个神经元的输出值,然后进行逆向传播计算delta,输出层最为简单,就是用输出值和数据集中的y值做差,然后计算上一层,计算上层delta的公示在下一张图片里,其实就是j+1层的delta的带权的和,直到倒数第二层,因为第一层是特征值,不需要计算误差。计算完所有的delta之后,在计算大delta,公式是,之后计算D,当j等于零时,此时theta是偏置量,,如果j不等于0,那么计算公式为然后通过数学公式可以推导出(上一张ppt中他说,应该是少写了一个1/m,明天推导一下),知道了代价函数的导数,我们就可以利用之前梯度下降的算法,不断更新theta值,来优化代价函数了,或者使用一些高级的BGF等算法来优化。

 

这是一个实际的例子,上面说到这里

然后上一层的delta值其实是下一层delta值的加权和,这张图片告诉我们计算小delta的方法,就是方向相反的正向传播

梯度检验 ,就是用导数的定义来检查,如果两个值是相似,就可以相信自己的反向传播算法,之后一定要停止梯度检验的代码,不然会很慢

整合回顾:

如果有多个隐藏层,每一层的神经元的个数应该相同,而且应该大于等于特征值数量。随机初始化权重,进行前向传播,设定代价函数,进行反向传播计算出代价函数的导数,梯度检查的反向传播得到的导数值和使用数值方法得到的估计值,确保这两个值相近,然后停止梯度检查,最后使用优化方法来减小代价函数

 

十三周 支持向量机

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值