选课类别:计划 | 教学类型:理论课 |
课程类别:本科计划内课程 | 开课单位:电子工程与信息科学系 |
课程层次:专业核心 | 学分:4.0 |
《机器学习》课的期中期末考试难度较大,题量大且灵活。期中考试题目较难,期末考试虽然题量同样巨大,但多为作业题和讲义内容,难度适中,不过仍需花时间理解和掌握。有同学反映期末考试卷面很长,时间紧张,但出题符合课程内容,没有偏题。
给分整体较好,王杰老师在调分方面体现了宽容,特别是期末考试后调分力度很大,优秀率较高。有同学提到卷面成绩较低,但最终总评成绩不错,显然在得分上有所调控,体现出对学生的理解和宽容。
作业量大且难度高,每次作业题目较多,其中包括大量数学证明题,这对于数理基础薄弱的同学挑战很大。很多作业题需要额外查阅资料完成,平均需要花费数小时到数天不等。一些编程作业例如手写神经网络大作业也要求较高,不允许直接使用高级库,提高了编程难度。虽然作业难度高,但通过认真完成这些作业,学生能显著提升理论理解和实践能力。
王杰老师的教学水平非常高,课程设计非常用心,从课件、作业到课堂讲解都非常精细,深度和广度兼顾。课堂内容逻辑清晰,理论部分讲解深入,板书和PPT配合精良,有条理地引导学生理解复杂的机器学习概念。但是由于课程内容复杂,数学理论要求高,有时会带给学生较大压力。
课程内容包括线性回归、逻辑回归、贝叶斯分类器、决策树、支持向量机、神经网络、PCA以及强化学习等。前半部分聚焦于监督学习和凸优化,包括大量数学推导,强调理论基础;后半部分逐渐转向深度学习和强化学习,内容相对易于上手。课程整体难度大,内容覆盖面广,但每个模块都有详细的推导和理论背景讲解,有助于学生打下扎实的理论基础。
总体而言,王杰老师的《机器学习》课程强调理论基础,加深了学生对算法本质的理解。作业和考试虽然难度大,但通过认真学习和完成任务,学生能显著提高数理基础和机器学习算法理解。给分上宽松,确保学生能通过努力获得较高分数。非常适合对机器学习有浓厚兴趣并希望深入理解其理论基础的同学,尤其是数理基础较好的学生。对于时间有限或仅希望了解机器学习应用的同学,这门课程可能挑战较大。
(补档)
暑假里考虑到要腆脸向王杰老师组投简历,就临时把评价隐藏了,完全自愿,牢骚发过也就删了。欢迎同学们选报王杰老师的机器学习,这是西区最硬核的课程之一。
你可能感兴趣的帖子(均摘自知乎):
你可能感兴趣的代码(均来自github):
你可能感兴趣的其他网站:
大三路人,大二结束的时候希望未来能够从事机器学习方面的研究。我在大三下学期自学看过课程的讲义(没有选课),能感觉到王老师是在努力将这门课讲明白,真的希望同学们入门机器学习领域的。大三秋季正是一些同学开始接触科研的时间,回想起来如果我大三上学期能够抓住选课机会,那么在完成机器学习方向的科研任务的时候会更加得心应手,而不是在一无所知的状态下浪费时间吧。无论是对机器学习方向有兴趣的同学,还是应数和统计方向的同学,强烈建议通过选这门课来打好自己的理论基础和实践能力。
我就从一个学习者的角度,抛开应试的成分谈谈课程的学习。先梳理一下课程的内容吧:
为人不识陈近南,做了英雄也枉然:
做AI方向不了解ML,即便门门4.3也是枉然!强推这门课作为入门选择。个人认为课程的导论部分非常考验讲课老师的功力,能看出老师对这个领域整体理解、动向关注和讲课能力。本课程这部分课件内容非常非常丰富。从人工智能的概述到机器学习总体分类,每一页的PPT都做得很精致,包含了大量的素材,几乎每一页都有恰到好处的配图,让人看着非常舒服。
弄梅骑竹嬉游日,门户初相识
有监督学习的基本任务是分类和回归。课程正式内容从线性回归和贝叶斯回归开始,用一套严谨的数学语言介绍了在线性回归和贝叶斯回归角度下回归问题的建模和求解。这一部分的数学推导比较基本,彻底理解是很有必要的。
咬定青山不放松,立根原在破岩中
从最基本的数学分析知识开始,到凸集和分离定理,再到凸函数和次微分,进入到凸优化的领域。这部分学起来可能比较枯燥痛苦,但学完会觉得学的很扎实,一步一个脚印。这部分的作业值得吹爆,认真做完一定很有收获!有很多数学分析、凸优化的标准内容,也有课上没有涉及但也很重要的点。可以看出老师和助教对凸优化的把握还是很老辣的。
千淘万漉虽辛苦,吹尽狂沙始到金
个人认为凸优化算法是这门课的第一个高潮!虽然凸优化上面安排的课时相比于数院和管院的优化类课程不算多,但是安排还是很紧凑的。之前我对凸优化有一定的了解,讲义里一个多月的时间从点集拓扑开到shrinkage-operator和ISTA,看完直呼过瘾。这部分的证明可能对于不是数学专业的同学来说比较难消化,可非常经典。特别是ISTA收敛性的证明,类似的思路在优化方向经常被用到,强烈建议好好理解。
春风得意马蹄疾,一日看尽长安花
越过了凸优化这座大山,课程的车速加快,集中介绍传统有监督学习的方法。贝叶斯分类器、决策树、逻辑回归、SGD和支持向量机等一一登场,逐渐迎来课程第二个高潮。由于课程安排循序渐进,在难度加大的情况下,这部分的内容并不是那么难上手,很多结论是建立在之前的内容上。同时,学习这一部分的内容时,不能迷失在数学推导里。这些机器学习方法很多是建立在实际问题上的,学习的同时要注意理解这些方法是怎么来的。要弄明白需要完成一件什么任务、有什么条件、问题是如何建模的;解决问题最原始的想法是什么、实施想法过程中遇到什么困境、如何解决这些困境。
柳暗花明又一村,千树万树梨花开
课程的又一高潮。在有监督学习的范围内,从传统的机器学习方法到深度学习方法。一般教科书对于卷积神经网络如何提取特征的描述非常模糊,这门课用一个具体的手写数字“7”识别的例子,真的把卷积神经网络学习特征模板的原理讲的清清楚楚。
长风破浪会有时,直挂云帆济沧海
强化学习是监督学习和无监督学习之外的一种新的机器学习范式。这部分用一个大白走迷宫的例子,深入浅出介绍强化学习的基本概念。课程主页上的大作业也是用强化学习方法训练一个玩Artari游戏的AI。
到了大三逐渐明白,上课应该关注的不仅仅是授课内容,在听课的过程中我们可以观察到老师的科研作风态度、研究关注的taste、课程逻辑把握和讲义的写作等方面,这些都值得我们用心学习。没有在现场听过王老师的机器学习课算是一种遗憾吧,下学期一定会补上。大三同学们可以大胆选课呀!
我期待的机器学习课,是课上老师讲机器学习算法,课后布置给了充分提示的代码和书面作业,学期结束后能掌握一些机器学习算法并能用代码实现的课程。然而王老师更倾向于打基础,一直在学泛函和凸优化,布置的project却是手写神经网络。导致我现在完全没理解学了这些有什么用,西瓜书上的算法基本都看不懂,看懂了也觉得就是数学公式,对于如何用代码实现,能解决什么实际问题更是完全没有思路。。。。感觉像是报了足球课,结果一学期下来学了脚尖传球,脚后跟传球,脚背传球,基本功非常扎实,却一场比赛都没踢过,然后老师让我们去踢校队,踢赢了才给分。
相关文章和视频:
LASSO和近端梯度法:最优化计算方法7.1节
拉格朗日对偶:王木头的视频
KKT条件:Karush-Kuhn-Tucker (KKT)条件
SVD、PCA相关:如何从直觉内核上理解奇异值分解
强化学习:强化学习路线推荐及资料整理、王树森深度强化学习视频(可以只看前4P)、王树森讲义(github)
课程:人工智能专业唯一一门有用的专业课(悲。课程属于导论性质,有一定难度,但并不是特别难,可能更适合在大二开设。讲义很好,我基本没听课。
作业:在线性代数方面,可提前学习MIT线性代数和《矩阵论》(矩阵论·第2版 (方保镕,周继东,李医民) (Z-Library).pdf)的前半部分,最起码要搞清楚列空间、零空间、行空间、左零空间以及它们之间的关系。做作业时用好StackExchange网站。
大作业:建议提前学习《深度学习入门2:自制框架》(深度学习入门2:自制框架_去水印版.pdf),这是我23年阅读体验最爽的技术类书籍。
考试:期中的难度较大,一些难题需要用到各种技巧,有点像高中数学中选择和填空的难题。期末试题难度较小且答题时间充足。
1.王杰老师备课是真的认真,从ppt,作业,每次的答案,小测题还有在钉钉群里跟学生讨论问题,我认为就冲这一点,最开始那个攻击王老师的帖子(已删除)就是十分不应该的。尤其考虑到王杰老师去年刚拿了青千回国,在科研压力比较大的同时,还能对授课这件事这么上心,就更显得难能可贵了。
2.这门课的任务量确实和2.5学分+大四选修课(ai班必修)的定位严重不符。其实作业量倒也不算大,问题是全都不会做...
3.我也觉得前半部分凸优化那块太理论了,不过其实我还是挺愿意认真的学一遍的,如果不是*友善度*一学期要上这么多乱七八糟P用没有的课的话。
4.接第三条,我的理解是凸优化那部分对于即使将来不去研究ML理论的人也是需要了解的,手写神经网络更是很必要的。问题是ai班的课表里貌似没有哪门课正经的讲一遍传统的ML算法,模式识别那门课讲了一小部分,不过那课的授课质量实在让人一言难尽,而ai导论那门课是讲逻辑推理;在这种之前没学过传统ML算法的情况下,把凸优化这部分放在大四的必修课就显得不是很友好了。
5.之前那个帖子(已删除)把王杰老师和物院著名杀手陈仙辉院士放在一起比较,我倒是觉得王老师身上比较有传承下来的那种老一辈科大教授的精神。当然了,一方面现在学制五改四但是尤其是信息口的知识却越来越多,上世纪80,90年代科大“杀手”的标准放在现在的话确实有点要求过高;另一方面,研究和学习上的短平快实在算不上什么错事,毕竟时代不同了。
6.毕竟ai班刚开第二年,王杰老师也刚回到科大,作为学生当然也有很多苦衷。罗老师那句话怎么说来着,李姐万岁吧。
考完试补充:
7.期末考试卷有26页,考试时间2个半小时后又延长至3个小时,而我交卷时候还有一整道大题甚至还没来得及看。
8.不过说起来考试题还是有好多送分的,光CNN就20分了。复习的也基本全能考到,不会出现复习的没考考的没复习的情况,唯一的例外是RNN的反向传播。考试之前我甚至能背下来RNN正向传播公式的顺序,以及反向传播里面的每一个角标。当然,我现在已经忘了。
9.这门课四项任务:小测+作业+期末考试+大作业,我感觉取其中两项就足够2.5学分的标准了。我身处大四,期末复习的时候都很难忍住不吐槽这门课为啥这么多事情,遑论大三了。
10.这门课的优点在于学到的远不止2.5学分,缺点在于任务量也远不止2.5学分。现在考完试之后回头想想,还是挺庆幸没有中途退课的。不过这也是因为我把退课机会用在其他两门课上了。
以上。
最后:
王老师还是给调分了的,挂科率从23%调成了8%。
作为与这门课连续“纠缠”了两个学期(21春选课的学生、21秋助教)的学生,我也来贡献一个回答。和很多回答所说的一样,这门课从王老师到助教,再到授课内容和认真听下来的学生,就是两个字——硬核。为了保证讲义、作业、习题课、考试等各方面的质量,王老师倾注了大量的心血,每一届的助教也都投入了极多的精力和时间(应该是同学们的三四倍不止)。由于本课程的学分、必修选课人数偶尔会改变,所以学校设置的助教指标也是不固定的。但无论学校给了多少助教岗位,王老师也都会保证每学期至少四位助教。出于希望本课程越开越好,同学们的选课体验越来越好的期待,我写了这个评课回答,来与大家分享我对本课程的看法,以及我对本课程的正确打开方式的理解,供大家参考。
0. 先放两个链接:
(1)课程主页:EE3001 - Machine Learning (Fall 2021) | MIRA Lab。往年的课程内容、讲义和作业都可以在课程主页上看到。
(2)B站上的课程介绍视频:少年班课程介绍_哔哩哔哩_bilibili。包含学科背景、授课内容介绍、课程特点介绍等等。
1. 关于授课内容:
(1)课程内容主要分为有监督学习、计算学习理论、无监督学习和强化学习这几个模块。其中有监督学习应该算是最重点的模块,既包含了大部分最重要的传统机器学习算法,也包含了很多凸优化理论。
(2)这门课的一大特点,就是重视理论基础。所有的算法,都是从要解决的问题出发,到做了哪些假设,到公式的推导,再到最终的结果,这些步骤都是一步一步在黑板上写出来的。这样的讲课逻辑,目的是能够让学生真正能够学懂算法,而不是仅仅了解而已。一些同学可能认为学机器学习只要听说了一些算法,会调包就行。往大了说,这样学根本没有触碰到机器学习的灵魂。往小了说,正如一些同学提到的那样,“当保研出去参加各种面试的时候,只能说万分感谢这门课”,如果今后参加某个相关的面试,和面试官聊到某个机器学习算法,你是真懂还是假懂,真的是很容易问出来的。再往小了说,如果学生对底层的算法思想不了解,能知道什么时候适用什么算法吗?很可能连调包都调不对…… 所以不要再觉得机器学习算法会调包就行,掌握底层的算法原理是非常重要的。也希望今后学习这门课的同学能够抱着把算法学懂的目的。
(3)很多同学感到前半个学期凸优化理论这部分很难。凸优化在机器学习中有多重要,我在这里就不多赘述了。客观来讲,这部分内容比较重视理论基础,对于非数院的同学而言,如果之前不太习惯严谨的理论推导,可能确实有一定难度。也正是考虑到这一点,课程特意设置了课时,用于回顾线性代数和数学分析等一些基础的数学知识,只要用心,学会这些内容还是没那么难的。(说实话,春季学期作为学生的我学这部分的时候,会觉得内容比较硬核,但要说有多难还真谈不上。)
(4)如果你认真听课,其实不难发现,科大每位用心讲课的老师,授课内容中或多或少都会反映出其在自己的科研领域中的独特体会。比如这门课程中有一些sparse learning相关的内容。王老师在这个领域强到什么地步呢——之前做过不少教科书级别的工作;我读过的近年做sparse learning的文章,每一篇都引用过王老师的工作,甚至有些一次就引了四五篇。我觉得在科大上了四年课,能够听到一些这样的内容才是最值的。
2. 关于作业:
(1)作业题大部分都是王老师亲自出的,有一部分是我们几位助教一起出的,王老师也会一题一题检查并修改。而且题目和课程内容一样每年会有更新。所有作业题都围绕一个核心原则,就是要让学生能够真正理解机器学习算法,并且掌握这些机器学习方法背后的“元知识”。
(2)日常作业的话有理论题和一些小规模的编程题。理论部分的题,有一些是经典的结论,有一些是算法的延申讨论,还有一些是从具体的科研问题中抽象出来的。个别题对非数学系的学生而言可能确实有一定难度,但是只要认真思考和完成,肯定是很有收获的。编程的题,有一些是让实现某个经典算法,有一些是让观察某种现象,还有一些我们在科研中踩过的坑(泪),这些题助教们都一行一行实现过一遍,确认代码量不太大才布置的,只要代码能力还过得去,应该都还比较简单。每一道作业题都是经过精心设计的,都是想让学生通过这道题掌握背后的某个知识,以及真正掌握算法。
(3)一些学生反映了作业难度和作业量的问题之后,我们在一些有难度的题后面加了提示,并且在作业里设置了一些选做题。(选做题也一样都是精心设计的呢)之后的作业量我觉得应该真不算多了。但是这门课并不是每周都布置作业,频率大约是两周一次,但总有同学喜欢拖到最后一天再写,那肯定是写不完的……所有的作业题助教也都会在习题课上进行讲解,这里还想说一句,如果哪些题有助教没讲清楚的地方也希望同学们在习题课上及时提出。
(4)每学期会有一个分组完成的大作业。21春季学期是让不调包完成一个NLP的分类任务(我是手写了一个神经网络,不过有同学用了朴素贝叶斯好像效果也还行),秋季学期是让完成一个DQN算法(提供了两个选择:手写网络实现状态引擎输入,或调包实现图像输入)。说实话我感觉对于每个做机器学习,尤其是做DL的同学来说,没有手写过一次神经网络,科研生涯都是不完整的。以我个人的经历而言,了解网络内部反向传播的机制,在实际应用以及调参debug的过程中真的帮助太大了。我本科是数学系的,也没怎么练过代码,但在之后的科研中我感觉自己debug的能力至少不算差,我觉得这很大程度上要归功于我在21年春季学期的大作业中完完整整实现过一个CNN。而且客观讲,手写神经网络听起来麻烦,只要真的理解了原理,其实也没那么难。总之这个大作业如果认真完成的话收获肯定是很大的。
3. 关于考试和给分:
(1)首先,考试的目的很明确:是为了考察学生的理解,而不是背诵默写。王老师也说了他出题的原则:让能背诵的学生考一个还不错的分数,但是考不了高分。
(2)先说说我作为学生参加的21春季学期的期末考试。一些回答说要把所有讲义上的内容背下来。其实当时期末那阵子因为在忙各种事情,我几乎只复习了几个小时就去考试了(当然就算复习了估计我也背不下来讲义)……基本上大部分题目都是考场上手推的,虽然时间可能有点紧,但是最终结果也还不错。所以说只有会背才能考高分肯定是不对的。
(3)再说说我作为助教对秋季学期考试的看法。这学期的考试的两个特点要比春季学期明显很多:1) 首先是题目很灵活,但都不难。只要理解了课上讲的算法,完全不需要背诵,也可以比较轻松地做出来。2) 其次是不少题目其实是有很具体的科研问题作为背景的。 总之我认为这学期的题目水平还是相当高的。王老师也说以后出题也都会出这种难度不大但考察理解的题,还是希望选课的同学都能把内容掌握吃透,而不是背诵默写。
(4)最后是给分,其实这是个本来最不应该关注,但实际上大家都最关注的话题。优秀率应该是给满了。相信上过课的同学回忆一下自己卷子做成啥样,再想想最后的给分,一定不会觉得在给分上被亏待了……虽然我不希望大家因为某门课给分好而去选课,但还是要说大家如果对机器学习感兴趣,欢迎来选这门课,给分肯定会让你满意。
科大本科生涯遇过最硬核的课,当初写作业的时候天天骂骂咧咧,甚至考完试,王杰老师给我奶上了90,我依然骂骂咧咧,因为感觉付出和回报完全不成正比,但当保研出去参加各种面试的时候,只能说万分感谢这门课,帮我复习了之前学的那么多数学课,面试问到机器学习的时候完全不怵。感谢打了个不错的底子。
RL学习最优策略,其余部分均转化为寻找一个函数的极值点,也叫优化,NN拟合函数也是使得损失函数最小,一样的。
对于每一个优化问题,如老师所述,我们关心的是解的存在性,唯一性,连续性(未讨论),
解的存在性判定是一个非常困难的问题,这门课中学到的工具有1)连续函数在紧致集上有极值;2)对有约束问题的强对偶性(未证明)——连续凸函数在多面体空间中有几何乘子(Lagrange对偶问题的解=原问题的解),但未必有最优解(可能不在定义域内或无法取得);二次型+线性函数在多面体空间中有几何乘子且可取得最优解。
其他的,如闭区域上强凸可导函数必有唯一最优解,就是1)(闭+连续->有极值点,强凸反证易得解唯一,
解的唯一性一般用反证法结合其他,如强凸函数的性质
至于如何寻找最优解,最朴素的是梯度下降,
对无约束问题,课程介绍了凸函数的ISTA(Iterative-Shrinkage-Thresholding- Algorithm)——即利用凸函数的Lipschitz连续性,将寻找两个未知凸函数的最优解转化为一个凸函数的最优解+一个二次函数的解,有效性由凸函数的性质保证;
对回归问题,课程介绍了SGD方法(升级版),利用凸函数的Lipschitz连续性和强凸函数的性质(这俩得出来的不等式形式相同,不等号恰好相反)保证有效性,这里的定义epsilon_k要看清,才能读懂推导;
对于有约束问题,课程用Lagrange对偶法,对偶问题解的有效性有直观的几何解释,对偶解有效要求满足complement Slackness(这个好像叫KTT?),
在soft-margin SVM问题,对偶解的范围与空间中样本点和分割、支持平面的关系相对应;
然后将以上应用,
针对ML的分类任务,若样本的自变量离散,可用DT或Naive Bayes;若样本的自变量连续,用Logistic回归(其实也可以用回归树,不了解);
课程没讲ML的聚类(彭老师的大数据算法的第四部分详尽地介绍多种聚类,忘光了,童鞋们可作为补充)和标注
视线转到样本,PCA是无监督学习数据降维而保持主要特征的方法,
NN中,Backtrack算梯度,若是用矩阵的点积表示,我还是看不懂~~
RL中,Bellman方程讨论了每个状态的长远收益,Plan可以直接学习V,也可以先任取两个策略,利用Bellman方程得V,由此在st选出新的策略pi(st)......
本课程另一个重要的收获是给定问题,将假设表示成样本概率(建模?)
1)线性回归中,假设Y=WX+epsilon~N(0,epsilon),请表示出样本的MLE
2)在邮件分类问题中,用贝叶斯准则后MLE估计,如何将X的各特征概率转化
3)在logistic回归中,假设P(X|Y=0)~N(mu_i,epsilon_i),试表示出样本的MLE,
其他杂七杂八的还包括Multi-armed Bandit的行为选择(退火,Boltzman机,忘光了,请帮采集指正,谢谢dalao),邻回归,
还有所有凸函数(恒>=0)问题(如logstic问题)若是加上了一个自变量的二阶范数,必有解,任取一个点,函数值为T,则自变量的范数必须<=T^0.5,转为闭区域,紧致集连续函数必有双极值,故必有解
这门课收获很多,捡起来以前学过的数学,学一点点深的数学,王老师有独到的理解,授课非常细致深入,
这门课的凸集的性质、凸函数的子差分、分类问题、分割平面、支持平面从坐标系上看都很直观,自然强调数形结合。
比如线性回归的解可以看作y在X形成的子空间的投影,
判断凸函数(epigrahph)时举的各种很典型的例子,
以及之前课堂上随机抛出的小问题,
介绍Naive Beyas分类器2种简化的动机,
SVM最优解的2种几何意义(从定义域看,固定乘数视为切平面最低切点,对偶问题\(\alpha_i\)通过SMO方法迭代取得),
尤其是yang学长,在繁重的科研任务之下,还要负责讲课(math_review),给我们出质量超级高的作业题和期中考,还有精彩的答疑(yang学长作为丘赛优胜和数竞决赛dl,讲解答案的时候不局限于答案本身,关于拓扑入门给了不少我这种采集认为很独特的视角,作为一个计科采集也能有机会摸到一点数学),答疑也非常耐心,非常nice;
统计了一下,Huang助教应该是讲课最多的(NN+RL+开始的实验课+习题课常客),但Huang助教表示这些基础概念的讲解不能展现其良好的统计分析水准;
白助教讲解CNN的损失函数时,分享了他在MSE和MAE中选择MAE作为损失函数的原因,我觉得这些经验很有效和宝贵;
还有低调的吕助教,问就是在认真地批改作业,还有习题课讲解hhh
最后,希望王老师和各位助教gg们能高抬贵手,让采集们过个好年~(期末算错了不少😢😢)
出分了,太菜了被同学们卷烂了,擦线4.0,有点难过,还行吧
期末基本是计算题+作业题+若干理解性的判断题+RL/DL算法描述题,
第二题线性回归后两问没读懂(好像挺难的),后面也没时间看了,
最后一题Bellman方程矩阵形式求逆求错(连着后面一问4+4=8分),方程形式也代错概率了(-2),考前也没试过V可以通过奖励直接列方程计算(以为非要代矩阵形式方程,知道的话可以简化不少,没读懂讲义,卒),随机过程也学得不好,多少有点后遗症,
作业题出现的拉格朗日乘子和解的存在性的两个反例自然也没去记住-2,
还有二元的logistic回归=二维平面上的线性分类(✓),也判错了-2,这个是在做实验的时候意识到的,
其他做出来了,虽然有些平时写出来的作业题考场上都还要临时推导一次,没背住
再次感谢这门课提醒我 薄弱的数学基本功+对内容 的偏差 ~~
这门课说起来是18周,但只上了15周的正课,这学期砍去了贝叶斯回归的内容,精华在于讲义和配套的作业
讲课:王老师上课会带着我们阅读一遍讲义,并给出一些原因、几何意义、拓展,即使讲得比较随意,也给了我这种采集很多启发,讲义是科大课程里质量最高的,推荐把讲义打印出来,认真听讲做笔记,尤其是前半学期的凸优化部分
助教:确实是很辛苦,
作业:作业题相比原版删去了不少难题,但几乎都是对讲义内容的进一步提问,可以深化理解,其实可以出得更多更难点
但非常喜欢举反例,hw6 ex2 一道题8小问举了7问反例,挺糟心的
作业题也不公布答案,只能去上习题课,但是难的证明题考试基本都没出现,影响不大,习题课去的话可以保证作业原题能背出来,
考试:期中基本没有原题,考察了求凸函数的偏导、凸性判断的常见方法这些的应用,还有若干挺有意思的证明题,基本放空
期末=作业题+计算题(但第二题后两问我还没读懂,可能挺难的?),背诵得熟练的童鞋们都提前交卷了
实验:1. 学了表格数据的读取和预处理,2. 按照 机器学习实战.pdf 实现相关算法的时候,对理解是有帮助的
给分:不错
总之,“ 这门课是中科大为数不多真的想让你弄懂一些东西的课 ”,这倒是。
希望我将来回顾这门课的时候,
还能够记得 \(f(\vec v)=sup\{\langle \vec x,\vec v\rangle,\vec x\in C\}\)是凸函数(此时\(\vec v\)是\(\vec x\)在集合C上的normal vector,但怎么证咧),
还能够记得集合上的点是沿凸函数的子梯度正方向上的点在这个集合上的投影,
还能够记得如何用lagrange对偶方法求Primal问题的几何意义~
可能最后再更新一波,有一个也许对不少同学很重要的问题也许一直都没有得到回答——我为什么要学习这些东西?
对于有部分数学积累或背景的同学,一个浅显的答案是大部分人数学不是很好,学这些东西能体现出自己的优越感;当我说我喜欢概率论,喜欢随机过程的时候,我喜欢的到底是什么,答案可能是过程简洁,推导灵活,但这些东西并没有用,
再多扯一点,以前学数竞的时候,那些人喜欢吹什么"为了人类心智的荣耀",但我觉得不要用你代表人类吧,当你看见食不果腹,当你看见没有你那样优越条件的人在生活线上苦苦挣扎的时候,你跟他们说虽然你什么都不能为他们做,但你是“为了人类心智的荣耀”,你觉得好笑吗
习题课上,我问刘助教,现在类似的方向里到处都是矩阵,那我是不是应该再去学一门矩阵论,刘助教的回答是这些东西没有用。
在未来的研究或者工作中,有用,是一个至关重要的标准,自私点讲,它决定着个人的收益,如果相比于你的竞争者你不能体现出你的有用,没有HR会优先雇佣你;另一方面,我们学习这些课程,也不应该只是为了自己的喜好,要学以致用,创造社会价值,反过来讲,当同学大佬们的工作能够创造出社会价值的时候,我们才能有更多的成就感和自豪感,进而激发我们前进的动力,相互促进。
这一点在科大尤为明显,相信科大的同学们,在学习大物实验、学习力学电磁学、光学原子物理或量子物理的时候,一定有这样的抱怨,如果一个东西对我的发展没有任何帮助,那我为什么要去学习;或者我学了很多东西,但收益甚微,我是否应该避免,我以为答案是肯定的
因为知识是学不完的
—— 避免学习那些没用的东西,学习的过程中一定要努力把这些东西用起来,产生价值,才不枉一任辛苦。
这个角度讲,刘助教大四的时候准备大数竞赛,后来去准备丘赛,或许也没有认真读相关论文或者扎实自己的代码能力来得实在。
鉴于此,王老师鼓励相关专业的同学们不要局限于算法岗,去做GPU,并且向我们展示了贵实验室的各个方向,但相关代码能力确实需要多锻炼hhh
作为21年秋季学期的选课学生,这门课的任务量是我整个学期的一半左右,但同时收获却大于我整个学期收获的一半。如果将来想要从事 AI 方向的研究,这门课是相当重要的一门课,因为可以学到很多机器学习非常底层的思想,就比如 SVM 的核心思想是为最大化间隔,以及可以使用 kernel 将 SVM 应用到非线性可分的情况下,再比如神经网络本质就是一个函数,将一个分布映射到另一个分布上,类似的思想还有很多,在这难以一一列举。(上述想法不一定完全正确哈,欢迎将来选课同学有更深理解之后来打我脸哈~)
还有一点值得提的是,对比阅读其他 AI 方向课程的 slides或 lectures,王老师的课程讲义准备得是相当用心,也是非常清晰易懂的。lectures上会将每一个定义和推导都写得非常详细,每一个 notation 也是经过反复推敲定下来的,就是为了让学生可以更加容易看懂。有什么疑问也可以和助教交流,助教都是非常 nice 的人,课程之外的一些问题也可以问哈~
我看楼上已经有对这门课程的详细介绍了,在此我就不赘述啦~
关于我上课的感受,这是我在科大听到的讲得最清晰的课之一,原因在于把每一个概念的定义和推导在黑板上推导得非常清晰,而非只是将结论放到 slides上然后让大家记住。其次是建议每次上课做好笔记,虽然课程 lectures会发到课程主页上,但课上王老师会讲很多 intuitive 的解释或理解,这些对理解深层次的意义是非常有帮助的。关于考试,期中考试当时感觉思维强度比较大,但平时对概念就有自己的思考其实也不会太难。期末出题就相对中规中矩一些,大部分只要上课听了认真复习了,基本都可以写出来。总的来说非常庆幸有机会上了机器学习这门课,在这门课上可以得到很多 insights,这些 insights 在我之后的科研当中也起到了相当重要的作用。俗话说工欲善其事必先利其器,那么这门课可以说就是教你如何使用机器学习当中的工具,以及为什么要有这样的工具产生,在产生过程中遇到了什么困难,以及最后是怎么解决的。这些 insights 对你之后发现新的工具也非常有帮助。
作为下学期的助教先来占个坑。我最近也有在准备下学期上课的 DQN lecture,准备过程中体会到了一个好的 lecture 应该是前后逻辑严密,notation 清晰易懂。我和另一位大神反复修改讲稿的逻辑和措辞,相信之前的师兄师姐也是如此。在之后的科研论文写作当中也应该注意逻辑和措辞。
心态炸了,考试的时候什么都想不起来。
太苦了!太苦了!
人间不值得!
卷面出分了,我来继续更新。
课程难度很大,西区数学之巅。
今年相比于以往,有一些变化。比如作业不再强制使用latex,当然还是要用英文写。这点还是很不错的,latex写这种证明满满、符号多多的作业时间成本太高了。
作业完全靠自己写的话,需要投入巨量时间,更惨的是投入了时间也可能做不出来。
王杰老师的讲义非常好,短小精悍。由于时间紧张,我差不多只花了两天时间预习这门课程,压力巨大,以前备考从来没有这么累过。但是很可惜,没来得及复习作业题,导致期末考试异常糟糕。期末考试总共3h,但是题量巨大,总分110,反正我最后一题连题目都没去看。超过一半都是证明题,分值2、3、5、6不等。没来得及复习作业的我考场上脑子成了一团浆糊,题题都似曾相识,可惜就是想不起来。或许再多给一天,我就能杀穿这张卷子吧。考试状态非常糟,一度以为自己交了半张白卷,但最后出分比预估高了20分。显然,除了过度自我贬低外,助教在改卷上也是奶力惊人!庆幸的是,自己动笔的题目基本全对,GD收敛性那题甚至拿了满分。
但相比其他课程,成绩还是不好,但我个人已经很满意了!
题目我就不重复回忆,楼上肖哥已经给出了完整的回忆版,这里再补充一点:还考了个5分的CNN求导题,完全送分的那种。
自以为数学已经很扎实了,学了这门课才明白什么是扎实。这门课收获超乎想象,理论、实践都学到了很多。对于想要从事AI方面的同学,或者对AI感兴趣的同学,强烈推荐这门课,坚持下去,或许拿不到一个好的成绩,但绝对不枉此行!(至少在机器学习方面我已经很能吹了)
很庆幸,我有一位大佬学长带我飞,深表感激,学长带我飞好久了!还要感谢超强的mm学弟,在作业、实验交流上得到了很多帮助,极大提升了课程体验。
以及感谢助教,问问题都能及时得到回答,人非常nice!
总评估计没那么快出,大作业大家都还没交,希望能感受一波王杰老师的奶力!
出分了,不知道该怎么来吹一波王杰老师奶力......
这门课不适合给信院大三的学生上,课程负担太重。
作业:作业几乎就是上课没讲的东西,然后留作作业。一般是某个定理或着观察出来的结论的证明。需要非常高超深厚的分析和代数基础!
大作业:不准用torch.nn的库就离谱。手写神经网络,手写梯度下降。
上课:有时候会抛出一些问题,一定要学生回答,(有一次足足等了快1分钟);后来就直接对着花名册点了(不过没有出勤分)。自己站起来回答问题回答会被他逼着继续问,如果没有答到点上的话。记得回答问题一定要站起来,大点声!
考试:
考3个小时,9道题,每个题3、4个小问;英文作答。
第一题:判断题。一般出自讲义、作业上的结论或者讲义上的"Question"
第二题:Linear Regression. w的推导,Least Squares和Maximum Likelihood Estimation都要会;注意第一章作业关于矩阵和Column Space 的一些结论。
第三题:GD. 收敛性证明(建议背下来)
第四题:Naive Bayes and Decision Tree. 给一个表格,有3个attributes(Income, Age, Marraige)和对应的class;分别用Naive Bayes and Decision Tree做分类任务。
第五题:Logistic Regression. 线性可分,解不存在的证明;对偶问题的书写。
第六题:SGD. E[F(w_k+1) - F(w_k)] = -(blabla) + var[g(w_k)] 的证明;为什么step可以设置得越来越小?
第七题:SVM. 两类约束不一样但解集一样的证明;解的存在性证明;slack variable + regulation term的解存在性证明;对偶问题里alpha不同取值对应原问题的约束等号、不等号怎么取。
第八题:PCA. 投影矩阵的证明;最优解的推导
第九题:Q-learning in MDP. 作业原题,Q_k收敛性证明;(Q_k单增的证明还是最优性证明)
建议:习题课一定要认真听,答案一定要记下来,拍下来也好,考前背一背!!!讲义也要好好看(bei)一看(bei),考试几乎都是原题。(即使是原题,不会的还是不会)
给个不同角度的评价,仅供参考。这课我感觉就是又难又累,最后还拉成绩,也没啥收获。可能其他评价的同学都很牛逼吧,反正我的体验就是,为了这课花了不知道多少时间写作业和复习,最后考试成绩也不咋地,课程内容考完过一段时间也都忘了。我又不走机器学习理论方向。
学这门课感觉像是喉咙被塞了两块大馒头,吐也吐不掉,咽也咽不下去,也不能怪馒头太大,只能怪喉咙太小。
期末考试题量巨大,考试时间三个半小时,难度倒没有想象中的那么高。只要把讲义看明白,定理证明背熟,作业题好好看看大概还是能考个不错的分数的罢。
来科大上过的最有收获的课程。
课程内容:今年课程主要讲了线性回归、逻辑回归、贝叶斯分类器、决策树、(简单的卷积)神经网络、支持向量机、主成分分析以及讲了一点强化学习的内容。王杰老师很注重原理的讲解和推导,备课很认真讲得也很透彻(常年在计科上那些老师念ppt的课给我搞怕了),上课来不及讲的内容会作为作业给大家思考。
作业/实验:作业量有亿点点大,除了第一次作业我用latex写的之外,其余的都是手写(因为latex太费时间了orz),每次作业时间差不多在5-10h,作业题一部分是老师上课没有证明完的内容,一部分是当节知识的应用,用于帮助理解课程内容,如果认真完成的话收获不会少,唯一的缺点就是由于每年的作业题目几乎一样,所以助教并不会公布答案,只会在习题课上对作业进行讲解。另外,作业每题都会有个小标题,不会的时候直接把标题作为关键词搜索还是可以很容易得到相关内容的。一共布置了七次作业,作业中有一共五个编程练习:线性回归、梯度下降法、逻辑回归、贝叶斯分类器、PCA。大作业是写一个多标签的分类器,只能说选对模型很重要,不然可能做很多的无用功。(顺便感谢跟我一起做大作业的两位hxd)
考试:讲过的内容全部都会涉及到,题目几乎都是作业题,题量很大,想要做完并且拿一个好一点的分数的话最好能够把一些证明直接背下来(不建议这样做,这除了拿一个好分数外没有更多的意义),作业题也要全部弄懂。
目前还没有出总评,可以预料到这是我大学分数最低的一门课程了(出分后来把这句话划掉),但好在收获巨大,无论是数学基础还是编程能力都提升很多,作为外院同学选这门课还是赚的。所以,如果你能分配充足的时间,又想对机器学习有一个入门级别的了解,选这个课就对了~
最后感谢zq学长,在这门课上给我很多帮助。
7.22出分更新:王杰奶王啊!我期末大爆炸,卷面应该是40%+,最后总评给了89,感动哭了!这优秀率肯定爆了,大家快来选啊www
//更新:这门课还贡献了本科生涯目前最舒服的一次组队经历。
把这个课分成两半,老师一半,自己一半,我给老师打满分,给自己打零分。 作业巨困难加超大作业量。更何况编程各种束手无策毫无思路。我觉得在巨大的课业压力下,我可能没学到些什么,是不是觉得不可思议?事实就是这样,为了平时分,那个作业就算不懂也得是抄了正确的解答交上去。评分机制和教学目标的统一性对于水平一般的学生,实际上很难统一。 事实上我觉得这门课的开展本就是给那些尖子生准备的饕餮盛宴,对于一般人,不好意思,就是去做分母的。 老师很认真,但是感觉上课的内容和实际我们要完成的作业还是有一定程度的脱节,或者说,应当必备的前置知识都忘的差不多了,在这个时候对前面的知识还要做联合和统一,要求的确有点高了。更何况,不止这一门很难的课呢。。。 学校的想法不太清楚,个人希望能够在这门课的选择性上多点可能,毕竟不是每个人都能扛得住王杰老师的“厚望”。 如果不是没得选择,我大概率会退课吧,从来没有一门课能让我如此之绝望于自己的弱小和平庸。 祝愿后来者都能找到适合自己的学习方法。 我也就是所谓的loser了。
大二下来选的,管统专业,过来贡献一个数据点jpg.
课程难度和收获大小前面两位学长已经说过了,确实是一门需要花时间但能学到很多的课程,上学期在家又比较摸鱼,这门课上花的时间感觉 约等于 实分析+ 复分析,主要是毫无编程基础刚开始配个环境都可以弄很久,latex也手生常常写作业一两天,码latex又是大半天过去了..
这学期一共八次作业,4个还是5个编程小题(包括线性回归,SGD,Naive bayes, SVD啥的),大作业是手写CNN + 实现DQN算法,详情课程主页上有。 写作业的感受确实有些题目需要花挺多时间才能弄出来,得自己额外看一些资料,同时作业的涉及面很广,从基础的微分,矩阵求导,期望的chebyshev不等式到很难的SVM推导都涵盖在里面,可以说一套做下来课程内容应该是会扎实很多。作业中确实会有些偏分析的题目,课程开始讲的一些 开闭集性质,凸集性质在数分b3里都有学过,算一点小小的优势。然后作业给分可以看得出助教每道题都是认真改的,会给细致的小分,没有标答,可以问助教或者参考往年答案。
关于考试: 备考时间大概一周半,主要是学期中学的有些没学懂复习(预习)花了挺久,考试内容基本上是每个主要部分出一道题,然后外加第一题10个判断对错(比较送分),难度的话和作业感觉相当,内容也有相当多是作业和讲义里面的常用技术和分析方法,建议考前务必熟练(重要的可以默写一下jpg. 如GD,SGD收敛推导,SVM推导,PAC计算,PCA计算等等..)
关于给分:个人作业分百分制大概 90/100, 也就班上中上水平..似乎还有两次分数在40% 以后orz..然后期末考试海星,大作业感觉有些拉胯调了一个星期的参还是没弄太好..看总评深感调分力度巨大给力 (王老师yyds ),总之这么课平常认真学考前复习好成绩应该是不成问题的。
一些其他感受:给9分是因为作业实在是有些多了..然后没有太多编程基础的同学来选这门课建议自己多和助教和班上同学交流(再次感谢两位和我一起做project 的bro). 一学期学下来收获肯定是很多的
----------------------分割线--------------------
为什么我发布后评课就只剩一半辽,又重新码了一遍orz...
在科大遇到的最硬核的一门课,王老师非常注重理论和原理的讲解,比如对SVM的推导讲得非常清晰,这门课硬核的地方在于作业,基本10道题中有9道数学证明题(可能略显夸张),像我这种菜鸡一次作业基本要做几天,我记得最慢的一次是,从早上起来开始做,到晚上十点才做完两题,基本时间都花费在用google搜答案和各种参考书上,还是全英文的。当然到最后也感觉自己的数理基础又提高了很多
接下来说说这门课的缺点(仅代表个人意见):
最后,提醒给各位学弟学妹,王老师是对学术要求非常高的老师,所以最好不要在群里问一些如,需不需要用latex,英文写作业,期末需不需要用英文作答等等这种非常上进的问题,问了之后王老师一定会满足你的要求(手动狗头),我们这届就是教训,(不过期末考试用英文作答好像没什么,因为平时作业就是用英文写的,hhh)
补充一下给分:平时作业+大作业+期末,本来还有两次小测,因为疫情也就没了,期末考试10道判断,9道大题,3小时,满分120,比平时作业要简单,我记得还有一题PCA推导送分,所以平时这些推导一定要自己过一遍,我期末卷面也就90多,平时作业也就中位数左右,最后给分感觉符合预期,至少优秀率应该基本给满了,所以大家不要怕担心拉gpa,想学到知识选这门课没毛病
硬核课程,2.5学分但远不止2.5学分,愿意花时间认真学的可以选。
关于课程内容:
这门课最硬的地方是优化理论,关于这方面别的评论已经介绍的很详细了。凸集分离定理这部分会涉及一些开集闭集的东西(信院好像没怎么讲过),不过愿意啃还是可以啃下来的。
课程后期难度骤减,深度学习部分主要难点在反向传播,但其实也就是链式法则,花时间理解一下公式(矩阵求导)也不是很难。强化学习只讲了两节课,大部分是介绍,没什么难度。
关于作业和考试:
一共八次作业,王老师给的作业每道题目前面都会说明这是什么问题,不会的网上搜一下一般也能搜到。所以作业认真做拿个高分应该不难。
比如这个就搜dual problem+sparse logistic regression。
3次quiz,前两次quiz题目配置有点问题,两道送分题+一道巨难的题(只有几个大佬能现场搞定)。quiz3倒是很简单,都是ppt里面的例子或者稍微变个型。
期末考试比quiz3稍难一点,但送分题也不少,比起前两次quiz的难度还是比较简单的。
可能是王老师经历quiz1quiz2之后发现高估了大家的水平所以开始放水。
关于大作业:
大作业比较硬。自己手写一个图片分类器,不允许用包。这需要自己check很多反向传播的细节,代码能跑了之后还要玄学调参,需要花不少时间(我们组从12月中旬开始搞,断断续续搞到1月初才搞完),但自己写下来了收获会很大,对coding的能力也是很大的提升。
关于给分:
给分还行,80分以上55%(调分前只有25%),目测优秀率30+%。
最后赞一下这门课的几个助教,都是王老师的学生,感觉助教之间关系很好,也都很负责。
这门课王老师讲的东西确实很多,内容丰富,收获不少。针对很多同学(包括我自己)目前表现出的不适,我有一些想法。
1,凸优化部分其实感觉还好,主要可能是因为自己一直比较喜欢数学课,也比较能啃下去,但是其他同学未必是这样的,因为大多数同学是信院的,首先数学课学的不够多。相比于数学专业的同学,信院同学只相当于学过两学期弱化版数学分析,以及一个学期的线性代数。我拿我自己举个例子,我是信院的,大一的时候线代考的不错,这学期在带线代助教,但是对于这门课,我只能说我应付不了里面的线代知识,所以我觉得原因只能是我们院开的数学课不足以支撑我们绝大多数人吃得消这门课。
2,至于作业,内容确实不多,但是说实话,我要做至少三个晚上。一部分原因是我从大一就习惯于花时间去啃数学题,另一方面(更重要的)是因为很多内容不会,必须花时间上网去找论文才行。所以我赞同某个同学的观点,把这门课加到至少四个学分,增加课时,增加习题课时间(毕竟这门课助教那么多,然而现在我觉得那么多的助教资源好像并没有发挥出作用,例如作业答案作业成绩还没能做到及时上传)
3,课堂气氛感觉略显压抑,课后鲜有学生去问问题,不知道是什么原因。之前上过龚晨老师的信息论,也是一门听不懂的课,但是感觉课堂氛围很活跃,虽然只有几个大佬和老师的互动,但是至少还是有互动的。
4,关于给分,因为是后来选的课,之前不知道老师调不调分,但是好像在评课社区看到好像说似乎不调分。我觉得不调分的目的是为了让这门课不水,让大家有压力去好好学。但是让一门课不水的办法不只有提高挂科率。改善课程总评的结构,例如理论作业,编程作业,小测相结合(这一点这门课已经做到了);增强课堂-课后的学业管理,例如像数学基础课那样,增加时间(每周一次)用于课后辅导答疑习题课(特别是考虑到机器学习这门课并不与工科数学基础接轨的前提下)。这些都是保证教学质量的好办法。今年这门课有很多学生都是非人工智能选修进来的,可见全校本科生对于机器学习这门课程学习的热情和需求,但是如果最后大家发现挂科率过高,那么对于这门新兴课程的发展显然是不利的。
罗马不是一天建成的,从学校人工智能教学建设角度来说,如何把数理基础课和后续的诸如机器学习这类课衔接好,可能是需要长远考虑的。如果单论这门课而言,我的看法就是以上内容。
作业怎么这么难,要死了,这课零基础真能上吗 期中考也太难了,考得好累
这门课的内容给我的印象是:机器学习导论(介绍性的)+回归分析+凸优化+贝叶斯推断。作为数学系的大四老狗,在学这门课的时候对内容比较熟悉,对算法原理也比较了解,所以最后获得了一个相当高的分数。
先说一说我学这门课的收获。老师上课的时候对许多经典的模型的动机和原理都讲得比较透彻。对数学或者统计系的学生来说,学习这些内容有助于拓宽思维,知道自己所学的内容是如何应用到现实中的。对本专业的学生,可能这有助于理解、分析、解构、设计一些模型?
但是一学期学下来,我还是感觉这门课有许多不太令人满意的地方。比如作业的设置,感觉出了很多既花篇幅写证明,但实际上又十分显然或者无聊的题,这种题对绝大部分学生理解课上讲的原理的帮助极其有限,这导致作业非常冗长(不仅仅是多,做得我真的很烦,一边做一边骂)。
另外这门课大作业的难度,包括数据的选取与上课内容不太匹配(这个数据真的相当恶心,明明是回归问题,但是在选取几个属性画图比较的时候发现相关性非常弱),同时缺少一种循序渐进的过程(就像造车一样,应该先学会组装、造轮子、造车身零部件之后才能从头去造一整辆车)。
不仅如此,这门课在理论的丰富同时又有实践的缺失。作为非计算机系的同学,没有合适的例子告诉我们怎么写程序、怎么掉包、怎么拼接程序实在是有点遗憾。
这门课是目前人工智能班体验最佳的课!在这门课上第一次感受到什么是扎实的数理基础233333旁边数院选修同学上课看起来也没有很轻松。
和一般的以简单样例为主的机器学习入门课不同,王杰老师的课贯穿矩阵分析,概率统计,凸优化,泛函分析。使得一个在饱受离散数学三部曲折磨的人重新get到数学之美。对看paper帮助也很大。
收获是真的大,耗时也是真的多,堪比微积分,学期内基本一般学习的时间都在学这门课lol。一共七八次平时作业,平均每次作业至少花费一整个周末(还是到各地讲义上四处搜刮答案拼凑的)当然学期末的时候大家也基本都有以前作业蛮简单的感觉,说明可能真的入门了。
期末考试一共十个判断和九道大题。其中有一个要求证明在没有利普斯连续性的情况下证明凸函数的某个gradient descent的性质,考场上很懵逼。还有手动推到CNN反向传播的gradient(比较简单),VC-dim的证明(是一个矩形的很懵逼2333),PCA的计算,求解拉格朗日对偶问题,softSVM的证明(改变自作业题的hard margin SVM)。每一道题都不是很容易,期末满分120只有14个人及格....(个人觉得主要是大四同学,可能平时没有花什么时间学,期末速成也比较困难,所以考试比较惨淡,但其实没有那么夸张)
大作业是要求基于numpy写face verification system。直接调研一下state-of-art模型然后翻译成numpy就可以了。训练的时候比较困难(如果会cuda编程可能好写),可以用预训练的模型然后fine-tune
最后给分老师调分幅度还是蛮大的,基本相比学期初说的20%作业+20%project+20%小测+40%期末都抬了手
推荐MIT那本线代教材,里面一些基本的线性代数的东西对这门课最开始上道很有帮助。
总得来说这门课收获很大,很有国外一门课的感觉,老师付出也很多,助教相当负责(而且数理基础超级超级扎实发paper也相当nb!!!),在时间允许的情况下非常推荐~
唯一美中不足的是作业内容基本是上课没有证明完的东西,上完课本来就很懵逼然后写作业就更懵逼...如果能有一些补充材料会大大提高学习效率
只想感叹一下西区怎么会有这么难的数学课……
ML=Machematical Learning
计科的,数分线代都学的很一般甚至可以说很差,这门机器学习纯坐牢。
但不得不说王杰老师本身水平很高,讲义质量是我见过所有老师最高的,相当用心。
纯摆烂人,没咋去上过课,全靠讲义异步学习。每次作业都是ddl前狂赶,只能写的出来一半左右的题目。
期中卷面31,均分49。
明天考期末,属实复习不明白了,来评课社区提供个反向的样本。
最后,这门课很好,老师的水平很高,确实能学到很多之前学的不太好的/新的数学知识,只是这难度属实是不太能吃得消,相比之下我还是更愿意去学习一些practical的ML知识,而不是对着一些魔法一样的数学推导坐牢……
期末考的居然还行,卷面53,均分53。我作业分应该是最少的那一批了,可能也就70%左右,最后总评2.3
写作业写麻了啊,大四了我为什么要给自己找罪受啊(ಥ_ಥ) 话说有哪位好同学知道现在怎么退课吗
凸优化好难啊,这个作业和lecture note里面gap好大啊,完全是面向stack exchange写作业。为什么感觉相比之下Boyd都不算很困难...
上课都是定义引理证明,对于我这种数理基础比较薄弱的同学感觉蛮枯燥. 相比于另外一门课 数字图像处理,这门课无聊太多了。
不过老师的想法是好的,cover的topic都应该是做机器学习必须掌握的内容。
----
update 1.14
我错了,王杰老师是神!这门课是神!虽然我没有去上课,但是课程内容是非常非常棒的!作业确实难度大,但是多讨论,多思考会有收获的!不要畏难而不选这个课!
下学期优化算法见!
先说结论:这是我这个学年,甚至是在科大本科三年感觉到收获最大的一门课。
关于课程内容:这应该是王杰老师第3次或者第4次开这门课,显然对于整个课程框架的设计要合理了许多。整个架构应该是参考了诸如CS229这样的国外优质机器学习课程。主要分为三个部分:
相较于往年学长学姐评价而言,应该是削减了不少凸优化的内容,而更关注于机器学习本身。我个人认为凸优化的知识在机器学习中是重要的,但不是最主要的。我认为只有少数同学今后会继续从事与优化和理论机器学习相关的工作,而更多人以后用到的是机器学习的general idea。如果在一门仅有2.5学分的机器学习课上过分强调凸优化而忽略一些基本模型的idea,我个人认为是不合适的,因此今年这样的课程体系改变是较为合理的。
关于作业:根据助教反馈的情况,这学期作业占比达到了40%。(当然也有可能是疫情回来大家考的都很菜提高了作业比例)。总共有8次小作业(一次10道题左右,要求LaTeX排版提交,我一般写一次作业要一整天比较菜2333)以及1次大作业(每年都会变,2-3人一组的coding和报告,今年是利用DQN打Atari游戏)。小作业难点在于数学,尤其是前几次作业中的一些关于closure,开闭集性质,projected gradient descent收敛性证明等等,对于数理基础不好的人很不友好,这种题我一般都是Google半天才能搞定。大作业的难点在于不能借助任何有autograd功能的深度学习框架复现paper,基本上就是用numpy写DQN from scratch。加上DQN这玩意本来也不是很稳定,调参调了不少时间(手动感谢大佬队友自己写了个autograd)。作业可以得到助教的小分反馈,有问题可以问助教,但是不会公布答案。
关于课堂:王老师课堂还是没话说的,在信院可能除了6系信息论以外很难看到有一门课的课堂能有这么扎实的推导。王老师课堂前期以板书为主,后期进入了NN,RL之后以PPT为主。讲的还是很清楚的,看得出来王老师本人对ML这些模型以及GD等优化方法理解的还是很深的。唯一遗憾的是由于疫情只能隔着屏幕上课,无法身临其境地感受。
关于考试:3个小时题量是真的大,但是这些题也确实没有故意刁难我们。120满分我大概光没写的就快20分了,还是疫情期间太浪了没好好复习2333。试卷基本上是一章一道题。第一题是一些概念的判断,然后是linear regression和对偶、logistic regression和对偶、某个变体SVM和对偶、PAC、CNN求导、PCA、value iteration还有Lipschitz连续下的收敛性(讲义都有)等等。
关于给分:我只想说王老师给分真的无敌了,我考这逼样都能满绩,这个给分是真滴香!
以前在夏令营或者冬令营上过另外两个学校的机器学习教程,一个是哈工大的,一个是佛罗里达大学的,嗯,理论实践并行,学习快乐又有热情,觉得收获挺多。
这门课嘛,,单纯就课程内容来讲,上得比较纠结。
老师从选课起就不断给你施压,意思是你抗不住你就别选我的课。
一开始特想上,觉得大四打好基础肯定研究生小赚,可能就我的能力而言,我想多了。。
如果看看斯坦福公开课,CSDN, Github绝对学得轻松又惬意。
当然了,还是感谢老师,在有限的时间内给你压缩了数学知识和工程实践,PPT也非常的,,,elegent,努力学还是能打下挺好的基础的。
本人旁听,统计,发表一些意见。
1,课程内容:目前,统计(简略),凸优化(偏机器学习,量多)。会出现一些矩阵求导之类的新定义的东西。建议:对讲的内容,每一步都定义好。
课时:相对课程内容量来说,应改成分成每周两天,每次两节。或者分两个学期,一学期的课打概念基础,一学期着重讲机器学习的研究和应用
课件错误:不多,但是影响阅读,对学数学的同学尚且感到不易,更何况信院同学?
作业难度:困难的题目多因为出题的方式没有循序渐进。或者用到太多数学的东西(应该出一些数学的简单推导证明题)。
矛盾:为前途挣扎的信院同学与高难度的作业和内容。
个人看法:如果要做为一门硬课,王老师开的这门课确实应该具有目前的难度,但老师课件有不少有问题的地方,而且很多数学的地方都跳过,比如矩阵最大特征值的次微分。最后一步来得不自然。而考试和作业却偏重数学的内容。(如果这样,我希望老师多讲点数学的)。 而这些我觉得这些内容对目前大多数信院的同学在大四一边为前途奋斗,一边为写作业苦苦挣扎。 这些作业,做起来其实挺好玩,但是HW6,我觉得难了。对偶问题本来就很难理解,引入一些约束条件(比如HW6里的提示)会不会对问题造成影响?这些需要好好思考。个人感觉作业的难度就更大了
建议:我相信不少信院同学暑假都做了暑研,而很多都应该是机器学习,必然他们也看了不少相关的paper。 可以给课程增加一个 同学讲paper的bonus环节,share一下他们怎么理解他们看的文章,他们的做法。分(0/4/5)三档。
求助一下,本人只上了大约一个半月的机器学习,然后因为时间冲突退了,请问这门课有哪位同学录屏了吗?或者是bb系统的回放链接?蹲一个佬
为了不影响评分,就打一个平均的八分了
这门课贼硬,磕牙!!!
老师的作业贼多,但都布置得感觉很合理,属于那种一道题想10min,然后想通后会有那种茅塞顿开的感觉。但与之对应的作业量以及耗时就会非常惊人,基本上每周至少得去图书馆泡半天来看懂上课的ppt,再泡上一天去写作业。
上他的课不可谓不痛苦,但也是收获满满。
非必修的话,有胆色的可以去挑战一下。
加油!!!
首先,建议教务处将这门课学分提高至6到8学分,这门课讲的东西很多,但是因为时间太少,以及老师前边讲一些基础的东西速度稍显过慢,一些内容(比如pca)一节课就讲完了,这样显得在不同内容之间跳跃的跨度过大,频率过快。其次,老师在备课与讲义的整理方面确属一流。几位助教也都是好助教。作业量很大,而且由于不能迟交,导致即使很多题变成了选做,本人也经常临ddl而题没做,乃抚ipad而长嗟。所以选这门课请注意不要透支身体,合理安排时间。
给分挺好的。这作为一门导论性质的课,我觉得大二的学生就可以选了,如果精力充沛的话。
和诸位所说相同,课和作业都超难 好在考试不难,全部都是课件例题,每章都有,最后一章没怎么细看,考了原题没做上。 自己按照公式预估75给了83,肯定是调分了,总体来说收获是有的。
吹爆王杰老师,课程内容比较重视基础,有亿点点难不过给分超好(期末卷面炸了 + project用的naive Bayes = 85),适合数学基础扎实(雾)的童鞋学习
王杰老师水平超高,听说是人工智能领域首批6个优青之一,对待科研和教学都十分认真,经常在课上强调不要只是为了刷一个高分而学习(他在第一节课也强调了这门课不是为了难为学生的),要真正去思考、领悟,这样才能有所收获。(好像王老师回国之后在工业界,貌似是滴滴,也待过一段时间?)
助教之间关系好好啊2333333,好像都是王老师的学生。水平也超高,棒棒哒。
本课程用到的数学只有微积分(数学分析)、线性代数、概率论,很多非数院的大三同学觉得难可能是因为太久不用数学有些生疏了。所以我推荐大二的同学们来选这门课,趁着数学还没忘光赶紧来王老师的课上巩固提高一下,相信会有极大收获的!