首页 > 其他分享 >ChatGPT Is a Knowledgeable but Inexperienced Solver: An Investigation of Commonsense Problem in Larg

ChatGPT Is a Knowledgeable but Inexperienced Solver: An Investigation of Commonsense Problem in Larg

时间:2024-08-16 18:24:29浏览次数:15  
标签:Commonsense Solver Knowledgeable 知识 常识 常识性 问题 GPT ChatGPT

文章目录

题目

ChatGPT 是一个知识渊博但缺乏经验的解决者:对大型语言模型中常识问题的调查

在这里插入图片描述

论文地址:https://aclanthology.org/2024.lrec-main.276

摘要

    ChatGPT、GPT-4 等大型语言模型 (LLM) 在 NLP 领域取得了重大进展。然而,它们对常识性知识的记忆、表示和利用能力一直是 LLM 的痛点。目前尚不清楚:

  1. GPT 能否有效回答常识性问题?
  2. GPT 是否具备常识性知识?
  3. GPT 是否知道回答特定问题所需的底层常识性知识?
  4. GPT 能否有效利用常识来回答问题?

为了评估上述常识性问题,我们进行了一系列实验来评估 ChatGPT 的常识性能力,实验结果表明:

  1. GPT 在常识性任务中可以获得良好的 QA 准确率,但对于某些类型的知识仍存在困难。
  2. ChatGPT 具备知识性,可以使用知识提示准确地生成大部分常识性知识。
  3. 尽管 ChatGPT 拥有丰富的知识,但它是一个缺乏经验的常识性问题解决者,无法准确识别回答特定问题所需的常识性知识,即 ChatGPT 并不确切知道回答问题需要什么常识性知识。

上述发现提出了研究在 LLM 中利用常识性知识的更好机制的必要性,例如遵循指令、更好的常识性指导等。

简介

    常识性知识是人类认知的一个基本方面,包括我们对世界的直觉理解和推理能力。它包括关于典型日常生活的空间、物理、社会、时间和心理方面的知识,以及对社会规范、信仰和价值观的理解,以及预测和解释人类行为的能力。常识知识对于构建能够理解和生成类似人类语言的 NLP 系统至关重要。尽管常识知识对许多任务都很重要,但在机器中获取和表示常识知识一直是 NLP 领域的长期挑战,因为常识通常是隐式的和依赖于上下文的。近年来,人们越来越关注解决 NLP 模型的常识问题,并实现更像人类的语言生成和理解。

    最近,GPT-3、ChatGPT 和 GPT-4 等大型语言模型 (LLM) 在广泛的 NLP 能力方面取得了显著成功,包括推理、上下文理解和思路链推理。这些能力表明大型语言模型拥有一定程度的常识性知识。然而,常识问题通常被认为是大型语言模型的主要限制。随着这些模型变得越来越强大,它们在多大程度上能够理解和推理常识性知识仍不清楚。这引发了几个关键问题:

  1. GPT 能否有效回答常识性问题?
  2. GPT 是否具备常识性知识?
  3. GPT 是否知道回答特定问题所需的底层常识性知识?
  4. GPT 能否有效利用常识来回答问题?回答这些问题对于理解 LLM 的能力和局限性以及开发更好的方法来评估和提高其在常识任务上的表现至关重要。

在这里插入图片描述

    在本文中,为了评估模型回答常识性问题的能力,我们使用了 11 个常识性 QA 数据集,涵盖了 8 个不同的常识领域,包括物理、社会、时间和数字推理等。首先,我们要求模型回答这些问题并评估其回答的准确性。为了评估大型语言模型是否理解回答这些问题所需的常识性知识,我们要求模型描述必要的知识并评估描述是否准确。为了评估大型语言模型是否能够回忆和描述回答问题所需的知识,我们询问模型是否知道所需的知识,并评估答案是否正确且相关。最后,为了评估模型是否可以利用常识知识进行推理,我们使用之前实验中生成的知识作为上下文,并要求模型再次回答问题。我们将他们的表现与使用黄金知识进行比较,并评估他们的推理过程是否能有效地利用已识别的知识。

    我们的实验为大型语言模型的常识问题提供了深刻的见解:

  1. GPT 可以在常识任务中实现良好的 QA 准确性,但它们仍然难以处理某些类型的知识。
  2. ChatGPT 知识渊博,可以使用知识提示准确地生成大多数常识知识。
  3. ChatGPT 是一个缺乏经验的常识问题解决者,无法准确识别解决特定问题所需的常识知识。此外,ChatGPT 无法有效地利用上下文中的常识知识来回答特定问题。

本文的主要贡献是:

  • 我们通过进行实验回答 4 个关键问题,详细研究了大型语言模型的常识能力。
  • 我们设计了一系列实验来评估 ChatGPT 记忆、表示和利用常识知识的能力,包括回答常识问题、识别和生成必要知识以及在推理过程中利用常识知识。
  • 通过识别 ChatGPT 在常识知识和推理方面的优势和劣势,我们为开发能够有效利用和推理常识知识的更高级语言模型提供了见解。

什么是常识

    常识知识是“人类经验的很大一部分,涵盖了关于典型日常生活的空间、物理、社会、时间和心理方面的知识。”这种类型的知识通常被视为理所当然,通常是通过特定文化中的多年经验和社会化获得的。为了帮助读者更好地理解这一概念,我们总结了常识的几个主要类别:

  • 一般常识:这类常识是指被广泛分享并被大多数人认为是正确的知识,例如太阳从东方升起,西方落下。
  • 物理常识:这类常识涉及有关物理世界的知识,例如物体掉落时会掉落到地面,水往低处流。
  • 社会常识:这类常识涉及有关社会规范、风俗和惯例的知识,例如在提出请求时说“请”和“谢谢”是礼貌的。
  • 科学常识:这类常识涉及有关基本科学概念和原理的知识,例如引力将地球上的所有物体拉向地球中心。
  • 事件常识:这类常识涉及有关事件顺序及其因果关系的知识,例如如果玻璃杯被打翻,里面的液体就会洒出来。
  • 数字常识:这类常识涉及关于数字的知识,例如人类有两只手和十个手指。
  • 原型常识:这类常识涉及关于概念的典型或原型示例的知识,例如燕子是一种鸟,鸟有翅膀。
  • 时间常识:这类常识涉及关于时间的知识,例如出国旅行比散步需要更长的时间。

GPT 能否有效回答常识问题?

    在本节中,我们评估了 LLM 回答常识问题的性能。具体来说,我们使用 11 个常识问答数据集,涵盖 8 个常识领域,包括一般、物理、社会、科学、事件、数字、原型和时间。这 11 个数据集是 CommonsenseQA、WSC、PIQA 、Social IQA、ARC 、QASC、H ellaSWAG、NumerSense、ProtoQA和 MC-TACO。表 1 列出了数据集及其领域,每个数据集都有一个示例。我们从每个常识性问答数据集的开发集中抽样 100 个问题进行评估,但 ProtoQA 除外,其开发集中只有 52 个问题。我们使用 GPT-3 (davinci)、GPT3.5 (text-davinci-003) 和 ChatGPT 作为评估的大型语言模型。对于 GPT-3,我们使用 4 次上下文学习。对于 GPT-3.5 和 ChatGPT,我们使用零次推理并针对不同的数据集设计提示模板。
在这里插入图片描述

    结果如表 2 所示。从结果中我们可以看出:GPT 可以准确回答常识性问题。我们在 11 个常识性问答数据集上评估了不同 LLM 的性能。表 2 中的结果表明,GPT-3.5 和 ChatGPT 都能在大多数数据集上取得良好的性能。表现最好的数据集是 ARC 和 ProtoQA,ChatGPT 在这些数据集上的准确率分别为 94% 和 94.2%。这些结果表明,像 GPT-3.5 和 ChatGPT 这样的大型语言模型是解决常识性问题的有效工具,可以为不同类型的常识性问题提供准确的答案。

    GPT 利用常识性知识的能力可以通过指令调整和人工对齐来提高。我们比较了三种大型语言模型的性能表 2 列出了 GPT-3、GPT-3.5 和 ChatGPT 等模型。从结果中我们可以看出,与 GPT-3 相比,GPT-3.5 和 ChatGPT 取得了显着的改进。这些结果表明,仅靠预训练不足以学习利用知识。通过结合指令和对齐调整技术,模型可以更好地利用和推理常识知识。总体而言,ChatGPT 在大多数领域的准确率都高于 GPT-3.5,证明了 RLHF 技术在增强知识利用能力方面的有效性。然而,GPT-3.5 在某些数据集上的表现略优于 ChatGPT,包括 CommonsenseQA 和 Social IQA。这是因为 ChatGPT 倾向于谨慎,在信息不足时拒绝给出答案,从而输出诸如“根据给出的信息,无法确定……”之类的输出。这凸显了如何在信息不足的情况下平衡模型的谨慎性和准确性需要进一步研究。
在这里插入图片描述

    要做到这一点,需要模型了解回答问题所需的知识,并意识到模型是否拥有这些知识。虽然 GPT 在大多数常识知识领域表现良好,但它们在某些类型的知识上仍然举步维艰。表 2 中的实验表明,大型语言模型在社交、事件和时间常识 QA(Social IQA、HellaSWAG 和 MCTACO 数据集)上落后。ChatGPT 在这些数据集上的表现低于 70%。这表明 LLM 在社交、事件和时间常识知识上仍然存在缺陷。我们认为这是因为这些类型的常识性知识需要对人类行为和社会互动有更深入的理解,而它们在文本语料库中出现的频率却很低。这表明当前的 LLM 需要在这些常识领域进行改进,这需要模型超越肤浅的语义理解并了解人类行为。

GPT 是否知道回答问题的常识性知识?

    在第 3 节中,我们发现 GPT 在常识性 QA 数据集上表现良好。这引发了我们的兴趣,想探索 GPT 是经验丰富的专家,知道需要什么知识并可以利用这些知识来回答问题,还是他们是缺乏经验的问题解决者,依赖于记忆大量涵盖问题的信息。为了回答这个问题,我们从每个常识性 QA 数据集中抽取 20 个问题,并询问 ChatGPT“回答这个问题需要什么知识?”。对于有≥10个错误答案的问题的数据集,我们抽取10个正确答案和10个错误答案的问题,否则,我们将所有错误答案的问题都取走,并抽取更多正确答案的问题来填满20个问题。
在这里插入图片描述

    我们手动评估每个生成的响应的精确度和召回率,并使用F1分数作为度量。例如,表3显示了ChatGPT的响应,该响应描述了回答问题的必要知识。从ChatGPT响应中,我们将知识1和3标记为对回答问题有用,而知识2过度概括,知识4和5不是必需的。然后我们根据这2条知识判断问题是否可以回答,并进一步在人工评估中写入2条额外的必要知识,知识a和b。因此,该响应的精确度为2 = 5,召回率为2 = 4,F1分数为44:44%。

    结果如表4所示。从重新从结果中我们可以看出:ChatGPT 是一个缺乏经验的问题解决者,它很难准确地识别回答特定问题所需的常识性知识。我们手动评估了 ChatGPT 生成的必要知识,结果如表 4 所示。结果显示,在大多数常识性 QA 数据集上,总体 F1 分数在 40% 到 75% 之间。这些结果表明 ChatGPT 是一个缺乏经验的问题解决者,无法准确识别回答特定常识性问题所需的知识。

    具体来说,该模型在科学领域的表现相对较好,在 ARC 上达到 74.57% 的 F1,在 QASC 上达到 76.13%。然而,该模型在社交和时间领域(即 Social IQA 和 MC-TACO)的表现最低。 F1 分数的这种差异可能是因为科学常识性知识在文本语料库中比社交和时间知识更为普遍。例如,教科书经常讨论“气候用温度和湿度来描述”这样的科学概念,但很少提到“学生不喜欢参加大型考试”这样的社会规范或“吃一顿饭不会花几个月的时间”这样的时间知识。这表明像 ChatGPT 这样的大型语言模型在社会和时间领域仍然存在局限性。因此,开发更有效的训练策略来注入这些领域的常识性知识非常重要。
在这里插入图片描述

    GPT 无法有效区分回答特定问题需要识别相关和不相关的常识性知识,这些知识通常会产生高噪声率的知识。我们在表 4 中评估了生成的必要知识的精确度和召回率。所有数据集的平均召回率为 84.42%,平均精确度为 55.88%。这表明,虽然该模型可以识别出问题的大部分常识性知识,但它很难准确识别哪些知识对于回答特定的常识性问题是必不可少的。该模型通常会生成不相关或过度概括的知识。例如,表 3 中的知识 2 被过度概括,因为问题本身是“如何制作户外枕头”,而知识 4 和 5 是不相关的,因为这两个选项之间存在差异。我们认为这是因为该模型依赖于关键字和主题匹配,而不是对问题内逻辑关系的充分理解。这进一步表明 GPT 仍然是缺乏经验的问题解决者。因此,LLM 需要提高对手头任务的自我意识,区分关键信息和不相关的背景信息。例如,它们需要能够确定问题的哪些部分对于决策是必要的,例如表 3 中的“吹进锡罐/垃圾袋”,哪些部分是无关的。

    通过增强 GPT 的知识意识,即引导模型识别特定问题的必要知识,可以显著提高 GPT 的常识能力。在图 2 中,我们绘制并分析了生成的必要知识的总体 F1 分数与答案得分之间的相关性。ChatGPT 的准确率。结果表明,准确率和知识 F1 之间存在很强的相关性,皮尔逊系数为 0.77。此外,表 4 显示,正确回答问题的知识 F1 分数明显高于错误回答问题的知识 F1 分数。这些发现表明,准确识别必要知识对于正确回答常识性问题至关重要。因此,增强模型对必要知识的自我意识有可能提高其在包括常识性问答在内的下游任务中的表现。

GPT 是否具备常识性知识?

    本节回答以下问题:大型语言模型在多大程度上拥有常识性知识?为了回答这个问题,与 Shwartz 等人类似,我们根据第 3 节中生成的必要知识手动构建知识查询提示。例如,如表 5 所示,基于表 3 中的知识 1,我们将问题写为“你了解什么是户外枕头吗?”。我们将提示输入到ChatGPT中,并手动将ChatGPT生成的每个知识描述标记为正确或不正确。表5展示了一个知识查询问题的示例和生成的知识描述。第一个描述说“向垃圾袋里吹气并用橡皮筋绑住可能会产生类似垫子的表面,但它不太可能耐用或舒适地长时间用作户外枕头”,但实际上,这是一种典型的做法。所以,这个描述被标记为不正确。
在这里插入图片描述

    结果如表6所示。从结果中我们可以看出:GPT是知识丰富的,包含了准确回答问题的大部分常识性知识。通过提出知识查询问题并手动评估ChatGPT的响应,我们评估了ChatGPT中必要知识的准确性。表6中的结果表明,ChatGPT生成的知识描述在大多数常识性QA数据集上可以达到70%以上的准确率,平均准确率达到82.66%。这表明 ChatGPT 可以针对知识查询问题生成准确的常识性知识描述。这表明 LLM 可以作为常识性知识库并为下游任务提供常识。然而,社交领域的准确率较低,为 54.92%。我们认为这是因为社会常识,例如“接受帮助的人应该说谢谢,而不是给予帮助的人”,在文本中并不常见。这凸​​显了制定具体指导以指导 ChatGPT 获取社会常识性知识的重要性。

    GPT 包含误导性和过于笼统的常识性知识。为了评估 CommonsenseQA 数据集上知识描述的相关性和信息量,我们进行了人工评估。结果显示,26.25% 的描述包含不相关和误导性信息,15.00% 的描述过于笼统,未能提供回答问题所需的具体知识。例如,表 5 中的描述提到“探索专门用于制作户外枕头的其他方法或材料”,这对于回答问题毫无帮助,而且具有误导性。我们认为这是因为大型语言模型的训练数据中存在噪声和冗余信息,这会影响与准确判断信息相关性的能力成对。这些发现强调了 ChatGPT 需要生成相关且信息丰富的知识描述,以确保生成的结果对于回答问题具有实用价值。

    在 LLM 中,了解常识知识和利用常识知识之间存在差距。为了探索生成的知识描述的准确性与答案准确性之间的关系,我们进行了相关性分析并在图 3 中绘制了结果。我们的结果显示两种准确度之间的相关性较弱,皮尔逊系数为 0.40。值得注意的是,虽然 Social IQA 和 MC-TACO 数据集的答案准确度都很低,但它们之间的知识描述的准确性存在显着差异:Social IQA(54.92%)的准确度较低,但 MC-TACO 的准确度较高(86.25%)。表 6 进一步显示,与第 4 节中的结果相比,正确回答和错误回答的问题之间的描述准确性差异相对较小。这表明好的知识描述并不一定能转化为正确的答案。我们认为这是因为回答常识性问题不仅需要知识,还需要推理和在信息不足的情况下进行推断等能力。
在这里插入图片描述

GPT 能否有效利用语境中的常识进行推理?

    本节回答了以下问题:大型语言模型能否利用语境中的常识进行推理和回答问题?为了回答这个问题,在回答第 4 节中的知识查询问题之后,我们让模型再次回答常识性问题,并评估在描述必要知识之后答案是否发生变化。表 7 显示了生成知识描述后以前错误的答案保持不变的示例。结果如表 8 所示。从结果中我们可以看出:如果仅将生成的常识知识添加到问题上下文中,ChatGPT 无法有效利用生成的常识知识。我们对生成知识描述前后答案变化的分析表明,在大多数数据集中,使用生成的常识描述后,准确率并没有明显、一致的提升。

在这里插入图片描述在这里插入图片描述

    上下文中的描述。对于表7所示的示例,既有从错误到正确的更改,也有从正确到错误的更改,以及相当一部分未改变的答案。在Social IQA数据集的情况下,知识生成的准确率较低,导致更多正确答案被修改为错误。 这表明ChatGPT无法有效利用自己生成的知识描述来回答问题,知识生成的准确性对回答结果有很大的影响。我们认为这是因为模型已经拥有了生成的知识,因此添加冗余知识是没有用的。 即使使用黄金知识,ChatGPT在常识问答方面的表现提升也不显著。我们使用CommonsenseQA数据集的两个人工注释的常识解释数据集CoS-E和ECQA作为黄金知识作为上下文,并要求ChatGPT生成答案。我们发现只有4个错误! !CoS-E解释有1个正确答案,ECQA解释有8个错误答案,而正确答案只有1个!错误答案。这表明ChatGPT无法回答所有数据集C!

    即使给出了黄金知识解释,ChatGPT 仍然无法正确回答问题。我们认为这是因为大型语言模型缺乏使用知识进行复杂常识推理(例如否定)的能力。例如,这里有一个需要进行否定推理的问题:“如果篮球上有一个洞,但它没有失去其整体形状,那么关于篮球的哪些说法不正确?A. 穿孔,B. 在美国很受欢迎,C. 充满空气,D. 消失了,E. 圆形”。这个问题的 CoS-E 解释是“空气不能留在任何有洞的物体中。”,但 ChatGPT 仍然预测了错误的答案 A 并解释说“如果篮球上有一个洞,它就被刺破了,空气可以从中逸出。”这些结果表明,大型语言模型需要进一步的指导和改进,以便更好地利用和推理上下文中的常识知识。
在这里插入图片描述

相关工作

    最近的研究表明,GPT-3、ChatGPT 和 GPT-4 等大型语言模型在自然语言处理 (NLP) 任务中取得了重大进展,包括问答、文本生成和语言翻译。然而,人们越来越担心它们理解和推理常识知识的能力 。最近的几项研究集中于评估大型语言模型理解常识知识的能力。例如,在一组常识推理任务上评估了几个 LLM,发现这些模型具有一定的常识知识,但模型与人类之间仍然存在差距。研究了语言模型对常识推理的泛化能力,发现这种能力很大程度上依赖于要预测的对象是否在训练过程中被看到。在本文中,我们评估了 LLM 的常识能力,包括回答常识问题、识别和生成必要知识以及利用常识知识进行推理。

结论与讨论

    在本文中,我们研究了大型语言模型的常识能力,发现 ChatGPT 是一个知识渊博但缺乏经验的问题解决者:

  1. 虽然 GPT 在常识问答中可以达到良好的准确率,但它们仍然难以处理某些类型的知识,包括社会和时间常识。
  2. ChatGPT 具有常识性,可以使用知识提示准确地生成大部分常识知识。
  3. ChatGPT 是一个缺乏经验的常识问题解决者。它很难准确地识别给定问题背后的常识知识,并且经常生成噪声率较高的知识。此外,ChatGPT 无法有效利用情境中的常识知识来回答常识性问题。

上述发现为未来的工作提出了几个有希望的方向:

  1. 尽管当前的 GPT 知识渊博,但它们仍然不是经验丰富的问题​​解决者。因此,研究在 LLM 中利用常识知识的更好机制至关重要,例如指令调整、更好的常识引导推理等。
  2. LLM 中仍然缺少几种类型的常识性知识,例如社会和时间常识。因此,为这些知识类型设计知识注入方法至关重要。此外,设计轻量级的常识更新方法以保持知识的最新状态也很重要。
  3. 由于 ChatGPT 和 GPT-4 没有公布其全部细节,例如训练数据、超参数和检查点,而且评估“通用人工智能”模型有很大不同,因此设计和构建覆盖范围更广的基准,以及设计提供更全面、更公正的大型语言模型评估的评估方法至关重要。

标签:Commonsense,Solver,Knowledgeable,知识,常识,常识性,问题,GPT,ChatGPT
From: https://blog.csdn.net/weixin_43961909/article/details/141265720

相关文章

  • TInterfaceResolver&TInjectableObject
    TInterfaceResolver&TInjectableObject{************TInterfaceResolverTInjectableObject用于控制反转(IoC)/依赖注入(DependencyInjection)}type///在依赖注入(又名IoC)问题发生时抛出的异常EInterfaceResolver=class(ESynException);{$M+}///抽象工厂类,允许......
  • public interface View接口和public interface ViewResolver接口介绍
    在SpringMVC中,publicinterfaceView和publicinterfaceViewResolver是两个相互关联但功能不同的接口。它们共同在视图解析和渲染过程中发挥作用,但各自承担的责任不同。View接口View接口定义了如何渲染一个特定的视图。它通常包含一个render方法,该方法接受一个Model......
  • JavaScript Promise.withResolvers API All In One
    JavaScriptPromise.withResolversAPIAllInOnePromise.withResolvers()https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolversdemoscancelablePromise/cancelFetchrequest(......
  • 关于pulp.solve()的报错,pulp.apis.core.PulpSolverError: Pulp: Error while executin
     File"E:\python\建模\.venv\Lib\site-packages\pulp\apis\coin_api.py",line112,inactualSolve  returnself.solve_CBC(lp,**kwargs)      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File"E:\python\建模\.venv\Lib\site-packages\pulp\a......
  • boost-Asio 基础学习1.5--域名主机名解析筛选resolver
    在开发过程中往往看见的不是ipv4或者ipv6,而是主机的域名!如www.badiu.com而上期文章也说了......
  • 使用 Promise.withResolvers() 来简化你将函数 Promise 化的实现~~
    引言在JavaScript编程中,Promise是一种处理异步操作的常用机制。Promise对象代表了一个尚未完成但预期将来会完成的操作的结果。在本文中,我们将探讨如何通过使用ES2024的Promise.withResolversAPI来优化我们的Promise实现。现有实现的问题首先,让我们看一个简单的示例,展......
  • 接口报错.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework
    1、报文:.w.s.m.s.DefaultHandlerExceptionResolver:Resolved[org.springframework.http.converter.HttpMessageNotReadableException:JSONparseerror:Unexpectedcharacter('''(code39)):wasexpectingdouble-quotetostartfieldname;nestedex......
  • [ES2024] Manually settle a promise using Promise.withResolvers
    Ifwewanttobeabletomodifythestateofapromisefromoutsidetheconstructor,wecanusethe Promise.withResolvers methodtogetaccesstothepromise,andits resolve and reject functions. //oldapproachletres,rej;constpromise=newPr......
  • Fluent:Stiff chemistry solver
    适用场景在处理对流场中的化学反应速率敏感的问题时,可以在FLUENT中使用Stiffchemistrysolver。这类问题通常在燃烧模拟或类似涉及快速反应化学物质的场合中出现。具体含义IntegrationParameters:这部分涉及方法的选择ISAT:代表"InSituAdaptiveTabulation",这是一......
  • 开源Python几何约束求解器GeoSolver
    GeoSolver是一个用于几何约束求解的Python包。几何约束问题(GCP)是几何变量上/之间的一组几何约束。问题是找到几何变量的配置以满足所有约束。几何变量是位置、方向、形状、大小等未知的对象。GCP中的变量可以是点、线、平面、球体、圆柱体和更复杂的形状。几何约束是诸如对象......