机器之心报道

机器之心编辑部

人工智能领域现在也流行高中生拯救世界了?

一个热爱计算机的少年,16 岁就已经可以做出点东西来了,比如开发个粤语编程语言、拿个 Kaggle 冠军、写个游戏、开发个加密货币投资机器人、从头构建一个 C 机器学习库什么的。

今天要介绍的就是一位从头构建 C 机器学习库的 16 岁少年(@novak-99),他的自荐帖在 reddit 上获得了数百的点赞量。

机器学习有关计算量面试题(16岁高中生的卷)(1)

他构建的这个库(ML )有 13000 多行代码,涵盖了统计、线性代数、数值分析、机器学习和深度学习等主题。

机器学习有关计算量面试题(16岁高中生的卷)(2)

项目地址:https://github.com/novak-99/MLPP

@novak-99 表示,他之所以构建这个库,是因为 C 是他所选择的语言,但到了 ML 前端,C 却用得非常少

C 是高效的,而且有利于快速执行。所以大多数库(如 TensorFlow、PyTorch 或 Numpy)都使用 C/ C 或某种 C/ C 衍生的语言来优化和提高速度。

但当他查看各种机器学习算法的前端实现时,他注意到大多数算法是用 Python、MatLab、R 或 Octave 实现的。他认为,C 之所以在 ML 前端用得比较少,主要是因为缺乏用户支持,以及 C 语法比较复杂。

与 Python 相比,C 的机器学习框架少得可怜。此外,即使在流行的框架(如 PyTorch 或 TensorFlow)中,C 的实现也不像 Python 的实现那样完整,存在的问题包括:缺少文档;并不是所有的主要函数都存在;没有多少人愿意贡献,等等。

此外,C 不支持 Python 的 ML 套件的各种关键库。Pandas 和 Matplotlib 都不支持 C 。这增加了 ML 算法的实现时间,因为数据可视化和数据分析的元素更难获得。

因此,他就决定自己写一个 C 的机器学习库。

他还注意到,由于 ML 算法非常容易实现,所以一些工程师可能会忽略它们背后的实现和数学细节。这可能会带来一些问题,因为在不了解数学细节的前提下,针对特定用例定制 ML 算法是不可能的。所以除了库之外,他还计划发布全面的文档,以解释库中每个机器学习算法背后的数学背景,涵盖统计、线性回归、雅可比矩阵和反向传播等内容。以下是关于统计的部分内容:

机器学习有关计算量面试题(16岁高中生的卷)(3)

打开项目,我们可以看到其中的一些细节:

涵盖 19 大主题,这个 ML 足够大且全

与大多数框架一样,这位高中生创建的 ML 库是动态的,不断地在变化。这点在机器学习的世界尤为重要,因为每天都会有新的算法和技术被开发出来。

机器学习有关计算量面试题(16岁高中生的卷)(4)

目前,ML 库中正在开发以下模型和技术:

整体而言,ML 库包含了 19 大主题以及相关细分内容,分别如下:

更多细节内容请参考原项目。

网友:这么卷,我怎么办

对于 16 岁就能做出如此出色的项目,有网友不禁感叹,这个世界上的高中生都在干些什么啊?!我在他们这个年纪还在『啃手指头』。而他们已经在 ICLR、NeurIPS 会议上发表论文了……

机器学习有关计算量面试题(16岁高中生的卷)(5)

还有网友表示,如果高中生都在做这些事,想象一下几年后博士申请会有多激烈吧。现在,你只需要发表 3 篇以上的 NeurIPS 论文,将来就得获得图灵奖了。

看似开玩笑的话,也可以说是目前某种程度上的「卷」吧。

机器学习有关计算量面试题(16岁高中生的卷)(6)

不过,也有网友指出,项目中有 13000 行代码却没有测试?另一位网友认为,这是一个基于个人爱好创建的项目(pet project),并不适用于实际用例。因此,测试在这里并不重要。

机器学习有关计算量面试题(16岁高中生的卷)(7)

参考链接:

https://www.reddit.com/r/MachineLearning/comments/srbvnc/p_c_machine_learning_library_built_from_scratch/

,