Introduction to Sophomore
大二下的第一周,sopho=soph 聪明+ more 愚蠢=自以为有智慧的愚者=sophomore 大学二年级学生
要开学了啊啊啊啊
寒假为期一个月就这么结束了,快结束那几天抵触情绪还是挺重的,不想开学,想一觉睡过去,暑假来了再醒。
可是大二上学期还是来了。出发这天太原市的地铁第二条线路刚好开通,成了名副其实的二线城市,我一早就出发了。动车跨过黄河,穿过秦岭,到了阴雨的成都——一个一月晴三天的城市。潮气是扑面而来的,树是常青的。
但总是这样抵触上学还是不行。我就当做到一个大城市旅游来了吧,尽量放轻松。到了成都已经是下午,我准备到桐梓林修电脑,主板不好总是死机,这次总算答应给我换一个主板了。希望以后能不再死机。
回去之后就直接和朋友游泳去了,这个季节又潮湿又寒冷,但是游泳一会还挺舒服的,游完上岸时候一下回到了地面重力,忽然感觉一身赘肉都背上了,寒假我是真胖了。分享一些寒假的经历聊聊天真好。
第二天7点就起床了,成都和太原还是有时差的,7点钟的成都还天黑着。又见舍友们也是有时差的,大部分都在十点起床,有的一点才起来吃饭,感觉大家都还是老样子。
第二天就在学校里游荡——我不管我要像旅游一样~,又在校园集市上换了换书,收拾了下宿舍。我不在宿舍的时候拖布是干的,泡好久才能用得了,饮水机擦了擦洗了洗又插上了电,三盆绿萝都没死,浇了浇水,挺好。然后网上买的教材也到了,取了取书。这学期的计算机类专业课很多,计组,操作系统,数据库,计网,密码学,数据库堆在了一起学,据说这叫老九门,我们的预置课一口气要学一半。
而且天天都是早八。
第二天晚上去了玉林路玩,l说那是吃火锅的地方。还真是。一条路全是饭店,要么就是酒吧啥的。在太原是很少有这种的,一条街齐齐整整都是吃喝玩乐,这是我走在街上努力找到的独特之处吧。另外就是那种火锅的气味,一闻就知道是四川火锅了,气味很香,但是辣的吃不了一点。但是明天就开学了。
星期一:
这学期第一个星期一,六点五十就醒了,这两天很精神,应该是前天收到雅思成绩挺兴奋的,首考达分了,运气可以,太好了我离退休又近了一步。今天课很少只有一个网球课,我打算按计划来。去旁听一些好玩的课,尽量不在宿舍闲着。
算法设计-左老师-计算机学院:
(去年暑假的算法集训是左老师带队的,所以选了到这节课来看看)
关于这门课,老师首先提起我们原来那个公式:程序=数据结构+算法。他说这门课程是去学经典算法的,类似(递归,递推,分治,等等),但这不等于算法工程师方向。算法工程师是一个数据分析与人工智能方向的岗位,与此不同。但是老师也提到了说这会成为你在未来算法学习道路上的一种优势。(我目前的体会是它给了我一种不畏难的习惯,能沉下心思考很复杂的东西,另外就是在一些高级算法的地方看到的那些基本概念和名词,像“差分,滑动窗口,搜索,前缀和什么的”这些在其他地方见过)
这门课的难度介于数据结构与算法和程序设计竞赛之间(暑期集训)。我感觉对我来说刚刚好应该是,暑假那个课后边还是有点吃不消,数据结构与算法又觉得有点简单。但老师也说这门课属于是入门级的入门级。使用教材是《计算机算法设计与分析》。
关于这门课的学习方法,“要有主观能动性不断思考,不是去要求每个人成为ACM高手,而是让大家在往后继续走的时候,都能够完成一些基础的东西。
然后老师还让大家都好好思考一下这个问题,虽然高级的算法已经发展到琳琅满目,但是这样一组技能无论在深造还是工作面试中都被反复考察,这种考察有两个层次,一是只需要把程序写清楚,完成基本问题,二是经典算法模型稍加修改进行考察。但即使这样的难度也很少有人能够完成。最后强调了一定要多加练习。
再提起人工智能,“大模型是个好东西,但千万不要依赖。在这样二三十年来最大的变革时期,虽然有了人工智能,一些工作可以被替代,我们可以少关注一些细节,但是凭老师的理解,如果你想成为一个高手,有这样一个三角形的上升阶梯是没有电梯的,这就意味着说有的东西你无法去跳过,跳过了后面就无法继续。另一个就是把宏观的东西拆成细节的能力,人和人工智能还是不同的。”
然后老师讲了计算理论:图灵思考是否所有问题都能通过计算机解决,于是对物理计算机抽象出了一种状态表格——图灵机,然后老师画了一个三叉树,以此来描述计算机解决问题的过程(像决策树),而这个过程非确定性的引入对计算复杂度产生了重要影响。目前还没有非确定图灵机的物理实现但这个真的是天方夜谭的事吗?老师提到了量子计算,老师的理想是在有生之年看到非确定图灵机的实现。
数值计算与非数值计算,对于化学分析,物理等等专业的同学,这方面的要求可能更高。但我们一般没太多数值计算。
“大部分算法都很难自证其正确性”我想到了那个动态规划,一般都是先用,算对了那就是对的算法。
在这张图中我以前的一个疑问得到了解答,上学期我问老师,那个我们就按循环嵌套个数来估算时间复杂度,但是那个数组索引的自动计算这也要花时间吧,还有那些条件跳转与预测,这些东西会不会影响时间复杂度?当时老师说后边有更精确的方法计算这个东西。
今天算是学到了关于时间复杂度问题的大框架,我们以前说时间复杂度通常用O(n)来估算,但是这是一种很简化的估算方法,而更确切的计算用符号T()表示, 表示的是T=>algorithm&computer,即考虑计算机硬件的时间花费,这样的话就与计算机的硬件情况紧密相关,包括脉冲频率,晶振参数等等,这种方法通常不用。
我们得到第一层简化:=>
即只考虑算法的时间复杂度,这样这个函数的因变量就不用使用绝对时间,而使用操作次数等即可,无需关注具体运行机器。
计算算法时间复杂度问题并不简单,T函数的自变量包括实数,复数,或者自变量本身就是函数,这就需要用到实变函数,复变函数,泛函分析这样的数学工具。在这个广阔的数学领域不作深究,我们选取使用自变量n,看成一个实数作为自变量。’
我们得到了第二层简化:=>
但是这个函数当自变量n,即数据量足够大的时候,函数值趋于无穷大,这会使得对算法时间的分析与数据量相关,因此,结合极限的思想,我们得到熟知的渐进时间复杂度,这里就是对时间复杂度的一种估算了,因为求极限的时候只会保留这个最高次项。
我们得到第三层简化结果:=>
在这里t(n)作为T(n)的渐进表达式,是T(n)略去低阶项留下的主项。而我们更熟知的O(n)就是这个渐进上界。
更精确的描述方法还有 表示一个准确的时间复杂度,此时最好和最坏都是这样。
那为什么我们更多用O(n)呢?
因为通常更关注时间复杂度上界,所以这个符号就成了一种通用常见的表示,但是更专业的资料还是会对其进行区分。
那么还有什么方法对算法的耗时进行分析呢?老师还提到了算法剖析,即在复杂度合格的情况下,进一步分析。一种更精确的分析。我的疑问得到了解答。
———————–
职业规划-董老师-软件学院:
(有人说过研究生只是对就业的拖延。我觉得还真是,毕竟谁都逃不了当牛马吧?恰好翻到了这门课,于是上午第二节去了这个)
老师首先调研了听课同学组成,99%大二。并且布置了一个论文作业。
这门课是应同学需求,针对在本科毕业之前决定就业方向的这些同学,为他们提供一些信息。与其说是一门课,老师说这更像是信息分享,后三节会请到大厂HR到场,还会去参加企业开放日等等……
这门课分享在校期间以及未来我们需要知道的一些行业信息。
“通过这门课,除了个人认知,还包括对周遭环境的认识,比如我们的学校我们的学院能给我什么样的培养,我在这种环境中需要发展什么样的能力等等,从而形成上至社会、行业的认识与准备,进而产生对国家与世界层面的理解。”
同学们要思考:
- 如果我想要就业?
我要进入一个以科研?销售?为主的企业,一个以创新?发展?为导向的企业? - 如果我要考研?
我们将会面临一场不太公平的竞争,我们的培养方案是为了让学生具有持久科研的能力,针对应试,需要用6个月的时间去拼别人三年的刷题。
剩下的就是那些消息,这里就略去不记录了哈哈。但是这个学院给我的感觉是他们还是以人为本的,即使他们有着70%的深造率,面临就业的30%的同学也能得到足够的关怀与支持,而该学院收到的那些毕业生们的反馈也在这里得到了有效的落实。
后边还提到了考研难在哪里?难在自行时间规划,难在自主稳定的学习输入,以及自己的状态调整,情绪控制。
选择上研究生收获最大的是哪一类人?
是那批打拼过,工作后考研的人,他们的内生动力最强,他们的主动性、积极性、综合实力远远高于应届的考研生与保研生,他们更清楚我为什么要读研。
而这门课的目的,也是让我们的保研生考研生们,想清楚这样一个问题,能够具备一些和他们一样的主动性。
深造的意义?
老师提到了一种东西说叫柔性竞争力,他举例说一个管理岗位却要博士学历,他学的知识是死的用不到,但是他具备的思维模式与学习能力是柔性竞争力,是能力,也是深造的意义。
总结来说,我的感觉就是知识千变万化,我们必须具备的是解决实际问题的能力,思考的能力。无论你是在大学读研究生还是社会大学工作。这门课上多了还是会感觉有点压力的,但同时也让我认识到了一些作为985同学要具有的素养。压力大的时候我选择专注眼前事,分丢了就只能丢了,已经是打翻的牛奶了不是,趴在地上舔一舔也舔不到多少了,还是瞅着锅里的吧。还有就是我还想在本科阶段学一些上了社会学不到的东西,比如说算法,或者说是数学,我想在这方面深造一下,还有就是人际交往上要认识一些好朋友。
———————–
操作系统-左老师-计算机学院:
(本来想去矩阵分析的,但是一想现在还不太用,就又回去找左老师了。正好对比一下我们学院的操作系统课,学的更扎实点)
“我是老四川大学人了。”和上午一样的开场,老师在四川大学有二十多个年头了。
“我想把这门课讲得更加广泛一点”,老师最开始就这么说,这是一门计算机类的专业课,老九门之一,对计算机学院的同学,他们会同时上这门课的习题课和《操作系统原理课程设计》一共三个课来学习操作系统,老师的建议也是要同时上,而且最好同一个老师。
不是所有人都会去从事系统开发工作,但是这门课让我们知其原理而在基础上更好地左应用,做开发——这才是重点。(在复杂情景下让程序更好地运行)
这个让我想起了顶级的赛车手都要系统地学习内燃机和车机系统,他们需要让汽车的性能发挥到极致,而不是简单地让车跑起来。
老师认为:本科的课程体系缺乏一些计算机系统方面的培养,因此作为培养计划中唯一的关于系统的课程,这门课尤为重要,中间老师会引入一些与实践相关联的事去帮助加深理解。
(关于这个我想到的是我们对操作计算机系统的基础太弱,有多少同学会用命令行操作windows系统,会用bash操作Linux服务器或工作站,而这些技能对于专业人员来说是入门水平,对于科研来说也是入门技能。一个更长的学习路线可能是我们先用起来各种系统,即先操作 系统,再学操作系统,再理解其设计原理,再思考安全问题。)
关于课程特点,老师提到这门课与上午的算法设计课程截然不同,算法设计课具有鲜明的特点——刷题,而这门课实践性强,涉及面广,错综复杂,可能需要几年时间才能对此产生深刻的理解。
老师还提到了他关于这门课问及两位以前学生的回答:
A1:没啥用,期末背背很好过。
A2:这是本科期间对我影响最深远的课程。
学习方法:实践与理论结合。
推荐教材:《Operation System Concepts》by Siberschatz
接下来就进入了这门专业课的学习:
操作系统为我们带来了很多好处,如果没有操作系统?
那就需要使用计算机组成原理中的方法操作计算机了,这是极其复杂的。
那么现代的操作系统是如何实现了安全且高效地管理的呢?
后边的讲述围绕这个问题介绍了第一章的中断,系统调用,双模态陷阱……期间还结合了许多汇编语言知识和计算机组成原理知识,非常通透,将这些东西都联系起来了,打通了。
具体内容附图如下:
同时我以前的一个问题也得到了解决,那就是以前我们编程使用空指针的时候的RuntimeError,我们的程序是怎么被杀死的,中间发生了什么?
这就是一次中断,一个特殊的中断——陷阱,此时程序被操作系统接管,报回错误并杀死程序。
操作系统利用CPU的特权态与非特权态来实现了一个高效安全地管理。
双模态:
- 正常切换——System Call
- 非正常切换——陷阱
之后就是整个课程纲要如下:
———————–
进化计算-孙老师-计算机学院:
(来之前对进化计算没有前置了解,还犹豫去不去打网球来着,但是后来还是庆幸没去网球课,又是一门金课唉。)
进化计算,这门课又称为智能计算_01,而智能计算_02就是我们学院可能有不少人了解的神经网络了。
这门课要教会:
1> 文献检索方法,学习研究方法
2> 算法优化方法以及传统进化计算,遗传计算,TSP问题,单目标优化,多目标优化……
3> 神经网络中进化计算的应用,神经网络架构搜索
这个课题实际上与我们现在已有的知识水平是紧密联系的,我们在离散数学中解决了中国邮递员问题,而另一种路径优化问题就是TSP问题——即旅行商优化问题,邮递员问题(简称CPP)关注路线优化,而TSP问题关注的是降低运输成本。在计算理论中,TSP是一种典型的多项式不可解问题(NP-hard),而与之对应的数学工具——域上多项式,在刚刚结束的信息安全数学课程中学到。这个组合优化问题对于大规模数据来说尚无精确解,而对于小规模问题来说,动态规划——在我们刚结束的数据结构与算法课当中本应被学到的。对于这个问题的启发式算法——遗传算法,就是我们在进化计算中要学习掌握的工具。
另一个联系就是我们的机器学习,我们在大创项目中尝试了手动设计神经网络隐藏层,而设计神经网络隐藏层的方法至今都是手动。那么进化计算结合神经网络隐藏层设计是一种好办法。这让我们很直观地理解到了这门课的应用,以及与先前知识储备的联系。
这门课的老师给我一种很专业研究者的那种感觉,老师说他的研究方向十多年一直都是神经网络,并且分享了他十五年来的研究历程:
2012——无监督学习;神经网络
2014——系统地学习了进化计算
2015-2017——用进化计算解决优化问题——神经网络结构(隐藏层)的优化
2018-2019——取得一定成果后,开始使用计算机算解决搜索问题
2020-2022——搜索方法的优化,沉淀整理,出版图书
2022-2025——应用层面的研究,NN优化器设计,华西口腔大模型
这门课程的第1-7周,讲解基本概念,第8-13周介绍传统应用,第14-16周,介绍进阶应用。
这门课在不久前被认定为四川省首批人工智能高级课程(1 in 2)
之后老师就先介绍了计算智能的定义:
一类收自然启发的的算方法,这类复杂问题用数学或传统方法解决的不好。
把这个名词归到我们现有的知识体系中就是,人工智能问题下,一个办法就是今天上午学到的传统方法求解,一个办法就是纯数学方法求解,而另一个大类就是计算智能,其下的三个主要分类,其一就是著名的机器学习(神经网络),其二就是进化计算,其三就是模糊逻辑。
这让我们已知的现有知识框架又升高了一层,拓宽了解决问题的思路和方法。
那么计算智能和智能系统的关系?
老师说可以理解为CI支持IS
之后老师讲解了著名的学会IEEE,其下的各种刊物,以及分类,按地域分,按课题分,按科学或工程分。讲到了Task force,各种学术会议,presentation,更是手把手讲到了如何读论文如何读期刊,如何使用IEEE的网站,以及如何关注学术界动态,以及写论文或做调研等等的学术问题。这部分也尤其让我受益匪浅。由于笔记有限,没能在这篇日记中多写些,但是这节课真是让我大开眼界了。另外,老师鼓励我们更多地看学术期刊文章而不是会议文章,因为会议文章很精炼,不好懂。
总结的话,这节课是一次对学术界的初探,很开拓眼界。老师实力给我的感觉也非常top,这门课应该也是我目前接触到的最前沿的课程内容了,非常的新颖,跟我一样年轻哈哈。
最后老师还给我们展示了他们这两年在做的项目——华西口腔大模型,讲到了多模态,这个和我们大创的主题词重合,所以我留下来向老师询问了一下这个情况,也记在了这里:
(前面那同学像是拔尖班的巨佬,上来就针对老师一篇论文的细节进行了提问,还问到了神经网络中反向传播和实际bp算法的联系~老师真的很热情,于是我也进行了提问)
Q:老师您刚才提到的那个华西口腔大模型用到的多模态技术能不能给我讲讲?我想多了解一些。
A:多模态就比如视频与图片的结合,图片与文字的结合,具体就是对口腔的图像诊断,以及各种类型数据集的模型训练。
Q:那这个是不是既要结合咱们计算机视觉和自然语言处理?
A:是的,不过目前的研究关键的问题是如何将这些多模态数据输入模型进行训练。
Q:呃这个是指数据的融合方法吗?
A:对
Q:老师这种课题对于本科来说是不是有点难处理?
A:不然,事实上近几年我知道有本科生在多模态的成果很多。多模态这个概念其实不难,比如说你的图片转文字,就是在接触多模态。
(想到了神经网络入门时的那个经典项目,手写数字识别,就应该是个多模态初探吧~,老师非常热情和健谈。)
周二还是挺精神的,七点出头小寝就全出动了。
———————–
计算机网络-王海舟-网院
老熟人了,就不多记录了。可能时因为老师具有深厚的海外留学经历,老师更侧重双语教学,老师先展示了一个网络工程项目-自组网。还用了一段渗透测试的短片来引起大家对计算机网络的兴趣,之后联系日常生活对计算机网络进行了基本的知识介绍,然后讲了总纲。
教材方面:选用《计算机网络-至顶向下》,推荐《计算机网络》谢希仁(至底向上)
这里是指OSI七层协议簇的物理层(底层)到应用层(顶层)
学习方法:老师为大家收集了足够的资料,在学习通上供自行点播。另外,上课不许看手机,不许旷课。
(无论如何,这都是一个覆盖面极其广泛的学科,涉及方面从网络工程,到渗透测试基本原理,到网络编程开发等等。但是一门很好的能够解决基本的原理的课程,通过这个应该能够对计算机网络体系以及各种网络服务原理,基本名词有个通识的了解。有的时候我感觉这应该作为我们专业同学的入门课,放在大一上的。尤其是网络工程部分的内容,我们的同学可能会不断的使用,将课程置于大一上可能有助于同学们在网络安全实践技能方面走的更远。)
(王老师还是一贯的认真)
———————–
数据挖掘导引-段老师-计算机学院
老师说这门课是一个比较简单的入门介绍。帮助大家快速入门这个领域,并掌握学习的方法。
他从孔子讲学举例,分析学习,记录信息方法的变迁。今天,我们更少使用纸币记录文字了,而大模型deepseek之类的使用也达到了巅峰。
在这个过程中老师一直在融入相关数据挖掘涉及的概念帮大家逐步理解,可以说是深入浅出。最后指出针对当今这种数据的获取和使用方法,我们早期称大数据
现在较大模型(也还叫大数据),而数据挖掘——作为一种从海量数据提取信息并应用的方式,非常常见。
“学生听老师言传身教,在大脑中形成新的知识体系框架的过程,就是我们人脑的预训练。”
这里老师直接让同学们理解了预训练这个名词,这是机器学习训练算法模型的重要步骤,了解过了机器学习,这里就可以很好的把这门课归类到我们现有的知识体系中。
数据挖掘的过程就是我们以前预训练模型的过程。这个我刚好寒假进行了这个实践,刚刚用过,所以马上就get到了这个点。其实就是我们进行算法开发的每一个步骤拿来都是一门课程,一门专业的领域。就像百川归海,这不仅解释了
现在人工智能之所以涵盖面之广,从中也可以看出数据科学的这种发展轨迹。总之,非常开心的就是之前用过,体验过,所以很有体会
这门课程的用途和位置就找到了。
之后老师提起了AI三要素:数据,算法,算力
(这门课介于数据与算法之间)
从数据的结构讲起(刚好承接我们学过的数据结构与算法课),提起了deepseek的671b模型,”b”是指什么?
这里澄清了我原先的一个误解说b是权重,就线性回归里那个参数(bias偏置),但这个实则不然,671b确实是在指参数量
但是b的意思是billion,模型的参数是一个6710亿行列的矩阵(或者说张量)
针对AI三要素老师认为:
算力决定AI的下界,而算法决定解决问题的广度,数据决定AI的上界。
那么我们这门课程就聚焦于数据,老师认为现在最重要的还是数据(尽管各种各样的算法飞速前进)。
在AI时代,科学第四范式是由数据驱动的。
机器学习为什么现在更火了?
因为算力的提升,而得到了更高阶的数据,由此完成了更难的任务,模型的能力得到了极大扩展,变成了大模型。
(这里可以看到AI的前进事实上是我们对数据利用方式的前进)
数据挖掘(简称KDD)又称知识发现,定义为从大量的数据中提取有用的模式/知识。
早期是指在数据库中的知识发现,当今的发展早不止于数据库。
科目基本思想:“真理尽在数据之中”(实事求是的哲学观念)
关于数据挖掘的应用举例:
其他就是一些该科目和其他科目的区别与联系等等:
小结:
数据挖掘:从海量数据中发现有趣的模式和知识
科学和信息技术的自然演变,需求量打且应用广泛
数据科学包括:数据清洗,数据集成,数据选择,转换,数据挖掘,模式评估
可以在各种数据中进行挖掘
数据挖掘功能:特征化,判别,关联,分类,聚类,趋势和离群点分析等
数据挖掘的技术与应用
数据挖掘的主要问题。
“数据是石油,而仅仅数据不够,还需要对其精炼(模型,算法)。模型与数据是相辅相成的。”
“KDD,机器学习,模式识别,以及统计学观点,本质上相同。分门别类这门多是应为他们的研究者来自不同的行业背景,而各具有不同的侧重与特点,但当今都趋于大模型。”
(这个让我想到了吴恩达对李飞飞的访谈中,李教授提到要用精炼的物理的公式来对这个乱七八糟的各种方法进行归纳整理,大概就是因为当前的这种繁多的类别吧)
还有一个我印象十分深刻的东西老师提到:
现在各个专业的同学其实都在做数据分析,事实上和我们用的也是相同的方法,而他们也有很多工具去专业地完成这样的任务。那我们的同学去了合作解决问题能干什么?我们的看家本领是什么?
答:定制化,灵活地解决问题(根据问题确定方法,甚至开发工具)
“这就要求了我们的编程能力尤其重要!”
“要通过问题而决定方法的。”
之后老师还发表了他对计算机科学这个学科的认识:
什么是计算机科学?
核心思想是追求效率的科学,包括算法时间复杂度分析与计算理论,以及应用层面的转换(大模型等等)。
(这也侧面反映了我们学校的计算机科学院方向偏软,算法方向的课程繁多,那很好啦~)
课下了的时候我还询问老师这门课是否能被网安学院的同学修读,老师很热情,说没开,不过他告诉我说我去找教务处,就说老师同意了没问题,只是没学分而已~
(不过这个我倒是知道我们杨院长给批条的(能批到学分的那种),上次在学期反馈会上他提起这事的~,这也算是我干了一年学习委员的一大收获吧)
周二中午去了桐梓林取电脑,这次答应给我换主板了,不该再坏了吧?去了五次了。(事实上,周三下午的时候它又死机了。躺了),高大的写字楼下聚集着很多很多的职员,我还以为是什么神秘活动。询问发现原来是成都人出来晒太阳了。
今天终于出太阳了,晴天一切都很美好~
修完电脑准备回去已经一点二十了,有点困,犹豫下午要不要去最优化理论。最后还是打车去了。这真是一个正确的选择,这门课就是我一直要找的那门课!众里寻他千百度,蓦然回首,它原来就叫做最优化理论。
(上完第一节我已经确认了我就是要好好修读这门课,但是目前数学和编程基础还较弱(破烂的线代之上还少修了一门矩阵分析)(笨拙的编程基础在刚修好的数据结构与算法上摇摇欲坠),但是这门课我就是要学,实在学不会就明年读第二遍。)
(赶到教室的时候略有迟到,不过还好。我在最后一排坐下,看见旁边哥们在刷洛谷,扫了一眼,深蓝色题目。深蓝色什么概念?我还没概念的那种概念。我见的最多的还是橙色~普及+/提高-)
———————–
最优化理论-*老师-计算机学院
最优化理论,如题,是对算法进行最优化的学问,而且是一门理论(偏理论)。
这个是计算机学院同学大二的必修课,占3学分。
老师的本科背景来自数学学院,研究方向包括图表示学习等,说话声音不大,但是张弛有度,逻辑性很强。
机器学习 = 目标表示 + 下游任务 + 优化
本课程聚焦目标表示与优化。教材推荐是《最优化、建模、算法与理论》
最优化问题:是一类研究如何对有限资源进行有效分配和控制并达到某种意义上的最优的问题。
优化,又称规划。
联系现在已知的问题就是动态规划问题,属于此类。
求解该类问题有如下基本过程:
- 从一个可行解中寻找一个最优的元素
- 最优准则
- 寻找实现方法
(该类问题大部分采用迭代的方式解决,(这个特点和我们的动态规划问题是吻合的))
该科目研究涉及的数据类型(变量类型)也是广泛的,包括标量,矩阵,张量,变量可以是函数,单变量,或是一个概率分布~但一般都是实数矩阵。
之后就讲了最优化问题的应用:包括机器学习,图像处理的去噪,以及最短路问题……
记得比较清楚的就是在机器学习中的应用(可能主要还是因为体会过,所以印象深刻)。
早以前我们高中的时候用最小二乘法,后来在机器学习我们知道线性回归的损失函数:MSE,逻辑回归的损失函数:交叉熵损失函数。并计算反向传播,得到梯度来进行优化。
用的时候我们知道用这两个函数描述并计算模型的效果非常好,但为什么要这么选?
这么选了之后又为什么要那样优化?以及为什么要加正则化项,就因为我们当时加了正则化项得到的训练结果更优就加它吗?那为什么会这样?
这门课就是统统解决这些疑问的,揭示其中深厚的数学背景。
当然代价是有的,涵盖微积分,线性代数,抽象代数,离散数学,概率统计各种数学知识。
总而言之,这门课虽然涉及这么多的广泛的数学知识,但它也让我能站在一个更新的高度取理解我们的培养方案。为什么之前要修读那些课,以及那些知识在未来的应用。(我以前还觉得那些数学这辈子用不上了,现在后悔当时的不认真了。)
之后就是课程总纲的介绍(如图):
提取一下关键句:
“给大家讲这些也不是要求大家掌握这些数学方法,而是让大家了解算法是怎样实际运行的就够了。”
那么我们添加正则化项的原因得到了解释:机器学习上我们所谓“过拟合”,实际上是因为我们得到的这个解在数学上具有多重共线性(如图),而这种多重共线性来源于奇异矩阵的逆不好求,而正定矩阵就很好了。通过添加一项得到了正定矩阵,就很好地解决了这个问题。
还有其他的介绍,老师直观地给大家展示了NP不可解问题是如何一步步被转化并求解的,真是大开眼界。
———————–
计算机组成和体系结构-李老师-网院
这门课是在晚上上的,当时也没留下什么笔记。现在周末回想的话好像也没记着什么。
但是我记得当时上课的时候没什么人在听,可能是因为老师讲得比较中规中矩吧。
———————–
数据库系统及安全-龚老师-网院
龚老师在大一的时候为我们讲过《计算机文化》中的一节课。当时那门课是真的安排混乱,内容机械粗糙,一个老师带一节,有的背了课有的没备课,
有的干脆来吹牛,有的就直接念PPT。
但是龚老师非常认真,为了把内容讲到还追上同学们开网课讲,我记得很清楚。
我记得老师在每次提问得到回答的时候就非常欣慰,因为大一讲过的大家记到现在,老师的快乐也是很单纯呢。
老师语速较快,很认真很细致。有一种我的高中生物老师的感觉。跟着这位老师你大可对这门课放心了,因为你知道你有一位急切着想把你教会的
大学老师,她会为你操心确保同学们能掌握。
当然更深入的学习是需要自己做补充的。
———————–
应用密码学-兰老师-网院
(唉旧的课表上课地点在一教D,我跑过去发现没人。登录了下教务处发现地点不知道啥时候改到网安楼了,也没通知好像。刚想极限飞驰过去
发现车子前轮爆胎了。最后骑了个共享单车过去还是迟到了。有点倒霉~)
兰老师给人的感觉一看就是精干人,说话清晰,条例,不紧不慢,有逻辑。应用密码学,如题,这门课偏应用层面的密码学。第一节课就是密码学的简介,PPT是复古风的那种,
应该是建院初期沿用至今的,我感觉这个PPT有点太旧了,而且缺点东西,如果要是能把数学知识综述以下,承接上学期的信息安全数学,再引出密码学的框架就更好了。
这节课也是我当时没记下笔记,主要是那天倒霉呀,迟到了,教室里人还满着。
关于密码学,我隆重推荐这本书:《An Introduction to Mathematical Cryptograpy》,之前接触这方面的CTF竞赛时知道的。
这本书我还没读完,但确实好(虽然全英),主要是它刚好承接我们已学的数学知识,然后又很清晰的介绍了整个密码学的框架,让读者可以很快了解到我们原来学的
数学知识是怎么被用的,密码学为什么要这样发展,为什么会有这样的密码学算法,这能帮我们解决什么实际问题,通过这本书可以很好地学到。
当然这门课的教材《应用密码学》可能也非常好,我现在还没怎么看,这本书是课程组老师写的,四川大学网络空间安全学院出品。
关于网院的这几门我的必修课内容,我在其他的笔记中会详细记述与总结。
———————–
数据可视化-朱老师-计算机学院
(找到了这门课还是因为以前见到了很多需要的场景。比如说数学建模比赛的时候会先简单可视化,分析一下数据分布。机器学习的时候需要查看数据特点,对比算法效果,通过可视化发现算法不足。还有在大挑申报书,分析行业发展走势,同样需要可视化一下历年行业发展走势。总之,数据可视化的需求是很多的,我觉得还是一门必备技能。)








(到的时候教室放着音乐,Pop music,超好听,很潮啊)
这门课就更加专业化。
数据可视化,属于数据科学,是智能科学与技术方面的必修课。
人获取的80%的信息来自视觉,而利用人眼的感知能力对数据进行交互,就叫数据可视化。
“这个科目不仅是前沿的,而且是基础性的。”
这门课不是理论知识,而是设计与实现方法。
从2017年开授,老师说她开这门课的私心其实是让同学们通过这门课对此引起兴趣,在研究生阶段可以参与到老师的项目组中。
主讲团队:朱敏教授,和她的研究生团队,以及外院教授(from fdu)
教材:朱敏老师写的《大数据可视化》,以及陈为老师写的《可视化导论》
课程每隔段时间就有研究生来进行技术指导,帮助同学动手实践。
“虽然只有3学分,但希望大家学到的技能是慢慢的。”
“为你开启一个新的研究方向的们。”
相应竞赛还有计算机设计大赛等等。
以下是昨天课上朱老师提到的一些资源链接,供同学们参考:
1、视觉计算实验室官网:https://scuvis.org/
2、chinavis2024数据挑战赛官网:https://chinavis.org/2024/english/challenge_en.html
3、HoagsOLife苏东坡生平可视化:https://www.bilibili.com/video/BV1m5411Z7S9/?spm_id_from=333.999.0.0
这位老师和助教给人的感觉都是非常干练,非常厉害的。
尤其是老师,拥有近三十年的从教经验,仅听老师上课就能受益匪浅。
其他的好多东西在这里略去:
印象最为深刻的一个话题是问辩能力。
问辩能力
(在内容不太充实的情况下,如何应对提问?)
总结一下:
1>关注问题背后的机制
2>扩大范围
3>引“偏”
(要辩回去)
老师举例对这个进行了解释:
Q:同学你有竞赛获奖或项目吗?
(假设我的经历很少)
A:老师您是在询问我的动手能力吗?
我认为动手实践能力包括课内的落实和工程能力,在本科期间的……课程中,我…………
老师的原话回答非常精妙,既避开了直接回答缺少的经历,有借此机会描述了自己的擅长方向。
这可是一种核心的能力,狠狠地学到了。
我想到了我刚刚结束的雅思口试:考官问我gift话题,我当时没有准备,生掰硬套的痕迹很明显,
事实上,这里就可以用这个方法把话题拓开,礼物——亦可以是过年给家里带的一件年货。这样就把话题引向了熟悉的语境。
引到了利于发挥的词群中。
(事实上,考官还是帮了我的,他最后一个问题已经让我for example: Spring Festival?)
(手把手教啊~当时就是蠢。)
———————–
操作系统-若干老师-网院
第一节课是赵辉老师讲,非常的接地气。
“操作系统是建立在硬件之上的第一层软件。”
这学期关于这门课程的设定会更多地往考研408上靠近。
之后就是一些课程基本信息,设定,课程信息,和游戏规则。
老样子,老师融入很多了很多他生活中的见闻和感受,分享了很多各种这样的趣事。
总结一下:
赵老师是一个很热情的老师,非常接地气,很实在。有的同学可能有意见说感觉学到的东西不多,但跟老师多接触还是可以
学到很多很多东西,很多是不止于专业知识的。
一句话总结:多陪陪老师。
但请注意,老师是吃软不吃硬的,如果你想求得老师帮助,态度是第一的。
你可以多琢磨琢磨这句话~
(之所以这么说是因为我和老师的接触也是非常多的,上学期参与过教材的编写组,负责安全项目为学弟学妹们制作了课件和讲解。在和老师的相处过程中还是非常受益的,同时也帮老师办了一些事,也算为学院过点小贡献。)
之后就是课程的总纲介绍:
记得比较清楚的是老师给大家展示了一个全局的观念:
以前我们只关注过C语言程序这一个进程,这门课让大家得到一个全局性认识。
用windows的资源管理器实际演示了进程,提出后边会用很多生活中的例子让大家理解。
操作系统的角色是一个管理者,对程序进行资源分配和调度。
“希望这门课程可以激发同学的兴趣,写一些系统级的代码。”
“关于指令周期,基本的思想要注意是硬件帮你保存了基本的栈,而更多的你要自己操作……比如说一个送外卖的……………………”
(关键的点我感觉都说到了,并且老师也故意埋下了伏笔,可以说是精心设计过了。)
“更多的只关于理论不行,还是要写代码。”
再次提到了《深入理解计算机系统》,强调了对工程的重视,举例说对CMU与谷歌的合作,很多论文都是工程类的。
老师说这也是圈子,做工程更多的还需要数据,这是掌握在大厂中的。
“还有就是没算力,说白了就是没钱。”
再次强调了实践:还引用到了1978年改革开放的报纸——实践是检验真理的唯一标准~
之后就是还有一些实验,练习操作Linux系统的,教大家安装了一下虚拟机,并加装Ubuntu。
在这个方面我的经验是很丰富的。我的看法,这些实践操作覆盖面广,有的会非常有趣,有的会非常痛苦。
但是通过搜索和不断尝试解决问题的过程非常可贵,它可以帮助我们锻炼独立解决问题的能力,在这个过程中,我们对系统以及应用的理解就是在这一个个过程中不断深入的。
其他的建议:我感觉使用WSL(子系统)快得多,尤其是新出的WSL2,而且可以连接到图形界面。这个就快速且方便的多了。
不过前提是还是在虚拟机上练得足够熟练再用WSL吧,因为如果有一些基础知识不清楚,会受到很多阻碍,对积极性是一种打击(我认为积极性非常宝贵,请保护好它。)
课程特点:夹带私货(熟悉的风格,熟悉的老师,并带着老师的私货)
一点小反馈:有的同学觉得课程水不讲干货,有的同学觉得老师废话多。之所以会产生这样的感受,我认为主要还是因为老师讲课习惯把理论概念和私货夹在一起,可能会造成一种分神,和逻辑不清的感觉。我的反馈是如果我们能把这个分离成两部分就好了,当然,需要一个程度。适度的解释可以帮助很好地理解理论概念,而过度的解释就会导致没法对理论知识理解到位,并且感觉很分散混乱。当然老师的经验也是极其丰富的。能跟着这样的老师学习也是非常可贵的,老师有一种创新的精神(老师总在尝试搞“改革”)。
课程大纲安排:
周次 | 理论环节 |
---|---|
1 | chap00 课程介绍 |
chap01 计算机系统概述 | |
2 | chap02 OS概述 |
3 | chap03 进程描述和管理 |
chap04 线程/SMP/微内核 | |
5 | chap05 并发性之同步互斥 |
6 | chap06 并发性之死锁饥饿 |
8 | chap07 内存管理 |
9 | chap08 虚拟内存 |
12 | chap09 单处理器调度 |
13 | chap11 I/O管理和磁盘调度 |
14 | chap12 文件管理 |
———————–
零基础智能设计与实践-*老师-计算机学院
(第一学期那会去学校工坊焊过一块板(那次是帮临时有事舍友去),但没想到今天又见创客了,焊板子还是很好玩的,尤其是安静动手的过程
我也是非常喜欢。)
(另一次接触硬件的见闻就是在网院的开源安全奖励计划分享会,高凯老师说他的一个开源项目就是他有一次买了一个开发板发现不能用,就自己写了个驱动,获得了很多star)
(最直接的接触还是上学期的数电实验,用FPGA浅浅烧录了个计时器啥的)
关于硬件的一门通识课。有不少同学来自学校的开源硬件协会。这门课是一个比较特殊的通识课。
关于动手的环节有很多。使用电烙铁,焊板子。这可能只是我们课堂里的一个知识,但以后进入生活之后家里边一个什么东西,
自己就可以修一修,包括在工作中,我们自己就可以维修,说不定哪天自己就可以设计。
“通过这个课程给大家一些启发:通过现有的一些开发工具,创作一些东西,讲一些来自互联网的东西下沉到实体。”
“在动手技能方面,目前收到AI的冲击较小一点,这种小操作类的东西AI还是不太多替代的,可以撑更久一点。”
这门课以科普为主,尽量使用一些低代码的工具,把东西设计出来。还有一门课专门硬件设计,就是比较专业,后边去参与竞赛的。
“任何东西,先有设计,再有一个实物。”
这门课让大家体验一下这个环节:将一个想法落实出来,变成一个实物(设计变为现实的过程)。
将开源软件,开源硬件的知识给大家一个普及。
这个课程没有专业限制,同时也提供零基础的方法,帮助大家完成。
如果大家对什么有兴趣,我们计算机学院那边还有一个工坊。
“同学们不能说我只是来听一听来玩,而是要花时间学到点东西。”
希望同学们尽量参与,进行天马行空的想象,发现生活中的需求。
我们就是帮人工智能(大模型)接入现实生活的场景,完成与人的交互过程,进行小发明,甚至创业。
主题思想:带大家去做创客,带大家玩一些这些稀奇古怪的玩意。
(唉这个东西我爸应该是极其喜欢吧?要是能带着他来上他一定很高兴。)
老师提到了原来江安的创业街上有一个创新超市(我听学长也说起过),我入学的那年项目刚好结束。
这个项目做了4年,技术含量很高,有很多智能硬件作品的直接应用。据说这个超市盈利很好。目前在工坊中还能看到许多作品。
这门课最主要的环节还是设计环节,也是老师最喜欢的环节。
之后老师就开始介绍课程讲授团队:
slogan:注重软硬与硬件的结合、从基础到应用
老师是工学博士,特别喜欢做一些稀奇古怪好玩的东西,老师96年本科的时候就带着全班同学制作过游戏手柄。
当时老师的专业是计算机软件,数电模电都没有学,为了把游戏手柄接入计算机,老师先学微机系统与接口,查阅书籍,
搞清每一个开关/按钮所对应的模拟量/数字量。为了把开关的模拟量接入,老师就学了模电,还找到了学硬件的同学检查。
那会在成都一环路,飞奔出去买三极管,尝试接入电脑。仅用15块钱解决了售价100元的游戏手柄,成为当时一大炸裂的消息,
老师那会分享了他的设计草图,后来他们班里一半的同学都拥有了游戏手柄。
(老师描述的经历非常有趣,那会的大学生活也是真的生活。想到现在的大学生,不如说我们是在大学生存,压力太大了,丢掉了一些很有价值的东西)
之后还介绍了学校的这个开源硬件协会,最初是老师在帮助学生做大创,后来发现大家都有很多共同的问题,于是
老师就有了一个想法,建立一个社团。后来这个社团也是我们学校影响力相当大的一个社团,老师还提到了初创的几个老师
这里看到了老熟人了:赵辉老师和方智阳老师~,老师还特别介绍表扬了方老师,说他是最早在学校帮助大家做这个的。
之后的环节是让每个人站起来介绍自己,自己的专业背景,兴趣爱好,擅长方向,以及创新想法。
比较出乎我的意料,前排的同学非常健谈地介绍自己,介绍自己给别人,表达合作的意向。
总之,感觉他们水平挺高的,大部分来自计算机学院,语言表意清晰,非常开朗。
这里我要指出我发现的计算机学院和网络空间安全学院一个重要的区别:
在这里,老师不会引导大家介绍自己的专业排名多少,什么课上取得了九十几的高分,有什么什么头衔,以及获得过多少别人没有的经历。
简言之,老师不会引导学生去将自己与别人做比较,比别人优秀多少,自己知道这个,知道那个,懂多少东西,有多么多么牛。
在这堂课上,我看到同学们表达的知识兴趣方面,丰富的个人想法,他们的开朗,自信,给我的印象非常深刻。
(我认为这里有一个不同:你如此优秀不是因为你是一个数字,而是你是一个有思想的人。你值得每一个人的尊重不是因为你优于别人,而是因为你同样尊重别人的想法,具有欣赏别人的能力。)
这门通识课很好地让同学们感受到了开源思维,开源想法,以及极客,创客的这种创新,开放,共享精神。
———————–
问题求解实践-*老师-计算机学院
(没去模式识别引论,来问题求解实践了。上学期的时候朋友邀我去玩他在这门课写的死神vs火影,还是pretty cool的。这门课的课程要求就是完成一个完整的项目,一次完整的小组工作经历)
(一进门就看到了W卷,刚刚上完C++的W卷。W卷给我介绍了他的人工智能系同学,我借此得到了矩阵分析课的课件。)
简言之,这门课是给计算机科学同学的软件工程。
一门实践课,让同学们在项目开发中的团队协作能力、实际系统分析与设计能力、实际工程编码能力。
老师出题,让同学写项目,从开始选题,需求分析,到最后的测试分发。
这里老师的讲解回答了我以前的一个疑惑:
翁恺老师讲C语言的时候为啥总是强调写一个函数的时候都要写成一个出口,不要在代码中间return。
老师提到了内存泄漏问题,代码中间return掉很容易导致忘了delete指针。
非周期性的项目崩溃,同学们可以猜到是什么原因吗?
单线程的错误程序,出错的话,跑100次就会出错100次。
而多线程的错误程序,错误是不可重现的,跑100次可能偶尔错,无法预测。
考虑线程安全性造成这种崩溃。
后边给大家分享一些我们在工程当中见过的一些神奇的事,奇异的问题。
让大家了解程序是在什么地方垮掉的。另外的就是这门课为企业实习,毕业设计打下基础。
算法类的毕业设计:我们可以在这门课中学到怎么改造,优化。
开发类的毕业设计:我们可以在这门课中学到实际的工程能力,为后边减轻负担。
———————–
GPU平台编程设计-*老师-计算机学院
(前两天去学算法和数据了,周五该解决算力问题了。集齐算法,算力与数据,召唤神龙~)
(寒假的时候安装CUDA在模型上试过我的4060,所以看见这门课眼前一亮)
“本门课程会涉及到大量的编程。”
老师带GPU编程好几年了,亲身感受是GPU编程已经越来越重要了。
GPU的编程有一些特性和原理,帮助同学们进行深入的了解。
展示了一个视频,GPU绘画。
“Ladies and Gentlemen,Science class is now over!”(并行计算进入应用)
参考书籍:《大规模并行处理器程序设计》,《大规模并行处理器编程实战》
前置知识:C语言编程,线性代数
不仅要了解算法理论上的东西,还要了解底层它是怎么来运算。
老师认为这是计算机背景所有学生所必备的。
之后展示了一些列显卡产品,最便宜的也是6位数。
“所以同学们可以看到哈,GPU编程不仅费大量的智力,还费大量的财力”
然后是新闻,A100和H100前年被美国限制出口给中国。
同时老师也指出,学习这样的技能以后国家是有迫切需要的。“看这个国际形势哈,以后也是有无限的发展机会的。”
之后就是GPU vs CPU的介绍
GPU&AI的介绍。
并行处理:这个会让大家在操作系统的学习上有更深的认识
CPU和GPU具有的区别,主要在于它的Latency和throughput
延迟与吞吐量:这个会让大家在计算机网络的学习上有更深的认识
CPU在顺序执行上比GPU快十倍,但GPU在并行执行上比CPU快得多。
GPU的硬件设计差异:
- 大缓存
- 复杂控制
- 强力算术单元
关于GPU编程:
通过C语言操作CUDA(Compute Unified Device Architecture)进行编程。
CUDA是一个软件包,专门用来操作英伟达GPU。
这门课关于图形学的东西不多,更多的还是GPU在AI方面的应用。
在用GPU训练之前,2012年左右。那些人工智能算法,大家都觉得是玄学,GPU只是用来玩3D游戏的硬件。
但自从加入GPU计算,发展被极大加速。
推荐大家看:《Implementation details of AlexNet(2012)》(原始的C程序实现CNN)(就像12年版的pytorch)
这是卷积神经网络的一个通用实现,非常具有开创性。
最后老师演示了一个图像处理程序,展示了GPU对这个程序计算的时间比CPU快八十多倍。
———————–
LoOS操作系统实践组-操作系统课程组-网院
(这个是赵辉老师联系组织的操作系统实践课程组,在周五下午组织开了个项目启动会,本来不打算做记录的。但是这个项目让我很惊喜,所以特别做个记录在这。)
LoOS是前届学长们在操作系统开发协会的项目——一个类Unix宏内核操作系统,教学用操作系统。这个项目是叫一些同学来内测,虽然是内测,但是是真的可以学到东西的
一件事,可能就是因为对保研没有直接加分,参加的同学只有9个。但是,这个学习机会是真的好,这里请到了Li学长和高凯教授全程辅导,参加同学可以得到强有力的支持。
在这个小会上高老师和Li学长对操作系统课的学习方法,实践方法等等进行了全面的讲解介绍,仅是一个小会议即可让我很受益了。
一句话描述就是:真的好到没边。
我的感觉,如果真的希望有朝一日能对计算机组成原理,操作系统,计算机网络,有一个较好的掌握,系统级编程是一个绕不开的技能,而这个项目是一个绝佳的入口。