关于ide:16-岁高中生的卷用-13000-行代码从头写了一个-C-机器学习库

31次阅读

共计 2087 个字符,预计需要花费 6 分钟才能阅读完成。

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

起源:机器之心

人工智能畛域当初也风行高中生援救世界了?

一个酷爱计算机的少年,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),并不适用于理论用例。因而,测试在这里并不重要。

参考链接:

https://www.reddit.com/r/Mach…

开源前哨 日常分享热门、乏味和实用的开源我的项目。参加保护 10 万 + Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。

正文完
 0