简单说下机器学习的算法

上个月的时候,我借着ChatGPT的风头,写了一篇《从ChatGPT开始说起》,其中简单回顾了一下我对AI的认识,其中没有谈到很多技术的东西,特别是机器学习的基本算法。在这篇文章里,我想结合我目前还能想得起来的在大学/研究生(大概是30年前)时学到的一些知识,简单说说机器学习的算法。

一、实际问题引入

假定有如下的表格,显示了一名学生在一个学期中某个科目的四个评分标准中各5次的成绩。

评分标准 第一次 第二次 第三次 第四次 第五次 最终成绩
A 4 6 5 6 6
B 2 3 4 5 6
C 4 5 6 5 6 ?
D 2 2 4 5 5 ?

我们需要得到这些学生的期末成绩(1最低,8最高)。

二、解决问题

一种很粗暴的方式,自然是用平均权重,也就是每次成绩都有20%的权重,得到平均成绩后四舍五入。这样得到的表格如下:

评分标准 第一次 第二次 第三次 第四次 第五次 最终成绩(四舍五入后的平均成绩)
A 4 6 5 6 6 5
B 2 3 4 5 6 4
C 4 5 6 5 6 5
D 2 2 4 5 5 4

这位同学在这个科目上的最终得分是18分,大致可以换算到IB 7分制的4分。

直觉告诉我们,这张表格中,

  1. A标准的评分略偏低,可以考虑6分。
  2. C标准的成绩比较“正确”,但也可以考虑6分。
  3. B/D标准的成绩有点“不公平”。这位同学在学期初无论出于什么原因,这两个评分标准的成绩不理想。但是他进步非常明显,简单的平均法没能充分考虑该生在这学期在该科目上的进步。

三、有经验的IB老师给出的分数

我们来看下一位有经验的IB老师面对这张成绩单,会给这位同学给出怎样的分数:

评分标准 第一次 第二次 第三次 第四次 第五次 最终成绩(经验评分)
A 4 6 5 6 6 6
B 2 3 4 5 6 5
C 4 5 6 5 6 6
D 2 2 4 5 5 5

这样,这位同学的总分就是22分。可以得到IB成绩中的5分(接近上限的5分)。如果最后得分要到6分,那么总分最低需要到24分。而从上面的评分可以看出,即使我们给这位同学的B项得分再加1分,也只有23分,到不了6分的最低要求。所以,这位学生该科目的最后得分在5分是非常合理的。

四、让机器来打分

有了之前的讨论,我们可以来考虑是不是可以用机器来打分。

简单的一个模型可以是:

S_{final}=a_1*S_1+a_2*S_2+a_3*S_3+a_4*S_4+a_5*S_5=\sum_{i=1}^5a_i*S_i

也就是我们用线性方程,对5个成绩授予不同的权重,然后得到最后的分数。如果我们简单地从最开始(二)中提到的平均主义出发,我们就可以先为每个a_i赋值0.2,得到了一个值,然后和(三)中比较“正确”的数值进行比较。两者的差异就是我们的模型和“正确”结果之间的差异:

平均法 “正确”结果 差异
5.4 6 0.36

所以,平均法和“正确”结果之间的差异是0.36。这个差异还是太大了一些。

注意:为了避免数值相减出现正负值,在计算差异时,我们会将数值差异进行平方,然后再加总。

五、罚函数

在我读书的时候,我学过所谓的“罚函数”法。它的简单原理是:

  1. 我们有一个目标。在本例中,就是根据算法得到的成绩要和“正确”结果一致;再进一步翻译成数学语言,就是这两个成绩的差异要最小。(因为我们对实际差异进行了平方,所以这个差异的最小值应该是0)。换句话说,算法得到的结果和我们的“正确”结果的差异,就是这个算法带给我们的“惩罚”。
  2. 通过一些算法,我们不断调整a_i的数值,直到差异能降低到我们能接受的一个比较小的数值。也就是我们要把“惩罚”降低,最好是没有。

比如,如果我们针对上述成绩,人肉进行几次测试,我们可能可以得到这样的过程:

尝试 a_1 a_2 a_3 a_4 a_5 预测结果 “正确”结果 差异
1 0.2 0.2 0.2 0.2 0.2 5.4 6 0.36
2 0.1 0.1 0.1 0.2 0.5 5.7 6 0.09
3 0.0 0.0 0.2 0.3 0.5 5.8 6 0.04
4 0.0 0.0 0.1 0.2 0.7 5.9 6 0.01

如果我们满足于0.01这个差异(或者说精度),那么用人肉测试的方式,我们可以很快得到结果。于是,我们可以说现在的权重分配(0.0, 0.0, 0.1, 0.2, 0.7)就已经满足了我们的要求。

但有两个问题,限制了我们不能采用人肉的方式继续这么做下去。

首先,这个权重分配对于上表中的B行就不适用。对于某一个科目来说,虽然可以有4个不同的考核指标,但是得到最后分数的“公式”应该是一致的。

其次,随着数据量的增加,用人工的方式来进行这个操作的话,我们很快就累死了,而且容易出错,效率极低。

六、AI来帮忙

如果我们把上面的过程与现在的机器学习加以对照,会发现有很多共通的地方:

  1. 都有一个目标,以及对应的“惩罚”。
  2. 都可以建立一个数学模型。
  3. 都有一些供训练的数据。
  4. 都可以通过数学方法,根据训练数据求解最优,也就是把“惩罚”降到最低。

机器学习的好处就是,可以预存各种不同的模型:线性的、二元的、高元的;预存各种不同的优化方法,并快速地进行计算;没有感情,不会抱怨。

这只是一个有关机器学习(Machine Learning)很粗略的讨论,目的一是做些小小的科普;目的二是做些reflection,回忆一些过往学到的东西——人老了,毕竟是怀旧的。

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *