时间:2022-10-09 17:57:04 | 浏览:348
机器之心报道
机器之心编辑部
一个热爱计算机的少年,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/MachineLearning/comments/srbvnc/p_c_machine_learning_library_built_from_scratch/
现在的橱柜设计都在使用实木板材,作为家具产品,它的稳定性和环保性能还是很好的,是很多业主的首选。但是在购买的时候,我相信大家对价格问题都是很感兴趣的。那么实木板材价格表,装修用实木板材的价格一般是多少?直接进入正题,给大家最想了解的答案,希
15 张思维导图来快速学习 PHP 语言基础。PHP 简介(点击图片查看大图)PHP安装(点击图片查看大图)PHP语法(点击图片查看大图)PHP数据类型(点击图片查看大图)PHP变量(点击图片查看大图)PHP数组(点击图片查看大图)PHP常
PHP能做什么?可以用来做网站、游戏、APP、小程序。。。PHP能做任何事,但其最主要的应用,就是与数据库交互来开发web应用(web应用也就是网站啦)作为一名先进的PHPer,迫切的想提高自己的编码水平,首先,面对PHP众多杂乱无章的各种
一、强类型和弱类型语言:C、 C++、 Java 、Python都是强类型的语言。PHP是弱类型的语言。强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型。而弱类型语言是一种弱类型定义
首先,我们先普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如编写一篇文章,下载一首MP3等,而计算机干活的CPU只认识机器的指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。
这是一个比较全面的学习流程,也并不一定要依据这样来学习,但是学习PHP的领域就是这样的。从事PHP开发,你知道在不同的阶段需要掌握哪些技能吗?下面简单的介绍一下:一 PHP初级开发工程师1. 走进PHP的世界PHP介绍、PHP版本发展历史、
PHP能做什么?学习PHP,你应该感到幸运,因为如果你学过其他语言,你就会发现PHP还是相对简单的,如果是初学阶段,你要搞清楚HTML和PHP的概念,之后你完全可以让PHP给你算算一加一等于几,然后在浏览器输出。不要觉得幼稚,这虽然是很小的
#学编程有哪些好点的网站# 今天小编给大家推荐6个自己经常去看的编程网站,希望大家找到一个自己合适的,好好利用,必将会有长足的进步。1、慕课网慕课网(IMOOC)是IT技能学习平台。慕课网(IMOOC)课程涉及JAVA、前端、Python、
虽然 PHP 语言在编程开发语言中算是较为简单的一门,但还是具备编程语言的一些常见特点:语法较难,逻辑复杂等。关于学php需不需要报培训班,这个问题并没有一个准确的答案。如果自学PHP的话,成本会相对较低,但学习效率也会较低。如果没有好的辅
如今参加PHP培训学习的小伙伴越来越多,但是每一位都能学到专业实用的技能成为高薪的PHP开发工程师吗?当然不是,学习PHP开发并不是那么容易的,当然也没有想象中那么困难,想要成为专业的PHP开发工程师一定要选择专业靠谱的PHP培训机构学习。