在这里分享一些听课的笔记,便于自己复盘,如果对大家有帮助也好

是这个网课

【官方中英】2025年公认最好的【吴恩达机器学习课程】附课件、代码及实战项目!!!--人工智能/机器学习/深度学习_哔哩哔哩_bilibili

我也是刚刚开始学习,有不对的地方请指出

一般是是先提出监督学习和非监督学习:监督学习是带标签的,在训练集的数据中有特征对应的target,但是非监督学习没有。

监督学习分为回归模型和分类模型

回归模型:预测出来是一个数值,比如房子的价格等

分类模型:预测出来是一个类别,比如邮件是不是垃圾邮件,结果只有是或者不是,没有0.5

这里的线性回归属于回归模型

单变量回归模型

X:训练集输入的,成为特征或者输入特征

Y:输出变量,目标变量

训练单个模型,用(x,y)

X(i)上标表示是第几个训练的样本-》表示表格里面的特定行

y-hat是测试集中输入x经过f(模型)得到的y的估计值或者是预测值。

单变量线性,单输入单输出f_{w,b}=wx+b

代价函数希望找到让代价函数最小的W和B的值

梯度下降

梯度下降就是为了解决这个问题的,找到让代价函数最小的w,b值。梯度下降是一种可以用来尝试最小化所有函数的方法,不仅仅是线性回归。

大概思路:

  1. 给w,b一个初始值
  2. 持续去改变w,b使J(w,b)减小
  3. 直到我们找到或者逼近最小值

可能存在不止一个最小值

这里面的图也是看网课的截图。

站在山谷最高的地方,然后考虑如果要下山到谷底,360度旋转,哪个方向下降的最快。

往不同的方向走,可以到达不同的山谷,成为局部最小值

其中等号是赋值符号,就类似与计算机里面的。

\alpha是学习率,0-1之间的小正数,比如0.01。作用是控制你下坡时步子的大小

导数项:看做采取小步的方向

学习率和导数项两者结合决定了你想采取下坡步的大小

两个参数w,b需要同步更新

学习率

也就是下坡步子的大小。

如果学习率过小:梯度下降很慢,但是可以到达最低处,效率低

学习率过大:下降太快,可能导致错过最低点,达到另外一个误差更大的点,最后无法达到最低点。另一种说法:梯度下降可能无法收敛,甚至可能发散。

局部最小值:图像上面看:斜率为0。公式上面看:这次的w的上次的相同。

大概我们一步一步逼近最小值,我们走的步子也在变小,因为斜率在减少以至于逼近0

一个算法来自动增加学习率。使其采取更大的步长并更快地达到最小值。Adam算法,可以做到这一点。

Adam:代表自适应矩估计,或ADAM

第一种情况,梯度下降方向基本不变,可以增大学习率

第二种情况,如果来回反弹,要降低学习率

线性回归的梯度下降

将J(w,b)带入梯度下降公式,得到

得到的图像大概是这样:

在线性回归中,J(w,b)是一个凸函数,这样的函数局部最小值也是全局最小值。

批量梯度下降:在梯度下降的每一步,我们都在查看所有的训练样本,而不是训练数据的一个子集。

多元线性回归

Xj:第j个特征

n:特征的总数

向量化

由于多特征的特点,引入向量可以简化代码,还可以提高计算速度。

多重线性回归的梯度下降

这里除了梯度下降还有一种可以求使得J最小的w,b的算法:正规方程方法。但是只适用于线性回归,不用于其他的算法。

学习率

学习曲线:正常情况下是随着迭代次数增加而逐渐降低

可以看到图中迭代次数到400基本就收敛了,具体判断可以是J(w,b)减小的数值小于等于一个很小的数(比如10-3)可以判断结束模型训练。

另外一个决定模型何时完成训练的方法是使用自动收敛测试。

如果学习曲线上下波动或者是增加,那可能是代码问题或者学习率过大

可以设定一个很小的学习率,但如果还不收敛,就是代码的问题。将学习率设置的很小只是为了调试,真正使用过程中学习率太小会影响效率

可以尝试的学习率0.001   0.01  0.1  1

特征缩放

当不同特征取值范围差异很大的时候,比如那个椭圆,梯度下降很缓慢,最后找到最小值比较困难。

归一化之后再找,比如那个圆,就会好很多。

1.均值归一化

(1)找到数据的均值

(2)计算

2.Z分数归一化

(1)计算每个特征的标准差

(2)计算

特征工程

特征工程:通常通过转换或组合问题的原始特征,以便更容易地让学习算法做出准确的预测。

通过特征工程和多项式函数,可以潜在地获得一个更好的模型。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐