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

机器之心报道
机器之心编辑部

人工智能领域现在也流行高中生拯救世界了?
一个热爱计算机的少年 , 16 岁就已经可以做出点东西来了 , 比如开发个粤语编程语言、拿个 Kaggle 冠军、写个游戏、开发个加密货币投资机器人、从头构建一个 C++ 机器学习库什么的 。
今天要介绍的就是一位从头构建 C++ 机器学习库的 16 岁少年(@novak-99) , 他的自荐帖在 reddit 上获得了数百的点赞量 。
16岁高中生的「卷」,13000+行代码,从头写了一个C++机器学习库
文章图片

他构建的这个库(ML++)有 13000 多行代码 , 涵盖了统计、线性代数、数值分析、机器学习和深度学习等主题 。
16岁高中生的「卷」,13000+行代码,从头写了一个C++机器学习库
文章图片

项目地址: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岁高中生的「卷」,13000+行代码,从头写了一个C++机器学习库
文章图片

打开项目 , 我们可以看到其中的一些细节:
涵盖 19 大主题 , 这个 ML++ 足够大且全
与大多数框架一样 , 这位高中生创建的 ML++ 库是动态的 , 不断地在变化 。 这点在机器学习的世界尤为重要 , 因为每天都会有新的算法和技术被开发出来 。
16岁高中生的「卷」,13000+行代码,从头写了一个C++机器学习库
文章图片

目前 , ML++ 库中正在开发以下模型和技术:
  • 卷积神经网络(CNN)
  • 支持向量机(SVM)的内核
  • 支持向量回归
整体而言 , ML++ 库包含了 19 大主题以及相关细分内容 , 分别如下:
  • 回归(线性回归、逻辑回归、Softmax 回归、指数回归、Probit 回归、Cloglog 回归、Tanh 回归)
  • 深度、动态、规模化神经网络(激活函数、优化算法、损失函数、正则化方法、权重初始化方法、学习率规划器)

    特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。