机器学习从理论到工程的第一步-编程语言篇

前言

在文章《机器学习从业者如何兼顾理论与工程》中,小夕对编程语言的选择进行了小小建议。鉴于有些同学对小夕建议的“主python,辅C++,备用matlab和java”疑问较大,小夕在此详细解释一下,也欢迎大家补充新观点哦。

为什么不是matlab?

有同学问小夕,为什么将matlab作为备用语言而不是主力语言呢?matlab也很好用啊~

其实这句话是没错的。小夕觉得,暂且不论matlab超容易学的傻瓜式语法,如果论快速实现一个机器学习的新算法的话,“matlab+库”应该比“python+库”更加方便,实现效率更高。

而且更加重要的是,以小夕感性的实践,matlab对内存的管理真的是非常非常棒,不愧是基于C实现的,这一点的优势是python和java很难比拟的。因此,在个人的电脑上训练一个深度学习model的话,可能python会由于内存不够而无法继续,而matlab完全可能胜任(以后小夕有时间给大家做个正式的对比实验)。

 

这也是为什么,学术界的大牛们,还有实验室的老师们,甚至Andrew Ng说的硅谷的程序员们在验证新算法时,似乎都是用matlab。

 

但是,注意,从头到尾,小夕一直在夸matlab实现新算法时怎么怎么样。但是相信大部分人学习机器学习还是要走向工业界的,哪怕是在学术界,一般也不会是做纯理论的,哪怕是做纯理论的,一般也不会完全不接触dirty的原始数据,或者完整工程,或者别人用其他语言实现的源码。因此,这就是说,如果要用一门语言实现一个完整的工程,那这门语言的工具库必须形成一个完整的开发链。比如原始数据是在互联网上需要自己搜集,那么这门语言:

1、最好有简单易用的爬虫库

2、要有简单易用的dirty数据预处理的库

3、要有高效率的科学计算库

4、如果数据量很大,而数据或模型并行性良好,因此要有简单易用的gpu计算支持

5、做完之后要有简单易用的可视化库

 

然而,matlab非常擅长第3步,第5步也不错,第4好像也还可以(虽然小夕没用matlab并行计算过),第2有点不方便但是也还可以,但是第1就有点非主流了。应该“得益于”matlab是商业软件,而非开源吧。

 

如果换成python呢?

第1就不用说了,scrapy应该没有人不知道吧。。。给满分是没有多少疑问的。第2步也不用说了,pandas等库也是耳熟能详的名字。第3步,numpy、scipy、tensorflow(咦?有人以为tensorflow是专门做深度学习的?)等,虽然内存管理、易用程度上会比matlab逊色一些,但是做科学计算的话最少也是第二名吧。第4步,cuda(配合深度学习框架)、openCL的支持不必说了。第5步,与matlab孰优孰劣不多说,有matplotlib等库的支持,就算比matlab差,也不会差很多。

 

这样的对比应该比较明显啦,可以将matlab看作一个专才,将python看作一个优秀的通才。因此在特定问题上,matlab可能会甩python及其库一截,但是比拼一个完整的工程的话,用matlab的综合代价可能会高很多了。

 

因此,小夕说,matlab当然要掌握啦,但是只是作为一个备选语言。在你复现一篇很新的论文的时候,恰好这个论文中的算法又难以使用当前已有的框架实现的时候,就是matlab大显身手的时候。

或者你们实验室的服务器突然挂掉了,而你要急着训练一个很吃内存的model,那么丢给matlab,在你的小本本上慢慢跑(其实跑的真的很快)也是可以的啦。

 

因此python,就是小夕推荐的主力语言,正是因为小夕发现python似乎在机器学习及其周边需求上,几乎总是有非常棒而毋庸置疑的库存在,而且语法本身又没有C/C++/Java的限制多,因此用来实现一个以科学计算(比如机器学习)为核心的完整工程是十分完美的。

为什么要C++?

那么小夕为什么要辅助C++呢?python不是已经那么棒了吗?为什么是C++而不是Java呢?

除了众所周知的”速度“原因之外,小夕觉得还有一个相当重要的原因就是“内存管理”。

 

python毕竟是一个脚本语言,虽然易用,开发效率高,然而正所谓“越高级的语言越慢、越消耗资源”,虽然python在科学计算上优化很足,这方面速度很快了,但是由于太过智能的语法和自动内存管理而导致内存消耗会比手动管理内存时多很多,这对于工业界产品而言是噩梦般的存在。因此,如果将来并不是奔着“此生只做绝对理论研究”的目标,那么C++就是继python之后第二需要掌握的语言。因此,在这方面,Java的重要度就比C++差一些了。

 

当然啦,为什么是C++而不是C,相信大家都清楚啦。工业界不仅需要速度与资源,还需要”面向对象“!我们做的是软件!高效的上层软件!

 

小夕今天特意的搜了一下百度的人工智能相关岗位(机器学习、深度学习、模式识别、自然语言处理等)(虽然百度的道德底线有问题,但是在人工智能技术上,还是不否认其成绩的),发现了相当多的python+C++组合,小夕真想说,【此处已打码】\(//∇//)\~

 

当然啦,C++也是Google开发人工智能产品的主力语言(道听途说),虽然貌似Google在大力推广Go语言?

哪里有Java了?

 

当然,也不是所有公司都是python+C++的,比如twitter就是python+java开发产品的,很多中小企业也是python+java的组合(毕竟C++相对来说难学)。

 

所以不要再纠结太多编程语言的事情啦,反正主python,辅C++,备用matlab和java的建议可以结合自己的情况来~在人工智能行业,编程语言真是最不重要的东西啦~没人会在你的C++代码中纠结“你在传地址时用的是指针(*)还是引用(&)”,但是会纠结“你的这个神经网络为什么要这样初始化呢?”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聚类算法当中的K-means算法如何去做天猫淘宝的推广任务

5 人赞同了该回答figure data-size"normal">data-size"normal">这个入口是全网人气新品池,我们今天所获取到的数据都是来源于这里。无论是C店还是B店,统统都有机会进来。这个平台最有价值的数据,就是可以告诉我们自…

通过双重众包预测 RNA 降解的深度学习模型

编辑 | 萝卜皮基于信使 RNA (mRNA) 的药物具有巨大的潜力,正如它们作为 COVID-19 疫苗的快速部署所证明的那样。然而,mRNA 分子的全球分布受到其热稳定性的限制,这从根本上受限于 RNA 分子对称为在线水解的化学降解反应的固有不稳定性。预测 …

线性代数应该这样讲(一)

前言小夕为什么要讲线性代数呢?因为有人已经做了机器学习一段时间了,竟然认为矩阵就是用来存储数据的。小夕表示非常震惊。而深刻透彻的理解核函数、PCA、LSI、谱聚类等以空间映射为理论核心的机器学习理论时,靠大学里教的那一套线性代数&…

震惊!丧心病狂的夕小瑶推出新一轮写作计划!

时至今日,距离小夕发布的第一篇正式文章已经过去整三个月啦。今天又回头看了一下自己写的第一篇文章,不禁有点感慨“文风”变了这么多,甚至有点受不了第一篇文章中的萌气了\(//∇//)\然后文章还写的不怎么样。。。虽然第一篇文章写的好差&…

LeCun预言的自监督模型来了:首个多模态高性能自监督算法,语音、图像文本全部SOTA...

来源:机器之心编辑:nhyilin人类似乎对不同的学习模式有着相似的认知,机器也应该如此!>>>>自监督学习能在各种任务中学习到分层特征,并以现实生活中可使用的海量数据作为资源,因此是走向更通用人…

史上最清楚的BP算法详解

前馈神经网络 在文章《逻辑回归到神经网络》(以下简写《LR到NN》)中,小夕为大家描述了一个从逻辑回归延伸到神经网络的过程。在《一般化机器学习与神经网络》中,小夕阐述了神经网络的一般性。这一篇会完全进入神经网络的状态&…

基于主动学习算法减少人工标注量,提升文本标注效率的方案探究

基于主动学习算法减少人工标注量,提升文本标注效率的方案探究阅读 451收藏 232018-06-26原文链接:yq.aliyun.comOPPO技术开放日第三期,未来的探索 AI&AR的实践应用juejin.im项目地址: https://github.com/crownpku/Chinese-Annotator 自…

具有生物启发训练方法的物理深度学习:物理硬件的无梯度方法

编辑 | 绿萝对人工智能不断增长的需求推动了对基于物理设备的非常规计算的研究。虽然此类计算设备模仿了大脑启发的模拟信息处理,但学习过程仍然依赖于为数字处理优化的方法,例如反向传播,这不适合物理实现。在这里,来自日本 NTT …

BP算法是从天上掉下来的吗?

第二个标题:一般而特殊的前馈神经网络前馈神经网络在文章《逻辑回归到神经网络》(以下简写《LR到NN》)中,小夕为大家描述了一个从逻辑回归延伸到神经网络的过程。在《一般化机器学习与神经网络》中,小夕阐述了神经网络…

深度学习如何应用在广告、推荐及搜索业务?阿里妈妈实践案例解读

</span></ul><div class"markdown-body"><div id"meta_content" class"rich_media_meta_list"> </div>阿里妹导读&#xff1a;靖世&#xff0c;阿里妈妈精准展示技术研究员。2011 年&#xff0c;刚进阿里的他提出…

AI for Science的上半场:人工智能如何重新定义科学研究新范式?

AI发展七十余年&#xff0c;每一技术性突破都将给人类未来开辟新一种可能性。而它与科学研究的深度融合&#xff0c;则会裂变出无数或无穷种可能性。来源 :36氪万众瞩目下&#xff0c;今年10月&#xff0c;有着诺贝尔奖“嫡传”之称的诺贝尔化学奖终于揭晓&#xff0c;授予了对…

从前,小夕种了一棵树

从前&#xff0c;小夕种了一棵树&#xff0c;种在了小夕的小屋后面~为什么要种这棵树呢&#xff1f;因为呀&#xff0c;它可以帮小夕总结历史经验&#xff0c;然后帮小夕对当前的局势做出决策~这样小夕就可以安心给大家写文章啦~这棵树是这样的。一开始&#xff0c;小夕买了一颗…

用于化学动力学模拟的原子神经网络表示

编辑 | 白菜叶机器学习技术已广泛应用于化学、物理、生物学和材料科学的许多领域。最富有成果的应用之一是从离散量子化学数据中学习势能或相关电子特性的复杂多维函数。特别是&#xff0c;大量努力致力于开发各种原子神经网络 (AtNN) 表示&#xff0c;这些表示是指将目标物理量…

自然语言生成任务,如文本摘要和图像标题的生成。seq2seq的模型原理

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/Irving_zhang/article/details/78889364 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/css/ck_htmledit…

史上最简单的决策树模型讲解

从前 从前&#xff0c;小夕种了一棵树&#xff0c;种在了小夕的小屋后面~ 为什么要种这棵树呢&#xff1f;因为呀&#xff0c;它可以帮小夕总结历史经验&#xff0c;然后帮小夕对当前的局势做出决策~这样小夕就可以安心给大家写文章啦~ 这棵树是这样的。 一开始&#xff0c;小夕…

听觉器官是高阶元分类“革命性证据”

来源&#xff1a;中国科学报反刍类的内耳几何形态学分析及系统发育示图。Laura Dziomber/绘化石研究的第一步是通过形态特征鉴定身份&#xff0c;厘清物种的亲缘关系&#xff0c;但这种方法并不完美。那些长相相似的也许“八竿子打不着”&#xff0c;而毫无共同特征的却是“亲属…

机器学习从理论到工程的第二步-开发环境与工具篇

在《第一步-编程语言篇》中&#xff0c;小夕为大家较为详细的介绍了做机器学习&#xff08;及其相关应用方向&#xff09;的编程语言的选择问题&#xff0c;这一篇便是小夕为大家推荐的各个编程语言的开发环境/工具。习惯性扫盲开篇。鉴于可能有部分同学的软件开发经验稍有欠缺…

干了一年“元宇宙”,Meta亏了300亿美金

来源&#xff1a;青投创新编辑&#xff1a;Leon"Facebook更名成Mate&#xff1a;从社交媒体转型为“元宇宙”&#xff0c;但前景并不乐观。一年前&#xff0c;Meta在元宇宙上高歌猛进。该公司刚刚完成了从Facebook到Meta的品牌重塑。正如马克扎克伯格&#xff08;Mark Zuc…

机器学习从理论到工程的第二步-开发环境与工具篇(下)

好啦~继续昨天的《第二步——开发环境与工具篇&#xff08;上&#xff09;》~其实有点尴尬啦&#xff0c;本来想一篇讲完的&#xff0c;结果小夕太啰嗦了&#xff0c;还没有开始讲正文&#xff0c;就写了快2000字了。。。所以说&#xff0c;这一篇是上一篇的正文。。。matlab就…

阿里-2019算法岗笔试编程题-kmp匹配

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/details/82503724 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_…