吴恩达机器学习笔记.Day2

一、梯度下降算法

书接上回,我们了解了梯度下降的大概,那么具体来看一下梯度下降算法的实现。

我们针对两个参数w和b,对其进行梯度下降,这里就不得不提到一个东西——学习率

学习率便是公式中的阿尔法,用来控制向最小J值逼近时的步长,过小的学习率会使达到J值的时间过长,过大的学习率则会出现一步迈过头的情况,并且部分展开后我们可以得到以下公式

二、多维特征

很多时候我们要预测的东西不止和一个参数有关,这时候便要考虑多维特征,我们不能简简单单的只考虑一元线性回归,因为实际情况往往比这些要复杂得多。

我们用来表示第几个参数,j=1,2,3,……,同时我们用n来表示参数的个数

同样的,我们仍然用来表示第i个训练实例,如果要引用某一特定参数的训练实例,我们用来表示。

当我们得到了多个参数之后,我们可以看一下模型变成了什么样子,如下:

我们将参数上面加一个小箭头称之为向量,一个向量包含w1,w2,w3……那么事实上函数就可以写成:

三、向量化/矢量化

运用矢量化可以使我们的代码更加短小精悍,更加有效。学习运用矢量化可以加速我们的计算。在Python中我们可以运用NumPy——一个数值线性代数库,不使用矢量化的话将会使我们的代码变得冗长。

对比之下,矢量化真的会方便很多。

矢量化将一个个的运算简化为了并行计算,看上去很神奇,不是吗?尤其是遇到大量的数据的时候,其优势便得以展现。

四、适用于多元线性回归的梯度下降法

我们将多元线性回归函数向量化之后,便可以得到以下的式子:

注意,这里的点是dotproduct(点积),相当于展开后的x1*w1,x2*w2……这时,我们仍可以对每一个w参数和b参数进行梯度下降

而对其进行展开更直接的来看,和一元线性回归的梯度下降其实也有些类似,只不过J里面f函数要对多个参数进行计算。

五、特征缩放技术

运用特征缩放技术可以是我们的梯度下降更加迅速。

假设我们有一个含有两个参数的函数

而且有这样一组数据

我们不妨对其先对其w1和w2进行假设

可以看到,当参数取值范围比较大时,相对应的w取值也应当比较小,从而使参数在一个合理的范围上面,

当我们绘制x1和x2的散点图时,会发现它们形成的是一个窄带,这并不利于我们的预测

与此同时诞生的J值等高线图也是一个扁椭圆形,不利于我们的观察与计算。

这时候我们便要用到一定的缩放技术,从而让参数的范围变得合理起来

如图,很好理解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值