1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进添砖加瓦。
事实上19届秋招算法岗就有些【供过于求】了,头条甚至发了 算法劝退贴。而这很大程度上就是由于前几年算法就业形势太好了,导致一大批人转算法,这导致的大泡沫其实还没有消化掉,所以其实不是现在算法突然不好找工作了,而是之前太容易了。其实你说公司真的不缺算法工程师嘛?当然不是,公司也是有算法工程师的缺口的,那为什么出现这种情况?除了要劝退一部分盲目入行的同学;听到、遇到的好几个HR都说,收到几百份简历,但是没什么匹配的。所以说做算法的人多是真的,可是需要做算法的人也是真的,而主要的矛盾点在于 供需不匹配。
所以在经历过好多次心态崩裂,也问过很多前辈和大佬之后,参考了很多大佬的文章之后,我决定来总结一下如果想成为一个【深度学习算法工程师】需要什么学习能力和知识储备。这个文章应该会是一个【记录】性质的文章,期望看看自己这一路走来 学了什么,准备学什么,需要学什么,希望和各位共勉。
这真是个老生常谈的问题,为什么这么说呢,自然是因为这个【编程能力】我听过不下几百遍,听的脑瓜子都疼,可是没法子,这就是 必备技能,必备到什么程度?
这么说吧,假如你想写作文,如果你不会写字,组词,造句,我想你应该完全没法完成这个创作过程。很形象吧,但是也确实如此,仔细想一想,招你进去是要干活的,公司不会招聘一个只会 MATLAB 或者 python 都用不熟的人来做项目开发吧,做纯算法研究都不行。
那么 具体地说,编程能力需要哪些基本要求呢?
但是在条件上可能很多人都觉得不是太合适,比如实验室条件,电脑条件等等,不过对我们而言,linux 并不需要了解太深。装个 ubuntu 系统,常用的文件操作、程序编译等知道就OK了。剩下的完全是在使用的过程中现用现学,手边常备一本书 《鸟哥的linux私房菜》,神书,你可以百度或者Google一下自然就知道这个书的强大了。在或者现在的网络比较强大了,资源也是很多,实验楼 也是一个不错的选择,帮你搭配好的环境,直接使用就OK了。如果还是想自己搞一下,虚拟机也是一个不错的选择,不会影响你电脑本来的环境配置,但是还满足了要求。
个人计划:
有的同学会问是学 python2 还是 python3?这么说吧,python 核心团队计划2020年停止支持 python2,也就是说 python2 马上就要说再见了,肯定还是学 python3,遇到之前的 python2 的代码再查找区别即可。python 学起来其实很简单,看别人代码的过程就是学习的过程。对于不熟悉的用法多搜下官方文档,如 python,numpy,pandas,matplot,scikit-learn等等。
python 的开发环境值得说一下,因为有太多选择,这里比较建议使用 pycharm 和 jupyter notebook 吧,具体可以参考这个博客——Windows10 下 Anaconda和 PyCharm 的详细的安装教程(图文并茂)。
个人计划:
个人计划:
这就要求开发能力必须过关,因为算法效率在实际生产中还是有要求的。工业界用的算法是滞后于学术界好几年的,不要对公司所做的算法有太多的幻想,现实数据比你想的质量差太多,现实用的算法也没有那么高端,大部分时间都不是用在建模。
个人计划:
python:
C++:
我主要做一些【图像重建】或者【超分辨率】相关的东西。其实一般是看一看论文,复现复现网络结构,或者直接跑一跑别人的代码,做一做网络结构修改,调一调超参数。前期的图像数据集制作,还有预处理才是主要的工作。深度学习为什么这么强?它比传统的图像处理方法好吗?它主要解决了什么样的问题呢?
个人比较认同是以下三点:学习特征的能力很强,通用性强,开发优化维护成本低。存在的问题可能就是数据量,对 label 的精准性要求比较大。之前看过的一个文章写得不错,参见 为什么深度学习几乎成了计算机视觉研究的标配?。
关于这一部分理论的学习,漫天飞的各种资源。这里推荐一些:
个人计划:
个人计划:
个人计划:
个人计划:
这个方面我的建议是多打一些比赛,多看一看别人的代码和博客,这样就会很容易学会的。
个人计划:
微积分:其实个人感觉涉及的微积分知识相对简单,积分很少,微分也不是特别复杂,花一天时间学一学就行。
概率论与统计:这个比较高深,是应用在机器学习领域里最重要的数序分支。应用比如:条件概率、相关系数、最大似然、大数定律、马尔可夫链等等,还是得好好搞一下概率。
线性代数:数字图像本身就是以矩阵的形式呈现的,多个向量组成的样本也是矩阵这种形式非常常见,大多机器学习算法里每个样本都是以向量的形式存在的,多个矩阵叠加则是以张量(tensor)的形式存在 Google 深度学习库 TensorFlow 的字面意思之一。
凸优化:这个需要单独拎出来说一下。因为太多问题(尤其机器学习领域)都是优化问题(求最优),凸优化是里面最简单的形式,所以大家都在想办法怎么把一般的优化问题转化为凸优化问题。至于单纯的凸优化理论,好像已经比较成熟了。在机器学习里,经常会看到什么求对偶问题、KKT条件等,潜下心花两天学一学。
数学知识真的没必要系统学习,效率低又耗时,毕竟大家都有本科或者研究生的基础了,这就足够了。用的最多的就是矩阵论!!!或者用到的时候学,学完之后总结一下。再就是活学活用网上的搜索资源,比如 CSDN、知乎等等。
个人计划:
时代变了,一百年前的人类绝对想像不出自己有了困惑不是去翻书或请教他人而是告诉身旁的一台机器。如今,小学生做道算术题或小女生来个大姨妈都要问问电脑:这是怎么回事。但这些与学视觉又有什么关系呢?——答:没有。好像跑偏的有点多了,再扯远一点吧。跨越时间维度来思考一些新事物的发生及其与旧事物的联系,也许会给你一种想象的自由。比如电报、电话、视频聊天和全息通话用 HoloLens 通话,再比如马车、汽车、火车、飞机和火箭太空旅行,蒸汽机、电、互联网和AI。所以活用资源,多看肯定没错,不过要有所选择的看,不能啥都看,,,人的精力还是优先的。
先说明公众号不是打广告,推荐几个自己看的而已(排名没有先后顺序)。
看一下目录,你会发现它向一把小刀一样,是不是?希望你我能剑锋所指,所向披靡!!!
推荐一个自己写的博客——大话卷积神经网络CNN(干货满满),种树从现在开始。
如果有幸帮到你,请帮我点个【赞】,给个【关注】!如果能顺带【评论】给个鼓励,我将不胜感激。
如果想要更多的资源,欢迎关注 @我是管小亮,文字强迫症MAX~
想看更多文(段)章(子),欢迎关注微信公众号「程序员管小亮」~