返回学习笔记

动手学机器学习

发布于 2026-08-12 更新于 2026-09-11 学习 学习
2016 字 10 分钟阅读
动手学机器学习
目录
NOTE

关于机器学习的学习,查漏补缺:)

初探机器学习#

机器通过经验数据 对任务目标做出优化的自动化过程,学习就是 系统基于数据来提升既定指标分数的过程,这个也是目前LLM领域比较突出问题,就是 数据质量,对于传统的机器学习和深度学习的模型检测都有一些标准的人为划分的数据集用来进行模型的训练,但是 LLM 需要的数据很庞大,而且需要进行不断的迭代更新,尤其是 标准的文本式问答,这种数据集并没有一个 固定单一的答案,缺乏一个 明确的监督信号是 大模型目前一个深刻的问题。

机器学习是一门研究算法的学科,能够非显式编程(显示编程是自己有一个解决方案用代码实现,非显式是自迭代拟合实验数据)的形式,通过经验数据来提升性能指标,数学描述机器学习的形式是:

f=argmaxP(D,f)=ML(D)f^* = arg maxP (D, f) = ML(D)

数据集为 D,在给定的模型空间ff 中,寻找最大化性能指标的预测模型 ff^*, 对于上述的优化范式中,我们在一个 模型空间ff中寻找最优模型 ff^*,可以理解成一个 持续迭代的形式,这个寻找最优模型的过程就是 机器学习,我的理解就是**让模型去拟合数据,提高在数据集上的表现能力。

机器学习类别#

分类:离散#

回归:连续#

监督学习#

训练集D中每个数据样本(x,y)由特征和标签组成,模型任务是根据这个 数据特征 来预测 这个标签样本,模型的性能用损失函数来评估,就是

f=argminf1D(x,y)DL(y,f(x))f^* = \arg\min_f \frac{1}{|D|} \sum_{(x,y)\in D} L(y, f(x))

无监督学习#

其实无监督相当于有监督,就是 数据样本没有标签,每个数据集只有 特征 x,我们方法要根据概率分布p(x),去建模数据的分布,可以理解成没有标准答案,让模型自己去找数据中的规律,比如:1000 张图片中可能有很多动物,让你根据这些图片的特征去进行分类(同一类别会有相似性),其实就是去学习数据特征

p=argmaxp1DxDlogp(x)p^* = \arg\max_p \frac{1}{|D|} \sum_{x\in D} \log p(x)

这个p(x) 其实是表示 数据的概率

参数化/非参数化模型#

模型需要多少个自由度来描述,是否随着训练数据量的增加二增加 参数化模型:其实就是相当于参数矩阵(向量)是固定的,将数据的特征压缩到固定大小的参数中

θ=argminθ1D(x,y)DL(y,fθ(x))\theta^* = \arg\min_\theta \frac{1}{|D|} \sum_{(x,y)\in D} L(y, f_\theta(x))

非参数化模型:其实就是将数据特征通过聚合处理变成一个更适合模型的数据特征

泛化能力#

模型不仅要“记住训练数据”,还要能在没见过的新数据上做对,这个是模型非常重要的一个性质,也是用来避免模型的表达能力仅拟合数据集,导致的过拟合现象

R(f)=E(x,y)p(x,y)[L(y,f(x))]R(f) = \mathbb{E}_{(x,y)\sim p(x,y)} \left[ L(y,f(x)) \right]

这个 x 其实就是样本,这个 p(x,y) 就是 这个样本在真实事件出现的概率,但是其实这就存在一个问题,你可能并不知道 “整个真实世界的数据分布”,那我其实不能去计算这个值,只能计算 经验风险:

R^(f)=1ni=1nL(yi,f(xi))\hat{R}(f) = \frac{1}{n} \sum_{i=1}^{n} L(y_i,f(x_i))

这个其实才是我们能够评估的指标,其实 泛化的本质 就是希望模型的能力 不仅仅限制于数据集,而是能够真正去面对不同的问题,对于泛化能力,我的总结便是相似的事物有相似的特征,如果模型能否真正的提取这些特征,模型的空间越复杂,其建模的能力就越强,就需要足够多样,强的数据用来模型训练。

归纳偏置:机器学习模型的“天赋”#

回答的问题:当训练数据有限的时候,模型怎么对没见过的数据进行预测

当模型看数据的时候,会有一些自己的“理解”,或者说是规则,比如 经过数据训练,他可能会认为数据是一个 线性 的,那么新来的数据他也会认为是一个 线性的结果,y=kx,其实我认为机器学习可能就类似于一个数学建模的过程,就是对当前这个问题进行建模,然后 y = f(x 这种形式得到结果,经过数据训练,这个 f(.) 可能就会不同,其实就是模型的f(.) 就是 Inductive Bi)as,叫归纳偏置

机器学习的限制#

  1. 其实对于机器学习来说,就是构建一个模型去拟合数据集的过程,其实如果数据集的质量不高,数量不够很难让模型有一个泛化能力,反而可能让模型崩溃,可能只认识这一个数据,其他内容,我对机器学习有一个深刻理解再说,我认为数据其实是 当前技术的一个很大的难关。

  2. 机器学习 其实全名叫 统计机器学习,可以理解 成 机器学习其实是在学习数据中的一些规律,让 模型去 拟合这个数据规律,所以叫 统计,大概率发生的事件内在肯定存在一些固有独立的特征。

监督学习设定(Supervised Learning set up)#

NOTE

监督学习就是 在我们有 训练数据,学习数据中规律,通过数据映射得到结果,其实就是 学习一种映射关系

XF(X)YX \rightarrow F(X) \rightarrow Y
  1. 经验风险最小化:控制预测结果和实际结果的误差,其实就是 最小化损失函数

线性回归#

损失函数(目标函数):#

J(θ)=121n(Fθ(X(i))y(i))2J(\theta) = \frac{1}{2} \sum_{1}{n}(F_{\theta}(X^{(i)}) - y^{(i)})^2
  • 这个 平方项 是为了 放大 大误差,缩小小误差 的影响
  • 12\frac{1}{2} 其实是为了后续的导数计算方便简洁,换成其他并没有影响

梯度更新#

θj(t+1)=θj(t)αθjJ(θ(t))\theta_j^{(t+1)} = \theta_j^{(t)} - \alpha \frac{\partial}{\partial \theta_j} J(\theta^{(t)})

相当我们是在找 θ\thetaJ(θ)J(\theta) 越来越小,所以根据 泰勒展开的形式,

J(θ+Δ)J(θ)+J(θ)ΔθJ(\theta + \Delta) \approx J(\theta) + J^{'}(\theta)\Delta\theta

我们希望 J(θ+Δ)J(\theta + \Delta) 比原来更小,就是 这个 J(θ)Δθ<0J^{'}(\theta)\Delta\theta < 0 ,最简单的设计:

Δθ=αJ(θ)\Delta\theta = -\alpha J^{'}(\theta)

,这个 \alpha 也叫做 step size(步长,学习率),但是这样的设计 会容易陷入 局部最优

随机梯度下降#

条件:

  1. 数据样本反映真实世界
  2. 小批量样本反映总体样本

方法:

  1. 随机采样进行梯度更新 SGD:
θt+1=θtαBjB(hθ(x(j))y(j))x(j)\theta^{t + 1} = \theta^t - \alpha_B \sum_{j \in B}(h_\theta(x^{(j)}) - y^{(j)})x^{(j)}
正式推导#

设计

Xθ=(h(x(1))h(x(2))h(x(n)))X\theta = \begin{pmatrix} h(x^{(1)})\\ h(x^{(2)})\\ \vdots\\ h(x^{(n)}) \end{pmatrix}

引入 如上的 损失函数设:

J(θ)=12(Xθy)T(Xθy)J(\theta)=\frac{1}{2}(X\theta-y)^T(X\theta-y)

这个才是 进行 代码实现中的设计,一般都是通过矩阵的形式实现,通过引入 导数矩阵:

Af(A)=(a11f(A)a12f(A)a1df(A)a21f(A)a22f(A)a2df(A)an1f(A)an2f(A)andf(A))\nabla_A f(A) = \begin{pmatrix} \frac{\partial}{\partial a_{11}}f(A)& \frac{\partial}{\partial a_{12}}f(A)& \cdots& \frac{\partial}{\partial a_{1d}}f(A) \\ \frac{\partial}{\partial a_{21}}f(A)& \frac{\partial}{\partial a_{22}}f(A)& \cdots& \frac{\partial}{\partial a_{2d}}f(A) \\ \vdots&\vdots&\ddots&\vdots \\ \frac{\partial}{\partial a_{n1}}f(A)& \frac{\partial}{\partial a_{n2}}f(A)& \cdots& \frac{\partial}{\partial a_{nd}}f(A) \end{pmatrix}

在这个部分,我么能不能知道 最优点 的位置: 引入 θJ(θ)\nabla_{\theta} J(\theta) 所以:

θJ(θ)=θ12(Xθy)T(Xθy)\nabla_{\theta}J(\theta) = \nabla_{\theta}\frac{1}{2}(X \theta - y)^{T}(X \theta - y)

根据拆分合并得到的:

J(θ)=12(θTXTXθ2θTXTy+yTy)J(\theta) = \frac{1}{2}(\theta^TX^TX\theta - 2 \theta^TX^Ty + y^Ty)

矩阵求导后的结果:

θJ(θ)=XTXθXTy\nabla_{\theta}J(\theta) = X^TX\theta - X^Ty

解出θ\theta

θ=(XTX)1XT\theta = (X^TX)^{-1}X^T

分类问题#

跟线性回归不同,线性回归的数据为连续数据,分类问题的数据可能是离散的数据

临时插话#

优惠卷收集者问题#

常见的数据很容易遇到,罕见的数据很难遇见,真正想要的东西却始终遇不到

DFS(直接反馈对齐)#

参考资料:

评论

欢迎留下你的想法,友善交流。