高中生拯救世界在人工智能领域也很流行?
一个热爱计算机的少年,16岁就可以做一些事情,比如开发一门粤语编程语言,赢得Kagle冠军,写一个游戏,开发一个加密货币投资。机器人从头开始构建C++机器学习库。
今天要介绍一个16岁的男生(@novak-99)。他从零开始建立了一个C++机器学习库,他的自荐帖子在reddit上获得了数百个赞。
他构建的库(ML++)有13000多行代码,涵盖了统计学、线性代数、数值分析、机器学习、深度学习等主题。、
项目地址:。
@novak-99说他建这个库是因为C++是他选择的语言,但是ML前端很少用C++。
C++效率高,有利于快速实现。所以用C/C++或者C/C++的某种衍生语言来优化和提高大部分库的速度(比如TensorFlow,PyTorch或者Numpy)。
但他在考察各种机器学习算法的前端实现时,注意到大部分都是用Python、Matlab、R或者Octave实现的。他认为,ML前端很少使用C++的原因主要是缺乏用户支持,C++语法复杂。
与Python相比,C++中的机器学习框架很少。另外,即使在流行的框架中(如Pytorch或TensorFlow),C++的实现也没有Python那么完整,存在的问题包括:缺乏文档;并非所有主要功能都存在;愿意贡献的人不多,等等。
另外,C++不支持PythonML套件的各种密钥库。熊猫和Matplotlib不支持C++。这增加了ML算法的实现时间,因为获取数据可视化和数据分析的元素更加困难。
所以,他决定自己写一个C++机器学习库。
他还注意到,由于ML算法易于实现,一些工程师可能会忽略其背后的实现和数学细节。这可能会导致一些问题,因为在不知道数学细节的情况下,不可能为特定用例定制ML算法。因此,除了库之外,他还计划发布综合文档,解释库中每种机器学习算法背后的数学背景,包括统计学、线性回归、雅可比矩阵和逆传输。以下是一些统计数据:
当我们打开项目时,我们可以看到一些细节:
ML++涵盖了19个主题,既大又全。
和大多数框架一样,高中生创建的ML++库是动态的,不断变化的。这在机器学习领域尤其重要,因为每天都有新的算法和技术被开发出来。
目前,ML++库正在开发以下模型和技术:
卷积神经网络(CNN)
支持向量机核(SVM)。
支持向量回归。
总的来说,ML++库包含19个主题和相关的子部分,如下所示:
回归(线性回归、逻辑回归、Softmax回归、指数回归、概率单位回归、Cloglog回归、Tanh回归)
深度、动态、大规模神经网络(激活函数、优化算法、损失函数、正则化方法、权重初始化方法、学习率规划器)
预建神经网络(多层感知器、自编码器、Softmax网络)
发电建模(表格与发电网络)
自然语言处理(Word2Vec,词干提取,bag模型,TFIDF,辅助文本处理功能)
计算机视觉(最大/最小/平均池,最大/最小/平均池,预建特征向量)
主成分分析
简单贝叶斯分类器(多重分布简单贝叶斯、伯努利分布简单贝叶斯、高斯分布简单贝叶斯)
支持向量分类(原始形成,双重形成)
k均值算法。
k最近邻算法。
(使用标准分数)
矩阵分解(奇异值分解、乔莱斯基分解、QR分解)
数值分析(数值微分、雅可比向量计算器、海森矩阵计算器、函数逼近器、微分方程求解器)
数学变换(离散余弦变换)
线性代数模块。
统计模块
数据处理模块(特征缩放、均值归一化、OneHot表征、反OneHot表征、支持色彩空间转换类型)
实用工具(TP/FP/TN/FN函数、精度、召回率、精度、F1分数)
详情请参考原项目。
网友:这么大的体积怎么办?
对于16岁这么好的项目,有网友不禁感叹,高中生在这个世界上做什么?!我在他们这个年纪还在嚼手指。他们在ICLR和NeurIPS会议上发表了论文。...
有网友表示,如果高中生都在做这些事,试想几年后博士申请会有多激烈。现在只需要发表三篇以上NeurIPS论文,将来就能获得图灵奖。
如果看起来像个笑话,也可以说目前某种程度上是一个量。
但也有网友指出,项目有13000行代码,却没有测试?另有网友认为这是基于个人爱好的petproject,不适合实际用例。因此,这里的测试并不重要。