在使用各种算法时候一般都要设定一些参数,而且越是启发式算法需要设定的参数越多,Take GA for exmaple,需要设定(pop:种群数目,maxiter:最大迭代次数,变异率,交换率等等)。这些参数对算法的计算效果起着至关重要的作用,这些算法的参数只有专业的人才会设定,这时候问题就出来,如果你的产品(包含一些复杂的数值算法)是给普通用户(或者说用户不懂算法不会设定参数),这时候你的产品就对不同问题,或者说同类问题的不同情况的计算结果就不稳定,也就是说得到解不怎么好(比你预想的)。
调参是算法测试中的工作,对于专业人员可以做成交互式的,我以前帮别人写过一些程序(对于他们而言有个不错的结果就满足了),但是我又总能根据他们的实际问题改变一下参数,就会得到更好解......。如果做产品,你不能帮所有用户去调参,也不能指望用户自己会调参数。(这个问题,我以前从没有想过,我总是预想别人和我一样的专业......,或者差不多)。所以要如果要你的东西比别人做的好(简单易用,而且效果好)就要引入算法参数的智能设定。
如何只能设定呢? 同样构造一个优化问题,目标单一(比原问题的简单,一般人能理解),这里原算法的参数为新问题的变量........,只有对于不同的问题,对于目标单一化,只有好的参数才能得到好的结果。简单说就是再引入一个进化suanfa去优化原问题参数,但是新的算法可能也要参数设定.............,但原问题的解对于这里(新引入算法的)参数的 敏感性 会降低。
说了这么多,也不知道你们明白没,具体方法还要涉及许多具体问题,这就不多说了。
copyright: ariszheng ariszheng@gmail.com
调参是算法测试中的工作,对于专业人员可以做成交互式的,我以前帮别人写过一些程序(对于他们而言有个不错的结果就满足了),但是我又总能根据他们的实际问题改变一下参数,就会得到更好解......。如果做产品,你不能帮所有用户去调参,也不能指望用户自己会调参数。(这个问题,我以前从没有想过,我总是预想别人和我一样的专业......,或者差不多)。所以要如果要你的东西比别人做的好(简单易用,而且效果好)就要引入算法参数的智能设定。
如何只能设定呢? 同样构造一个优化问题,目标单一(比原问题的简单,一般人能理解),这里原算法的参数为新问题的变量........,只有对于不同的问题,对于目标单一化,只有好的参数才能得到好的结果。简单说就是再引入一个进化suanfa去优化原问题参数,但是新的算法可能也要参数设定.............,但原问题的解对于这里(新引入算法的)参数的 敏感性 会降低。
说了这么多,也不知道你们明白没,具体方法还要涉及许多具体问题,这就不多说了。
copyright: ariszheng ariszheng@gmail.com