COGS201 学习笔记 week 3
2 - Introduction to Prolog
VARIABLE NAMES
考虑:parent(X,luke), + male(X).
Prolog首先将变量替换为新名称
parent(G312,luke), + male(G312).
• 这样在遇到其他句子中名为X的变量时,就不会产生混淆。
TRACING
TRACING A QUERY
There are 4 types of actions
- Call(调用)
- 含义: 逻辑引擎开始尝试解决一个查询或子目标。
- 动作: 它会进入程序数据库,寻找能与当前查询匹配(合一)的第一条规则或事实。
- Exit(成功退出)
- 含义: 查询成功,找到了匹配项。
- 动作: Prolog 暂时满足了这个目标,并返回
true。如果查询中包含变量,此时变量会被赋予特定的值(绑定)。
- Fail(失败退出)
- 含义: 无法找到能满足查询的匹配项。
- 动作: 这一步返回
false。这通常会触发 Redo,让程序回头去寻找其他的可能性。
- Redo(重试)
- 含义: 回溯(Backtracking)。
- 动作: 当之前的某个分支失败了,或者用户要求寻找“下一个答案”时,Prolog 会回到上一个成功的决策点(Choice Point),撤销变量绑定,尝试寻找该目标的另一种实现方式。
SIDE NOTE: VARIABLE NAMES
句子内的连贯性 (Consistency within a sentence)
在同一个子句中,相同的变量名代表同一个实体。
- 例子:
grandparent(X, Y) :- parent(X, Z), parent(Z, Y). - 这里的
Z在parent(X, Z)和parent(Z, Y)中是完全一样的。这意味着 X 的孩子必须和 Y 的父母是同一个人。
不同句子间的独立性 (Independence between sentences)
在不同的子句中,即使使用了相同的字母(如 X, Y, Z),它们也互不干扰。
1 | sibling(X,Y) :- parent(Z,X), parent(Z,Y), \+ X=Y |
- 例子对比:
- 第一句定义
grandparent使用了Z。 - 第二句定义
sibling也使用了Z。
- 第一句定义
- 核心点: 这两个
Z不是同一个 Z。sibling里的Z只在该规则内部起作用,代表兄弟姐妹共同的父母,与grandparent规则里的逻辑毫无关系。
例如:
Consider: parent(X,luke), \+ male(X) 将替换为
parent(G312,luke), \+ male(G312)
DEBUGGING
Running a trace in Prolog
1 | ?-trace. %to start the trace |
3 types of errors
| 错误类型 | 特征描述 |
|---|---|
| 编译时错误 (Compile-time errors) | 通常是因为拼写错误(typo),导致程序根本无法运行。 |
| 运行时错误 (Runtime errors) | 程序可以启动,但随后会崩溃,或者进入死循环。 |
| 逻辑错误 (Logic errors) | 程序运行正常且没有崩溃,但给出了错误的答案。 |
How to Debug
调试是识别并解决这些错误的过程。图片给出了几个实用建议:
- 保持冷静(Don’t panic!):不要恐慌。
- 检查代码(Check your code):利用颜色高亮辅助,并在大脑中模拟程序执行的步骤。
- 追踪代码 (Trace):
- 观察程序是否按照你预想的步骤运行。
- 利用
write谓词输出中间结果。 - 尝试解决该问题的简化版本。
- 寻求外部帮助:找个朋友一起看看
Numbers
数字作为项 (Numbers as Terms)
在 Prolog 的基本语法结构中:
- 项 (Terms) 的种类包括常量(Constants)和变量(Variables)。
- 数字也是项:数字被视为一种特殊的项。
- 灵活性:数字可以出现在任何常量或变量可以出现的地方
NUMBERS AS ARGUMENTS
1 | mya(tyrannosaurus,66). |
QUERIES WITH NUMBERS
1 | ?- mya(tyrannosaurus,X). |
Numeric Expressions 算术比较操作符
-
•
X < Yless than -
•
X > Ygreater than -
•
X =< Yless than or equal -
•
X >= Ygreater than or equal -
?-mya(tyrannosaurus,X),mya(stegosaurus,Y),Answer
is Y-X.
Answer= 84,
X=66,
Y=150.
?-X is 2, Y is 3, Answer is sqrt(3*(X+Y)/2).
Answer
= 2.7386127875258306,
X=2
Y=3 -
X =:= Yequal(数值相等。它会计算两边的值并检查它们是否相等) -
Var is Xassignment of value(将X的计算结果赋值给变量Var。)+addition
-subtraction
*multiplication
/divisionFOUR TYPES OF “EQUALS”
操作符 含义 判定条件 X = Y合一 (Unification) 如果 X和Y是可以合一(变得相同)的表达式,则为真。X == Y等价 (Identical) 如果 X和Y当前已经完全相同(无需进一步合一),则为真。X =:= Y数值相等 计算 X和Y的数学结果,如果数值相等则为真。X is Y计算并赋值 先计算右侧 Y的数学结果,如果该结果能与左侧X合一,则为真。MAKING CALCULATIONS
1
2
3
4
5
6
7
8
9?-mya(tyrannosaurus,X), mya(stegosaurus,Y),Answer is Y-X.
Answer= 84,
X=66,
Y=150.
?-X is 2, Y is 3, Answer is sqrt(3*(X+Y)/2).
Answer = 2.7386127875258306,
X=2,
Y=3INSTANTIATING VARIABLES 实例化变量
• 算术运算操作(如
>或<)只有在变量已经实例化为数字时才能工作。
• 变量赋予一个值的过程被称为实例化 (Instantiating)1
2
3
4?-X is 4, X > 2.
X = 4
?-X > 2, X is 4.%因为赋值在比较之后所以失败
Error: Arguments are not sufficiently instantiated有些东西不需要被实例化:
“is” 中的左侧变量该变量用于从右侧表达式获取值。
Prolog 中的变量一旦实例化,其值在当前逻辑分支中是固定的。
1
2
3
4
5?- Y is 2, X is 5, X is Y+4. %X already has a value|
false
?- Y is 2, X is Y+2.
X= 6,
Y=2
EXPRESSIONS ARE NOT TERMS不是项(TERMS)
您可以将数字(number)用作谓词(predicate)的参数
• 但不能将算术表达式用作参数
• 应改用“is”来实例化变量。
1 | ?- mya(MysteryDino,62+4). |
ARITHMETIC PREDICATES 算术运算
使用算术运算,我们可以编写执行数值计算的条件句。
• 注意计算的“answer”如何出现在head。
1 | olderThan(X,Y,Answer):- mya(X,Xnum), mya(Y,Ynum), Answer is Ynum-Xnum. |
Practice Questions
Write a predicate isYounger(X,Y) that returns true if X’s age in millions of years is less than Y’s age.
1 | isYounger(X,Y):- mya(X,Xage),mya(Y,Yage),Xage<Yage. |
Write a predicate addAges that adds two dinosaurs’ ages together.
1 | addAges(X,Y,Answer):- mya(X,Xage),mya(Y,Yage),Answer is Xage+Yage. |
3 - Cognitive Science Research
建立模型(Models)的两种方式
物理符号系统PSS(Physical Symbol Systems)
人工编写规则
操作一次进行一个(串行)
按照明确的规则进行操作
适用于:基于规则的推理、问题解决、规划、约束满足等
人工神经网络ANN(Artificial Neural Network)
信号以并行方式处理
网络会随时间调整并学习,以识别模式
适用于:感觉处理、分类、预测、运动规划等
标准假设(Standard Assumptions)
1) 心理过程是可分模块的(modular)
- 假设心理过程相对自成一体
- 因此可以只建模某一个过程,不必把整个心智都建出来
2) 心理过程可以用计算机建模
- 假设用计算机来建模心理过程是可行的
- 即使计算机不是人,也假设它能执行人正在做的某些过程/任务
3) 表征可以不必“具身扎根”(not grounded)
- 即使计算机的表征不是基于具身经验(不 grounded),仍假设它能用这些表征完成基本处理
- 并且这些处理能说明/模拟人类的心理过程
4) ANN 或 PSS 都可用于建模
- 即使人脑是由神经元网络构成,仍假设**人工神经网络(ANN)或物理符号系统(PSS)**都能对某些过程进行建模
Categorization 分类
两种可能的模型
- 原型模型(Prototype Model)
- 范例模型(Exemplar Model)
原型模型(The Prototype Model)
核心观点
- 每个类别(例如“鸟”)都有一个原型(prototype):
也就是对该类别中最典型成员长什么样的心理表征/心像。
分类规则
- 如果某个对象看起来像这个原型(与原型相似),我们就把它归入该类别
范例模型(The Exemplar Model)
核心观点
- 不用单一原型,而是有许多范例(exemplars)。
- 在某个类别里,我们见过的每一个具体对象,都会成为该类别的一个范例。
分类规则
- 如果一个新对象与这些范例相似,就把它归入该类别。
- 并且它被归类后,也会成为新的范例(加入记忆库)
Nosofsky’s Task
用一组“卡通脸”来研究人/模型是怎么学会分类的。
The Modeling Process
Nosofsky 为了把两种模型写成计算机程序,必须做一些关键设定(因为真实人脑怎么编码并不直接可见):
- 原型/样例怎么定义?
通常把刺激表示成“特征向量”(feature vector),比如 [f_1, f_2, f_3, …]。 - 距离/相似度怎么计算?
常见做法是“加权距离”(weighted distance),比如:
- 每个特征维度有权重 w_i,表示这个维度对分类的重要性不同(权重往往需要从数据里拟合或猜测)。
- 距离越小 → 相似度越大(相似度常用指数衰减之类函数把距离转成相似度)。
分类理论的现状
Nosofsky showed比原型模型(exemplar model)更能契合人类分类行为
但如今范例模型已被其他理论取代:
- Sensory simulation (我们基于感官体验形成类别)
- Statistical patterns in word use(我们根据类别中对象的讨论方式形成分类)
- 人类现在被认为会根据语境混合使用这两种模式。
论文的常见类型
心理学实验(Psychology experiments:): 测试人类行为并描述其能力。
技术论文(Technical paper): 构建一个具有认知能力的计算机系统并进行测试。
综述/元分析 (Survey/Meta-analysis): 总结现有研究或通过统计手段结合多个实验的数据。
观点论文 (Position paper): 针对认知科学中的某个争议提出观点,并引用学术著作予以支持。
STANDARD PARTS OF A RESEARCH PAPER论文的组成
Abstract(摘要)
- 大约 100 个词左右(不同期刊/会议会有差异)
- 快速概括整篇论文:研究做了什么、怎么做的、得到什么结果
- 方便读者决定要不要读全文:很多人先看摘要来判断论文是否相关、是否值得继续读
2) Introduction(引言)
- 主要任务是说明问题:
- 我们要研究/解决什么问题?
- 为什么这个问题重要、值得研究?
- 现有方法有什么不足?
- 你的工作贡献/目标是什么(通常会在引言末尾简要列出贡献点)
3) Related Work(相关工作 / 文献综述)
- 回答“之前谁做过这个问题或类似问题?”
- 会有很多引用(citations):用文献来说明现有研究进展、对比你的工作位置与差异
- 有时会和 Introduction 合并:某些论文会把相关工作放在引言里一起写,而不是单独成一节
4) Method(方法 / 方法学)
这一部分回答:研究者是怎么研究这个问题的?做了什么?
常见写法包括:
- 实验设计:对象是谁、样本量多少、分组/对照怎么做、变量怎么控制、流程是什么
- 计算机/工程类:算法或系统怎么设计、模型结构、训练/实现细节、数据处理流程
- 理论框架:提出哪些假设、定义与推导、证明思路等
⚠️ Method 里不要写结果**(No results)。
结果应该留到下一节 Results。
5) Results(结果)
这一部分回答:研究者做完之后,直接得到了什么结果?
可能包含:
- 心理学/社会科学实验:测试表现、统计结果(均值、方差、显著性检验等)、受试者行为数据等
- 计算机/工程研究:模型/程序的输出、在各种指标上的表现(准确率、F1、延迟、吞吐等),经常会和其他方法做对比(baseline 对比、消融实验等)
6) Discussion(讨论)
这一部分核心回答:结果的意义是什么?
幻灯片里的要点可以这样理解:
讨论要做的事
- 解释结果的含义:这些结果说明了什么?为什么会这样?
- 评价研究是否成功/支持假设
- 例如:程序/方法是否有效?
- 零假设(null hypothesis)是否被推翻?
- 有没有发现有趣、意外、反直觉的现象?
- 放到更大背景中对齐:你的发现如何与更广的理论框架、已有研究联系起来(支持、补充还是冲突)?
讨论不该做的事
- 幻灯片强调:Results(结果)部分不负责这种分析。
Results 只“报结果”,Discussion 才“讲意义”。
Discussion 通常还包括两块
1) Limitations(局限性)
- 你还没解决什么?
- 哪些情况/人群/场景下不一定适用?
- 方法或数据有哪些限制(样本偏差、测量误差、外部效度不足等)?
2) Future Work(未来工作)
- 作者建议下一步做什么?
- 是否需要扩展研究范围、改进系统/算法、换数据集或做更多实验?
- 是否值得去探索新的相关问题?
7) Conclusion(结论)
作用:把整篇论文收束起来,用较短篇幅总结:
-
我们学到了什么(核心发现/结论)
-
我们怎么学到的(方法/证据概括,但不展开细节)
-
为什么重要(意义、影响、应用价值)
-
有些作者会把 Limitations(局限) 和 Future Work(未来工作) 放在结论里一起写(尤其篇幅较短的论文)
8) References(参考文献)
- 列出论文中所有被引用过的来源(书、论文、网页、报告等)
- 目的是让读者能追溯证据来源,也体现你的工作与已有研究的关系
(格式通常按期刊/会议要求,比如 APA、IEEE、ACM 等)
9) Appendices(附录)
- 放一些不适合放在正文、但对复现/理解很有用的补充材料,例如:
- 代码片段或伪代码、额外实验结果/表格
- 问卷的完整文本、访谈提纲
- 证明推导的详细过程
- 数据说明、额外图表等
READING THROUGH A PAPER
研究论文并非小说。初次阅读时,不应从头到尾通读全文。相反,若要深入研读某篇论文,应进行多次阅读。
FIRST READ
重点阅读abstract, introduction和conclusion部分,其他章节可快速浏览。
对于大型研究综述,可先进行零次阅读(abstracts only)
需能回答以下问题:
• 研究团队做了什么(大方向)?获得了哪些发现?
• 这属于何种论文类型?可关联哪些主题或类别?
• 该论文对当前项目是否重要?
• 是否值得深入阅读?
SECOND READ
现在你已掌握整体思路,请一气呵成地通读全文。
阅读时随时做简要笔记。
若遇到特别困惑的部分,标注疑问点后继续推进。
你应当能够回答以下问题:
• 研究者在方法部分具体采取了哪些步骤?
• 他们在结果部分具体观察到了什么?
• 他们在讨论部分如何具体解释这些观察结果?
• 本文的主要局限性是什么?
• 本文与哪些既往研究相关联?又为未来研究提供了哪些启示?
THIRD READ(S)
这里是你需要回溯并厘清上次困惑的章节。
• 可能包括:
• 梳理数学公式或计算机代码的步骤
• 分解复杂研究中的数据报告
• 查阅其他论文以获取背景信息
• 你应当能够回答:
• 关于论文任何细节或微妙之处的问题!
3.1 - Human Logic
HOW PROLOG REASONS (Prolog 推理方式的特点)
-
All deductive logic, all the time
- 主要做的是演绎推理:从规则和事实出发,严格推出必然结论。
-
Follows rules correctly and exactly
- 只要你的规则写对,它就会完全按逻辑推导,不会“凭感觉”补全。
-
Follows the exact order rules are written in
- 虽然逻辑上可能有多条路能证明,但 Prolog 的求解过程(搜索/回溯)受规则书写顺序影响很大
-
Symbols are not grounded
- Prolog 里的符号(比如
cat,likes,john)只是符号,本身不连接真实世界的感知/意义
- Prolog 里的符号(比如
-
默认情况下prolog“暴力穷举”通过不同的组合进行;除非你明确告诉它如何做,否则它不会更有效地进行推理
人类怎么推理
- Deductive / Inductive / Abductive
- Symbols are grounded人的符号有“落地”含义
- “符号落地(grounded)”指:你脑中的“狗/热/危险/左边”这些概念,通常连着感官经验、身体动作、情绪反应、真实世界对象。
- 所以人看到“狗”这个词/概念,会自动联想到外形、叫声、触感、互动方式、甚至过往经历。
- 对比:Prolog 里
dog(X)只是字符串/符号,本身不自带任何感官意义;意义全靠你在知识库里写了什么规则。
- Mental models:人会用“心智模型”在脑中模拟情景
- 推理时常不是在脑里跑形式逻辑,而是:
- 搭一个简化的“世界小模型”
- 在里面做模拟:如果这样做会发生什么?哪条路更可能?有没有反例?
DEDUCTIVE LOGIC
人类可以在需要时使用演绎逻辑——即使符号没有基础。
• 例子:
1 | If qwertyuiop is true, then supercalifragilisticexpialodocious is true. |
• 但我们真的是一直在这么做吗??
• 还是我们在做别的事情?
• 如果是,那是什么别的东西?
Challenges to Deductive Reasoning对演绎推理的挑战
哥德尔不完备定理(Gödel’s Incompleteness Theorem):
-
任何能够表达算术规则的逻辑都会不完备。存在在算术上为真——但在该逻辑中无法被证明的命题。
谓词逻辑也不完备。并非所有在谓词逻辑中无效的推理都能被证明为无效。
INTRACTABILITY难解性
形式逻辑是 NP-complete (Formal logic is NP-complete)
- the SAT problem
Prolog 语言与 SAT 问题 (Prolog and SAT)
- 每当你向 Prolog 提出查询时,Prolog 都试图求解 SAT 问题的一个变体。 • (“逻辑关系”既包含在查询中,也包含在知识库中。)
INFINITE INFERENCE 无限推论:逻辑的“废话”陷阱
单一前提推导出无限命题: 逻辑规则允许我们从一个简单的真命题(例如“天空是蓝色的”)出发,通过逻辑变换生成无限多个正确但无用的命题:
- “天空是蓝色的,且天空是蓝色的。”
- “天空是蓝色的,或者天空是蓝色的。”
- “天空不是‘不蓝色’的。”
- 甚至可以无限循环叠加下去……
核心挑战: 既然逻辑可以推导出无限多的东西,人工智能如何才能像人类一样,只推导出那些**“合理 (Reasonable)”且有意义**的结论,而不是在无用的逻辑循环中淹没?
NATURAL LANGUAGE 自然语言
像英语中的“if”和“or”这样的词并不总是像形式逻辑中那样被理解。书籍、随笔和文章中的论证(逻辑/数学文章除外)并不类似于逻辑证明。现实生活中的逻辑可能取决于时间、空间以及其他形式的现实世界基础的棘手方面。• “艾伦比贝蒂高。”• “贝蒂曾比查理高。”• “因此……”
Alan is taller than Betty.(艾伦比贝蒂高)
Betty was taller than Charlie.(贝蒂曾经比查理高)
CONTEXT
Matthew 坐在一张桌子旁。
Matthew 在 Mark 的右边。
Mark 在 Luke 的右边。
问:Luke 在 Matthew 的右边吗?
•取决于桌子的形状
MONOTONICITY
形式逻辑是单调的:添加一个新前提永远不会使先前有效的结论失效。
•人类逻辑不是单调的:我们可以意识到自己曾经错了。
• 我们也能识别规则的例外……
EXAMPLE
A.
- All birds can fly.
- Tweety is a bird.
- Therefore, Tweety can fly
B.
1.No penguins can fly.
- Tweety is a penguin.
- Therefore, Tweety cannot fly…
1.在Tweety的例子中,我们的前提(premises)之一是错误(false)的!
- It is not true that all birds can fly
- (因为有些鸟是企鹅,有些是鸵鸟,有些翅膀受伤,有些还是幼鸟…)
- 但若问人类“鸟类能飞吗?”他们会回答“能”而非“不知道”(或“不能,并非所有鸟类”)
- 我们存在泛化肯定(generic yes)的概念.