三分钟让你掌握机器学习的本质

12 阅读4分钟

机器学习的本质

机器学习的任务,就是要找到一个函数,能够根据输入,预测出一个结果。

机器学习的分类

机器学习中的任务主要分为两类:Regression回归任务和Classification分类任务。

假如我知道今天的股票价格,我想要预测明天的股票价格,这种任务就是回归任务,预测结果是不固定的,比如明天的股票价格可能是10.1、10.2、11.1...。

假如我现在有很多评论数据,我想要根据评论预测是好评还是差评,这种任务就是分类任务,预测结果是固定的,要么是好评,要么是差评,不会有其他结果。

为什么叫“回归”?

分类任务还是好理解,那么回归任务为什么叫“回归”呢?

英国统计学家弗朗西斯·高尔顿在1886年研究父母与子女身高关系时,发现子女的身高会“回归”到平均身高(Regression to the Mean)。

例如:

  • 高个子父母的子女通常比父母矮;
  • 矮个子父母的子女通常比父母高;
  • 整体趋势向平均身高“回归”。

高尔顿用“回归”一词描述这种向均值靠拢的现象,并提出了线性回归模型,尽管现代机器学习中的“回归”已不局限于高尔顿的原始含义(如预测不一定向均值靠拢),但“回归”一词仍被保留,代指对连续变量的预测建模。

机器学习训练流程

准备数据

比如我有近一个月的股票价格数据:

  • 1号的股票价格:10
  • 2号的股票价格:11
  • 3号的股票价格:13
  • 4号的股票价格:10
  • ...

本质上就是一个数组:[10, 11, 13, 10, ...]

定义函数

我们定义一个函数:y = wx + b,其中w称为weight(权重),b称为bias(偏置)。

初始化参数

机器学习训练的目的就是找到最合适的w和b,使得能预测出正确的结果。

但一开始我们并不知道最合适的w和b是什么,所以我们只能随机初始化w和b,比如:w = 0.1,b = 0.1。

然后就开始利用样本数据进行训练。

前向传播

先取第一个样本,x=10,带入函数,得到y=0.1*10+0.1=1.1,这里的1.1就是预测结果,而这个过程称为前向传播。

但x=10对应的真实结果其实是第二天的股票价格:11。

所以预测值和真实值之间是有误差的:11-1.1=9.9,误差还是很大的,所以需要调整w和b,使得误差变小。

反向传播

我们可以采用最简单的方式来调整w和b,公式为:

y_pred = w * x[i] + b # 预测值
loss = y_pred - y     # 误差
w = w - x[i] * loss   # 调整w
b = b - loss          # 调整b

例如: w = w-10*9.9 = 0.1-10*9.9 = -98.9 b = b-9.9 = 0.1-9.9 = -9.8

其中,10为当前样本x[i]的值,9.9为当前误差,这样我们就调整了w和b的值,这个过程叫做反向传播。

然后用新的w和b对后续样本不断进行训练,根据误差不断调整w和b,直到找到合适的w和b。

轮次epoch

以上整个过程可以重复很多次,也就是一个样本不止使用一次,可以使用多次,这个次数就是epoch,通过多次训练,最终找到一个对整个样本集都合适的w和b。

训练集、评估集、测试集

一般我们会将样本集分为训练集、评估集、测试集,比例为822或者644。

  • 训练集:用于训练模型,即训练模型参数。
  • 评估集:用于评估模型,即评估模型性能。
  • 测试集:用于测试模型,即测试模型性能。

训练过程中会用到训练集和评估集,比如训练集有100个样本,训练轮次epoch为5,那么每训练完一轮,就可以用评估集来评估模型性能,从而可以根据评估结果来决定是否继续训练,或者持续保存最优模型。

当模型训练完之后,可以用测试集来最终测试一下模型在新数据集上的性能。

注意:训练集、评估集、测试集的数据不能重复。

欠拟合和过拟合

欠拟合:就是还没有训练到位,在训练集、评估集、测试集上性能都不太好。 过拟合:就是训练过度了,在训练集上表现特别好,但评估集、测试集上的性能不好。

总结

以上只是最简单的训练过程描述,实际中,预测函数、误差函数、参数、训练过程都会更加复杂。

最近在尝试手写一个LLM,也就是大语言模型,可以理解为手写一个ChatGPT、DeepSeek,还是挺有意思的,感兴趣可以关注我(公众号:IT周瑜),我会持续分享。