AI博弈方法实践(周文罡) 2023秋 2022夏  课程号:EE151201
2023秋 2022夏  课程号:EE151201
8.5(11人评价)
8.5(11人评价)
  • 课程难度:中等
  • 作业多少:很少
  • 给分好坏:超好
  • 收获大小:一般
选课类别:通识 教学类型:理论实验课
课程类别:一般通识 开课单位:电子工程与信息科学系
课程层次:自由选修   学分:2.0
课程主页:暂无(如果你知道,劳烦告诉我们!)
排序 学期

评分 评分 11条点评

hath 2022夏
  • 课程难度:困难
  • 作业多少:中等
  • 给分好坏:超好
  • 收获大小:很多
  • 难度:困难
  • 作业:中等
  • 给分:超好
  • 收获:很多

首先讲一下这门课的内容。这门课第一节课由周老师介绍强化学习,但我因为考试没有去上。后面是赵鉴博士来上,第一节课讲了RL的基本概念,第二节课讲了现行强化学习的几乎所有算法,第三节课复习上节课内容并讲了学长做强化学习科研的经历和AI游戏竞赛的经验,第四节课讲了开悟平台、ssh、docker的使用,第五节课没去,应该是答疑,后面的课都是答疑。
课程里穿插交流的强化学习科研和行业情况感觉对了解行情、规划之后的学习非常有帮助。
课程给了用docker镜像打包好的源码(基于tensorflow)和运行环境,我们可以直接跑这个代码,也可以在此基础上修改代码继续训练。(当然,这里有一点不好,感觉是这个代码没有多少可以改的地方,具体如下:1.该写好的都写好了;2.网络结构从一开始训练起就不能改了,也许可以做一些小改动之类的,但是由于很多代码被封在了sail包里看不到,在这个体系下部分加载已训练好的模型的方法我还没搞太懂,不知道能不能做到。由此感觉只能调参和写硬编码的规则构造经验来优化训练,学到的强化学习知识没有多少用武之地)
腾讯给我们每个小组的算力是128核CPU和一张A100显卡(一套算力给这么长时间相当于市场价上万了),对于训练来说非常足够。课程后面改成二等级制,要求击败baseline 2就能通过课程,差不多训练1天就可以达到这个水平。稍微良好的调参下,4天能够训出钻石水平的露娜(追平baseline 4)。
这门课最大的收获是学习到工业级的AI是如何编写与部署的。最基本的是生产环境下的部署,如ssh远程开发、docker容器使用、Linux的基本命令,这些是未来科研和工作中训练和部署模型非常重要的工具,当然用个git在容器、开发机和本地之间传代码会方便很多。其实还有很多复杂操作,比如编写dockerfile,kubernetes集群的部署,但是原来的docker容器里已经帮我们实现好了,不需要我们操心。剩下的按着教程完成初始配置之后,都是一些最基础的命令,感觉不超过20种,疯狂百度就行了。现学情况下,初始配置大约要3小时,搞明白各种指令并让模型训起来可能要5小时,但这个收益比真心高,并且以后不付钱都很难有这样的学习机会了。
接下来讲讲代码。代码基本就是绝悟论文里的实现,分为CPU和GPU两部分代码,所有和环境交互的代码,包括actor、agent之类的都在CPU端,GPU端主要是训练代码,模型实现和线程间传输模型的程序两端都有一份。
看代码最困难的地方有三点,一个是不能断点调试,只能打log,严重影响看代码速度;第二个是涉及巨多脚本等地方传进去的环境变量,不打log根本就猜不出是啥;第三是很多代码封在sail包里面,有一些是非常重要的(当然可以本地安装sail包,用everything找到它的源码来看,但因为要装tensorflow1.14所以我就没有干,这应该只是我自己的问题)
对于代码,确实可以粗略地讲讲每个部分的功能是啥,但具体实现太细了肯定不能讲。没有讲代码是这门课的遗憾。
有同学说不能在已经训练出来的模型基础上修改代码继续训练,这个问题我研究了三天,常规的tensorflow方法saver.restore行不通,最后问助教发现其实是可以的,而且步骤非常简单,他们代码把这些方法都写好封装好了,只用调一个布尔值就行(如下图)。


最后,还是要强调一下这门课是实践课,不是来学知识的。建议有训练神经网络经验的同学选这门课。不会强化学习不要紧,在会神经网络的基础上,五个小时应该足够从头学起掌握所有现行强化学习算法的基本思路,当然要搞懂具体实现可能要花超过十个小时。但是不会神经网络甚至不会Python的同学慎选。群里有些同学不会Python也选这课,一进来就兴奋地聊着王者,仿佛这门课是王者课而不是强化学习课,但等到讲完强化学习算法之后,群里就再也没有见到他们发言。根据估计,从不会Python到完全掌握强化学习大约需要60-80小时的时间,按一周45小时的学习时间,从选这门课开始才学起其实挺难的,特别是后半段要花巨量时间来搞具体的王者AI,至少这样效果不好。当然,如果只是要水过这门二等级的课,那还是非常轻松的,只要学习远程开发,让代码跑起来,一两天后去收割成果就可以了,完全不需要深度学习知识。

(最后修改于 5 0 复制链接
匿名用户 2022夏
  • 课程难度:困难
  • 作业多少:中等
  • 给分好坏:一般
  • 收获大小:没有
  • 难度:困难
  • 作业:中等
  • 给分:一般
  • 收获:没有

这门课是以为助教博士生负责上课的。首先一门RL课,除了前三节科普了RL是什么,其他几乎所有时间都用在调实验平台,你干脆改名开悟平台使用方法得了。或者说这门课根本配不上我起的名字,因为连个像样的用户手册也没有,官方的教程视频还能是错的,问另外两个的助教稍微复杂点的操作就回复,我们没空教你们那么多linux操作,容器操作。好这我也认了,学学花几个小时也还好。但最让我生气的是问助教能不能讲讲代码说不方便讲。

 

更新:删去了情绪化的表达

(最后修改于 4 3 复制链接
mitao_cat历史总是惊人地相似(指计算之美与乐趣)
zh有一说一,是这样的,不如好好讲讲代码怎么实现的
hath回复 @zh: 代码内容还是很多的,包括模型、对游戏信息的处理、多线程通信,而且不少包在sail包里面,估计讲不完
立即登录,说说你的看法
flxgdsb 2022夏
  • 课程难度:简单
  • 作业多少:很少
  • 给分好坏:超好
  • 收获大小:很多
  • 难度:简单
  • 作业:很少
  • 给分:超好
  • 收获:很多

本来打算夏季学期卷两个学分选的这门课,一直也对RL比较感兴趣。周老师第一节课讲的介绍,后面课都是赵鉴博士带的,考虑到各个年级的同学都有,老师没有讲太难的东西,最后也改成了二等级制,只是简单科普了一下RL相关的知识,还顺便吐槽了一下他的研究生生涯和职业规划,这部分对我以后读研究生的选择有很大帮助。非常感谢赵鉴博士分享心路历程。

腾讯答应给我们算力,128核CPU和一张A100显卡,然鹅大部分本科生都不太熟悉远程开发的操作流程,docker使用之类的东西,大部分同学都卡在拉镜像和上传模型压缩包这种事情上。另一个很难受的点是不能在已经训练出来的模型基础上修改代码继续训练。

总之,选一下这门课了解一下强化学习还是很好的。

1 0 复制链接
Ronin 2022夏
  • 课程难度:中等
  • 作业多少:很少
  • 给分好坏:超好
  • 收获大小:一般
  • 难度:中等
  • 作业:很少
  • 给分:超好
  • 收获:一般

没相关基础的话不建议去选,前置课程应该有一定的要求,不建议低年级同学选(如果是相关大佬除外),在暑假这个四星期的时间说实话有点短

0 0 复制链接
匿名用户 2022夏
  • 课程难度:简单
  • 作业多少:很少
  • 给分好坏:超好
  • 收获大小:没有
  • 难度:简单
  • 作业:很少
  • 给分:超好
  • 收获:没有

毫无收获,就和你大一去听讲座差不多,实践也没动过,开悟平台都没登录过。

0 0 复制链接
小石头 2022夏
  • 课程难度:简单
  • 作业多少:很少
  • 给分好坏:超好
  • 收获大小:一般
  • 难度:简单
  • 作业:很少
  • 给分:超好
  • 收获:一般

这门课原本是五等级给分,后面因为好多同学没有深度学习基础就改成二等级制了,总而言之这门课要是想学到东西的话是需要有深度学习基础的,虽然课程是讲的强化学习,但是只需要了解一些基础概念就可以了,有基础可以很快上手,没有的话可能连在哪里改参数都不清楚,代码也看不太懂。 但这门课就算什么都不懂也可以过,能了解docker的一些运用还是很有意义的,按部就班来也可以取得不错的效果。

0 0 复制链接
OG 2022夏
  • 课程难度:困难
  • 作业多少:很少
  • 给分好坏:超好
  • 收获大小:很多
  • 难度:困难
  • 作业:很少
  • 给分:超好
  • 收获:很多

感谢腾讯爸爸的赞助,通过这门课学了很多东西(很大一部分跟深度学习无关orz),比如说linux操作,远程连接,各种计算机异常处理,还有学会了打王者。助教很有趣,就是课门槛太高了,课时也少,虽然会点python,但最后也没用上。还有就是资源给的太大所以只能分组合作,难免有人摸鱼,幸好最后改成两分制了,不然真的难崩。希望之后训练对象能改成贪吃蛇之类的简单小游戏,教教亲自上手写代码,不然光讲原理还真不能学到什么。对深度学习方面感兴趣的同学很推荐选,总体还是很有趣的,被游戏吸引来的建议快跑,这跟自己打游戏的爽点完全两码事

0 0 复制链接
匿名用户 2022夏
  • 课程难度:中等
  • 作业多少:很少
  • 给分好坏:超好
  • 收获大小:一般
  • 难度:中等
  • 作业:很少
  • 给分:超好
  • 收获:一般

可以了解RL的基本框架以及远程开发的的一些知识,变成两分制后开始摆烂,没有尝试去改腾讯给的代码,如果可以设置一些奖励像之前同学说的点券之类的和排名挂钩或许会激发同学们的激情去读读代码改改代码什么的,但课时实在有限,也不适合低年级学生修读,介绍policy based RL时,推导出了policy gradient,学生们还云里雾里,因为大部分人连梯度下降都不知道。 虽然是和腾讯合作开的课,但我感觉如果能够脱离腾讯,不打王者荣耀,自己动手写个打打Atari小游戏的程序或许收获会更大,用自己电脑算力也足够跑到模型收敛。

0 0 复制链接
dycalo 2022夏
  • 课程难度:中等
  • 作业多少:很少
  • 给分好坏:超好
  • 收获大小:一般
  • 难度:中等
  • 作业:很少
  • 给分:超好
  • 收获:一般

除开周老师上的第一节课,这门课大部分内容由赵鉴博士带领大家学习。

上完课程后,大家基本上能对强化学习有一个大致的了解,并且通过开悟平台实战(虽然大部分时间应该花在环境部署上面了)。

有python和深度学习基础的同学会有优势。当然这门课后面改成了两分制,也是凑学分的优秀选择。

上课的老师都很亲和,讲课也穿插着有意思的经验分享,对同学日后的学习规划也很有指导意义。

虽然也会有一些不足之处,比如官方给的指导有错、科普式的课程内容,看不懂群里大佬的发言导致自信受挫等等,但考虑到这是一门暑期课程,在时间并不充裕甚至可以说是吃紧的情况下,这门课可以算得上优秀。btw,腾讯给每支队伍提供了万元级别的算力支持,选到就是赚到。

推荐大家选修。

0 0 复制链接
  • 课程难度:简单
  • 作业多少:很少
  • 给分好坏:超好
  • 收获大小:很多
  • 难度:简单
  • 作业:很少
  • 给分:超好
  • 收获:很多

这节课主要是了解强化学习,熟悉云端跑代码的环境搭配。

前几节课是助教讲课,感觉蛮不错的,把很多知识点都串起来了,对强化学习也有了一个大致的框架。后面几节课就是搭配环境,尝试在云端跑跑代码。

代码助教是直接给出来了,不过代码部分大家貌似都不敢改(听说还是有大佬去尝试了?),基本上在云端能跑起来就万事大吉了。

总体来说还是可以的,毕竟腾讯给钱了嘛(这门课的云端算力是腾讯提供的),要是能发发点券啊什么的就更好了~

 

0 0 复制链接

周文罡

教师主页: 戳这里

其他老师的「AI博弈方法实践」课

周文罡老师的其他课

数字图像处理B 7.6 (5) 2023春 2022春...
数字图像分析 6.6 (14) 2024春 2023秋...
数字图像分析 2020秋 2020春...
统计学习 2016秋
信息检索 2016夏 2015秋