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

  1. Call(调用)
  • 含义: 逻辑引擎开始尝试解决一个查询或子目标。
  • 动作: 它会进入程序数据库,寻找能与当前查询匹配(合一)的第一条规则或事实。
  1. Exit(成功退出)
  • 含义: 查询成功,找到了匹配项。
  • 动作: Prolog 暂时满足了这个目标,并返回 true。如果查询中包含变量,此时变量会被赋予特定的值(绑定)。
  1. Fail(失败退出)
  • 含义: 无法找到能满足查询的匹配项。
  • 动作: 这一步返回 false。这通常会触发 Redo,让程序回头去寻找其他的可能性。
  1. Redo(重试)
  • 含义: 回溯(Backtracking)。
  • 动作: 当之前的某个分支失败了,或者用户要求寻找“下一个答案”时,Prolog 会回到上一个成功的决策点(Choice Point),撤销变量绑定,尝试寻找该目标的另一种实现方式。

SIDE NOTE: VARIABLE NAMES

句子内的连贯性 (Consistency within a sentence)

在同一个子句中,相同的变量名代表同一个实体

  • 例子: grandparent(X, Y) :- parent(X, Z), parent(Z, Y).
  • 这里的 Zparent(X, Z)parent(Z, Y) 中是完全一样的。这意味着 X 的孩子必须和 Y 的父母是同一个人。

不同句子间的独立性 (Independence between sentences)

在不同的子句中,即使使用了相同的字母(如 X, Y, Z),它们也互不干扰。

1
2
sibling(X,Y) :- parent(Z,X), parent(Z,Y), \+ X=Y
grandparent(X,Y) :- parent(X,Z), parent(Z,Y).
  • 例子对比:
    • 第一句定义 grandparent 使用了 Z
    • 第二句定义 sibling 也使用了 Z
  • 核心点: 这两个 Z 不是同一个 Zsibling 里的 Z 只在该规则内部起作用,代表兄弟姐妹共同的父母,与 grandparent 规则里的逻辑毫无关系。

例如:

Consider: parent(X,luke), \+ male(X) 将替换为

parent(G312,luke), \+ male(G312)

DEBUGGING

Running a trace in Prolog

1
2
?-trace.		%to start the trace
?-notrace. %to end the trace

3 types of errors

错误类型 特征描述
编译时错误 (Compile-time errors) 通常是因为拼写错误(typo),导致程序根本无法运行
运行时错误 (Runtime errors) 程序可以启动,但随后会崩溃,或者进入死循环
逻辑错误 (Logic errors) 程序运行正常且没有崩溃,但给出了错误的答案

How to Debug

调试是识别并解决这些错误的过程。图片给出了几个实用建议:

  1. 保持冷静(Don’t panic!):不要恐慌。
  2. 检查代码(Check your code):利用颜色高亮辅助,并在大脑中模拟程序执行的步骤。
  3. 追踪代码 (Trace)
    • 观察程序是否按照你预想的步骤运行。
    • 利用 write 谓词输出中间结果。
    • 尝试解决该问题的简化版本
  4. 寻求外部帮助:找个朋友一起看看

Numbers

数字作为项 (Numbers as Terms)

在 Prolog 的基本语法结构中:

  • 项 (Terms) 的种类包括常量(Constants)和变量(Variables)。
  • 数字也是项:数字被视为一种特殊的项。
  • 灵活性:数字可以出现在任何常量或变量可以出现的地方

NUMBERS AS ARGUMENTS

1
2
3
4
5
6
7
8
9
mya(tyrannosaurus,66).

mya(triceratops,66).

mya(parasaurolophus,73).

mya(stegosaurus,150).

mya(apatosaurus,15

QUERIES WITH NUMBERS

1
2
3
4
5
6
7
8
?- mya(tyrannosaurus,X).
X= 66

?-mya(OldDino,X),\+ X=66.
OldDino= stegosaurus,
X= 150
OldDino = Apatosaurus,
X= 151

Numeric Expressions 算术比较操作符

  • X < Y less than

  • X > Y greater than

  • X =< Y less than or equal

  • X >= Y greater 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 =:= Y equal(数值相等。它会计算两边的值并检查它们是否相等)

  • Var is X assignment of value(将 X 的计算结果赋值给变量 Var。)

    +addition
    - subtraction
    * multiplication
    / division

    FOUR TYPES OF “EQUALS”

    操作符 含义 判定条件
    X = Y 合一 (Unification) 如果 XY 是可以合一(变得相同)的表达式,则为真。
    X == Y 等价 (Identical) 如果 XY 当前已经完全相同(无需进一步合一),则为真。
    X =:= Y 数值相等 计算 XY 的数学结果,如果数值相等则为真。
    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=3

    INSTANTIATING 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
2
3
4
5
?- mya(MysteryDino,62+4).
false
?- X is 62+4, mya(MysteryDino,X).
MysteryDino= tyrannosaurus,
X= 66

ARITHMETIC PREDICATES 算术运算

使用算术运算,我们可以编写执行数值计算的条件句。
• 注意计算的“answer”如何出现在head。

1
2
3
4
olderThan(X,Y,Answer):- mya(X,Xnum), mya(Y,Ynum), Answer is Ynum-Xnum.

?- olderThan(triceratops,stegosaurus,X).
X= 84

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 为了把两种模型写成计算机程序,必须做一些关键设定(因为真实人脑怎么编码并不直接可见):

  1. 原型/样例怎么定义?
    通常把刺激表示成“特征向量”(feature vector),比如 [f_1, f_2, f_3, …]。
  2. 距离/相似度怎么计算?
    常见做法是“加权距离”(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(引言)

  • 主要任务是说明问题
    • 我们要研究/解决什么问题?
    • 为什么这个问题重要、值得研究?
    • 现有方法有什么不足?
    • 你的工作贡献/目标是什么(通常会在引言末尾简要列出贡献点)
  • 回答“之前谁做过这个问题或类似问题?
  • 会有很多引用(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“暴力穷举”通过不同的组合进行;除非你明确告诉它如何做,否则它不会更有效地进行推理

人类怎么推理

  • Deductive / Inductive / Abductive
  • Symbols are grounded人的符号有“落地”含义
    • “符号落地(grounded)”指:你脑中的“狗/热/危险/左边”这些概念,通常连着感官经验、身体动作、情绪反应、真实世界对象
    • 所以人看到“狗”这个词/概念,会自动联想到外形、叫声、触感、互动方式、甚至过往经历。
    • 对比:Prolog 里 dog(X) 只是字符串/符号,本身不自带任何感官意义;意义全靠你在知识库里写了什么规则。
  • Mental models:人会用“心智模型”在脑中模拟情景
  • 推理时常不是在脑里跑形式逻辑,而是:
    • 搭一个简化的“世界小模型”
    • 在里面做模拟:如果这样做会发生什么?哪条路更可能?有没有反例?

DEDUCTIVE LOGIC

人类可以在需要时使用演绎逻辑——即使符号没有基础。
• 例子:

1
2
3
If qwertyuiop is true, then supercalifragilisticexpialodocious is true.
Qwertyuiop is true.
Therefore...

• 但我们真的是一直在这么做吗??
• 还是我们在做别的事情?
• 如果是,那是什么别的东西?

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.

  1. All birds can fly.
  2. Tweety is a bird.
  3. Therefore, Tweety can fly

B.

1.No penguins can fly.

  1. Tweety is a penguin.
  2. Therefore, Tweety cannot fly…

1.在Tweety的例子中,我们的前提(premises)之一是错误(false)的!

  1. It is not true that all birds can fly
    • (因为有些鸟是企鹅,有些是鸵鸟,有些翅膀受伤,有些还是幼鸟…)
  2. 但若问人类“鸟类能飞吗?”他们会回答“能”而非“不知道”(或“不能,并非所有鸟类”)
  • 我们存在泛化肯定(generic yes)的概念.