Machine Learning 梳理总结 L0~L6

本文梳理了李宏毅教授的Machine Learning课程,包括机器学习介绍、回归、误差来源、梯度下降、分类等内容。介绍了线性回归、损失函数、梯度下降法、过拟合和正则化等概念,以及随机梯度下降和贝叶斯分类的基本思想。通过实例解释了机器学习中的关键步骤和问题,如如何找到最佳函数、如何评估函数的好坏以及如何处理训练和测试数据的误差。

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

9月份比较系统的看了李宏毅教授的Machine Learning课程,这个月开始就没太多看ML,DL的东西。下周有一个deep learning project的due,借着机会重新理一下。
下面按照之前笔记加上自己的理解做个梳理
要是发现我理解错了记得告诉我鸭

Lecture0: 机器学习介绍

Machine Learning = Looking for a function, 对于一些复杂现象,当人们靠自己找不到一些规律的时候,用机器学习可以找到事物见那个复杂的方程。在很多领域都有应用。

比如:
语音识别:人们不是对于所有的声音都能给一个确定的tag。
股票:基于过往数据,可以做出来一条回归曲线进行预料。

机器学习基本分3步:

  1. define a set of function 找规律
  2. goodness of functon 规律的好坏
  3. pick the best function 在一堆候选规律里找到最好的那个
Lecture1: Regression

这章是神经网络的基础
很多章内容都用精灵宝可梦的例子来加以解释。这是个非常好的例子,因为pokemon有很多可视化属性,比如cp值,属性,战斗力等。本章目的是想根据一只宝可梦的属性得到它进化后的cp值来决定是否要花精灵球来抓这只pokemon。
在这里插入图片描述首先给一个input: 一只宝可梦的相关信息X(Xcp,Xs,Xhp,Xw)X(X_{cp},X_s,X_{hp},X_w)X(Xcp,Xs,Xhp,Xw)
output: 我们想要得到进化后的cp值。

step1: define a set of function
根据case选择不同的function,对于这个case,我们只需要知道现有的XcpX_{cp}Xcp去预测进化后的XcpX_{cp}Xcp,这样就是个简单的线性问题。只需要y=aX+b的简单线性方程即可。so… 代入了几组输入之后,如下:
在这里插入图片描述
每一个pokemon都有一个自己的function,自己的参数,我们需要找到是一个可以让每个pokemon都能预测的大model。
Linear model
通式可写成:y=b+Σωixiy=b+\Sigma\omega _ix_iy=b+Σωixi
xix_ixi: 输入者x的各种属性,一般是一个向量或者矩阵。
wiw_iwi: weight,权重,后面会有说。
bbb: bias, 偏差。

step2: goodness of function
怎样从上述function set中找到好的呢?
我们将本来的值减去预测的值,之间的差值越小说明函数越好。
定义一个新的function:loss function,损失函数。
Input: a function
Output: how bad it is
L(f)=L(ω,b)=∑n=110(y^n−(b+ω⋅xcpn))2L(f)=L(\omega,b)=\sum_{n=1}^{10} (\hat y^n -(b+\omega \cdot x_{cp}^n))^2L(f)=L(ω,b)=n=110(y^n(b+ωxcpn))2

step3: Best function
找到让L(f)L(f)L(f)最小的function就是最好的:
f∗=argminL(f)=argmin∑n=110(y^n−(b+ω⋅xcpn))2f^* = argminL(f)=argmin \sum_{n=1}^{10} (\hat y^n -(b+\omega \cdot x_{cp}^n))^2f=argminL(f)=argminn=110(y^n(b+ωxcpn))2
这个例子的function 很简单,用二元次方程就可解,但是现实中,有几百个参数,loss function是几百元的,怎么解?

很重要的一点

一直会混搅一件事情,就是只要有一组数据,这个function就会一直走直到L趋近于0。上面的∑\sum意思是把所有数据的l加起来在进行求导,一旦参数比较多了,其实量非常的大。这也是后面为什么会有stochastic gradient descent以及deep learning的时候会引入bp算法。是因为gd计算量实在太大了。

引出Gradient Descent,只要LLL可以微分,都可以用这个解。假设只有一个参数ω\omegaω,如何求gradient descent?
1.随机选取一个初始的点ω0\omega^0ω0
2.计算dLdω∣ω=ω0\frac{dL}{d\omega}|_{\omega = \omega ^{0}}dωdLω=ω0,在这就是算切斜率的意思,如果值为负数->increase ω\omegaω;如果为正数->decrease ω\omegaω
走这一步是走多远呢?step size取决于两件事:
第一件事,微分值dLdω\frac{dL}{d\omega}dωdL有多大,微分值越大走的越多。
第二件事,添加一个常数项η\etaη, “learning rate”:w0−ηdLdω∣ω=ω0w^0- \eta \frac{dL}{d\omega}|_{\omega=\omega^0}w0ηdωdLω=ω0—>ω1\omega^1ω1
3.计算dLdω∣ω=ω1\frac{dL}{d\omega}|_{\omega = \omega ^1}dωdLω=ω1,并且接着更新ω2\omega^2ω

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值