社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

16岁高中生的「卷」,用13000+行代码,从头写了一个C++机器学习库

爆炸吧知识 • 3 年前 • 210 次点击  

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

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

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


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

项目地址: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 算法是不可能的。所以除了库之外,他还计划发布全面的文档,以解释库中每个机器学习算法背后的数学背景,涵盖统计、线性回归、雅可比矩阵和反向传播等内容。以下是关于统计的部分内容:


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


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


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


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

  • 卷积神经网络(CNN)
  • 支持向量机(SVM)的内核
  • 支持向量回归

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

  • 回归(线性回归、逻辑回归、Softmax 回归、指数回归、Probit 回归、Cloglog 回归、Tanh 回归)
  • 深度、动态、规模化神经网络(激活函数、优化算法、损失函数、正则化方法、权重初始化方法、学习率规划器)
  • Prebuilt 神经网络(多层感知机、自编码器、Softmax 网络)
  • 生成建模(表格对抗生成网络)
  • 自然语言处理(Word2Vec、词干提取、词袋模型、TFIDF、辅助文本处理函数)
  • 计算机视觉(卷积操作、最大 / 最小 / 平均池化、全局最大 / 最小 / 平均池化、Prebuilt 特征向量)
  • 主成分分析
  • 朴素贝叶斯分类器(多项分布朴素贝叶斯、伯努利分布朴素贝叶斯、高斯分布朴素贝叶斯)
  • 支持向量分类(原始形成、对偶形成)
  • K-Means 算法
  • K 最近邻算法
  • Outlier Finder(使用标准分数)
  • 矩阵分解(SVD 分解、Cholesky 分解、QR 分解)
  • 数值分析(数值微分、Jacobi 向量计算器、Hessian 矩阵计算器、函数近似器、微分方程求解器)
  • 数学变换(离散余弦变换)
  • 线性代数模块
  • 统计模块
  • 数据处理模块(特征缩放、均值归一化、One Hot 表征、反 One Hot 表征、支持的颜色空间转换类型)
  • 实用工具(TP/FP/TN/FN 函数、精度、召回率、准确率、F1 分数)

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


网友:这么卷,我怎么办


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


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

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


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



超模君 说

看到最后

你们觉得呢?


欢迎到留言区留言


超模君精心准备了一场名为”首届数学好物节“的活动

点击下方海报即可跳转到购买界面


每晚会在超级数学建模公众号公布

数学好物节抽取的幸运模友订单


早买中奖的机率越高

在活动期间的有效订单会自动每天重复进行抽奖

中奖后客服会主动联系您


文转自算法与数学之美如涉及侵权,请联系删除

超模君


如有想批量采购数学好物礼品
可添加微信号:cmxbxj001 咨询👇

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/127265
 
210 次点击