电脑之心报导
电脑之心杂志社
人工智慧应用领域那时也盛行小学生挽救当今世界了?
两个爱好计算机系统的少女,16 岁就早已能作出点小东西来了,比如说合作开发个广东话C词汇、拿个 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),并不适用于实际用例。因此,测试在这里并不重要。