算法岗学习路线

一、算法岗前言

最近真的好多同学来问,我想转算法工程师,有没有一个完整的算法岗的学习路线?在星球里面回答问题的时候,被问到最多的问题就是「算法岗的学习路线」。

别急今天,今天它就来了。

如果很多小伙伴,还不知道什么是算法岗的,建议大家先看看,我之前的精华文章:

“算法岗是什么?我适不适合算法岗?选什么算法岗?”

先了解一下算法岗的工作内容,确定自己的算法岗研究方向。

在今天的文章中,我会带着大家看看,我们需要学些啥,我甚至还收集整理了配套视频和资料,这期文章有用的话,别忘点赞哦!

二、算法岗的学习路线

主要分为 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 道,大多的面试轻松搞定,完全够用。

刷题地址:https://leetcode-cn.com/

Tip:刷一遍题,回头看还会忘,不要怀疑自己,要反复刷,反复练习。

这个就是我说的“智力层面”的自我否定,但是真的不用担心,这是正常的现象,我亲自问过ACM竞赛拿金牌的人,他们说就算是他们,也是经常会出现这样的问题的。所以各位同学真的不需要自我怀疑!

3、机器学习基础

恭喜大家,在做了前面这么多基础工作之后,终于可以开始入门机器学习算法了。首选你需要选择一本机器学习的理论书籍。

机器学习视频课程:推荐吴恩达老师的机器学习视频,吴恩达是整个领域的巨头之一,学术地位很高。同时,他出的视频也对新手非常友好,入门的不二之选。

B站链接:https://www.bilibili.com/video/BV164411b7dx/?from=search&seid=6163277631324258577&vd_source=6aac2815798920ec195cd474dee83537

理论教材:还是那句话,光看不练是不行的。推荐机器学习的“圣经”,虽然周志华老师的西瓜书其实已经很老了,但是个人认为,这还是入门深度学习以及机器学习的不二选择。

网盘链接: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的求职行情甚至比算法岗的行情还要卷!但是面试算法岗没有顶会论文,需要有论文吗?

个人建议需要有!大部分卷算法岗的同学都是硕士以上的,本身毕业也是需要论文的,因此有一篇论文其实要求并不算过分的。

有论文代表了,你对模型有实实在在的改进能力,并且能够书写于文面。因为大部分的顶会论文都是需要不错的英文能力的,这个也是对你英文能力的间接验证。论文成果的介绍如下图所示:

差不多就是这些,后续我会给大家更新大厂面试心经,不是仅仅问题题干那种,而是带有完整的解析的。总之我们的目的就是进入大厂学习工作,赚钱!加油!

玄机博客
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容