Zhen 的个人资料Zhen's照片日志列表 工具 帮助
5月18日

Curse of Dimension

 

几个概念

 

Curse of Dimension / Model based or Model free / Knowledge generalization 

Model Based/ Model Free: Model Based是说学习的对象是系统的模型,在得到比较可靠的系统模型(通常为参数化模型)后进行传统的优化或者模拟的方法进行控制。Model Free是指不学习系统的模型,直接学习控制变量和系统性能之间的关系,这个是老板的favorite 

Curse of Dimension,维数灾难。是指变量数(维数)增多时,学习的复杂度呈指数增长,造成数据要求的时间和数据量接近不可算。 

Knowledge Generalization:和数据挖掘有点类似,通过对目前数据或者知识库的分析,得到深层次的知识。数据拟合可以说就是一种Knowledge Generalization,参数化学习和数据拟合差不多,也是Knowledge Generalization,决策树的学习和整理同样也是。 

以上几个概念看似没太大关系,其实彼此相互呼应。所谓对系统模型的学习通常为系统参数的拟合或者系统结构的学习,都是对于知识的一种归纳,试图通过比较少的结构参数或系数来表达整个系统的信息,而不是简单的逐片段积累经验或者数据。这简化了系统表达所需要的数据量,也就减少了要学习的内容,从而可能避免维数灾难。例如,通过较少的数据集合曲线,进行插值得到其他数据,比逐项学习所有曲线上的点所需要的数据点需要的时间和数据都少。 

参数化学习可追溯到曲线拟合,是经典中的经典,可是,对于复杂系统或强非线性系统,如果仅仅进行系数的参数化学习,一旦系统模型的结构不正确,是无法得到可靠的系统模型的。强非线性系统只有分片段学习和描述才可能准确。这里我们遇到了一个矛盾,系统复杂时常具有强非线性特征,很难进行简单的参数化学习,然而用对复杂系统的非参数化方法学习又会有Curse of Dimension 

进展得如火如荼的AI学科告诉我们,遇到问题的时候就得好好想想人类是怎么处理这些问题的。而几千年灿烂的中华文明告诉我们,遇到矛盾的时候,就要采用和谐的方法进行折衷。可以不试图进行全局的参数化描述,而把全局分为区域,在该区域内进行参数化描述(呵呵,这个不就是Fuzzy TSK嘛)。当然,仅仅采用这个方法对维数灾难的改善程度不够,这是因为每个小分区都要学习,在维数高的时候要学习的还是太多了(我现在的情况)。 

一个方案是进行区域辨识,通过knowledge generalization,得到更好的系统的分区关系,类似于聚类分析,也就说,不要把全局乱分成区域,分区要考虑内在联系。可以用同样规律描述的点归到一起,减少分区,提高精度,这个是目前很popular的,有一定效果。 

另一个选择是维度分析,所谓的抓主要矛盾。通过敏感性分析,用低维模型表达高维空间的不同区域,这个可以用最大熵法进行,所谓的decision tree generalization 

还有一个手段是层次化学习。人类在面对复杂的情况时,通常要把一个复杂的决策简化为一系列相对简单的决策,一步一步推出结果。在进行当前判断的时候,不考虑之前判断的原因,只考虑上一级的结果。就象一个企业,不同阶层的人考虑不同阶层的事,要让CEO知道所有的技术细节和让工程师知道所有的财务细节一样是不可能也不必要的。这类似于某种维度上的区域辨识,有点像流体力学的无量纲数。问题是无量纲数是从微分方程中推导出来的,而在面对一个复杂非线性系统时,微分方程是无法获得的,也不存在专家可以进行理论推导,这一切都需要机器学习。

另一个有些类似的是子规则的学习:通过试用事先给定的子规则,把众多纷杂的决策简化为几个子策略,是层次化学习的一种。这个方法的主要问题是,子规则在大多数情况下是事先给定的,基于先验的知识,未必适用于当前问题。如何通过学习自动生成子规则,这个俺先看看paper再说。 老板曰,learning is hot。其实现在的学习算法都很直接,不需要学习任何的先修课就能听懂,这说明了理论基础的不足和知识的不足。使用这些算法,机器是不能产生任何高超的智慧,结果通常不具有启发性,只不过机器更快速准确罢了。所以说,目前机器学习的不是知识,而是结果。知识是我们上课,编算法,列微分方程,做研究的时候学到的理论和得出的结果,机器学习的方向应该是如何让电脑产生这些知识,当电脑能够得到这些智慧的时候,就能够帮助人类研究和学习新的知识