机器学习直观化
机器学习直观化
机器学习:无需复杂的数学知识,你所需知道的一切

什么是机器学习?
当然,像ChatGPT这样的模型的实际理论确实非常困难,但机器学习(ML)背后的基本直觉是直观的!那么,机器学习是什么?
机器学习允许计算机使用数据进行学习。
但这是什么意思?计算机如何使用数据?计算机学习意味着什么?首先,谁在乎这个?让我们从最后一个问题开始。
现在,数据无处不在。因此,使用像机器学习这样的工具越来越重要,因为它可以在没有明确编程的情况下帮助找到数据中的有意义的模式!换句话说,通过利用机器学习,我们能够成功地将通用算法应用于各种问题。
机器学习有几个主要类别,其中一些主要类型包括监督学习(SL),无监督学习(UL)和强化学习(RL)。今天我将只描述监督学习,但在以后的帖子中,我希望更详细地介绍无监督学习和强化学习。
1分钟监督学习速成
听着,我知道你可能不想读完整篇文章。在本节中,我将教你最基本的知识(对于很多人来说,这就是你所需要知道的!),然后在后面的部分中深入讨论。
监督学习涉及使用不同特征来预测某个标签。
想象一下,你正在尝试找出一种方法来预测钻石的价格,使用的特征包括克拉数、切割、净度等等。在这里,目标是学习一个函数,该函数以某个具体钻石的特征作为输入,并输出相应的价格。
就像人类通过例子学习一样,在这种情况下,计算机也会这样做。为了能够学习预测规则,这个机器学习代理需要“标记的示例”,包括钻石的特征和价格。监督是因为你给出了标签(价格)。实际上,重要的是要考虑到你的标记示例实际上是真实的,因为监督学习的一个假设是标记示例是“真实的真相”。
好了,现在我们已经了解了最基本的基础知识,我们可以更深入地了解整个数据科学/机器学习流程。
问题设置
让我们使用一个非常相关的例子,这个例子灵感来自于这本教科书。想象一下,你被困在一个只有一种稀有水果“Justin-Melon”的岛屿上。尽管你从未尝过特别的Justin-Melon,但你吃过很多其他水果,并且你知道你不想吃坏掉的水果。你还知道通常通过观察水果的颜色和硬度可以判断水果是否变坏,所以你推断并假设这对Justin-Melon也适用。
在机器学习术语中,你使用先前的行业知识确定了两个特征(颜色、硬度),你认为这些特征能够准确预测标签(Justin-Melon是否变坏)。
但是你将如何知道什么颜色和什么硬度对应于水果变坏?谁知道呢?你只需要试试看。在机器学习术语中,我们需要数据。更具体地说,我们需要一个带有真实Justin-Melon和其关联标签的标记数据集。
数据收集/处理
于是你花了几天的时间吃着瓜,记录下颜色、硬度和瓜是否坏掉。经过几天痛苦地不断吃坏掉的瓜,你得到了以下带有标签的数据集:

每一行都代表一个具体的甜瓜,每一列都代表对应甜瓜的特征/标签值。但请注意,因为特征是分类的而不是数值的,所以我们有一些文字。
实际上,我们需要数字来让我们的计算机处理。有许多将分类特征转换为数值特征的技术,从独热编码到嵌入等等。
我们可以做的最简单的事情是将“标签”列转换为“好”的列,如果甜瓜好则为1,如果不好则为0。现在,假设有某种方法可以将颜色和硬度转换为从-10到10的范围内的尺度,以一种合理的方式。如果要获得额外的分数,则需要考虑将分类特征如颜色放在这样的尺度上的假设。经过这种预处理之后,我们的数据集可能如下所示:

现在我们有了一个有标签的数据集,这意味着我们可以使用监督学习算法。我们的算法需要是一个分类算法,因为我们正在预测一个好(1)或坏(0)的类别。分类与回归算法相对,回归算法预测的是像钻石价格这样的连续值。
探索性数据分析
但是我们要选择什么算法呢?有许多监督分类算法,从基本的逻辑回归到一些复杂的深度学习算法。嗯,让我们首先通过一些探索性数据分析(EDA)来查看我们的数据:

上面的图片是特征空间的绘图;我们有两个特征,并且将每个示例放在具有这两个特征作为两个轴的绘图上。此外,如果关联的甜瓜是好的,我们将点设为紫色;如果是坏的,我们将点设为黄色。显然,通过一点点的EDA,就有了一个明显的答案!

我们应该将红色圈内的所有点都分类为好的甜瓜,而将圈外的点都分类为坏的甜瓜。直观上讲,这是有道理的!例如,你不希望一个坚如石头的甜瓜,但也不希望它过于软烂。相反,你希望介于两者之间的某种程度,对于颜色也可能是如此。
我们确定我们需要一个决策边界,它是一个圆,但这只是基于初步的数据可视化。我们如何系统地确定这一点呢?在问题较大且答案不那么简单的情况下,这尤其重要。想象一下有数百个特征。无法以任何合理的方式可视化100维特征空间。
我们在学习什么?
第一步是定义你的模型。有很多分类模型。由于每个模型都有自己的一套假设,选择一个好的模型非常重要。为了强调这一点,我将从选择一个非常糟糕的模型开始。
一种直观的想法是通过加权每个因素来进行预测:
Justin Cheigh使用Embed Fun的公式
例如,假设我们的参数w1和w2分别为2和1。还假设我们的输入Justin Melon是一个颜色为4,硬度为6的甜瓜。那么我们的预测Good = (2 x 4) + (1 x 6) = 14。
我们的分类结果(14)甚至不是有效选项(0或1)。这是因为这实际上是一个回归算法。事实上,这是最简单的回归算法:线性回归的简单案例。
所以,让我们把它变成一个分类算法。一种简单的方法是使用线性回归,如果输出高于一个偏差项b,则将其分类为1。实际上,我们可以通过向我们的模型添加一个常数项来简化,以便如果输出高于0,则将其分类为1。
在数学中,假设 PRED = w1 * 颜色 + w2 * 坚固度 + b。然后我们得到:
由 Justin Cheigh 使用嵌入式函数得出的公式
这当然更好,因为我们至少进行了分类,但让我们在 x 轴上绘制 PRED,在 y 轴上绘制我们的分类:

这有点极端,PRED 的微小变化可能会完全改变分类。一种解决方法是我们模型的输出表示 Justin-Melon 是好的概率,我们可以通过平滑曲线来实现:

这是一个 Sigmoid 曲线(或逻辑曲线)。因此,我们不再采用 PRED 并应用这个分段激活函数(如果 PRED ≥ 0,则为好),而是应用这个 Sigmoid 激活函数以获得如上图所示的平滑曲线。总体而言,我们的逻辑模型如下:
由 Justin Cheigh 使用嵌入式函数得出的公式
在这里,sigma 表示 Sigmoid 激活函数。很好,我们有了模型,现在只需要找出最佳的权重和偏差!这个过程被称为训练。
训练模型
很好,我们只需要找出最佳的权重和偏差!但这比说起来要容易得多。有无限多种可能性,而“最佳”又意味着什么?
我们首先来回答后一个问题:什么才是最佳的?这里有一种简单而强大的方式:最优的权重是能够在训练集上获得最高准确度的权重。
因此,我们只需要找出一个能够最大化准确度的算法。然而,从数学上来说,最小化某个东西要比最大化容易。换句话说,与定义一个值函数,其中较高的值表示“更好”不同,我们更喜欢定义一个损失函数,其中较低的损失表示更好。尽管人们通常使用类似于二元交叉熵的(二元)分类损失,但我们将使用一个简单的例子:最小化错误分类的点数。
为了做到这一点,我们使用了一种称为梯度下降的算法。从较高层面上看,梯度下降的工作原理类似于一个近视的滑雪者试图下山。一个好的损失函数的一个重要特性(而我们的粗糙损失函数实际上缺乏这个特性)是平滑性。如果你在参数空间上绘制图形(参数值和相关损失在同一图上),图形将呈现出一座山的形状。
因此,我们首先从随机参数开始,因此我们很可能会遇到糟糕的损失。就像一个滑雪者试图尽快下山一样,算法会在每个方向上寻找,试图找到最陡峭的路径(即如何改变参数以最大程度地降低损失)。但是,滑雪者视力不好,所以他们只能朝每个方向看一点点。我们迭代这个过程,直到最终到达底部(眼尖的人可能会注意到我们实际上可能会到达局部最小值)。此时,我们得到的参数就是经过训练的参数。
一旦你训练好了逻辑回归模型,你会发现你的性能仍然非常糟糕,你的准确度只有大约60%(几乎与猜测一样好!)。这是因为我们违反了模型的一个假设。逻辑回归在数学上只能输出线性决策边界,但我们从探索性数据分析中知道决策边界应该是圆形的!
考虑到这一点,您尝试了不同的、更复杂的模型,并获得了95%的准确度!现在,您拥有了一个完全训练有素的分类器,能够区分好的 Justin-Melon 和坏的 Justin-Melon,您终于可以尽情享用美味的水果了!
结论
让我们退后一步。在大约10分钟内,您学到了很多关于机器学习的知识,包括基本的监督学习流程。那么下一步是什么呢?
嗯,这取决于您!对于一些人来说,这篇文章足以对机器学习有一个高层次的了解。对于其他人来说,这篇文章可能还有很多未解答的问题。这很棒!也许这种好奇心会让您进一步探索这个主题。
例如,在数据收集步骤中,我们假设您只是在几天内大量食用西瓜,而没有真正考虑任何特定特征。这毫无意义。如果您吃了一个绿色糊状的贾斯汀西瓜,并且让您剧烈生病,您可能会远离这些西瓜。实际上,您会通过经验学习,随着实践更新您的信念。这个框架更类似于强化学习。
如果您知道一个坏的贾斯汀西瓜可能会立即致命,并且在没有确切把握的情况下尝试是太冒险的呢?没有这些标签,您无法进行监督学习。但也许还有一种方法可以在没有标签的情况下获得洞察力。这个框架更类似于无监督学习。
在接下来的博客文章中,我希望类似地扩展强化学习和无监督学习。