吴恩达机器学习笔记-向量化

本文探讨了在机器学习算法实现中利用向量化方法和线性代数库的重要性,通过对比向量化与非向量化代码,展示了如何优化线性回归和梯度下降算法,从而显著提升计算效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习机器学习时,无论你是用Octave,还是MATLAB、Python、NumPy 或 Java C C++所有这些语言,它们都具有各种线性代数库,这些库文件都是内置的,是数值计算方面的博士或者专业人士开发的,已经经过高度优化,使用方便有效,运行速度也更快。在我们实现机器学习算法时,应当好好利用这些线性代数库或者数值线性代数库,而不是自己去做那些函数库可以做的事情。

在Octave中直接可以实现两个矩阵相乘的运算。所以,我们可以用合适的向量化方法来实现,编写一个简单得多,也有效得多的代码。 例如,常见的线性回归假设函数是这样的:,对于假设函数值的计算,我们需要进行多项求和。但是,如果我们同时用n+1维列向量表示参数和变量,即,则假设函数可以简化记为两个向量的内积:。比较一下向量化和未向量化之间代码差别:

  • 未向量化的代码实现方式,我们用一个 for 循环对n个元素进行加和,matlab的下标从1开始

                                                   

  • 作为比较,接下来是向量化的代码实现

                                                

再看一个例子,对于性回归算法梯度下降的更新规则:

                          

最简单方法就是用一个for循环令j=0、1、2、3......来不断更新参数 。但让我们用向量化的方式来实现,可以更加简单,做法如下:

         我打算把θ看做一个n+1维向量, δ=,更新规则就变成了。这是个向量减法,因为α乘以 δ是一个向量,所以就是θ- α δ得到的向量。对于 δ来看,是一个向量,δ最终就是作加和。

                                                        

当我们使用几十或几百个特征量来计算线性归回,向量化地实现线性回归,通常运行速度就会比你以前用你的for循环快的多。因此使用向量化实现方式,你应该是能够得到一个高效得多的线性回归算法,这会是一个很好的技巧,无论是对于Octave 或者一些其他的语言 如C++、Java 来让你的代码运行得更高效。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值