爱丁堡大学的PMR(PMR in the University of Edinburgh)【1】

本文分享了作者在爱丁堡大学选修PMR(概率建模与推理)课程的经历与心得,该课程被认为是AI方向中最难的课程之一。文章详细介绍了课程难度、学习方法、核心内容和参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每天写一千字的blog,这个是http://www.cnfeat.com/ 提出的,我也想这样做。可能是觉得每天固定做点儿什么事情确实会比较cool吧。虽然我有时候不知道自己应该写什么。那么今天就写一下我对爱丁堡大学PMR这门课的想法吧(Probability modeling and reasoning in the University of Edinburgh)。应该很多学校都有类似的课程,但是名字不尽相同,所以我也不知道哪儿有。。。

 

PMR这门课被称为爱丁堡大学AI方向最难的两门课之一(另一门是MLPR)。其高居不下的挂科率,相比于其他课少的可怜的选课人数,特别是中国人比例大概只有10%(没有调查,不过确实不多吧),让很多中国留学生望而生畏。嗯,然后在这个时候我冒天下之大不韪的不自量力的选择了这门课程,原因就是我特别想知道这门让大家不敢选的课程究竟有多难。结果,嗯还好,侥幸拿了B。好多大神拿了A,A1,A2,A3呀~~~(PMR老师的博士生选择标准是80+,也就是A2)。提前说明,我是渣渣,写来这里,为了帮助学弟学妹,也为了让自己复习一下

 

经过最初的惶恐,中期的暂时性遗忘(因为平时作业太多了),被assignment拉回现实,并被期末考试逼到熬夜复习,到现在已经有将近四个月了,很多东西当时没学明白的-----现在还不明白;当时明白的-----现在忘记了,呃。有点儿浪费啊,所以我想要现在来记录一下,复习一下,同时也给可能需要的学弟学妹一点指导建议,反正这门课第二个学期才开始,现在写完全来得及。

 

首先,请树立自己的信心。这门课之所以难是因为国内没有这方面的课程(清华好像有的),同时没有这方面的教材,或者说不流行这门课。其次是因为语言的关系,里面有很多term是我们之前可能没有接触过的。简单来说,从PMR这个题目上面,我们就看不懂究竟是什么鬼。

 

其次,请明确自己的目标和课程规划。一般来说,研究生应该有一个自己的研究方向,英国的一年taught研究生因为学制的关系,不像US或者国内的研究生一样有自己的实验室或者自己明确的研究方向,但是你的毕业设计,其实某些程度上就是你的研究方向了。所以请逐步清晰的规划自己的研究方向。(举个不算成功的例子,我自己:本科渣渣,研究生的时候从iaml+mlp开始补充ML的基础知识,后期学习了MT,然后继续延伸ML的知识:PMR。别的课程随你选择咯。这样我的方向基本就是MLP/ML/MT。当然,由于我们的MLP课程是以CNN为主,所以我也懂一些图像的知识)。

 

最后,用人话概括一下PMR的内容,并附上一些参考资料。

PMR这门课(2016-17的课程设置)从因子图(Factor graph)开始讲解,这个是概率图的一种。这里单独将因子图的特性(依赖性等)先讲出来,然后讲利用他来进行inference(推测)。接下因子图做一些特点的变化就变成了BayesianNetwork (贝叶斯网络)和Markov RandomFields(马尔可夫随机场)这两个很流行的概念。然后,讲到他的学习和推理。中间插入了指数的讲解。到此,我认为就告一段落了。(因子图-BN,MRF-训练及预测+指数)

第二部分是估约学习和推理,采样,玻尔兹曼机,决策论,隐马尔科夫和线性动态系统,我将它放到第二部分。

 

我是这样理解这门课的,如果你弄懂了第一部分,那么及格应该没什么问题,而第一部分是这门课的基础。如果你弄懂了第二部分,那就根据你的理解程度到B-A1-A2-A3吧。

 

最后,很多人会纠结这门这么难的课又没有用。这个要看你需不需要啊,对不对。

 

我选择这门课的原因:我就是不爽都说这门课这么难,我就想要试试看自己会不会挂。

 

我学完之后最大的感触就是,哇这个BN真的很有意思!其次,这个马尔科夫模型对我理解N-gram的推导有很大的帮助。然后玻尔兹曼机和NN有点奇妙的联系。最后这门课整体上好像是现在机器学习的数学理论版。嗯这是我的感触。

 

到现在呢……我真的都忘记了,努力回忆一下,明天开始因子图。

 

推荐资料:

Courser: PGM



BTW, EDINBURGH IS A GOOD PLACE. I MISS EVERY NIGHT SPENT THERE.

PMR Vector指的是使用了C++标准库中的`std::pmr::vector`容器,这是C++17引入的一个多态内存资源(Polymorphic Memory Resource, PMR)特性的一部分。这个版本的Vector允许开发者指定不同的内存资源用于分配和释放元素所使用的内存。 `std::pmr::vector`是一个模板类,它的工作方式类似于普通的`std::vector`,但是它的第二个模板参数默认是`std::pmr::polymorphic_allocator<T>`而不是通常的`std::allocator<T>`。这使得`std::pmr::vector`能够与各种类型的内存资源一起工作,包括那些实现了自定义分配策略的对象。 以下是几个关键点: - `std::pmr::vector`支持通过构造函数传递一个`std::pmr::memory_resource*`对象给内部的`polymorphic_allocator`以控制如何分配内存。 - 这种灵活性对于实现例如减少碎片化、提高性能或者在受限环境中操作等高级内存管理场景特别有用。 - 开发者可以通过创建自己的派生自`std::pmr::memory_resource`的类来定制内存分配行为,并将其提供给`std::pmr::vector`实例。 为了更好地理解和利用这一功能,在实际编程实践中应该考虑如下方面: 选择合适的内存资源适配器或编写自定义的`memory_resource`子类,以便满足应用程序的具体需求。 当构建大型复杂的数据结构时评估是否能从替代性的内存分配方案获益。 研究现有的开源项目是如何运用这些特性的例子,从而学习最佳实践模式。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值