当前位置:首页 > 站长杂谈 > 正文内容

13000 行代码、19 大技术,这位 16 岁高中生用 C++ 重头到尾构建了一个机器学习库!

小宝2年前 (2022-02-26)站长杂谈914

本文来源 CSDN(ID:CSDNnews)
作者 | 苏宓
转自:百度校园



你是从什么时候开始编程的?
据 CSDN 调研数万名开发者的数据显示,近六成的开发者表示自己写下第一行代码的年龄是在 16-20 岁间。其次有 31.68% 的受访者是在 21-25 间首次接触了编程。


640 (1).jpg 13000 行代码、19 大技术,这位 16 岁高中生用 C++ 重头到尾构建了一个机器学习库!  第1张

不得不承认,编程的主力军越来越趋于年轻化。不过也有不少网友表示,“这纯属是别人家的孩子,我的高中可能还是在玩泥巴”。


又属有些拉“嫉妒”系列,近日国外再次有一位别人家的孩子荣登热搜。起因于其在 Reddit 发布了一篇主题为《一个 16 岁的高中生从零开始构建 C++ 机器学习库》的帖子,引来数百个用户的点赞与评论。


640 (2).png 13000 行代码、19 大技术,这位 16 岁高中生用 C++ 重头到尾构建了一个机器学习库!  第2张

灵感萌生


据悉,这位网名为 @u/novak-99 的高中生开发了一个 13000+ 行代码的 C++ 机器学习库——MLPP(GitHub 地址:https://github.com/novak-99/MLPP)。值得注意的是,该库覆盖了统计学、线性代数、数值分析、机器学习、深度学习等多主题技术。
之所以开发这个库,作者解释主要有两层因素。
一是不少工程师容易忽视 ML 算法背后的具体实现与细节。
“时下其实想要实现 ML 算法并不难,但是很多工程师经常忽略其背后的实现原理和运用的技术细节”,@u/novak-99 无奈地说道。
所谓学习编程思维往往比实现某一功能的开发来得更为实在,@u/novak-99 表示,如果不了解算法背后的数学技术细节,就无法在实现某些特定用例时反过来优化 ML 算法。


640 (2).jpg 13000 行代码、19 大技术,这位 16 岁高中生用 C++ 重头到尾构建了一个机器学习库!  第3张

 来源:unsplash



确实如此,“重复造技术轮子,缺乏创新”是当前技术圈中存在的痛点之一,而在学习编程的同时,了解工具背后的实现原理,也有助于进一步提升编程思维与创新。
当提及第二个原因时,@u/novak-99 表示,“ C++ 在 ML 领域缺乏支持,使用 C++ 开发的机器学习前端库更是少之又少。
在 @u/novak-99 看来,在 TensorFlow、PyTorch、Numpy 等主流的机器学习框架中,不乏有很多库采用了 C/C++ 或某种 C/C++ 衍生工具进行优化和提高运行速度。不过,@u/novak-99 特别指出,这里的机器学习领域并非是后端开发,而是前端。


640 (3).jpg 13000 行代码、19 大技术,这位 16 岁高中生用 C++ 重头到尾构建了一个机器学习库!  第4张

 来源:unsplash

@u/novak-99 表示,其上手的第一门编程语言就是 C++,这门语言高效且有利于快速执行。因此他在 15 岁开始学习了解各种机器学习算法实现时,发现大多数都是用 Python、MatLab、R、Octave 来实现的。


“尤其是与 Python 的数量相比,C++ 机器学习中的框架数量相形见绌。此外,即使在 PyTorch 或 TensorFlow 等流行的框架中,C++ 的实现也没有 Python 的那么完整:缺乏文档参考、并非所有的主要功能都能应用上、没有多少人愿意贡献等等。


此外,C++ 不支持 Python 的 ML 套件的各种关键库;Pandas 缺乏对 C++ 的支持,Matplotlib 也是如此。这增加了 ML 算法的实现时间,因为数据可视化和数据分析的元素更难获得。”

640 (4).jpg 13000 行代码、19 大技术,这位 16 岁高中生用 C++ 重头到尾构建了一个机器学习库!  第5张

 来源:unsplash


由此,这也让他萌生了使用 C++ 开发一个机器学习库的想法:
C++ 在 ML 领域缺乏使用的主要原因是由于缺乏用户支持和 C++ 的复杂语法。Python 有数千个用于数学、线性代数、机器学习和深度学习的库和包,而 C++ 没有这种用户支持。现在,你可以期待一下使用 C++ 开发的最强大的机器学习库。
不过,针对这一点,有不少人反驳道:
实际上,大多数(/所有相关的)ML 框架都是用 C++ 实现的。
Pytorch、Tensorflow 等只是提供广泛的 Python 绑定,以便开发者能够更快地进行实验和开发。所有繁重的工作量都在极其优化的 C++/C/CUDA 代码中处理。
在大多数情况下,Python 性能和开销是可以忽略的。例如,在 1 小时的过程中节省 10 秒并不是什么大问题,尤其是当您仍处于实验阶段时。
如果你想不惜一切代价避免使用 Python,你可以使用 Pytorch 的 C++ API。
不过,无论 @u/novak-99 对 C++ 在 ML 领域的应用情况判断是否有误,其初心仅是想要进一步让 C++ 在 ML 领域得以应用,同时也想呼吁更多的开发者多关注算法背后的实现。

具体实现
@u/novak-99 表示,其计划开源所有的实现文档,并详细地解释库中每个机器学习算法背后的所有数学实现,借此,希望能够对其他工程师们有所帮助。
以下是统计部分的摘录:



640 (3).png 13000 行代码、19 大技术,这位 16 岁高中生用 C++ 重头到尾构建了一个机器学习库!  第6张

在具体的项目中,@u/novak-99 所开发的 ML++ 覆盖回归、Prebuilt 神经网络、自然语言处理、计算机视觉等 19 大技术主题,53+ 技术细节,以此想要将其成为普通开发者和机器学习工程师之间的桥梁:


与此同时,ML++ 也在紧随技术实时更新,除了以上,ML++ 还聚焦:


  • 卷积神经网络
  • 支持向量机的内核
  • 支持向量回归



写在最后
别人的 16 岁,或许对于技术的趋势判断有误,或许开发的算法暂时并不能在实践中应用,或许还存在许多的不足,但是作为一个高中生,他的编程思想、实践操作仍值得我们为其喝彩与学习!
参考资料:
https://www.reddit.com/r/MachineLearning/comments/srbvnc/p_c_machine_learning_library_built_from_scratch/



扫描二维码推送至手机访问。

版权声明:本文由 菠萝博客 发布,如需转载请注明出处。

本文链接:https://www.boluobk.cn/post/195.html

标签: C++
分享给朋友:

相关文章

【脚本分享】一键安装锐速/BBR,为VPS提速

【脚本分享】一键安装锐速/BBR,为VPS提速

一键安装锐速/BBR,为VPS提速使用方法:wget -N --no-check-certificate "HTTPS://raw.githubusercontent.com/chiakge/linu...

康乐Kangle 商业版超强防CC 点击继续访问 一个美化css的界面

康乐Kangle 商业版超强防CC 点击继续访问 一个美化css的界面

超强版防CC教程这篇文章的防护配置方法同博文:康乐Kangle 商业版完美智能防CC攻击(0误封)3311后台防护CC设置教程 防御一切CC攻击。 的配置方法一样,只是更换了anit_cc中msg的参数,此参数的防护方案是如果超过...

利用Haproxy解决SMTP发信暴露服务器源IP的方法

最近有人问我自己搭建的WHMCS系统用SMTP发信会暴露服务器IP,在这里发一下怎么用Haproxy解决这个问题。WHMCS 经常因为邮件问题被攻击,现在来给大家介绍一个邮件转发服务器的设置办法,可以完全隐藏掉真实的源站地址。我们以 Cen...

zblog提示“授权文件非法“的终极解决办法

zblog提示“授权文件非法“的终极解决办法

最近一段时间有很多的用户遇到了这个“授权文件非法”的提示,这是由于zblog的应用中心插件调整了规则导致的。之前本站写过一篇“zblog报错“授权文件非法”的错误原因和解决办法”的文章,但是还是有用户反应按照教程操作了之后还是提示“授权文件...

Termux安装Linux

Termux安装Linux

Termux 在安装好 proot 的情况下,是可以运行 Linux 系统的,利用这个原理,沫辰写出了 Termux 一键安装 Linux 脚本,让你的 Termux 折腾之路更加简单。准备工作项目地址: https://gith...

EMLOG利用PHP代码统计网站访问次数

对网站和网页访问次数的统计,是每一位站长必备的技能之一,而实现对网站和网页访问点击次数的常规方法是使用百度统计、CNZZ、51la等统计工具但通过这些工具统计的坏处是数据在第三方平台,站长需要不定时登录这些第三方数据统计网站的后台去查看。那...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。