| 选课类别:计划内与自由选修 | 教学类型:理论实验课 |
| 课程类别:本科计划内课程 | 开课单位:人工智能与数据科学学院 |
| 课程层次:专业核心 | 学分:4.0 |
本课程主要讨论机器学习的基础算法。具体内容包括线性回归与分类、性能评估、正则化、神经网络、无监督学习、决策树、降维方法、支持向量机、强化学习、逻辑、知识表示等。重点介绍机器学习算法的基本工作原理及其应用。该课程将理论与实践相结合,不仅夯实学生的理论分析能力还锻炼学生的动手能力,从应用问题出发理解机器学习算法的作用与价值,并力图反映机器学习研究的最新发展前沿。
孩子们,我觉得我已经快精神失常了。
9.30 作业文档看破防了孩子们
10.1 孩子们我才想起来这课能高替机器学习A,这下好了大三的史放到大二赤了。还有信智学部的同学一定要赶紧学会科学上网,不然很麻烦。
10.20 HW1这周日交,用到了神经网络的反向传播,其中有一个非常难懂的跨层梯度计算,但下周一才讲。这个故事告诉我们AI的学生不自学只能死翘翘。(后来延了一周ddl)
想给这课评8.6分,因为我自己已经有1.4了
11.30 跪了孩子们,被Lab2肘击的时候被Lab1出的分后入了。
这课的同学赤石助教赤石,就连老师也有点赤石,感觉就是大家互相喂答辩吃()
不过老师讲课讲得很好,助教也挺负责的。只能说内卷过于严重了。
12.2 孩子们,不要怪罪助教。
12.9 孩子们,responsibility是后验概率,先验概率是\(\pi\),我是SB。
这下Lab2也完蛋了。
12.19 孩子们,hw3和lab3 有三份作业,3原来是三份的意思吗
12.21 世界末日了孩子们,这lab3真是健达奇趣蛋
1.6 孩子们,为什么Lab3没有线下验收
实验及作业评价
LAB 1.线性回归和分类器。先验难度D(Lab1|t≤10.13)=9.5/10,后验难度D(Lab1|10.30≤t≤11.30)=6/10,后验难度D(Lab1|12.1≤t≤12.31)=3/10
LAB 2.PCA降维和GMM聚类。先验难度D(Lab2|t≤11.30)=9/10,后验难度D(Lab2|12.1≤t≤12.31)=5/10
LAB 3.集成向量树。先验难度D(Lab3|t≤12.31)=25/10
HW 1.难度D=0.6,计算量大,证明度P=5,肉编器指数RBQ=4,自学需求度SL=2
HW 2.难度D=0.8,计算量超大,证明度P=5,肉编器指数RBQ=6,自学需求度SL=5
HW 3.难度D=0.7,计算量大,证明度P=5,肉编器指数RBQ=4,自学需求度SL=2
指标说明:
先验难度表示在特定时间段内的主观难度,随时间条件会出现较大变化
证明度表示作业中证明题和代数推导题的量
肉编器指数指需要人力模拟机器学习中具体步骤的题量
自学需求度用于衡量作业中没学过的知识量,与自学所需时长成正比
线性模型,主要涉及线性回归和逻辑回归。代码部分需要完成数据预处理、回归函数的前向后向传播、回归解析解、手写sigmoid函数、逻辑回归判断等,拓展内容包括但不限于特征工程、正则化等。
从事后诸葛亮的角度看,这个实验是非常简单的,但是对于一个0基础连python都没碰过的学生来说无异于徒手搓飞机。代码调试、特征设计、正则化效果评估等一系列的工作如果没有经验的话是很难开展的,包括后期写报告的时候要不要贴数据,贴多少数据也是完全没头绪。在Lab1评估完之后我才发现有一个叫做消融实验的东西,而此前无论是课堂还是实验要求都没有明显的提及。正如某篇巨长无比的评课中所说:很多东西老师不教但需要你会。
我在实验报告上写了这个实验花费总计约50个小时,但是实际上可能没有这么长。50个小时纯纯是因为代码看不懂跑去恶补python,但最后还是越看越不懂,求助copilot才勉强完成。评价为还没落地就成盒。
Lab1出分以后有很多同学在pksq里写小作文,我当时虽然破防了但忍住了没写,事后想想也就那样了。
PCA+GMM聚类,代码部分需要完成主成分分解和提取、责任矩阵计算、EM算法的更新等,拓展内容包括但不限于可视化设计、评估指标设计等。
这个实验的数据集是MNIST手写数字,PCA无疑是一个非常强大的武器,能够消除手写数字里的一些噪声,然而GMM在这个数据集上的表现并不好。一方面MNIST本身是一个有标签数据集,从这一点上来看似乎更适合用分类而不是聚类的方法进行分类;另一方面这个实验进行期间,我有幸了解了某位大四学长的一些工作,他向我展示了用神经网络对MNIST数据集进行分类,准确度到达惊人的99%,和我们惨不忍睹的聚类结果相比,令人忍俊不禁。GMM算法的数学原理难得要死,效果又不如神经网络,真是一场酣畅淋漓的赤石啊。
实验效果的评估用的是DBscore,这是一个评估聚类集中度的分数,但是原有框架中似乎并没有一个函数能输出这个分数,导致自己评估的话只能看图或自己写(修改大量文件),而且这个分数评估的可解释性似乎并不是特别好——特别是对于手写数字这种噪声很大的数据集。
除此之外,这个实验的验收还使用了某个神秘题库,1分钟做5道选择题,题库不公开。麻麻的我回答助教问题太紧张了直接干错了一个知识点硬伤,他问我责任矩阵是先验还是后验,我脑子一抽回答了先验。比起实验验收,这个东西似乎更适合出成考试题吧。
Lab3居然有三个实验。
决策树:easy,代码部分主要包括信息熵计算、结点分裂逻辑等。助教给了一堆提示,直接照着提示抄都能做完。
决策树最难的难点在于Jupyter环境的配置,其实根本不用开浏览器,本机下个拓展就能跑,还不用担心保存不下来。
如果要做更大数据集上的考量可以自己找数据,但是这个实验的数据没有用csv文件存储而是直接写成了矩阵(?)我还以为从哪能找到蘑菇的数据呢,搞半天原来要自己编。
集成学习:中等偏难,代码部分主要包括voting接口的编写、bagging(BOOTSTRAP采样)和Adaboost(SAMME)的主体实现,课上听讲了基本是能轻松补全的,没听讲狂按tab基本也差不多。
选做提供了GBDT和Staking。Adaboost是用后续分类器拟合前面的错误样本,GBDT更暴力,直接拿着后面的回归器拟合前面的残差(更准确地说是损失函数负梯度)然后梯度下降。这个东西如果直接用sk-learn库里面包装好的效果比手搓的会好得多(里面有二阶梯度和大量的超参可以调)。Staking旨在拿着基学习器产出的分类概率当特征训练一个超学习器,听着就有点猎奇不过效果还行。
SVM:难,代码部分包括手搓核函数、接口编写、网格搜索的超参表,整体比较蛋疼。
手搓核函数这个东西恰好是老师上课一笔带过的东西,虽然助教给了核函数该怎么写,但是一旦变成线性代数就会变得恶心。我花了半个小时才搞清两个矩阵怎么点乘,还有神秘的广播机制。
网格搜索里面助教给了几个超参表作为参考,但是如果想进一步探究超参选择的话就得自己调,感觉从这个地方能看出来到底有没有自己思考(是不是纯用AI)。
以及可视化的接口有点bug,grid网格搜索的类里面似乎没有一个以mean_test_score为关键字的变量?把变量名字改改加点判断逻辑(tab两下)就行。
本实验最大的槽点在于三个实验叠一起,我光报告写了三十多页。
考核方式基础,作业难度就不基础
Lab1出分,内心稍微有点崩溃,到评课社区写一篇小作文。内容为个人见解,仅供参考。
首先是这门课程,两位老师讲得都挺好的,整体感觉不是很难,部分数学内容可能会有些难度,不过似乎也没有那么重要,但是感觉仔细思考那些数学推导对于深入理解一些原理还是有帮助的。
然后,问题出现了,作为一门能够高替机器学习A的课,又没有考试,它的难点在哪呢?答案是HW和LAB!
先说HW,可以说是概统、线性代数、Python编程能力的综合考核吧,有些题目较为困难,可能需要想很久才能完全理解。不过如果你只是想把答案写出来,在现在AI的时代,这个再简单不过了。但是我本人非常想把这门课学好,因此每个题都会思考较长时间去把它完全弄清楚背后的数学原理,因此感觉比较费时间。不过我觉得也值了,毕竟真有所收获。
再说LAB,Lab3还没做,只说Lab1和Lab2。
首先Lab1,也就是出了分让我很崩溃的Lab,其实要做的事情很简单,就是基础线性回归。助教原话是“助教没有直接放效果的给分,本意就是大家不要过于卷效果而是回到实验本身,发现问题,定位原因,解决问题这种思路上,我认为更有意义。”我觉得出发点是好的,助教希望大家去回归实验本身寻找问题,但是一个线性回归模型真的会出现很多问题吗,如果没那么多,那么是不是简述一下我的调参过程,把要求的问题回答了,就可以作为一个合格的报告了。如果你是刚才那种思路,请思考一个问题,这门课不像隔壁数据结构、ICS那些,这门课没有最后的考试,所有的总评完全由Lab HW和大作业构成,那么如果你报告一般般,作业上面分析过了不管你以哪种方式,最终得分理论上大差不差,那你怎么拿高分呢?你只能从这个Lab和大作业上入手。
从另一个角度,作为一个机器学习的模型,我们要的是什么,肯定是较好的效果啊,而且线性回归的模型是可以有明确的优化方向的啊——特征值构造。因此本人花了大量时间在特征值构造上,最终效果也有明显提升。模型训练的差不多了,再写个报告大概描述一下自己特征值怎么构造的,同时写一些其它细节上的优化,整体上我个人认为还是很可以的。不论从模型表现上还是我的时间投入上,我都觉得我认真对待了。但现实就是,我这个Lab的得分比我预期的低了很多。准确地说,我觉得我的投入产出有些不成正比。
身边有同学似乎是大量AI辅助然后AI修饰了一个较为华丽的报告得了高分,我承认在报告方面我没有做更多的问题分析,我只是花了一些篇幅描述了我特征值构造的过程,因为我觉得这是重点,而其他的对模型的影响都是较为次要的,因此都稍微简单的写了一下就过去了。但是,可能正是这种想法导致了我最后得分较低。因此我觉得对于一个线性回归模型,为什么Performance反而不是一个重要参考指标是一个值的探讨的问题。
Lab2没有出分,不过写的过程中较为难受的点在于它的评测指标,在这个评测指标意义下模型的表现较为奇怪,包括但不限于初始化模型指标最好等。
最后就是我目前比较纠结的点,更多是关于这门课和给分的,我个人希望在这门课中有所收获,对机器学习等有一个较为好的理解,同时也希望能拿到高分,毕竟这是专业核心课,在成绩单上很低会令我很难受。然而从现在我的角度来看,给分可能并不能真实的反映你对于这门课的知识到底掌握的好不好。首先如果想有更好的理解,可以课后自己多思考,去把PPT的数学推导研究明白,去问AI更深入的知识。而对于HW和Lab更多应该自己独立思考完成,可以询问AI来加深自己的理解,而不是上来就让AI给你答案。Lab报告我会坚持自己写,自己去梳理逻辑,不会让AI直接生成,但这样又会限于语文表达能力和理解能力等不能完全把自己所想的表达出来,同时也不会想AI一样做那么全面的分析。但是如果这样就可能会导致Lab分数偏低的问题,包括实验过程分析以及思考题的回答,我觉得完全使用AI生成确实会比我们自己分析理解的更加深刻。
这个问题感觉非常的难以解决,AI是一个对我们学习非常有帮助的工具,但确实在某种程度上引入了不公平性。
目前我也只能调整自己的心态为,我是来学习知识的,最终的成绩随缘。
评分就先不打了,期末全讲完再说吧。
其实这门课老师讲的还是不错的,课程体验也还好,想学AI入门之类的可以考虑来听一听,如果不希望自己的成绩单上增加4学分不确定性因素同时培养方案不必修的话,可以考虑不选课来旁听。讲真,HW和Lab很多问题还是值的思考的(比如HW2的HMM模型,想清楚的感觉还是很舒服的),就是评分出来后心理不平衡感有点强,因此写一篇小作文……
12.2,二更。
中午看到群聊里也在讨论Lab1的问题,助教所说的“是作为一门实验学课的报告,你的所有话是有逻辑有证据的,不是只是你说个话就得了”,反思自己的报告可能确实存在一些断言没有给出充足的证据支撑,以及Readme中有些问题回答的过于简略了,大概是因为当时调出较好的performance后内心比较想开摆了吧。
至于说助教所说不过多纠结于lab1打分,我觉得大部分人所考虑的是如何在这门课评判标准下得到一个“高分”吧,而不仅仅是lab1的问题,毕竟这门课的总评完全由这种评判方式构成。现在的结论就是报告要尽量将所有证据和推理逻辑过程写清楚。
针对于使用AI完成的问题,HW3中似乎明确提到了“如果完全使用人工智能来完成这次基础作业,你将会得到一个不太高的分数。”Lab3还没有看,可能也有类似语句吧,但是问题在于目前没有什么较好的方式评判一份作业或者一份报告究竟是否是AI写的。我觉得这个问题主要就是看自己学习这门课的目标和态度了。还是和前面相同的观点,AI是一个非常有用的工具,可以帮助我们更好的理解很多内容,但是,如果仅仅是靠AI达到完成作业的目的,我觉得有一些本末倒置的感觉。
这门课最大的重点:
永远永远不要,在验证集和测试集上训练你的模型;
也永远不要,用测试集调整你的超参。
——王翔
实验出分扣分扣在哪也不说,想干啥?
LAB2的实验框架,大大小小的全是问题,初始代码每次数据处理完都读缓存去了,效果没变我还以为是我的问题呢。服了。
作为ai理论数批,可以看出在hw题目设置这块助教们已经非常尽力了,这课内容比较宽泛,在hw角度导致大家体验并不是那么的好。如果有想要加深理论部分的同学可以参考:
梯度下降收敛性:运筹学(陈士祥)数院开课
线性回归模型、逻辑回归模型、主成分分析、聚类分析:回归分析、多元统计分析(杨亚宁)管理学院统计系
先验(贝叶斯)、EM算法、贝叶斯模型(各种latent model):贝叶斯分析(张伟平)管理学院统计系
模型误差:Roman Vershynin's high dimensional probability
这个HW3真是一题更比六题强()🤯
LAB1出分之后大家戾气好重啊(叠甲:没有说什么不好的意思,只是说这门课没有期末考试所以大家会认真做平时的实验也是合理的)
感觉选课的同学和助教们都很无力,助教舌战群儒.jpg(bushi)
打10分给这门课拉拉分,yysy两位老师讲得都很好,助教工作也很负责很辛苦,就是大家大多数都是第一次上这种不考期末的专业课显得有点过于纠结评分了()然后私以为看到自己的LAB没有得到预期的分数应该或私聊或在群里问助教评分规则而不是跑到pksq发一顿牢骚然后打低分(
代码报告表现的成绩占比是明确公布的,助教给分标准是统一的,LAB1优秀率给满了,我也真不理解有什么好喷的…努力之后仍然比别人差一点在科大是件正常的事,不要太自信地认为别人比你得分高但真实实力不如你…
不过LAB2用db衡量performance确实是巨大槽点。
希望最后两位老师给分超好。
LAB1 出分,并不是看到扣分就想骂,但总得大家一个交代吧,给大家的挑灯夜战一个合理的解释。扣分扣在哪,为什么扣,给分点是什么,评分标准是怎样的?成绩在 zkd 的重要性不言而喻,助教自己也知道国奖有多难拿吧。数据集就那么点大,用的模型还是最原始的线性回归和逻辑回归,能奢求跑成什么样的结果,怎么不拿这俩模型做出个 GPT 呢。
该说不说这LAB3和HW3剂量有点猛啊
这真的不是大作业吗
怎么说呢,感觉作为ai入门其实挺好的,该讲的东西都讲到了,但是架不住机器学习有点伪科学(没有什么很完善的理论)导致挺杂的,还有这作业是不是有点太多且没啥必要了。。。
占坑,开学后再详细评论