1.1 Mapping

神经网络已经广泛应用于图像分类、语音识别、机器翻译、推荐系统以及大语言模型等众多领域。虽然这些任务处理的数据形式各不相同,但它们都有一个共同点:给定一份输入,希望得到对应的输出。

例如,在图像分类中,输入是一张图片,输出是图片所属的类别;在机器翻译中,输入是一段英文,输出是对应的中文;在情感分析中,输入是一句话,输出是它表达的情绪;在时间序列预测中,输入是过去一段时间的数据,输出是未来某个时刻的预测结果。

从数学上看,这些问题都可以表示成一个函数:$y=f(x)$

其中,$x$ 表示输入,$y$表示输出,而 $f$ 表示输入到输出之间的映射。

因此,从数学角度来看,机器学习真正要做的事情,就是寻找这样一个函数 $f$,使它能够尽可能准确地完成从输入到输出的映射。

不过,这里的「寻找」并不是写出一个解析表达式,而是根据大量数据,让计算机自己确定函数应该是什么样子。

为了理解这一点,我们来看一个简单的例子。

假设有一百万张手写数字图片,每张图片只包含数字 0 或数字 1。每张图片的大小都是 $28\times28$ 像素,因此可以表示成一个包含 784 个数字的向量:

$$ \mathbf{x}=(x_1,x_2,\ldots,x_{784}). $$

这样,每张图片都对应着 784 维空间中的一个点。

如果数字 0 和数字 1 的形状存在稳定的差异,那么它们在这个高维空间中就不会完全混杂在一起,而是会分布在不同的区域。我们的任务,就是找到一个边界,把这两类数据分开。

在二维空间中,这个边界是一条直线。在三维空间中,它是一个平面;推广到更高维空间,它就是一个超平面,其表达式可以写成

$$ f(\mathbf{x})=\mathbf{W}^{T}\mathbf{x}+b. $$

如果能够找到一组合适的参数 $\mathbf{W}$ 和 $b$,使数字 0 大多落在超平面的一侧,数字 1 落在另一侧,那么分类问题便得到了解决。

当然,这只是一个非常简单的例子。在现实问题中,数据往往远比手写数字复杂:一张自然图像可能包含几十万个像素,一段文本包含复杂的上下文关系,一段语音则随着时间不断变化。这些输入与输出之间的关系,很难用一个简单的线性函数描述。

于是,问题便转化成了另一个更加重要的问题:

<aside> <img src="/icons/question-mark_gray.svg" alt="/icons/question-mark_gray.svg" width="40px" />

什么样的函数,才能表示如此复杂的映射?

</aside>

神经网络正是为了解决这个问题而提出的。

1.2 Complex Mapping