人工智能问题求解

北京交通大学《AI 问题求解》研讨课,通过老师讲解基本概念,同学阅读课本,编程探索,讲解习题,让大家在动手中,掌握人工智能搜索、优化、约束满足等问题的求解方法,走上人工智能的职业道路。详细课程信息、代码、报告,请访问:https://yishuai.github.io/ai

同学反馈

视频合集:B站链接

目录

1、搜索

课本:第3章 通过搜索进行问题求解

1.1 老师讲解

课1:搜索问题和算法框架

怎么实现一个能够自己走出迷宫的机器人?这是一个经典的AI问题。解决这个问题,需要AI搜索。AI搜索就是为了达到一个目标状态,搜索一条路径。这听起来是不是有一点抽象?没关系,看完这个视频,你就了解了。让我们开始吧。我们将学习什么是 AI 搜索,然后介绍实现AI搜索的程序框架,这样我们最后就能实现我们的走迷宫机器人了。酷不酷?Let's go!

B站视频

课2:深度优先与宽度优先搜索

我们首先学习一种最基本的搜索形式:不依靠外部信息,仅在图结构上进行搜索。深度优先和宽度优先就是两种最常用的这种搜索方法。本节介绍它们的实现,并比较其优缺点。

B站视频

课3:贪婪最佳优先搜索与A*搜索

在搜索的时候,常常能够利用一些信息,比如目标节点的位置,来指导搜索的方向,这就是“利用外部信息的搜索”。本节介绍两种这样的算法:贪婪最佳优先搜索和A*搜索。它们在网络搜索中非常有用。快来看看吧。

B站视频

1.2 同学分享

练1:走迷宫

儒曼同学为我们介绍迷宫搜索算法的代码实现。非常精彩。

B站视频代码项目报告

练2:社会网络好友搜索 I

罗叶菲同学介绍了哈佛 CS50 AI 的练习:基于明星的社会网络,搜索明星间的关系。

B站视频Python 代码项目报告

练3:社会网络好友搜索 II

儒曼同学介绍了哈佛 CS50 AI 的练习:基于明星的社会网络,搜索明星间的关系。

B站视频代码项目报告

享1:通过搜索求解问题

王喆同学介绍了通过搜索求解问题的总体框架、包括:问题的形式化、搜索树、数据结构、队列。他最后特地提到要先进行目标规划,然后再做问题规划。很有意思。

B站视频

享2:利用外部信息的启发式搜索

吕岩同学首先为大家带来一个例子:用贪婪搜索与A*搜索求解罗马尼亚地图最短路径问题。然后,她用动画为大家比较了这些算法与广度优先搜索、一致代价搜索(即 Dijkstra 算法)的效果,非常漂亮。最后讨论了“利用外部信息的启发式搜索”的“一致性”和“可采纳性”问题,并用一个习题进行了说明,非常精彩。快来看看吧。

B站视频

读1:课本学习分享

1.3 编程实践

2、对抗搜索

课本 第5章 对抗搜索

2.1 老师讲解

课4:Minimax 敌对搜索

在有对手的时候(比如下棋),如何搜索有利于自己的最佳下法?这就是敌对搜索。本节介绍极小化极大算法:Minimax。这个算法非常有趣。快来看看吧。

B站视频

2.2 同学分享

练4:井字棋游戏

儒曼同学为我们介绍井字棋游戏的人工智能算法的代码实现。非常精彩。

B站视频代码项目报告

享3:对抗性游戏

王子悦同学介绍对抗性游戏的算法,并讲解如何在网球比赛中应用该算法。我猜他一定喜欢打网球。

B站视频

2.3 编程实践

3、超越经典搜索

课本:第4章

3.1 老师讲解

课5:爬山优化算法

本地搜索是一种常见的优化算法。其中,“爬山”算法非常直观,容易实现,但也有缺点:容易陷入本地最优。为此,人们提出了各种改进方法,比如:随机重启。我们一起来看看吧。

B站视频

课6:模拟退火优化算法

模拟退火算法很聪明地根据 1)邻居状态的目标函数差别幅度,2)已经完成的优化轮数,来调整爬山算法下山的概率。这个算法在实际中有非常优秀的性能。

B站视频

课7:线性规划优化方法

当约束函数和目标函数都是线性函数时,我们可以用线性规划来进行优化。本节用一个简单的例子,介绍其基本概念、求解方法和代码实现,给大家带来一点感觉。

B站视频

3.2 同学分享

享3:深入理解模拟退火

郑祎杰同学为大家讲解模拟退火算法的:1)起源;2)热力学原理;3)在函数极值和旅行商问题上的应用;4)编程实现,求解八皇后问题和八数码块问题,并与最陡爬山、随机重启爬山算法,进行性能比较。

B站视频

享4:遗传算法原理

孙以琳同学为大家带来遗传算法。孙以琳同学详细介绍了遗传算法的交叉、适合度、选择方法,并编程实验了用该算法解决旅行商问题,然后同学们展开了热烈的讨论。快来看看吧。

B站视频:讲解课上报告

享5:遗传算法求解方程极值

陈鲽晴同学为大家演示用遗传算法求解方程极值的问题。他并最后指出遗传算法的一个重要优点,就是:不用担心如何找到最优解,只要淘汰掉那些表现不好的个体就好了。怎么样,这个思考深刻吧。:D

B站视频

享6:局部搜索算法与最优化问题

乔千同学首先回顾了经典搜索,指出其目标是搜索路径,而超越经典搜索的目标是找到最佳结果,路径并不重要,这就是一个优化问题。然后带我们简单回顾了爬山、模拟退火、局部束搜索、遗传算法,演示了代码,然后简单介绍了连续空间的本地搜索,非常精彩。

B站视频

享7:蚁群优化算法

言晓梅同学为大家带来蚁群算法。晓梅同学首先用一个非常有趣的蚂蚁纪录片,为大家展示蚂蚁们工作时的场景,然后细致地讲解了蚁群算法的细节,并用该算法解决旅行商问题,非常精彩。快来看看吧。

B站视频:讲解课上报告

享8:粒子群优化算法

罗叶菲同学为大家带来粒子群优化算法。该算法仿生鸟群捕食行为,利用个体对信息的共享,搜索最优解,非常有意思。快来看看吧。

B站视频

享9:动作效果不确定下的搜索

乔千同学通过吸尘器的例子,重点讲述了动作效果不确定时的搜索,包括:分析该问题用到的“与或搜索树”模型、求解用到的AO* 算法、以及动作失效的解决办法(不断重试),并演示了代码,非常精彩。

B站视频:讲解课上报告

享10:环境不确定下的搜索

儒曼同学为我们带来超越经典搜索的最后一部分:无感知的搜索(机器人知道有2个房间,但不知道自己的初始位置和垃圾分布))、部分可观察信息的搜索(如机器人有垃圾传感器、能够感知自己东西南北方向是否有障碍物)、未知环境下的联机搜索(探索 + 搜索),并通过练习演示真实的体验。非常精彩。

B站视频

3.3 编程实践

4、约束满足问题

课本:第6章 约束满足问题

4.1 老师讲解

课8:约束满足优化问题

图的着色、数独、八皇后、这些好玩的游戏,都属于约束满足优化问题。我们可以利用搜索解决它们。本节首先介绍约束满足问题的定义,然后介绍“节点一致性”、“弧一致性”的基本概念,最后利用它们,来缩小变量Domain,减少搜索空间。这就是著名的AC-3算法。快来看看吧。

B站视频

课9:回溯搜索,求解约束满足问题

利用搜索方法,求解约束满足问题,最基本的方法是回溯搜索(backtracking)。本节介绍这一方法。

B站视频

课10:改进的回溯搜索算法

本节介绍提高回溯搜索效率的各种方法,包括:利用AC-3算法缩小变量Domain,启发式的变量选择和变量取值优化方法。

B站视频

4.2 同学分享

享11:约束满足问题中的推理

方翔同学介绍了约束满足问题中的k-相容概念,包括:节点相容、弧相容、路径相容,全局约束、树结构的约束满足问题,最后用一个习题详细地演示了AC-3算法的应用,非常精彩。

B站视频

享12:AC-3 应用:毒贩房间侦查

白方同学分享,如何解决判断房间内是否有毒贩的约束满足问题

B站视频

享12:回溯与智能回溯

张绮璇,李卓音同学通过图着色问题,介绍提高回溯搜索效率的各种方法,举例,并介绍智能回溯的基本概念。

B站视频:张绮璇同学李卓音同学

读2:课本学习分享

4.3 编程实践

5、扩展

5.1 同学分享

享13:概率推理基础

吴志航同学给大家带来人工智能概率推理的基础知识,包括概率、贝叶斯定理。

B站视频:讲解课上报告

享14:卡尔曼滤波

林映廷同学为大家带来卡尔曼滤波。林映廷同学用一个自行车运动员位置跟踪的例子,为大家讲解了卡尔曼滤波的原理,强调了卡尔曼滤波在多传感器融合方面的应用,非常专业。快来看看吧。

B站视频

享15:Beam 搜索

蒋毅同学为大家带来Beam搜索的原理。它在自然语言处理里非常常用哦。快来看看吧。

B站视频介绍

读2:课本学习分享

5.2 编程实践

6、应用

6.1 5G 网络故障根因定位

IEEE ICASSP 2022 5G 网络故障根因定位 挑战赛

香港中文大学(深圳)- 深圳大数据研究院- 华为 未来网络系统优化创新实验室

5G 无线网络故障根因定位是网络运维中的一个重要环节,通过快速且准确地判断出网络故障的根因,技术人员可以及时采取措施对网络进行修复。然而,现网经常受困于复杂的无线通信环境和网络部署结构,且存在网络故障样本数少、不同的场景下故障表征差异性大等问题。如何充分利用领域知识和一小部分标定数据,使用统计学习和因果推断技术,快速准确地定位故障的根因,是网络运维面临的巨大挑战。

竞赛网站(包括数据说明):网站, 论文(PDF

阅读材料:

6.2 学术论文

7、课程材料