考虑到诸如计算机视觉或NLP之类的ML问题,这些问题的计算复杂性是什么?
我能否认为使用训练模型是解决“难”问题的有效方法(难以处理)??
答案 0 :(得分:1)
Natural Language Processing
和Computer Vision
是计算机科学领域,存在数千种算法。因此,通常不可能为这样广泛的区域提供计算复杂性。算法的复杂程度从亚线性到NP Hard。例如,sub string search
具有复杂度O(mn),其中m是子字符串的大小,n是要搜索的文本的大小。 NLP中的Automatic summarization
是AI-Complete
问题,使其成为NLP
中最困难的问题之一。
对于问题的第二部分,答案是否。使用训练模型不会降低解决硬(难以处理)问题的复杂性。
答案 1 :(得分:0)
NLP的复杂性非常模糊:你想要达到的目标是什么?在部分语音标记的情况下,您需要指定您关注的输入内容:句子的长度,词汇量的大小......您使用的是什么标记?有些只是预先训练过的模型,可以预测各种特征的标签(句子中某个单词的位置,是否由某些特定字符结束......)
在这种情况下,您需要知道底层分类器的新数据点预测的复杂性。
但是,反过来,评估分类器(或回归器)的复杂性可能非常复杂,因为它们依赖于许多其他算法,这些算法可以通过多种方式实现(稀疏数据/密集数据......)。我在博客上写了一篇详细的文章:computational complexity of machine learning algorithms。主要结论是理论复杂性与观察到的复杂性(或至少对于小样本)不匹配,即使对于简单的"算法。
现在,回到词性标注,让我们想象一下,using support vector machines(它可能基于隐马尔可夫模型,结论会有根本的不同)。长度n
。请注意,特征提取包含恒定数量的步骤,每个步骤在恒定时间内评估(相邻字,二进制特征)。对于每个单词,要素评估为O(1)
。
使用线性内核(预测方法的复杂性取决于您使用SVM选择的内核),您必须预测每个单词的类。与每个单词有关的特征数量(大约40个),您只是在评估两个(稀疏)向量之间的内积。同样,您可以将其视为0(1)
。因此,基于线性SVM对n
个单词的句子执行词性标注是O(n)
。
即使我专注于一个非常简单的例子,你也会看到这个主题有多大......