问题是一类具有相同结构和性质的任务的抽象描述,定义了输入空间、输出空间和目标函数。
问题是一个数学框架,通常表示为:
$\min_{x \in \mathcal{X}} f(x)$
其中:
例子:
问题是一类学习任务的抽象,定义了:
例子:
实例是问题的具体化,包含了具体的输入数据和参数,是问题的一个特定案例。
实例是问题的具体参数化版本:
例子:
A B C D E
A 0 10 15 20 25
B 10 0 35 25 30
C 15 35 0 30 20
D 20 25 30 0 15
E 25 30 20 15 0
实例是具体的数据集和学习任务:
例子:
| 维度 | 问题(Problem) | 实例(Instance) |
|---|---|---|
| 抽象程度 | 高度抽象,通用定义 | 具体化,特定数据 |
| 数量 | 一个问题类 | 无限多个实例 |
| 描述方式 | 数学框架、算法框架 | 具体数据、参数 |
| 例子 | TSP、图像分类 | 5城市TSP、MNIST数据集 |
问题就像是"做菜"这个概念,定义了烹饪的一般流程和目标。
实例就像是"做宫保鸡丁",具体指定了食材、调料和份量。
没有免费的午餐定理(No Free Lunch Theorem, NFL):对于所有可能的优化问题,任何两个优化算法在所有问题上的平均性能是相同的。
设有算法集合 $\mathcal{A} = \{a_1, a_2, ..., a_m\}$ 和问题集合 $\mathcal{P} = \{p_1, p_2, ..., p_n\}$,对于任意两个算法 $a_i$ 和 $a_j$:
$\frac{1}{|\mathcal{P}|} \sum_{p \in \mathcal{P}} \text{Performance}(a_i, p) = \frac{1}{|\mathcal{P}|} \sum_{p \in \mathcal{P}} \text{Performance}(a_j, p)$
即:在所有问题上的平均性能相同。
想象有两个算法:
如果考虑所有可能的优化问题(包括凸、非凸、离散、连续等),两个算法的平均性能是相同的。
| 算法 | 擅长的问题 | 不擅长的问题 |
|---|---|---|
| 线性回归 | 线性关系数据 | 非线性关系数据 |
| 决策树 | 非线性、可解释性要求高 | 高维稀疏数据 |
| 神经网络 | 大规模、复杂模式 | 小样本、需要可解释性 |
| SVM | 中小规模、高维数据 | 超大规模数据 |
NFL定理的前提是考虑所有可能的问题,包括:
这是一个极其宽泛的假设,在实际应用中很少遇到。
在现实世界中:
NFL定理告诉我们:没有万能算法,但在特定问题域内,某些算法确实优于其他算法。
虽然NFL定理表明算法在所有问题上的平均性能相同,但这并不意味着研发新算法没有意义,原因如下:
在图像识别领域:
不同领域的问题具有不同的特性:
| 领域 | 问题特性 | 适合的算法 |
|---|---|---|
| 计算机视觉 | 局部相关性、层次结构 | CNN、Transformer |
| 自然语言处理 | 序列依赖、长距离依赖 | RNN、Transformer |
| 推荐系统 | 稀疏性、协同效应 | 矩阵分解、深度学习 |
| 时间序列 | 时间依赖、周期性 | ARIMA、LSTM |
算法性能不仅仅是准确率,还包括:
Transformer在NLP领域取得巨大成功,原因包括:
这些优势在特定的NLP问题域内非常显著,虽然在所有可能的问题上平均性能可能相同。
NFL定理的启示:
"All models are wrong, but some are useful." - George Box
所有模型都是错的,但有些是有用的。
同样地:所有算法在所有问题上的平均性能相同,但在特定问题上,某些算法确实更有用。