SynX 2023 上招新-机器学习类题目

1. Python 基本使用

[blame Mikivis] 本题目要求使用 Python 语言编写程序,找出 1~520 中的所有素数并输出。请提交 Python 源代码及运行结果的截图。

2. 数据可视化

[blame Mikivis] 本题目提供一份某所高中一些同学的各种考试成绩记录及数据说明。但本题不涉及复杂的数据分析,而是进行一些数据可视化,下面是题目要求:

听起来有点像用 Python 实现 Excel 的功能。 ——By LAuemtihneer

  1. 使用 pandas 读入文件,找到考试数据记录最多的那次考试,作为本题的处理对象)不会有人这个都能找错吧? ,难道是 17 年期末考试吗)

  2. 怎么有些同学的考试科目只有 2 门,有的竟然有 20 门,那么请你找到考试科目为 9 和 10 的同学

  3. 处理缺省值,把作弊同学(分数为 -1)该科分数记为 0;缺考同学(分数为 -2)该科分数记为该科有成绩同学分数的均分;免考同学(分数记为 -3)该科分数记为满分的 90%(语数英满分为 150,其余为 100),按照处理-1,-3,-2的顺序处理缺省值

    不管这几类同学是不是都存在,都必须执行这个操作,不用处理 NaN 值(正常来说直到现在你是不会遇到 NaN 值这个问题的)
  4. 调整你的 DataFrame 格式,要求仅保留学生 ID,学科名和分数,将学生 ID 作为 index,各科学科名作为 columns,分数作为值填充,达到下图效果:

    ml_q2_img.png

  5. 找到这些同学中,除了技术该门学科以外,其余九门学科总分最高和最低的两位同学,画出他们该九门分数的柱状图,横轴为学科名称,纵轴为分数,要求显示在同一张画布上

请提交数据处理与可视化的代码及结果截图。

备注:

  1. 本题目运行需要 pandasmatplotlib
  2. 学习 Python 常用数据处理库 pandas,就可以很轻松完成这个任务
  3. 使用 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 标记的代码。本题目运行仅需 numpymatplotlib 库。

要完成本题目,可能需要如下知识:感知机、全连接神经网络、偏导与梯度、链式法则、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.ipynbmnist.pkl 两个文件。

预计训练后的运行结果:

ml_q3_result

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:上的模型文件,请探索目前开源的知名项目,如斯坦福的羊驼,来对它进行微调吧!

运行起来就算成功!请各显神通,找到你能找到的最好的硬件,想到你能想到的最好的节省显存的方法。

一些参考资料:

  1. 斯坦福羊驼微调
  2. 服务器租赁平台
  3. RLHF简单理解
  4. lora方法实现库(超级省显存)
  5. 8bit精度存储方法

ps: 仅需要完成RLHF的第一步,如果有大佬尝试了后面几步请带带我orz


0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注