一、算法岗前言
最近真的好多同学来问,我想转算法工程师,有没有一个完整的算法岗的学习路线?在星球里面回答问题的时候,被问到最多的问题就是「算法岗的学习路线」。
别急今天,今天它就来了。
如果很多小伙伴,还不知道什么是算法岗的,建议大家先看看,我之前的精华文章:
“算法岗是什么?我适不适合算法岗?选什么算法岗?”
先了解一下算法岗的工作内容,确定自己的算法岗研究方向。
在今天的文章中,我会带着大家看看,我们需要学些啥,我甚至还收集整理了配套视频和资料,这期文章有用的话,别忘点赞哦!
二、算法岗的学习路线
主要分为 5个部分:数学理论基础、编程代码能力、机器学习基础、AI项目实战,算法岗位面试,后面两个暂时没时间了!
1、数学理论基础
在机器学习算法中,因为会涉及到大量的张量运算,什么是张量的运算?说白了就是多维的矩阵运算,因此涉及到最为重要的数学基本知识有两个:线性代数和概率论。
这两也是大学的必修课了,如果知识早已还给老师,也没关系,哪里不会学补哪里。
线性代数研究的是线性空间的性质,数据通常会被表示为欧式空间中的点,而这些点经过一系列变换后会映射到另一个空间,在新的空间中隐藏在数据中的规律才得以显现。
所以线性代数作为研究空间数据的一门科学,是入门机器学习的重要基础之一。
1)线性代数推荐学习视频:
MIT 的老教授 Gilbert Strang 的线性代数视频课程B站:https://www.bilibili.com/video/BV1zx411g7gq?from=search&seid=8130405528296931788
没学过线代的同学会发现这门课程,讲得清晰而且直观,深入线代的精髓,完全不是那种理论堆砌的讲法,而且老教授幽默风趣,很有人格魅力。英文不好,也不用担心,字幕是中文的。
2)推荐线性代数学习教材:
《线性代数及其应用》,作者是 David C. Lay 。喜欢看书的朋友,这本书一定不能错过。这本书详细地介绍了线性代数在几何学、计算机图形学、经济学、概率论、信号与系统、微分方程等领域的应用,给人以直观的认识。
仅仅是看视频的话是不够的,因为算法工程师在日常工作中,甚至成果中,你需要看最新的成果论文,因此看纸质版资料的感觉,一定要把持,这也是为什么算法岗基本都得是硕士!
网盘链接:https://pan.baidu.com/s/1FOIculU-UajgRt7O-YNdtg提取码:qyqx
相比于线性代数的计算,概率论则是研究不确定性的一门科学,生活处处是概率。机器学习算法需要对现实情况建模,自然是少不了将概率论作为工具。
判断一副图片到底是不是猫或者狗的概率80%,20%,这个百分比,就是概率论的知识计算出来的。
概率论这门课入门其实并不难,大家可以挑一本评分还可以的书开始学习。
这里推荐陈希儒的《概率论与数理统计》,讲得很详细,如同听一个老者回忆自己的概率与统计心得,相信读者也会有所收获。
链接:https://pan.baidu.com/s/1tROP80-QxRayF74oJ2hzRQ提取码:qyqx
如果时间充裕,千寻还是建议大家先学好数学基础。如果时间不够,那就跳过数学基础部分,学算法的时候,哪里不会补哪里。当然跳过数学部分,适合于你马上想找工作的同学,但是扎实的基础才是王道。
PS:视频与教程不需要逐字逐句的看,只要能知道公式的用法,类似数学期望的计算,在实际的算法模型计算中不会涉及特别细致的内容!
2、编程能力
编程语言,需要至少掌握两门, Python 和 C++。工作中,Python语言主要用于处理数据、算法调研、模型训练的工作,而 C++ 则是负责工程落地。
算法工程师,需要针对落地场景,对算法的可靠性和实时性等方面进行优化,C++ 工程能力必不可少。
1)python代码能力:
Python是一门非常友好的编程语言,不但易于入门而且功能强大,在进行机器学习算法开发的过程中会大量使用 Python。
Python基础笔记专栏:
廖雪峰python学习笔记链接:https://blog.csdn.net/datawhale/article/category/7779959
Python基础视频课程:南京大学python视频教程链接: https://www.icourse163.org/course/0809NJU004-1001571005?from=study
另外学习编程来说,进行实际的编程实战是最好的老师,比如在学习 Python 的时候,可以找一个自己喜欢的方向,去实战。
不一定必须是算法岗位的方向,Python是一门胶水语言,人生苦短,我用Python!其实Python还可以做爬虫,以及数据分析等多个功能,真的没必要只看算法部分!
边实战,边学习。比如写爬虫、做小游戏、玩各种有趣的算法等。培养对Python的兴趣,因为学习编程其实一种“智力层面的否定”的感觉,能坚持下去的话,需要依靠兴趣坚持的。
进阶Python教材 :推荐《流畅的Python》
《流畅的Python》这本书看完有些难度,但是哪来当个手册用,很方便,哪些语法忘记了,翻阅一番,必能有所收获。但是我个人认为,这本书的难度有点太高,讲得知识点有一点过于细致,有研究细致点的时候,不如多刷刷Leetcode。
2)C++代码能力:
C++是一种面向对象的程序设计语言,无论你是做算法,还是做开发,亦或者是做测开。C++ 都应该掌握,它是一个基础的编程语言。学会了这门编程语言,再学其它,就会更得心应手。
C++课程学习视频:这部分推荐B站上的黑马程序员的课程,这个课程是2019年发布的,到今天在在B站上已经有约3000万的播放量了,我自己也看了一遍,比较适合零基础的新手。
而且针对算法工程师来说,算法工程师还是核心是Python,在模型部署时会写一部分的C++代码。因此将这个视频看完,C++基本算是入门了。
C++语言教材:首先肯定推荐的是被誉为“圣经”的《C++ Primer中文版(第五版)》,经典巨著,非常棒的书。
C++ Primer中文版(第五版)配套的笔记github链接地址: https://github.com/applenob/Cpp_Primer_Practice
3)深度学习部署加速框架学习
我们在实际的模型部署中,使用Python进行部署是不够的,因为我们在工业级的算法模型应用中,Python部署的模型应用,推理的速度太慢了。
在这里我们解释一下,工业级别的算法部署是什么含义?就是实际我们生活中的应用场景,部署在无人驾驶,智能交通等各类工业级别应用的项目模型。
普通的算法模型调用时间太慢,无法满足高性能的应用,因此需要对模型结构进行优化加速,除了模型压缩的技术外,我们大部分时候使用的是加速框架的优化。比如腾讯的NCNN加速框架,目前工业界使用更为广泛的是Google的TensoRT框架。
TensorRT等加速框架应用教程:
github社区:https://github.com/shouxieai/tensorRT_Pro
4) LeetCode刷题方法
编程语言基础学完了,接下来就是数据结构与算法。数据结构与算法是程序员的内功,每一个工程师的必修课。
数据结构的学法,我推荐是直接看书,一边学习一边刷题,同时进行,这样学的速度快。推荐一个有趣的算法入门书,非常易懂,强烈推荐,《算法图解》。
《算法图解》链接:https://pan.baidu.com/s/1W_1Ae-684ZKB5HeriRa9rA提取码:qyqx
其实明人不说暗话,程序员的工作辛不辛苦?辛苦,累不累?累!为什么坚持做,高薪啊!所以我们其实转行算法岗位,我们直接面向面试学习。
只要是互联网的面试,那么必须要过得一关就是刷题关!也是不好过的一关!在这里如果说,是零基础的同学,千寻哥推荐给大家先去Leetcode官网刷题,刷什么呢?
先精刷《剑指Offer》,这个是题库里面最基础,最重要,别急,我送大家一本剑指Offer的全解图书,由大企业的面试官进行编程题的精讲。
剑指OFFER 名企面试官精讲典型编程题 第2版
链接:https://pan.baidu.com/s/1xNjDjEEUiVfI2LKyu43KIQ提取码:qyqx
两门书一起看,轻松入门数据结构与算法。
把《剑指Offer》讲解的代码全部都看懂后,想进阶学习,进一步学习,直接上 LeetCode官网进行刷题即可。
力扣可以从 HOT 100 或 精选算法 200 题刷起,题目相对于《剑指Offer》要增加一些难度,但每道题目都有对应的解题思路和答案。坚持刷完 200 道,大多的面试轻松搞定,完全够用。
Tip:刷一遍题,回头看还会忘,不要怀疑自己,要反复刷,反复练习。
这个就是我说的“智力层面”的自我否定,但是真的不用担心,这是正常的现象,我亲自问过ACM竞赛拿金牌的人,他们说就算是他们,也是经常会出现这样的问题的。所以各位同学真的不需要自我怀疑!
3、机器学习基础
恭喜大家,在做了前面这么多基础工作之后,终于可以开始入门机器学习算法了。首选你需要选择一本机器学习的理论书籍。
机器学习视频课程:推荐吴恩达老师的机器学习视频,吴恩达是整个领域的巨头之一,学术地位很高。同时,他出的视频也对新手非常友好,入门的不二之选。
理论教材:还是那句话,光看不练是不行的。推荐机器学习的“圣经”,虽然周志华老师的西瓜书其实已经很老了,但是个人认为,这还是入门深度学习以及机器学习的不二选择。
网盘链接:https://pan.baidu.com/s/1q5ssLPz2M37C-afiIVkOzw提取码:qyqx
但是单单是有《机器学习》的理论教材还是不够的,学习编程,大家就记住一句话,纸上来得终觉浅,绝知此事要躬行。看理论看得再多,也不如自己实操一遍。在这里给大家推荐的是李沐大佬的《动手学深度学习》
书籍的电子版: https://zh.d2l.ai/书籍代码:https://github.com/ShusenTang/Dive-into-DL-PyTorch
4. 深度学习基础
深度学习是现在的算法工程师绕不开的一个子领域,是机器学习的子集。
深度学习教材:说实话,深度学习,我并没有看过书,都是视频+ Github 开源项目学习的,不过被誉为深度学习领域圣经的“花书”,可以备一本。
深度学习框架:
深度学习框架有很多,Tensorflow、Pytorch、Paddle、MXNet、Caffe等。目前的大厂,基本上使用最为广泛的就是 Pytorch深度学习框架,其次是 Tensorflow 2.0 在这里吐槽一下,TensorFlow 2是真的难用!
(如果真的是零基础,比如刚刚保研,想要入门机器学习的,建议无脑torch框架)
新手上手,推荐先学 Pytorch,可以直接看 Yunjey Choi 大佬的 Github 教程,
简单入门项目地址:https://github.com/yunjey/pytorch-tutorial
作为一名优秀的程序员,使用pytorch框架必须要看框架的官方文档!
pytorch官网地址: https://pytorch.org/
四、算法岗路线学习总结
这篇文章整理的是我的互联网大厂的算法岗的学习路线。
如果你想去一家不错的公司,但是目前硬实力不过关,我觉得还是有必要去努力一下的,技术能力的高低决定你能走多远,平台的高低,决定你能飞多高。
如果可以通过自己的努力,进入自己心仪的公司,一定不要松懈怠慢,职场成长和学习新技术一样,不进则退。
你往往会发现,身边实力越强的人越努力,最高级的自律就是享受孤独。
本来打算将完整的算法岗学习路线放在一篇文章里,但是千寻在写的过程中却发现,一不小心写了这么的长…
不过同学们不用担心的,千寻自己也没有全学完,但是我有囤学习资料的习惯,真的不需要全部都学,每样走马观花的看。知道是做什么的即可,转行不会很轻松,需要坚持!
五、AI项目实操检验
1、算法竞赛部分
在这里我们所说的算法竞赛,通常是指的是人工智能算法竞赛,可能还是会有同学以为是Leetcode算法竞赛,算法的概念是指解决方案的方法。普通的排序也是算法,但是我们现在说的是AI算法部分。
通常业内比较具有认可度的AI算法竞赛,比如,阿里天池竞赛,Kaggle算法竞赛。
1)百度飞桨AI大赛
2)阿里天池竞赛
3)Kaggle算法竞赛
这里算法竞赛的特点:
首先真的难度不低,比较有含金量,尤其是Kaggle能拿个金牌真的很有认可度。
除此之外,一些公司比如百度,科大讯飞,也会举办算法竞赛让参与者提供算法的解决方案,这些比赛很多都是来源于实际的问题,这些比赛如果能拿到好的名次,大型比赛直接给Offer,即使不能直接offer,一般可以“免笔试”。
但是也不能光说这些比赛的好处,这些比赛我觉得性价比也不是那么高,建议老铁们拿一个奖项就跑路。为什么?
AI算法竞赛的缺点:
打比赛难度真的不小,容易对学习产生厌恶心理,花费了好多时间,最后收获的效果甚微,心态很容易崩。
同时即使你天赋异禀,一下子冲进了排行榜的前三名,“多疑”的性格会让你有事没事就想查看你的榜单位置,每天刷新榜单,压力真的是特别大!
算法竞赛的学习建议:只要拿一个奖项就可以结束了,面试的过程中,也只是会问你的算法创新点。但是这种比赛的创新点,一般都是来源于其他的竞赛方案,所以很多都是通用的tricks,可能不是特别的新颖,但是很实用。
2、经典AI项目练习
关于AI项目的话,我推荐我在星球写的两个专栏,《玩转ChatGPT教程》,《AI算法毕设智囊袋》,里面记录了很多的AI算法教程,后续我会加入《搜广推算法基础教程专栏》。下面还是推荐给大家一点资料,算是项目实践的教程的教材。
1)21个项目玩转深度学习
链接:https://pan.baidu.com/s/152XNY_Je3qowFz-1hqJm5A提取码:qyqx
这本书虽然是TensorFlow框架写的,但是项目真的很全,包括图像识别,目标检测,以及深度循环网络,强化学习都有所涉及!
2)经典项目的学习经典
- 手写数字识别(MNIST)
- 猫狗图像分类
- 基于情感的文本分类
- 图像生成
- 基于深度学习的推荐系统
3、算法岗业务需求内容
估计很多同学会好奇,算法岗的日常工作是什么?我们学得的这些项目到底是什么用处的?算法岗日常搬砖效果基本也差不多,比如后端开发的日常基本是写数据接口,和其他开发以及测试进行联调,如果用思维导图的形式表示开发的关系角色图:
那么算法工程师的关系思维导图就是这样的:
对比两幅关系图,能感觉到似乎算法工程师确实比后端开发更轻松一点,是的!一个公司最忙的就是后端开发!
算法岗的开发接口就算是崩了,但是知识影响赚钱的效果,不会影响用户体验,比如前几天的语雀实践,真的是很恐怖的,七个小时的宕机,估计至少几个总监改卷铺盖卷走人!
下面我们正式说算法开发的需求内容,以不同的对接人来讲会更加具有针对性。
1)处理数据集数据:(算法开发—数据开发)
关于处理数据集数据,一般来说由于数据开发人员帮你收集到训练数据是有问题的,掺杂脏数据。你作为算法工程师,要转换成可以进行模型训练的数据集格式并且去除“脏数据”。
算法工程师需要写一些处理脚本代码,一般来说是Python代码,将数据格式进行转换。转换成模型训练可以接受的数据格式,因为不同的数据模型所接受的数据集格式是不一样的。例如CV领域的coco数据格式,yolo数据格式…
2)最新算法调研:(算法开发—产品经理)
最新的算法调研,为什么是和产品经理对接?我跟同学们讲一下,一般来说,算法岗自己是对自己算法非常有信心的,但是大部分时候,产品经理通过运营那边反应过来,觉得我们算法的点击率和转化率效果并不好,然后产品经理为了提高产品的性能,会Push算法工程师。
让你研究最新的算法模型,有没有什么更优的解决办法,提高转化,帮我们赚到更多钱,算是跟产品经理的对接。
3)模型训练部署:(算法开发—后端开发)
模型训练部署,这个是算法工程师在公司在日常互联网工作的核心工作了。比方我们现在需要开发一个识别海船的无人机上的识别算法,你需要找到模型识别模型,去进行训练,一般大公司都会有自己的模型训练平台,但是使用的人会非常的多。
模型训练系统会有自动调度模块,在大公司训练模型时间也是很长的,往云存储平台进行数据导入,还会禁止你做一些不该干的事情,哈哈哈,比如挖矿。
这种大型GPU训练平台的审批,一般来说都是要非常大领导通过才可以使用。模型训练好后,你需要去写HTTP的请求接口,后端是经常使用URL进行请求访问,给后端开发提供post或者get请求调用,后端开发会拿着接口嵌入到我们的业务系统里面,完成了一个最基本需求开发。
六、算法岗面试心经
1、算法岗八股文
算法岗面试来说,因为岗位的特性,所以面试的八股文要求比较高,因为需要有扎实的理论基础。一般来说,八股文的考察包括两方面,机器学习通用基础以及推荐系统的专业知识。
简单来说,是你面试的算法工程师类别,CV,NLP,推荐或者是目前的多模态大模型。基础的机器学习基础八股文考察,以及专项方向的基础八股文考察。
以上的题目是对面试八股文的简要阐述,实际的面试题目覆盖要广泛的多,需要不断通过面经进行积累的。
2、coding题目解答
这个在之前的代码考察中,已经提到了,需要刷Leetcode,一般来说,刷剑指Offer的75道题目,热题100道。但是算法工程师还需要掌握一些基本的简单算法。
比如实现一些激活函数,一些优化器,这也是算法工程师面试的code考察范围。
3、 算法论文成果
算法岗位与开发岗位在面试上的区别最明显的一个是,算法岗会有论文的交流环节。在这里给大家提一句:
面试算法岗必须要有顶会论文吗?
我可以负责的回答:真的不是,反而大家基本都是被这句话劝退了,去卷开发岗了,现在java的求职行情甚至比算法岗的行情还要卷!但是面试算法岗没有顶会论文,需要有论文吗?
个人建议需要有!大部分卷算法岗的同学都是硕士以上的,本身毕业也是需要论文的,因此有一篇论文其实要求并不算过分的。
有论文代表了,你对模型有实实在在的改进能力,并且能够书写于文面。因为大部分的顶会论文都是需要不错的英文能力的,这个也是对你英文能力的间接验证。论文成果的介绍如下图所示:
差不多就是这些,后续我会给大家更新大厂面试心经,不是仅仅问题题干那种,而是带有完整的解析的。总之我们的目的就是进入大厂学习工作,赚钱!加油!
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容