通过人工智能改善参数

时间:2012-09-14 13:57:06

标签: artificial-intelligence

这可能不是提出这个问题的合适地方,但我没有找到更好的地方去问这个问题。我有一个程序,例如有10个参数。每次运行它,都可能导致3个结果。 0,0.5或1.我不知道参数如何影响最后的结果。我需要一点一点地改进我的程序,所以它会得到更多的1而不是0。

3 个答案:

答案 0 :(得分:3)

首先,只是为了使术语正确,这实际上是一个“搜索”问题,而不是“机器学习”问题(你试图找到一个非常好的解决方案,而不是试图识别输入与输出的关系。您的问题听起来像是经典的“功能优化”搜索问题。

有许多技术可以使用。正确的因素取决于几个不同的因素,但最大的问题是解决方案空间的大小和形状。最大的问题是“输出对输入的微小变化有多敏感?”如果你保持除了一个相同的所有输入并进行微小的改变,你是否会在输出上做出巨大的改变或只是一个小的改变?输入是否相互影响,尤其是复杂的方式?

解决方案空间越小越“平滑”(也就是说,对输入的微小变化越不敏感),你就越想要追求直接的统计技术,引导搜索,或者,如果你想要一些东西,更有趣的是,模拟退火。

解决方案空间越大越复杂,就越能引导您走向更复杂的统计技术或我最喜欢的算法类,这些算法是遗传算法,可以非常快速地搜索大型解决方案空间。

为了勾勒出如何将遗传算法应用于你的问题,让我们假设输入是相互独立的(我知道这是一种罕见的情况):

  • 从一系列二进制数字0011 1100 0100 ...etc...
  • 创建输入的映射
  • 使用此映射生成一些重要大小的随机群体
  • 确定人口中每个人的适合度(在您的情况下,“在输出中计算1”)
  • 通过抽签选择两个“父母”:
    • 对于输出中的每个半点,个人获得“彩票”(换句话说,输出具有2“1”s和3“0.5”s将获得7“票”,而一个具有1 “1”和2“0.5”将获得4张“门票”)
    • 随机选择彩票。由于“更健康”的人会有更多“门票”,这意味着“更适合”的人更有可能成为“父母”
  • 从父母的基因组中创建一个孩子:
    • 开始从左到右复制一个父母基因组0011 11...
    • 在每一步中,以一定的概率切换到另一个父级(例如,20%的时间)
    • 由此产生的孩子将拥有一定数量的父母基因组和一些其他的父母基因组。 因为孩子是从“高适应度”个体创建的,所以可能孩子的健康程度高于当前一代的平均水平(虽然这当然是可能的)它可能具有较低的适应度)
  • 将一部分人口替换为以这种方式生成的子女
  • 从“确定健身”步骤重复...在理想的情况下,每一代都会有平均健身,高于上一代,你会发现非常好(或许是甚至理想的解决方案。

答案 1 :(得分:1)

您是否只是尝试修改参数以使结果达到1?听起来这个程序是一个黑盒子,您可以在其中选择输入参数,然后查看结果。由于这种情况,我认为最好选择一系列输入参数,循环这些输入,并查看输出以尝试辨别模式。如果你可以自动化它,它会帮助很多。在运行数据之后,您可以检查以查看哪个参数可以为您提供哪些结果,或者您可以应用一些机器学习技术来确定哪些参数会导致哪些输出。

答案 2 :(得分:1)

正如拉里所说,看起来像一个组合搜索,解决方案将取决于问题的“拓扑结构”。 如果可以,尝试获取算法设计手册(S. Skiena),它有一章可以帮助确定解决这个问题的好方法......