吴恩达 机器学习 第一部分 第5章 学习笔记

说明:本文为本人学习本课程的笔记,课程链接为

【(强推|双字)2022吴恩达机器学习Deeplearning.ai课程】

https://www.bilibili.com/video/BV1Pa411X76sp=8&vd_source=1a7101e2cd4837c57a0824d2cc5a5e56

如需要更深层次地掌握知识,请自行学习视频课程。

第五章 多元线性回归及其梯度下降法(一)

5.1 多维变量

 如图,形如

\vec{x}=(x_{1},x_{2},...,x_{i},...,x_{n})

的具有n个维度的变量称为n维向量。

其中x_{j} 称为向量的第j个特征,n为向量的特征数量,也称为向量的维度。

相对地,\vec{x}^{(i)} 是向量 \vec{x} 的第i次迭代 ,x_{j}^{(i)}为第i次迭代后向量的第j个特征。

如图,f_{w,b}(x)=w_{1}x_{1}+w_{2}x_{2}+w_{3}x_{3}+w_{4}x_{4}+b 为一个四元函数,表示了房屋价格受面积、卧室数量、层数、年份四个因素共同作用。其中房屋年份对价格有负面影响,因此w_{4}<0 。

当变量数为n时,函数写作 f_{w,b}(x)=w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n}+b

 用向量 \vec{x}=(x_{1},x_{2},...,x_{i},...,x_{n}) 和 \vec{w}=(w_{1},w_{2},...,w_{i},...,w_{n}) 的内积表示函数,有

f_{\vec{w},b}(x)=\vec{w}\cdot\vec{x} +b=w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n}+b

对这样的函数进行回归计算的过程,称为多元线性回归。

5.2 向量化

在使用numpy库或者各种Tensor张量库进行计算的时候,我们都会感叹这些库计算的速度之快,以至于远远超越自己写的for循环。然后,我们就会逐渐并且越来越多的听说到一个词——vectorization(向量化计算)——其带来了巨大的计算性能。

什么是vectorization?

向量化计算(vectorization),也叫vectorized operation,也叫array programming,说的是一个事情:将多次for循环计算变成一次计算。

————————————————————————————————————————

为什么向量化计算(vectorization)会这么快? - 知乎 (zhihu.com)

 下面探讨编写函数 f 的计算程序的三种方式

方式1:逐个手动编写

f=w[0]*x[0]+w[1]*x[1]+...+w[n]*x[n]+b

方式2:使用for循环

f=0
for j in range(0,n):
    f = f + w[j]*x[j]
f = f +b

方式3:使用向量

f = np.dot(w,x)+b

可以看到,当n较大时,方式1几乎不可行。

而方式2虽然代码相比于方式1更为简洁,但在计算速度上比方式3有较大差距。

​ 在Python的numpy库中使用向量化(Vectorization)计算,速度是非向量化(non-Vectorization)计算(即循环)的700倍(当前开发环境),因为向量化计算使用了python的内建函数,调用了CPU/GPU的SIMD指令集进行计算,大大减少了因为python高级语言执行损耗的时间。
————————————————
版权声明:本文为CSDN博主「PONY LEE」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38251332/article/details/120308863

  向量化采用了并行的计算方式,能够一次进行向量内积运算,而不需要逐次将参数相乘后相加。

5.3 多元函数的梯度下降法

 如图,多元函数的梯度下降以向量和单个参数表示如下。

\left\{\begin{matrix} w_{j}^{(i+1)}=w_{j}^{(i)}-\alpha \cdot \frac{\partial }{\partial w_{j}}J[\vec{w},b(i)]\\ \\b_{j}^{(i+1)}=b_{j}^{(i)}-\alpha \cdot \frac{\partial }{\partial b}J[\vec{w},b(i)]\\ \end{matrix}\right.

 \left\{\begin{matrix} w_{j}^{(i+1)}=w_{j}^{(i)}-\alpha \cdot \frac{\partial }{\partial w_{j}}J[w_{1},w_{2},...,w_{n},b(i)]\\ \\b_{j}^{(i+1)}=b_{j}^{(i)}-\alpha \cdot \frac{\partial }{\partial b}J[w_{1},w_{2},...,w_{n},b(i)]\\ \end{matrix}\right.

 多元线性回归的梯度下降公式如下

\left\{\begin{matrix} w_{j}^{(i+1)}=w_{j}^{(i)}-\alpha \cdot \frac{\partial }{\partial w_{j}}J[\vec{w},b(i)]=w_{j}^{(i)}-\alpha \cdot \frac{1}{m}\sum_{i=1}^{m}[f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)}]x_{j}^{(i)}\\ \\b_{j}^{(i+1)}=b_{j}^{(i)}-\alpha \cdot \frac{\partial }{\partial b}J[\vec{w},b(i)]=b_{j}^{(i)}-\alpha \cdot \frac{1}{m}\sum_{i=1}^{m}[f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)}]\\ \end{matrix}\right.

 除此之外,正规方程是另一种解决线性回归问题的方法,但正规方程法具有一定的局限性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值