SynX 2023 上招新-机器学习类题目
1. Python 基本使用
[blame Mikivis]
本题目要求使用 Python 语言编写程序,找出 1~520 中的所有素数并输出。请提交 Python 源代码及运行结果的截图。
2. 数据可视化
[blame Mikivis]
本题目提供一份某所高中一些同学的各种考试成绩记录及数据说明。但本题不涉及复杂的数据分析,而是进行一些数据可视化,下面是题目要求:
听起来有点像用 Python 实现 Excel 的功能。 ——By LAuemtihneer
-
使用
pandas
读入文件,找到考试数据记录最多的那次考试,作为本题的处理对象)不会有人这个都能找错吧? ,难道是 17 年期末考试吗) -
怎么有些同学的考试科目只有 2 门,有的竟然有 20 门,那么请你找到考试科目为 9 和 10 的同学
-
处理缺省值,把作弊同学(分数为 -1)该科分数记为 0;缺考同学(分数为 -2)该科分数记为该科有成绩同学分数的均分;免考同学(分数记为 -3)该科分数记为满分的 90%(语数英满分为 150,其余为 100),按照处理-1,-3,-2的顺序处理缺省值
不管这几类同学是不是都存在,都必须执行这个操作,不用处理 NaN 值(正常来说直到现在你是不会遇到 NaN 值这个问题的)
-
调整你的 DataFrame 格式,要求仅保留学生 ID,学科名和分数,将学生 ID 作为 index,各科学科名作为 columns,分数作为值填充,达到下图效果:
-
找到这些同学中,除了技术该门学科以外,其余九门学科总分最高和最低的两位同学,画出他们该九门分数的柱状图,横轴为学科名称,纵轴为分数,要求显示在同一张画布上
请提交数据处理与可视化的代码及结果截图。
备注:
- 本题目运行需要
pandas
、matplotlib
- 学习 Python 常用数据处理库
pandas
,就可以很轻松完成这个任务 - 使用 Jupyter 会更加方便的完成本题
ml_q2_数据及说明.zip
题目文件下载地址:
https://www.synx.tech/wp-content/uploads/2023/03/ml_q2_数据及说明.zip
该压缩文件解压后是一份 CSV 文件与数据说明。
3. DNN 与 BP 算法
[blame LAuemtihneer]
DNN(Deep Neural Network)是全连接神经网络,BP(Backpropagation Algorithm)是误差反向传播算法。BP 算法可以高效的训练 DNN,该方法对网络中所有权重计算损失函数的梯度以最小化损失函数。本题目提供一份 IPYNB 文件,该文件期望通过一个简单地 DNN 实现 Mnist 手写图像数据集进行识别。除此之外,本题目还提供一份 ZIP 文件,解压后可得 mnist.pkl
,IPYNB 文件中包含读取 mnist.pkl
文件并将其转化成实际 Numpy 数组的函数。
请补全 IPYNB 文件中包含 #TODO
标记的代码。本题目运行仅需 numpy
与 matplotlib
库。
要完成本题目,可能需要如下知识:感知机、全连接神经网络、偏导与梯度、链式法则、BP 等。
本题虽然提供的代码是 IPYNB 格式的,但你也完全可以将其导出普通的 Python 文件,使用 IPYNB 只是为了便于编写代码提示。
请提交补全的 IPYNB 文件或等效的 Python 文件,并附上“验证训练结果”小节得到的图像的截图。
ml_q3_dnnbp.zip
题目文件下载地址:https://www.synx.tech/wp-content/uploads/2023/03/ml_q3_dnnbp.zip
该压缩文件解压后是 ml_q3_dnnbp.ipynb
与 mnist.pkl
两个文件。
预计训练后的运行结果:
4. 兴趣题
4.1 试试搭一个神经网络吧
[blame Mikivis]
好吧,前面的问题对于即将加入SynX的你来说太简单了吧。
既然你已经会了python的基本语法,那就来搭个简单的网络吧
下面是本题任务:
-
任务1:注册kaggle账号,了解kaggle基本使用,并报名该比赛
-
任务2:阅读了解题目要求
-
任务3:使用pytorch或tensorflow搭建一个神经网络,用训练集训练,并对测试集做出预测
-
任务4:上传你的预测,并且score超过0.75
提交要求:
- 源码加最好一次成绩截图,即Leaderboard页面截图(没有达到0.75也可以)
- 代码自己写不得抄袭
- 不得使用预训练模型
Tips:
- 可以去学习网上学习数据预处理,怎么处理可恶的NAN?有些值不是数字如何处理?数据之间范围相差太大怎么办?……
- 你可能会遇到这些概念:DataSet,DataLoader,损失函数,优化器……
- 鼓励多向学长提问,直接在群里大胆@相关人员(给我狠狠的blame)
4.2 small Large Language Model
[blame Darren]
warning:大量前置知识needed
近来LLM卷的如火如荼,各类backbone和基于其的应用五花八门,在看完了GEN-2、Copilot-X、GPT-4等模型或产品的效果后,你是否也想拥有一个自己的 small Large Language Model模型呢?
机会来了,Meta的大模型LLaMA权重已经泄露,最小的模型参数文件仅有7B(半精度存储,14G),你可以下载源文件,也可以使用:hugs:上的模型文件,请探索目前开源的知名项目,如斯坦福的羊驼,来对它进行微调吧!
运行起来就算成功!请各显神通,找到你能找到的最好的硬件,想到你能想到的最好的节省显存的方法。
一些参考资料:
- 斯坦福羊驼微调
- 服务器租赁平台
- RLHF简单理解
- lora方法实现库(超级省显存)
- 8bit精度存储方法
ps: 仅需要完成RLHF的第一步,如果有大佬尝试了后面几步请带带我orz
0 条评论