我正在阅读Stuart Russell和Peter Norvig撰写的“人工智能”这本书(第18章)。下一段来自决策树上下文。
对于各种各样的问题,决策树格式得出 简洁的结果。但是一些功能无法体现 简而言之。例如,多数函数,如果返回,则返回true 并且只有当一半以上的输入为真时,才需要 指数大的决策树。
换句话说,决策树对某些功能很有用 对别人不利。是否有任何形式的表示 各种功能高效?不幸的是,答案是否定的。
我们可以用一般的方式来说明这一点。考虑所有布尔值的集合 在“ n”个属性上的函数。这有多少种不同的功能 组?这只是我们可以使用的不同真值表的数量 记下,因为函数是由其真值表定义的。
在“ n”个属性上的真值表具有2 ^ n行,每行一行 属性值的组合。
我们可以将表格的“答案”列视为2 ^ n位数字 定义功能。这意味着有(2 ^(2 ^ n))个不同 功能(并且将有不止数量的树,因为 一棵以上的树可以计算出相同的函数)。太恐怖了 数。例如,仅使用我们的十个布尔属性 餐厅问题有2 ^ 1024个或大约10 ^ 308个不同 功能可供选择。
作者"answer" column of the table as a 2^n-bit number that defines the function
是什么意思?
作者如何派生(2 ^(2 ^ n))个不同的函数?
请详细说明上述问题,最好举一个简单的例子,例如n = 3。
答案 0 :(得分:1)
考虑一个三输入函数的一般真值表,其中每个三元组的结果也是一个布尔值(1或0),由变量i
到'p'表示:
A B C f(a,b,c)
0 0 0 i
0 0 1 j
0 1 0 k
0 1 1 l
1 0 0 m
1 0 1 n
1 1 0 o
1 1 1 p
我们现在可以将三个变量上的任何函数表示为一个8位数字ijklmnop
。例如,and
是00000001
; or
是01111111
; one_hot
(恰好是一个输入True
)是01101000
。
对于3个变量,完整的函数定义“答案”中有2 ^ 3位。由于“答案”中有8位,因此我们可以定义2 ^ 8个可能的函数。
这为您概述了理解领域吗?
有关示例函数的更多信息
您只需(一旦看到该模式)就使八位与表中的整体相对应。例如,“一站式”表格如下所示:
A B C f(a,b,c)
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 0
读取标记为f(a,b,c)
的“答案”列,您将获得8位序列01101000
。这个8位数字足以完全定义该功能:列出a,b,c的所有组合的行都以固定(数字)顺序排列。
您可以使用模板格式编写任何此类功能:
def and(a, b, c):
and_def = '00000001'
index = 4*a + 2*b + 1*c
return and_def[index]
现在,如果将其概括为任何3输入二进制函数:
def_bin_func(a, b, c, func_def)
return func_def[4*a + 2*b + 1*c]
如果愿意,您可以进一步概括输入列表的模板:将位连接起来,并使用该整数作为func_def
字符串的索引。
可以清除吗?