| 扬声器 |
抄本 |
| 詹姆斯·维斯诺夫斯基 |
欢迎探索团队。Andrew Carl、Darryl Ahner 和我非常高兴地介绍两种新的采样方法:自适应采样技术,以及 |
| |
这真的能为一些实践者提供一些非常实用的实验设计方面的帮助。我想做的是,通过我们的一些 |
| |
我一直在讨论这一切是如何发生的。但当我们考虑实验设计 (DOE) 和增强设计时,JMP 已经具备了强大的功能。 |
| |
因此,通过进行一些非常大规模的模拟研究,我们发现我们在这里缺少了一些东西 |
| |
填补空白设计和自适应抽样设计。 |
| |
关键点在于自适应采样设计将关注响应。 |
| |
所以这和你想象中的标准设计有点不同,标准设计会进行增强,会观察设计空间和 X 矩阵。所以现在我们要真正考虑目标或响应。所以最终结果会是 |
| |
提供全新的功能,让我们能够在令人兴奋的地方测试更多样本。我们希望处于一个高梯度区域,就像你在响应面方法中想象的那样,深度与上升高度一样。 |
| |
现在,我们将通过模拟中的许多变量和数千次运行来实现自动化。 |
| |
好消息是,对于设计小的从业者来说,这确实可以很好地缩小规模。 |
| |
我将快速介绍一下我们将要向您展示的附加功能,然后安德鲁将稍微讲一下它的技术细节。 |
| |
所以有一件事我想道歉,这将是相当以 PowerPoint 为中心,而不是 JMP 插件 |
| |
有两个原因...我应该说,而不是 JMP 演示...有两个原因,主要是因为我们的 |
| |
时间,我们有很多材料需要处理,而且我们的 JMP 算法在我们自适应采样的算法中也得到了充分的利用。所以 |
| |
最终,JMP 的点击功能是我们开发的非常简单的用户界面,但幕后是什么 |
| |
算法,这才是 JMP 的真正威力所在。所以,快速填充设计非常清晰。我们可以看到这里有一些空隙,也许这有点夸张,只是用来演示技术。 |
| |
但实际上,我们可能会有大量的因素,而维度灾难可能会发挥作用,导致你的设计中存在漏洞。 |
| |
你可以看到,我们可以用这种空间填充设计来增强它,这是一种主力 |
| |
在我们很多工作的增强中,特别是在刺激调用方面,情况看起来还不错。如果我们看看那些蓝点,它们是新的 |
| |
点,我们添加的点,看起来还不错。如果你仔细观察,你就会发现,我们开始复制很多 |
| |
我们已经完成了,也许我们没有像我们想象的那样填补这些漏洞,特别是当我们去掉蓝色的时候,我们可以看到 |
| |
其中仍然存在相当多的空白。因此,我们在开发自适应采样时,意识到其中的一点是,我们需要填补一些漏洞 |
| |
在很多这样的设计中。我们在我们的工具,我们的插件中设计了一个算法,叫做边界探索器,它可以完成这个特定的…… |
| |
对于任何设计,它都会发挥这一特殊功能来填补空白,您可以看到它在许多不同的应用中可能具有很大的实用性。 |
| |
因此,在这张特定的幻灯片或图表中,我们可以看到,这些蓝点现在可能更集中于空洞,而有些蓝点则分散在其余区域。但即使我们去…… |
| |
你可以使颜色看起来更加均匀,我们已经很好地填充了那个空间。 |
| |
这更像是我们实现总体目标(主动采样)所需要的一种实用工具。我们发现的主要应用是 |
| |
是自主系统,它引起了很多关注,并进行了大量生产和测试,特别是在国防部。 |
| |
所以在自主系统中,你可能会想到两个主要方面。在自主系统中,你真正需要的是 |
| |
某种传感器,让系统知道它在哪里。然后算法或软件会对此做出反应。所以它有点像传感器—— |
| |
我们主要关注的是算法软件集成。这驱动着一个非常复杂的模拟模型,它确实需要 |
| |
运行了数千次。但更重要的是,我们发现,在这些自主系统中,性能存在一些限制。 |
| |
举个例子,我们有一个军队里的领导者-追随者模型。士兵会驾驶一辆装甲很厚的汽车。 |
| |
卡车加入车队,然后车队的其余部分将实现自主行驶,车上将不再有士兵。 |
| |
或者想想最新的特斯拉皮卡,它有自动导航功能,对吧?所以我们的想法是,我们想要测试这些系统,最终必须进行大量的测试。结果就是 |
| |
比如,即使在这辆特斯拉里,你的时速可以达到 30 英里,你或许可以顺利避开障碍物。但如果时速达到 30.1 英里,你就必须采取超出算法规范的规避动作。所以 |
| |
这就是我们所说的界限。它们非常陡峭 |
| |
响应的变化,梯度非常高的区域。这就是我们要关注的地方。 |
| |
我们并不对平面感兴趣,我们真正感兴趣的是其中有趣的部分,那就是我们想要做的事情。 |
| |
说实话,我们发现,我们迭代得越多,解决方案就越好。我们完全 |
| |
建议将此作为一个迭代过程来执行。因此,这就是自适应部分,进行测试,然后生成一些新的好点,然后观察这些响应是什么,并根据这些响应调整你的下一轮运行。 |
| |
这就是我们的自适应采样。 |
| |
这个想法,或者说起源,其实是来自我们与约翰·霍普金斯大学应用物理实验室合作的一些工作。他们与军方合作开展了一些非常出色的工作, |
| |
我在一篇期刊文章中看到这个功能时,心里想,你们做的这个功能太棒了,我们甚至可以用 JMP 来找到一个更容易被更多从业者接受的解决方案。因为 |
| |
约翰霍普金斯大学的特点是它非常具体,而且有点……整合,这不是什么 |
| |
小型测试团队也能使用。所以我们想把它交给那些可以立即使用的人。 |
| |
这篇来自《系统与软件杂志》的论文,可以说是我们边界探索的来源。事实证明,我们借鉴了很多好的想法,但也能想出不同的方法, |
| |
以及其他方法。特别是利用 JMP Pro 的原生功能以及一些开发成果,例如我们在此过程中进行的填补空白设计。 |
| |
现在, |
| |
就这个例子而言,我最好还是解释一下 |
| |
就在这里的一个演示里。如果我看这里的图表,我可以看到……我会用这个……我回到特斯拉的例子。假设我正在做一个自动导航类型的活动,我有两个输入因素,假设 |
| |
我们有速度和交通密度。所以我们在考虑特斯拉的算法。它想并入左侧车道,所以它想,应该说,超车。所以它必须并入。其中一个因素可能是特斯拉的速度,另一个可能是交通密度。 |
| |
然后,在这个区域下面,我们可能会有一个较小的数字。所以我们可以考虑2到10之间的数字,甚至可以考虑响应,甚至可能是碰撞的概率。 |
| |
因此,在低速/低密度下,发生碰撞的概率非常低,但在高速/ |
| |
密度高,那么概率就很高。但重点是我在这里突出显示和选择的部分,你可以看到,那里的 |
| |
边界区域的性能差异。因此,当我们进行模拟并开始对算法进行越来越多的软件测试时, |
| |
我们会注意到,在这里多拿分其实对我们没什么好处。我们知道我们在低密度和低速时表现不错。我们真正想做的是努力提升这里的边界区域。所以这就是我们的问题所在。 |
| |
我怎样才能生成 200 个真正遵循我的边界条件的新点。 |
| |
现在,我所做的是,我真的有,它是 X1 和 X2,再次考虑速度和...... |
| |
我们的速度和密度。然后我在这里加了一个没有任何意义的预测变量。然后,这就是我们的响应。要做到这一点,我只需要进入边界探索器,在自适应采样下, |
| |
我的两个响应(你可以根据需要设置任意多个响应),然后是我的三个输入因子。然后我在这里进行一些设置,无论我是否要瞄准全局最小值和最大值,都要显示边界。 |
| |
我们最终也会向你展示,你在这里拥有一定的控制权。所以在这个算法中,我们真正想要的是,最近邻在做什么?如果所有最近邻都有相同的响应,也就是说,出现概率为零 |
| |
一场事故,那可不是什么有趣的地方。我想看看哪里有很大的差异。这就是最近邻 |
| |
开始发挥作用。所以我继续运行它。我们现在可以看到,该算法使用了 JMP 的原生预测筛选功能,并且 |
| |
幸运的是,它没有使用正态分布。你可以看到它运行的是引导森林算法。Andrew 会讲解它的具体应用。 |
| |
最终 |
| |
我们要做的是生成一整套新的点,希望这些点能够落在边界上。所以,这花了大约30秒的时间来处理这些点,然后我就可以继续拉起 |
| |
我的新观点。所以你可以看到我的新观点大致沿着这些边界,如果我继续把另一个 |
| |
个。 |
| |
所以现在,也许我会 |
| |
在这里快速切换颜色。 |
| |
我将继续展示扰动的中点。 |
| |
现在我们可以看到所有新点的位置。那些带阴影的点是原始点,现在我们可以看到所有在边界内生成的新点。 |
| |
那么问题当然是,我们是如何做到这一点的? |
| |
所以我要做的就是回到我的演讲。 |
| |
然后,我会把问题交给安德鲁,他会提供更多关于如何找到这些边界点的技术细节,因为这并不像我们想象的那么简单。 |
| 安德鲁·卡尔 |
好的。谢谢,吉姆。我先来快速聊聊填补空白,因为我们除了把它集成到整体的野兽工具中之外,还把它放在了其他位置。 |
| |
它也是一个独立的工具。所以它的界面相当简单,我们可以在其中选择列,定义要填充的空间。 |
| |
对于连续因子,它读取编码列属性以获取高值和低值,并且也可以采用名义因子。 |
| |
此外,如果您从自定义设计或空间填充设计中生成了此设计,并且您不允许组合,它将读取不允许的组合脚本 |
| |
并且只在允许的空间内进行填充。因此,用户可以指定他们的列以及他们想要的新运行次数。 |
| |
让我在高维空间中展示一个简单的例子。这是三维的情况。我们有一个立方体,取出一个空心圆柱体,然后我们进行了填充间隙的操作,然后将它们放在一起,看看它们是如何组合在一起的。 |
| |
然后关闭颜色并观察会发生什么。 |
| |
这很好,因为在高维空间中,我们可以填补这些在变量图中不一定能看到的空白。那么我们该怎么做呢? |
| |
所以我们要做的是,我们取原始点,在这种情况下,这些点现在是红色而不是黑色,我们可以看到这两个间隙在哪里, |
| |
并且我们将来自空间填充设计的候选运行集覆盖到整个空间。 |
| |
我们为新旧候选运行的连接数据表添加了一个指示列,连续指示列,我们将旧点标记为 1,将候选点标记为 0。在这个连接空间中,我们现在拟合一个 10 个最近邻 |
| |
模型添加到指标列,我们保存了这些预测。因此,候选模型会以最小的预测值运行,在本例中是蓝色。 |
| |
是我们想要添加到设计中的间隙点。现在,如果我们一次性完成,往往会过分强调最大的间隙。所以我们实际上会在一个 |
| |
十倍过程,我们将取十分之一的新点,像我们在这里看到的那样选择它们,然后我们将它们添加进去,然后重新运行我们的 k 最近邻算法来挑选一些新点并更均匀地填充所有空间。 |
| |
所以这只是一个选择...填补空白是边界探索器中可用的一个选择。 |
| |
因此,吉姆表明,我们可以使用任意数量的响应、任意数量的因素,并且我们可以同时拥有连续和名义响应以及连续和名义因素。 |
| |
事实是...对于涉及的连续因素,我们将把幕后的因素标准化为 01,以使它们处于更平等的地位。 |
| |
对于涉及此问题的各个响应,我们将对每个响应进行单独循环,以找到因子空间内每个响应的边界。 |
| |
最后,我们有一个使用随机森林的多元工具,可以同时考虑所有的响应。 |
| |
因此,我们将看到 GUI 和用户界面中提供的每个不同选项在算法中是如何出现的。 |
| |
因此,对任何这些连续列进行标准化之后,第一步是对所有连续和名义响应进行预测筛选。 |
| |
这样做的目的是找出预测因子,它们与每个特定的反应相关。 |
| |
用户界面中,变量解释比例(即每个变量的贡献比例)的默认设置为 0.05。因此,在本例中,我们可以看到 X1 和 X2 被保留用于响应 Y1,而 X3 噪声被剔除。 |
| |
下一步是运行最近邻算法。我们使用默认值 5,但用户可以自行选择。 |
| |
我们不太关心这个预测结果有多准确,我们只是简单地用它作为一种方法 |
| |
找到五个最近的邻居。这五个邻居的行数是多少?它们之间的距离是多少?它们与当前行的距离是多少? |
| |
我们将使用最近邻的信息来识别每个点,以及每个点作为边界点的概率。 |
| |
我们必须在这里使用拆分,并对连续或名义响应采用不同的方法。对于名义响应,我们的做法是将当前列的响应连接起来 |
| |
以及按顺序排列的五个最近邻居的响应,在此连接邻居列中。 |
| |
我们有一个简单的启发式方法,用于根据连接邻居列来识别边界概率。 |
| |
如果所有响应都相同,我们就说它成为边界点的可能性很低。 |
| |
如果至少有一个答案不同,那么我们就说它有中等概率是一个边界,对不起,是一个边界点。 |
| |
如果两个或多个响应不同,则该点很有可能是边界点。我们还记录了所使用的行。在本例中,它就是边界对。也就是说,它是响应与当前行不同的最近邻。 |
| |
我们可以在原始空间填充设计中绘制这些边界概率。 |
| |
正如 Jim 早些时候提到的,我们有一个......我们首先运行一个空间填充设计,然后运行这个边界探索工具来......探索空间并获得一些回应。 |
| |
现在我们将其拟合,并计算出它们的边界概率。我们可以看到,我们的边界概率与实际边界相符。 |
| |
对于连续响应,我们获取来自五个最近邻居的连续响应,并为每个响应添加一列,然后取这些响应的标准差。 |
| |
邻居标准差最大的点是位于最陡梯度区域的点,这些点更有可能是我们的边界点。 |
| |
我们还将标准差乘以平均距离,以获得信息度量, |
| |
因为对于两个相邻点具有相同标准差的点,它将增加位于稀疏区域中且已有点较少的点的权重。 |
| |
现在我们有了这个连续信息指标,我们必须弄清楚如何将其分成每个点的高、中、低概率。 |
| |
所以我们要做的是拟合分布。我们拟合正态三混合分布,并使用最大分布的均值作为高概率点的截断值。 |
| |
我们使用最大和第二大正态分布的密度的交集作为中等概率点的截止值。 |
| |
因此,一旦我们确定了这些截止值,我们就会应用它来形成我们的边界概率列。 |
| |
我们还保留了最接近的行。在本例中,对于连续响应,它指的是响应绝对值与当前角色差异最大的邻居。 |
| |
因此,现在对于连续响应和名义响应,我们得到了相同的输出。我们得到了边界概率和使用的行。既然我们已经确定了边界点, |
| |
我们需要能够使用它来沿着边界生成新的点。 |
| |
因此,第一种方法,从某种程度上来说,也是最好的方法 |
| |
用于定位和放大边界的方法就是我们所说的中点法。我们对每个边界对、每行及其行使用、它的最近邻所做的操作 |
| |
之前已确定...对不起,不是最近的邻居,而是最相关的邻居,无论是在响应名义上的差异方面,还是在连续响应方面的差异最大。 |
| |
对于连续因子,我们取这两个点坐标的平均值,作为中点。这就是你在图中看到的。所以我们会把一个点 |
| |
在红色圆圈处。对于名义因子,我们针对边界对所做的就是取该因子的水平 |
| |
这两个点都存在,我们随机选择其中一个。这样做的好处是,如果它们相同,那么就意味着这两个点的名义因子的中点也会处于同一水平。 |
| |
第二种方法,我们称之为扰动法,就是简单地向每个已识别的边界点添加一个随机偏差。 |
| |
因此,对于高边界...高概率点,我们为介质添加两个这样的扰动点,我们添加一个。 |
| |
对于连续因子,我们添加一个随机偏差。正态分布表示 0;标准差表示正态分布空间中的 0.075,而这个 0.075 是可以缩放的。 |
| |
在用户界面内增加或减少边界周围的扩散量。 |
| |
对于名义因素,我们的做法是……随机选取每个名义因素的一个水平。现在来说高概率因素…… |
| |
高概率边界点会得到第二个扰动点,我们所做的是在第二个扰动点中限制那些名义因子设置,使其全部等于原始点的扰动点。 |
| |
因此,我们执行此过程来识别边界并为边界探索器中指定的每个响应创建中点和扰动点。 |
| |
一旦我们这样做了,我们就会把所有的东西串联起来,然后我们会查看所有响应中确定的中间点, |
| |
现在使用多变量技术来生成任何额外的运行。因为用户可以指定他们想要的运行次数,而这些中点和扰动方法只能生成固定数量的运行,并且取决于 |
| |
我想你可以说,这是地形数据。 |
| |
因此,我们所做的类似于填补空白的设计,我们将所有已识别的扰动和所有响应的中点 |
| |
我们使用候选点的空间填充设计填充整个空间。我们在连续指标中将候选点标记为 0,中间点标记为 1,扰动点标记为 0.01。 |
| |
我们用随机森林来拟合这个指标。然后我们进行观察。我们保存了候选空间填充点的预测结果。 |
| |
然后我们选取该边界指标预测值最大的候选运行。 |
| |
这些就是我们使用随机森林方法添加的。由于这是一个多变量方法,如果你的设计空间中有一个区域是多个响应的边界,那么这个区域将会得到额外的强调和额外的运行。 |
| |
这里将三种类型的点放在一起展示。 |
| |
现在,再次强调 Jim 所说的,这需要多次迭代,所以我们会从边界探索工具中收集这些信息 |
| |
然后将其连接回原始数据集。得到这些响应后,重新运行边界探索器,它会 |
| |
在迭代过程中不断放大边界和影响,甚至可能找到更多的边界。因此扰动点是最有用的 |
| |
对于早期迭代,当你仍在探索空间时,它们会更加分散,而随机森林方法对于后期迭代更合适,因为 |
| |
它会有更多可用的中点,因为它不仅使用当前迭代中的中点,还会使用之前记录的中点。数据表中有一列记录了添加的点的类型。因此,我们也会使用所有之前的中点。 |
| |
因此,如果我们将这个我们一直在研究的阶跃函数示例的表面图放在一起,我们可以看到我们的新点、中点和扰动点都沿着悬崖下降,这就是边界,这正是我们想要看到的。 |
| |
因此,用户界面的最后两个选项或指示那些填补空白的运行,我们还可以要求它针对任何连续因素定位全局最小最大值或匹配目标(如果将其设置为列属性)。 |
| |
这里仅展示最后一个例子,我们有这个例子,其中有两个峡谷穿过一个平面,在它们的交汇处有一个深井。 |
| |
我们已经运行了初始空间填充点,这些点是为了了解响应而显示的。如果我们运行边界探索工具的两次迭代, |
| |
这是所有新点的位置,我们可以看到这两条线中间有一些空隙。这些空隙是什么? |
| |
如果我们看一下地表图,那些空隙就是峡谷底部,那里其实并不陡峭。所以它是平坦的,即使在一小块区域内也是如此。 |
| |
但所有这些点,所有这些中点, |
| |
这些点不是放在平面上,而是放在陡峭的悬崖上,这正是我们想要的。在这里,我们打开和关闭最小点,你可以看到它们正击中井底。所以我们也能瞄准最小点。 |
| |
因此,我们的工具呈现了两个不同的、两个离散的 |
| |
选项,一个新的工具。我们希望能够用于任何为连续因子设置了编码属性的数据表的间隙填充功能。 |
| |
然后可以使用边界探索工具来添加,运行本身不查看因子空间,而是查看响应以针对高梯度...高变化区域来添加额外的运行。 |