第1章:引言(Introduction)
一、导读
1.1 本章学习目标
第1章是《人工智能:一种现代方法》的开篇之作,它为整本书奠定了概念基础和认知框架。本章并不深入某个具体算法的技术细节,而是从宏观视角回答一个根本性问题:什么是人工智能? 这个问题看似简单,实际上却有着多层次的深刻含义。通过本章的学习,你将建立起对 AI 领域的全局认识,理解不同学派的核心主张,并为后续章节的深入学习做好准备。
本章的核心学习目标包括:
- 掌握 AI 的四种定义维度:类人思维(认知建模方法)、类人行为(图灵测试方法)、理性思维(逻辑主义方法)、理性行为(理性智能体方法),理解每种定义背后的哲学立场和技术路线。
- 了解 AI 的发展历史脉络:从古代哲学思辨到达特茅斯会议,从专家系统的兴起到深度学习的革命,理解 AI 发展的内在逻辑和外部驱动因素。
- 认识 AI 的核心应用领域:游戏博弈、定理证明、自然语言处理、机器人控制、自动驾驶等,了解 AI 技术在现实世界中的落地情况。
- 理解 AI 与其他学科的关系:哲学、数学、心理学、神经科学、语言学、经济学等学科如何为 AI 提供思想基础和技术工具。
- 建立"智能体"的核心概念:理解 AI 系统作为智能体的基本模型——感知环境、采取行动、追求目标。
- 了解 AI 的现状与未来趋势:大语言模型、通用人工智能(AGI)的进展与争议,以及 AI 面临的伦理挑战。
1.2 为什么第一章如此重要
许多读者急于跳入具体的算法实现,觉得第一章"太泛"或"太理论"。这种想法是危险的。正如学习编程之前需要理解计算的基本概念,学习 AI 之前必须先厘清"智能"的含义。没有清晰的问题定义,再精巧的算法也可能南辕北辙。
Russell 和 Norvig 在本章中精心构建了一个四维框架来定义 AI,这个框架贯穿全书:
| 维度 | 目标 | 方法 |
|---|---|---|
| 像人一样思考 | 认知建模 | 心理学、神经科学 |
| 像人一样行动 | 图灵测试 | 自然语言处理、计算机视觉 |
| 理性地思考 | 逻辑主义 | 数理逻辑、知识表示 |
| 理性地行动 | 理性智能体 | 决策论、经济学 |
本书选择理性智能体作为统一框架,因为它避免了前三种定义中难以验证的争议(我们如何知道机器在"思考"?),转而关注可观察、可度量的行为。这种务实的立场使得 AI 从哲学争论走向了工程实践。
1.3 核心问题引导
在阅读本章时,请带着以下问题思考:
图灵测试是否足以定义智能? 如果一个系统通过了图灵测试,我们能否说它真的"智能"?中文房间论证对此提出了什么挑战?
AI 的两次寒冬是什么原因造成的? 从历史中我们能学到什么教训?为什么每次"突破"之后都伴随着期望的落空?
理性是否足以产生智能? 纯逻辑方法在处理不确定性、模糊性时有什么局限?
智能体的"理性"与经济学中的"理性"有何异同? 有限理性的概念如何影响 AI 系统的设计?
大语言模型(如 GPT 系列)属于 AI 四象限中的哪一类? 它们是否代表了通向 AGI 的正确路径?
AI 的发展是否必然带来安全风险? 我们如何在推进技术的同时确保 AI 与人类价值观对齐?
二、核心概念详解
2.1 人工智能的四种定义
2.1.1 像人一样思考:认知建模方法
定义:通过建模人类的思维过程来实现智能。这种方法认为,要制造真正智能的机器,我们必须理解人类大脑是如何工作的。
认知建模方法的核心假设是:智能的本质在于思维过程,而不在于外在行为。因此,AI 研究应该与认知科学紧密结合,通过构建计算模型来模拟人类的推理、学习、记忆和决策过程。
# 认知建模示例:模拟人类问题解决的产生式系统
# 产生式系统是人类认知的一种经典计算模型
class ProductionSystem:
def __init__(self):
self.working_memory = {}
self.rules = []
def add_rule(self, condition, action):
self.rules.append((condition, action))
def match(self, rule_condition):
for key, value in rule_condition.items():
if key not in self.working_memory or self.working_memory[key] != value:
return False
return True
def fire(self):
for condition, action in self.rules:
if self.match(condition):
action(self.working_memory)
return True
return False
def run(self, max_steps=10):
for step in range(max_steps):
if not self.fire():
break
# 模拟简单的算术认知过程
ps = ProductionSystem()
ps.working_memory = {'operand1': 3, 'operand2': 5, 'operation': 'add'}
ps.add_rule(
{'operation': 'add'},
lambda wm: wm.update({'result': wm['operand1'] + wm['operand2'], 'operation': 'done'})
)
ps.run()
print(ps.working_memory)常见误区:认知建模方法容易陷入"人类中心主义"——假设人类的思维方式是唯一的智能形式。然而,飞机不是通过模仿鸟类飞行来工作的,AI 也未必需要完全模仿人脑。
2.1.2 像人一样行动:图灵测试方法
定义:如果一个系统的行为在人类观察者看来与人类无法区分,那么该系统就是智能的。这就是著名的图灵测试(Turing Test),由 Alan Turing 在 1950 年的论文《计算机器与智能》中提出。
图灵测试的原始版本被称为"模仿游戏":一个人类评判者通过文本终端与一个人类和一个机器进行对话,如果评判者无法可靠地区分两者,则机器通过了测试。
# 简化的图灵测试评估框架
class TuringTestEvaluator:
def __init__(self):
self.conversations = []
self.judgments = []
def conduct_conversation(self, participant, questions):
responses = []
for q in questions:
response = participant.respond(q)
responses.append(response)
return responses
def evaluate(self, human_responses, machine_responses):
correct_identifications = 0
total = len(human_responses)
for h_resp, m_resp in zip(human_responses, machine_responses):
if self.judge_is_human(h_resp, m_resp):
correct_identifications += 1
return correct_identifications / total
def judge_is_human(self, resp_a, resp_b):
return False
def is_passed(self, threshold=0.5):
avg_accuracy = sum(self.judgments) / len(self.judgments) if self.judgments else 0
return avg_accuracy <= threshold图灵测试的争议:
- 中文房间论证(Searle, 1980):一个人坐在房间里,按照规则手册处理中文符号并给出中文回复。即使房间外的中文使用者认为房间"懂中文",房间里的人实际上并不理解中文。这说明语法操作不等于语义理解。
- 实用性批评:图灵测试关注的是"看起来像智能"而非"真正的智能",这可能导致我们追求表面效果而非本质能力。
2.1.3 理性地思考:逻辑主义方法
定义:通过形式逻辑来表示和推理知识,从而实现智能。这种方法认为智能的核心是正确的推理,而逻辑提供了推理的精确规则。
逻辑主义方法的根基可以追溯到亚里士多德的三段论和 Frege、Russell 等人的现代数理逻辑。它的核心信念是:世界上存在客观的真理,通过逻辑推理可以从已知事实推导出新的知识。
# 命题逻辑推理的简单实现
class PropositionalLogic:
def __init__(self):
self.knowledge_base = []
def add(self, proposition):
self.knowledge_base.append(proposition)
def evaluate(self, proposition, model):
if isinstance(proposition, str):
return model.get(proposition, False)
if proposition[0] == 'NOT':
return not self.evaluate(proposition[1], model)
if proposition[0] == 'AND':
return all(self.evaluate(p, model) for p in proposition[1:])
if proposition[0] == 'OR':
return any(self.evaluate(p, model) for p in proposition[1:])
if proposition[0] == 'IMPLIES':
return not self.evaluate(proposition[1], model) or self.evaluate(proposition[2], model)
return False
def entails(self, query):
symbols = self._extract_symbols()
for model in self._all_models(symbols):
if all(self.evaluate(kb, model) for kb in self.knowledge_base):
if not self.evaluate(query, model):
return False
return True
def _extract_symbols(self):
symbols = set()
for prop in self.knowledge_base:
self._collect_symbols(prop, symbols)
return list(symbols)
def _collect_symbols(self, prop, symbols):
if isinstance(prop, str):
symbols.add(prop)
elif isinstance(prop, tuple):
for p in prop[1:]:
self._collect_symbols(p, symbols)
def _all_models(self, symbols):
if not symbols:
return [{}]
rest = self._all_models(symbols[1:])
return [{symbols[0]: True, **m} for m in rest] + [{symbols[0]: False, **m} for m in rest]
# 经典三段论示例
logic = PropositionalLogic()
logic.add(('IMPLIES', 'Socrates_is_Man', 'Mortal'))
logic.add('Socrates_is_Man')
print(logic.entails('Mortal'))逻辑主义的局限:
- 不确定性:现实世界中大多数知识不是非黑即白的,逻辑难以处理概率性知识。
- 计算复杂性:命题逻辑的蕴含问题是 NP 完全的,一阶逻辑的蕴含问题是半可判定的。
- 知识获取瓶颈:将人类常识转化为形式化规则极其困难,这就是著名的"知识获取瓶颈"。
2.1.4 理性地行动:理性智能体方法
定义:智能体的行为应当使其期望效用最大化。这种方法不关心智能体"内部怎么想",只关心它的行为是否合理——即在给定信息和约束下,是否做出了最优决策。
这是本书采用的核心框架。理性智能体(Rational Agent)的概念将 AI 定义为一个追求目标最大化的决策系统,它融合了逻辑推理、概率论、决策论和经济学的思想。
# 理性智能体的基本框架
import random
class RationalAgent:
def __init__(self, performance_measure):
self.performance_measure = performance_measure
self.beliefs = {}
self.desires = []
self.intentions = []
def perceive(self, percept):
self.beliefs.update(percept)
def decide(self, possible_actions):
best_action = None
best_utility = float('-inf')
for action in possible_actions:
expected_utility = self._compute_expected_utility(action)
if expected_utility > best_utility:
best_utility = expected_utility
best_action = action
self.intentions.append(best_action)
return best_action
def act(self, action):
return action
def _compute_expected_utility(self, action):
total = 0.0
for outcome in action.possible_outcomes:
total += outcome.probability * self.performance_measure(outcome.state)
return total
class Outcome:
def __init__(self, state, probability):
self.state = state
self.probability = probability
class Action:
def __init__(self, name, possible_outcomes):
self.name = name
self.possible_outcomes = possible_outcomes
# 示例:简单的投资决策智能体
def investment_performance(state):
returns = {'high': 100, 'medium': 50, 'low': -20, 'crash': -100}
return returns.get(state, 0)
agent = RationalAgent(investment_performance)
action_stocks = Action('stocks', [
Outcome('high', 0.3), Outcome('medium', 0.4),
Outcome('low', 0.2), Outcome('crash', 0.1)
])
action_bonds = Action('bonds', [
Outcome('medium', 0.7), Outcome('low', 0.3)
])
best = agent.decide([action_stocks, action_bonds])
print(f"理性选择: {best.name}")2.2 AI 的发展历史
2.2.1 萌芽期(1943-1956)
AI 的思想根源可以追溯到古代哲学家对"思维机器"的设想,但现代 AI 的起点通常被认为是以下几项关键工作:
- McCulloch-Pitts 神经元模型(1943):Warren McCulloch 和 Walter Pitts 提出了人工神经元的数学模型,奠定了神经网络的理论基础。
- 图灵测试(1950):Alan Turing 提出了"机器能思考吗?"这个问题,并给出了一个操作性的定义。
- 信息论(1948):Claude Shannon 的信息论为 AI 提供了量化信息处理的数学工具。
- 控制论(1948):Norbert Wiener 的控制论研究了反馈和自适应系统。
2.2.2 诞生与黄金时代(1956-1974)
1956 年的达特茅斯会议是 AI 作为独立学科诞生的标志。John McCarthy、Marvin Minsky、Nathaniel Rochester 和 Claude Shannon 在提案中首次使用了"Artificial Intelligence"这个术语。
这一时期的代表性成果包括:
- Logic Theorist(1956):Newell 和 Simon 编写的程序,能够证明《数学原理》中的定理。
- General Problem Solver(GPS, 1957):一个通用的问题求解程序,使用手段-目的分析。
- ELIZA(1966):Joseph Weizenbaum 开发的聊天程序,模拟心理治疗师的对话。
- SHRDLU(1970):Terry Winograd 的自然语言理解系统,能在"积木世界"中理解英语指令。
# 模拟 ELIZA 的简单版本
class SimpleEliza:
def __init__(self):
self.rules = [
(r'I need (.*)', lambda x: f"Why do you need {x}?"),
(r'I feel (.*)', lambda x: f"Why do you feel {x}?"),
(r'I am (.*)', lambda x: f"How long have you been {x}?"),
(r'I think (.*)', lambda x: f"Do you doubt that {x}?"),
(r'(.*)', lambda x: "Please tell me more.")
]
def respond(self, user_input):
import re
for pattern, response_fn in self.rules:
match = re.match(pattern, user_input, re.IGNORECASE)
if match:
arg = match.group(1) if match.lastindex else ""
return response_fn(arg)
return "I see."
eliza = SimpleEliza()
print(eliza.respond("I feel sad"))
print(eliza.respond("I need help"))2.2.3 第一次 AI 寒冬(1974-1980)
早期 AI 研究者的乐观预期很快遭遇了现实的打击:
- 组合爆炸:许多 AI 算法在问题规模增大时,计算时间呈指数增长。
- 常识问题:让 AI 系统理解日常常识远比预想的困难。
- Lighthill 报告(1973):英国数学家 James Lighthill 发表报告,严厉批评 AI 研究的进展,导致英国大幅削减 AI 经费。
- Mansfield 修正案(1973):美国国会限制军事研究经费只能用于直接军事应用。
2.2.4 专家系统的兴起(1980-1987)
专家系统(Expert Systems)是 AI 的第一次大规模商业成功。它们通过将特定领域专家的知识编码为规则,在狭窄但明确的领域提供专业建议。
- MYCIN(1976):用于诊断血液感染疾病并推荐治疗方案。
- XCON/R1(1980):为 DEC 公司配置计算机系统,每年节省 4000 万美元。
- DENDRAL(1965):用于确定有机分子的结构。
# 简单的专家系统规则引擎
class ExpertSystem:
def __init__(self):
self.rules = []
self.facts = {}
def add_rule(self, name, conditions, conclusion, confidence=1.0):
self.rules.append({
'name': name,
'conditions': conditions,
'conclusion': conclusion,
'confidence': confidence
})
def add_fact(self, key, value):
self.facts[key] = value
def infer(self):
conclusions = []
changed = True
while changed:
changed = False
for rule in self.rules:
if all(self.facts.get(k) == v for k, v in rule['conditions'].items()):
conclusion = rule['conclusion']
if conclusion not in conclusions:
conclusions.append(conclusion)
self.facts[conclusion['key']] = conclusion['value']
changed = True
return conclusions
# 简单的医疗诊断专家系统
medical_es = ExpertSystem()
medical_es.add_rule('fever_check',
{'symptom': 'fever', 'duration': '>3days'},
{'key': 'possible_infection', 'value': True}, 0.7)
medical_es.add_rule('infection_check',
{'possible_infection': True, 'wbc': 'high'},
{'key': 'diagnosis', 'value': 'bacterial_infection'}, 0.8)
medical_es.add_fact('symptom', 'fever')
medical_es.add_fact('duration', '>3days')
medical_es.add_fact('wbc', 'high')
print(medical_es.infer())2.2.5 第二次 AI 寒冬与统计方法的崛起(1987-2000)
专家系统的局限性逐渐暴露:
- 知识获取瓶颈:从人类专家那里提取知识并编码为规则极其困难。
- 脆弱性:规则系统无法处理规则未覆盖的情况。
- 维护成本:大型规则库难以维护和更新。
与此同时,基于数据和统计的 AI 方法开始崛起:
- 支持向量机(SVM):Vapnik 等人提出的强大分类算法。
- 贝叶斯网络:Pearl 等人将概率论引入 AI 推理。
- 统计自然语言处理:基于语料库的方法取代了规则方法。
2.2.6 深度学习革命(2006-至今)
2006 年 Geoffrey Hinton 提出深度信念网络的训练方法,开启了深度学习的新时代:
- ImageNet 突破(2012):AlexNet 在 ImageNet 竞赛中大幅领先,标志着深度学习在计算机视觉中的突破。
- AlphaGo(2016):DeepMind 的 AlphaGo 击败围棋世界冠军李世石,结合了深度学习和蒙特卡洛树搜索。
- Transformer(2017):Vaswani 等人提出的 Transformer 架构彻底改变了 NLP 领域。
- GPT 系列(2018-2024):OpenAI 的大语言模型展示了惊人的文本生成和推理能力。
- 多模态 AI(2023-2024):GPT-4V、Gemini 等模型能够同时处理文本、图像、音频等多种模态。
2.3 AI 与其他学科的关系
AI 是一个高度交叉的学科,它的思想来源和技术工具来自多个领域:
| 学科 | 对 AI 的贡献 |
|---|---|
| 哲学 | 心智理论、逻辑推理、意识问题 |
| 数学 | 形式逻辑、概率论、优化理论 |
| 心理学 | 认知科学、学习理论、行为主义 |
| 神经科学 | 神经网络、大脑结构与功能 |
| 语言学 | 自然语言处理、形式语法 |
| 经济学 | 决策理论、博弈论、机制设计 |
| 计算机科学 | 算法、数据结构、计算复杂性 |
| 控制论 | 反馈系统、自适应控制 |
2.4 AI 的应用领域
2.4.1 游戏博弈
从 1950 年代起,游戏就是 AI 的试验场。Deep Blue 在 1997 年击败国际象棋世界冠军 Kasparov,AlphaGo 在 2016 年击败围棋世界冠军李世石,AlphaStar 在星际争霸中达到 Grandmaster 水平。
2.4.2 自然语言处理
NLP 是 AI 最成功的应用领域之一。从早期的机器翻译到现代的 ChatGPT,AI 在语言理解和生成方面取得了巨大进步。当前的大语言模型能够进行对话、翻译、写作、编程、推理等多种语言任务。
2.4.3 计算机视觉
计算机视觉让机器能够"看懂"图像和视频。应用场景包括人脸识别、自动驾驶、医学影像分析、工业检测等。深度学习方法在 ImageNet 等基准测试上已经达到甚至超过人类水平。
2.4.4 机器人学
机器人学是 AI 的综合应用领域,涉及感知、规划、控制等多个方面。现代机器人已经能够在工厂中执行精密装配、在仓库中搬运货物、在手术中辅助医生。
2.4.5 自动驾驶
自动驾驶是 AI 技术最复杂的应用之一,需要同时处理感知(识别道路、车辆、行人)、预测(预判其他交通参与者的行为)和规划(制定行驶路线和控制策略)。
三、实战案例
3.1 案例一:构建一个简单的理性智能体
下面我们通过一个完整的示例来展示如何构建一个基于期望效用最大化的理性智能体。这个智能体将在一个简化的"真空清洁"环境中做出决策。
import random
class VacuumWorld:
def __init__(self):
self.rooms = {'A': random.choice(['clean', 'dirty']),
'B': random.choice(['clean', 'dirty'])}
self.agent_pos = random.choice(['A', 'B'])
self.step_count = 0
self.total_reward = 0
def get_percept(self):
return (self.agent_pos, self.rooms[self.agent_pos])
def apply_action(self, action):
self.step_count += 1
reward = -1
if action == 'suck' and self.rooms[self.agent_pos] == 'dirty':
self.rooms[self.agent_pos] = 'clean'
reward = 10
elif action == 'left' and self.agent_pos == 'B':
self.agent_pos = 'A'
elif action == 'right' and self.agent_pos == 'A':
self.agent_pos = 'B'
self.total_reward += reward
return reward
def is_done(self):
return self.step_count >= 10
class RationalVacuumAgent:
def __init__(self):
self.history = []
def choose_action(self, percept, world_state=None):
position, room_status = percept
if room_status == 'dirty':
return 'suck'
if position == 'A':
return 'right'
return 'left'
# 运行模拟
random.seed(42)
total_rewards = []
for _ in range(100):
world = VacuumWorld()
agent = RationalVacuumAgent()
while not world.is_done():
percept = world.get_percept()
action = agent.choose_action(percept)
world.apply_action(action)
total_rewards.append(world.total_reward)
print(f"平均累计奖励: {sum(total_rewards)/len(total_rewards):.1f}")
print(f"最高累计奖励: {max(total_rewards)}")
print(f"最低累计奖励: {min(total_rewards)}")代码解析:
VacuumWorld类模拟了一个有两个房间的简化世界,智能体可以在房间之间移动或清洁当前房间。RationalVacuumAgent实现了基于当前感知的理性决策:如果当前房间脏了就清洁,否则移动到另一个房间。- 通过 100 次模拟,我们可以评估这个简单策略的平均性能。
3.2 案例二:简单的知识表示与推理系统
class KnowledgeBase:
def __init__(self):
self.facts = set()
self.rules = []
def tell(self, fact):
self.facts.add(fact)
def add_rule(self, premises, conclusion):
self.rules.append((premises, conclusion))
def ask(self, query):
return query in self.facts
def forward_chain(self):
changed = True
while changed:
changed = False
for premises, conclusion in self.rules:
if all(p in self.facts for p in premises):
if conclusion not in self.facts:
self.facts.add(conclusion)
changed = True
def backward_chain(self, query, visited=None):
if visited is None:
visited = set()
if query in self.facts:
return True
if query in visited:
return False
visited.add(query)
for premises, conclusion in self.rules:
if conclusion == query:
if all(self.backward_chain(p, visited.copy()) for p in premises):
return True
return False
# 示例:动物分类知识库
kb = KnowledgeBase()
kb.tell('has_hair(tweety)')
kb.tell('lays_eggs(tweety)')
kb.tell('can_fly(tweety)')
kb.add_rule(('has_hair(X)',), 'is_mammal(X)')
kb.add_rule(('is_mammal(X)', 'has_hair(X)'), 'is_warm_blooded(X)')
kb.add_rule(('lays_eggs(X)', 'is_warm_blooded(X)'), 'is_bird(X)')
kb.add_rule(('is_bird(X)', 'can_fly(X)'), 'can_sing(X)')
kb.forward_chain()
print(f"tweety 是鸟吗? {kb.ask('is_bird(tweety)')}")
print(f"tweety 会唱歌吗? {kb.ask('can_sing(tweety)')}")
print(f"所有推导出的事实: {kb.facts}")运行结果分析:
前向链推理从已知事实出发,逐步应用规则推导出新的事实。在这个例子中,系统从 has_hair(tweety) 推导出 is_mammal(tweety),再结合其他规则最终推导出 is_bird(tweety) 和 can_sing(tweety)。注意这里存在逻辑矛盾(既是哺乳动物又是鸟),这展示了简单规则系统的局限性。
四、本章小结
本章作为全书的导论,建立了理解人工智能的核心框架。我们从四个维度审视了 AI 的定义:像人一样思考(认知建模)、像人一样行动(图灵测试)、理性地思考(逻辑主义)、理性地行动(理性智能体)。本书选择了理性智能体作为统一框架,因为它既避免了关于"真正思维"的哲学争论,又提供了可量化、可工程化的设计目标。
回顾 AI 的发展历程,我们看到了从逻辑推理到统计学习、从专家系统到深度学习的范式转变。每一次突破都伴随着新的认知和新的局限。当前的大语言模型展示了惊人的能力,但是否真正"理解"语言仍然是一个开放问题。
核心知识点回顾:
- AI 的四种定义维度及其哲学基础
- 理性智能体模型:感知-行动-效用最大化
- AI 发展历史中的关键里程碑和转折点
- AI 与其他学科的交叉关系
- AI 的主要应用领域和当前进展
五、思考与练习
思考题
图灵测试的局限性:考虑一个完全由查找表实现的系统,它能对所有可能的输入给出恰当的回复。它通过了图灵测试,但它"智能"吗?这个思想实验揭示了图灵测试的什么问题?
中文房间与语言模型:Searle 的中文房间论证是否适用于现代大语言模型?大语言模型是否仅仅是更复杂的"规则手册"?
理性的边界:在完全可观察的环境中,理性智能体总能做出最优决策。但在部分可观察、动态变化的环境中,"理性"意味着什么?我们如何设计在不确定条件下仍然"足够好"的智能体?
AI 寒冬的教训:回顾 AI 的两次寒冬,你认为当前的 AI 热潮是否会重蹈覆辙?哪些信号值得警惕?
编程练习
扩展真空清洁智能体:将真空清洁世界扩展到 4 个房间(2×2 网格),实现一个能够记住已访问房间状态的智能体,比较它与无记忆智能体的性能差异。
构建简单的知识推理系统:实现一个支持一阶逻辑(全称量词和存在量词)的知识库系统,用前向链和后向链两种推理方式进行实验。
图灵测试模拟器:编写一个程序,模拟图灵测试的场景。让 5 个人类评判者判断对话对象是人还是机器,统计正确识别率。