我相信,对于年轻人来说,甚至是中年人,都有着想进互联网大厂的梦想,或者能在中小厂找到稳定的工作,因为在这里我们可以接触到最前沿的科技领域,可以碰到很多IT高手,享受着丰富的资源,每天和电脑、代码打交道,即使累一些,也会特别充实。
在互联网行业中,算法岗受到广大朋友们的青睐,可以说任何一个互联网公司的算法岗都是这个公司的核心,算法是输出结果、优化结果的必经之路。
算法的包括的内容比较广泛,比如说:自然语言处理、深度学习、机器学习等等。并且应用广泛,可以用于图像识别,文本生成,AI机器人等等。
这里面深度学习和自然语言处理属于比较高级的算法内容,要熟知tensorflow框架,神经网络模型等等,难度较大不是很适合大家去自学,我们所提到的适合大家自学算法大多数是指机器学习算法。
由于算法这个岗位热门并且薪资可观,因此也造就了这个行业比较内卷的事实,对于应聘者的要求越来越高,显而易见要想成为一名合格的算法工程师不是一件容易的事情,需要掌握从项目开发到调试再到优化的一系列能力,这一系列能力里面的每一项都需要大量的努力和实践经验的累积。
这时就有很多朋友这样想:既然这个算法工程师这样难,我自己肯定是驾驭不了了,干脆我去报个班去学吧。我可以负责任地和大家说虽然网上这样的课程班很多,但是大多价格都很高,会超出我们大部分人的经济承受能力,而且报班学习我个人认为缺少自己的学习节奏,每天感觉想被别人牵着走一样。
首先大家要摆正自己的心态,这些知识也是人创造出来的,谁都一样能学会,自学也是一样能学会的。下面我就将一名合格的算法工程师所要具备的技能进行拆分,给大家讲一讲如何自学成为一名算法工程师。
数据结构与算法—基础理论学习和面试准备
数据结构与算法是学习算法必不可少的,这里面不仅是学习理论知识,在以后大家找算法工程师的工作时数据结构与算法对于面试也很有帮助,很多公司的笔试和面试都会问这一部分的问题,笔试就不用说了,必考编程题,在面试的时候也可能会让我们当场手写代码。这里我给大家推荐一本书:《王道考研数据结构》。
这里面会从数据结构的定义给大家讲解,首先介绍了基本的知识,比如线性表、栈、队列在程序中如何去实现,接下来两个比较重要的部分就是树和图,这里就涉及到了一些算法的内容:比如树和森林的转换,线索二叉树以及图的深度优先遍历、广度优先遍历等等。
最后是查找和排序,这里涉及到算法的内容会更多,查找和排序的分类就很多,比如顺序查找、折半查找、散列查找,插入排序、交换排序、选择排序等等,这里面讲了很多算法设计的小程序,有些小程序不止一种方法,给予读者多种不同的思考方式,可以给大家看一个具体的例子:
这道题给了两种不同的解法,这本书里面很多题都类似于这样,给出两种或两种以上不同的解法,大家可以根据自己的情况来选择自己可以理解的思路。
有了数据结构的基础,我们就可以去做一些算法工程师有关的面试题,这里我主要给大家推荐两个平台:Leetcode和牛客网。
Leetcode—分类刷题
Leetcode上的题目做了分类:
这里大家可以根据自己的情况选择按模块刷题或者是按难度刷题,这里我建议大家按模块刷题,把一个模块的题目练熟了,在进行下一个模块,这样比较系统化。
牛客网—模拟面试和真题演练
牛客网上有各大互联网公司面试的真题,真题往往是最可靠的复习资料,还可以进行模拟面试,通过面试可以更全方位地了解自己的情况。
AI模拟面试可以让大家体验真实的面试场景,可以参考AI打出的分数,对自己进行一个评估,可以让大家有选择性地投递简历。
进阶学习—贪心科技AI算法课程
打好数据结构的基础,我们就可以尝试去学一些算法相关的课程了,这里给大家推荐一门课程,也是我目前正在学习的—贪心科技AI机器学习实战课程。
这门课程的主讲老师都是金牌老师,有着多年的从业经验,在人工智能,自然语言处理,机器学习等方面有着很深的造诣,老师在讲课的时候也会讲他当年自学的时候会碰到哪些障碍,如何克服,怎样找到好的学习方法等等,很适合自学的小白选手来吸取经验。
接着可以给大家看一下部分课程大纲:
这门课程的设置由人工智能基础到各种机器学习算法的应用,每一个章节都对于算法的内容进行了细化,都是从概念开始讲起,然后一步步细化到算法的内容,算法的每个步骤如何去考虑,如何去优化都讲解得很细致,在每个章节的最后给出了练习和案例的部分,可以帮助学习者更好地实践算法,帮助我们更好地去理解这些算法。
机器学习算法宝藏书籍—《统计学习与方法》李航著
这部分内容给大家详细介绍一下机器学习的主要算法有哪些,并且我们应该如何去学习,这里大家可以去看《统计学习与方法》李航写的这本书。
给大家介绍几个算法内容让大家来了解一下:
感知机模型:这个模型属于分类模型的一种,可以说是分类模型的基础,输入为实例特征向量,然后根据分类超平面,看特征向量的分布,在超平面上方的输出取值为+1,下方为-1,这个模型是后面支持向量机学习的基础。
决策树:决策树也是一种分类模型,其名称就可以看出来它的模型特点是呈树状结构,每一个“树杈”代表一种特征,基于这些特征对输入实例进行分类选择,其主要优点是模型具有可读性,分类速度较快。
EM算法:EM算法是一种通过迭代法求解极大似然估计的算法,主要分为两步:E步和M步。E步求期望,M步极大化,该算法应用较为广泛,主要用于含有未知变量的概率模型,这里的未知变量也就是我们所说的隐变量。
下面给大家看看机器学习算法的一个应用,这个实战项目是贪心科技AI课程里面的。
丰富的项目案例可以拓展我们的视野,让我们的思维打开,不再受局限性,这些案例当中也给大家标注了涉及到的算法内容,对哪个案例感兴趣大家可以有针对性地去学习,下面给大家讲一讲我在学习“信用卡欺诈预测”时做的一个思维导图:
构建信用卡反欺诈模型涉及到了五个模块,这里比较难理解的时特征工程部分。“特征”的选取为用户高频消费时间、消费金额量与欺诈频率,看这两个变量与欺诈频率之间的相关性,这里用到了决策树的特征分类选择方法。
最后模型评估与优化中的英文是交叉验证和网格搜索调优参数,这两种方法都是模型评估的方法,在先有模型的基础上,再根据模型预测数据,求实际数据与预测数据之间的误差。
数学学习—算法学习的重中之重
要想理解好机器学习的算法,数学的学习很重要,机器学习算法中有很多需要大量的数学推导,比如:逻辑回归的条件概率,随机梯度下降法,朴素贝叶斯等等。这些内容是数学方面的知识,因此我们在学习算法的过程中要加强对数学的学习。
这里我提到的数学是“高等数学”,是我们上了大学之后会接触到的一门学科,对于学习算法来说,要学习高等数学里面的三个分支:函数和微积分、线性代数、概率论与数理统计和数据结构与算法一书,下面我会一一为大家解答一下如何去学习这三部分内容。
函数和微积分
算法离不开函数模型的构建,因此函数这一部分的学习可以说在算法的学习中是至关重要的。算法概念里面的构建模型,参加过数学建模比赛的伙伴们的应该会有所了解,模型的构建大多是依赖于函数体系。
微积分可以说是专门研究函数的一门学科,下面给大家重点介绍一下这一部分都要去学什么。
首先给大家推荐一本书:
这本书是由中国科学技术大学编写的精品数学分析教材,数学分析的内容就是我们所说的微积分和函数的内容,而且中科大数学实力强悍,学完这本书可以说一定会掌握微积分和函数的精华内容。
比较重要的内容有、微分中值定理及其应用、不定积分与定积分、反常积分、级数、隐函数定理及其应用、多元函数的极限与连续性、多元函数微分学(可微性、复合函数微分法、泰勒公式与极值问题)。
线性代数部分
线性代数这一部分我们主要需要掌握矩阵的那一部分,包括矩阵的定义,运算(包括加减法,数乘,矩阵求逆),线性变换。线性空间和向量空间的部分过于抽象,大家可以不去掌握。我可以给大家推荐一本书:
这本书是由清华大学出版的高等代数上下册,可以说是高等代数教材里面的顶层书籍,很多考研的同学几乎都用这本书来复习,也有很多高校的数学专业版课程用这本书来学习。
这本书中线性代数中线性变换这一块会涉及到算法的一些内容,线性变换的含义就是由一个向量到另一个向量的转换,中间会建立一个“变换模型”来进行转换。
这里的变换模型大多是矩阵,线性变换可以应用到图像转换算法,我们可以把图像中的点位模拟成向量的形式,然后被某一个线性变换矩阵所作用,得到了另一个图像,这里的操作可以是图形的旋转,平移之类的。
概率论与数理统计
这门课程可以说在算法学习的领域是至关重要的,算法的实现离不开构建模型,大多是函数模型,但是也有很多是概率统计模型,我来给大家推荐一本书:
这本书想必大家都听说过,浙大写的这本书在概统领域的知名度很高,学习理论知识这一本书就足够了,里面还配有习题和详细的解答,有些习题难度比较大,不建议大家去做,大家把里面的例题弄明白就可以。
下面给大家梳理一下这本书里面的一些知识点,这里面的知识点在算法的学习中比较常用的有概率密度函数,离散连续分布,大数定律,中心极限定理,假设检验,参数估计,方差分析等。
以上这三部分是学习机器算法的基础内容,打好这三部分的基础,就差不多可以看懂机器学习算法书中的数学推导了。
全文小结
关于成为算法工程师的学习其实还有很多内容要学,比如说如何找实习,简历制作等等,大家可以去各大互联网公司的