学习算法的运行时间分析与计算复杂度
在机器学习中,我们不仅要关注学习所需的样本数量(样本复杂度),还需重视计算资源在确定学习任务复杂度中的重要作用,也就是执行学习任务所涉及的计算量,即计算复杂度。
计算复杂度基础
算法的实际运行时间(以秒为单位)依赖于具体的实现机器。为了避免这种依赖,通常采用渐近分析的方法。例如,归并排序算法对包含 $n$ 个元素的列表进行排序的计算复杂度是 $O(n \log(n))$。这意味着在满足某种抽象计算模型要求的任何机器上实现该算法,实际运行时间(秒)会满足:存在与实际机器有关的常数 $c$ 和 $n_0$,对于任何 $n > n_0$,对 $n$ 个元素进行排序的运行时间最多为 $c n \log(n)$。对于运行时间为 $O(p(n))$($p$ 为多项式函数)的算法可处理的任务,通常被认为是可行的或可有效计算的。
在机器学习任务中,“输入大小”的概念并不清晰。不能简单地将训练集大小定义为输入大小,因为当训练集规模远大于学习问题的样本复杂度时,算法可忽略多余的样本,所以更大的训练集并不一定使学习问题更难,学习算法的运行时间不应随训练集大小的增加而增加。我们可以将运行时间分析为问题自然参数的函数,如目标精度、达到该精度的置信度、域集的维度或假设类复杂度的某些度量。
学习算法的计算复杂度定义
学习算法可访问示例域 $Z$、假设类 $H$、损失函数 $\ell$ 以及根据未知分布 $D$ 独立同分布采样得到的训练集。给定参数 $\epsilon$ 和 $\delta$,算法应输出一个假设 $h$,使得 $L_D(h) \leq \min_{h’ \in H} L_D(h’) + \epsilon$ 的概
学习算法的计算复杂度分析
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



