监督学习模型:从输入到输出的映射

监督学习模型的定义

监督学习模型就是将一个或多个输入转化为一个或多个输出的方式。比如,我们可以将某部二手丰田普锐斯的车龄和行驶里程作为输入,预估的车辆价格则是输出。

相当于改变参数,然后可以形成一个正确函数进行预测。

举例:easy-tensorflow中实现的神经网络训练底层就是这个原理,结果一定数量训练将随机生成的梯度往正确梯度上改变,最后实现正确预测。

生成模型与判别模型的区别

生成 (Generative) 模型与判别 (Discriminative) 模型
  • 判别模型就像一个熟练的图片分类员,看到图片就能快速判断
  • 生成模型就像一个画家,了解狗的特征,可以画出各种狗的图片

模型 y = f[x, ϕ] 属于判别模型。这类模型基于实际测量的数据 x 来预测输出 y。另一种方法是构建生成模型 x = g[y, ϕ],在这种模型中,实际测量的数据 x 被看作是输出 y 的函数。

虽然生成模型的缺点是它们不直接预测 y,但它们的优势在于能够融入关于数据生成方式的先验知识。比如,如果我们要预测图像 x 中汽车的三维位置和方向 y,我们可以在函数 x = g[y, ϕ] 中加入关于汽车形状、三维几何和光传输的知识。

尽管这听起来是个好主意,但实际上,在现代机器学习中,判别模型更为主流。这是因为在生成模型中利用先验知识所带来的优势通常不及利用大量训练数据来学习灵活的判别模型所获得的优势。

损失函数与成本函数

损失函数(Loss Function)与成本函数(Cost Function)

在机器学习领域,”损失函数”和”成本函数”这两个术语通常可以互换使用。但更准确地说:

  • 损失函数是指与单个数据点相关的具体项(例如,方程 2.5 中每个平方项)
  • 成本函数是指需要被最小化的整体量(即方程 2.5 中的整个右侧部分)

成本函数可能还包含与单个数据点无关的其他项。更广义上,目标函数指的是任何需要最大化或最小化的函数。

思考题与解答

例题

问题 2.1 为了在损失函数(方程 2.5)上实现”downhill”,我们需要计算它对参数 ϕ0 和 ϕ1 的梯度。请计算出这两个参数的梯度值 ∂L/∂ϕ0 和 ∂L/∂ϕ1 的具体表达式。

问题 2.2 请证明我们可以通过将问题 2.1 中的导数设置为零,然后求解 ϕ0 和 ϕ1,以闭合形式找到损失函数的最小值。

问题 2.3 考虑将线性回归改造为生成模型,形式为 x = g[y, ϕ] = ϕ0 + ϕ1y。请问这种情况下的新损失函数是什么?

解答

问题 2.1 解答

损失函数L定义为:
L = ∑(yi - (φ0 + φ1xi))²

  1. 计算∂L/∂φ0:

    1
    2
    3
    ∂L/∂φ0 = ∂/∂φ0 [∑(yi - (φ0 + φ1xi))²]
    = ∑ 2(yi - (φ0 + φ1xi)) * (-1)
    = -2∑(yi - φ0 - φ1xi)
  2. 计算∂L/∂φ1:

    1
    2
    3
    ∂L/∂φ1 = ∂/∂φ1 [∑(yi - (φ0 + φ1xi))²]
    = ∑ 2(yi - (φ0 + φ1xi)) * (-xi)
    = -2∑(yi - φ0 - φ1xi)xi

问题 2.2 解答

要找到损失函数的最小值,我们将导数设为零并解方程:

φ1 = (n∑xiyi - ∑xi∑yi) / (n∑xi² - (∑xi)²)
φ0 = (∑yi - φ1∑xi) / n

这种方法只适用于线性回归,因为它具有特殊的二次形式损失函数。

问题 2.3 解答

  1. 新的生成模型:x = g[y, φ] = φ0 + φ1y
  2. 新的损失函数:L = ∑(xi - (φ0 + φ1yi))²
  3. 逆函数:y = (x - φ0) / φ1

在线性回归的情况下,生成模型和判别模型会得到相同的拟合线,但在更复杂的模型中可能不适用。在实践中,判别模型通常更受欢迎,因为它们直接针对预测任务进行优化。