如何从小白成为一名合格的算法工程师

如何从小白成为一名合格的算法工程师

  • 写在开头
  • 能力要求
    • 编程能力
    • 计算机基础
    • 机器学习
      • 机器学习理论学习
      • 机器学习实战学习
    • 深度学习基础
    • 应用领域
  • 个人计划
  • 后续安排

写在开头

其实对于未来想要从事什么样的职业这个问题,我已经思考了比较长一段时间,最后还是更倾向于算法工程师这样的岗位,因此阅读了许多的招聘需求和面经,大概了解了想要从事这个岗位需要具备的技能,而我在各个方面都还有所欠缺,因此写下了这篇博客,既是记录也是警醒。下面的后续安排的内容,也都会在CSDN博客中更新相应的笔记,希望能帮助后来也想成为算法工程师的同学,一起进步,一起变得更好。

能力要求

编程能力

  • C++ 编程
  • Python 编程
  • Linux熟练使用
  • 某个框架熟练使用:Scikit-learn(机器学习工程师)、Tensorflow或Pytorch(深度学习相关岗位)

为什么前两点说的都是编程呢,实际上需要的是熟悉基础语法+算法+数据结构,关于这一点,市面上已经大把大把的语言视频教程、书籍。但是如果让我来说,我会建议大家要做的应该是快速了解基础语法(简明教程)+写题(编程题)。为什么这么说呢,因为企业在这点的考核是想看应聘者是否能将想法付诸实现,更多的是考验你解决问题的思路是否流畅清晰+是否能编写出代码,这些是仅凭你看视频,看书。而如果过于注重算法而不是编程的话,很容易感到痛苦,即便你知道是这么个算法思想,但是你就是编写不出代码的困境,所以我建议大家还是说只需要先了解基础语法,然后去写编程题(不仅仅是算法题,也要提高自己解题思路和编写代码的能力,写不出来就看优秀解答,思考每一步为什么这么写,理解完成后再自己写一遍)。

我自认为我已经是经过了编程能力的拷打,也是通过我所说的方法,从原先什么都不懂到懂算法思想但是不会编程再到看到问题可以抽离出思想并编写代码debug通过。度过了这个部分之后,就可以很愉快的刷剑指offerLeetcode Hot 100。这点后面我也会新开一个数据结构与算法+算法题的专栏,记录自己的学习与刷题记录,希望大家能从中获取学习的灵感。

而Linux与框架的熟练使用都是与岗位业务需求有关,也是学会基础语法,然后多使用,实践出真知

计算机基础

计算机基础,比较推荐去看深入理解计算机系统,就是那本黑色的砖头书,然后面试前多看面经和八股文,我所看到的面经似乎对于这点考察并不是特别多,重点是自己要对计算机有认知。
如何从小白成为一名合格的算法工程师_第1张图片

机器学习

机器学习我个人的学习是认为需要分为机器学习理论学习机器学习实战学习

机器学习理论学习

机器学习理论学习强烈推荐两本机器学习(西瓜书)统计学习方法,我个人就是通过这两本书相互补充学习的,但是可以不用全部学习完,推荐学习以下内容,也是经常考察的内容

  1. 逻辑回归LR
  2. 支持向量机SVM
  3. 集成学习Boosting—>AdaBoost、GBDT、XGBoost
  4. 集成学习Bagging—>随机森林
  5. K-means
  6. 线性回归
  7. 贝叶斯决策
  8. 决策树
  9. EM算法
  10. KNN算法

我是已经学习完了,所以讲讲感受吧,我个人认为我的学习阶段是分为了两个阶段

  • 第一个阶段:哦!这样啊!好神奇。这个阶段更多是只看了书从浅层了解算法的概念、流程、优缺点、注意事项,对算法的原理并没有什么深入的理解
  • 第二个阶段:原来是这样!好聪明以面试题为驱动,以网上各种资料为主,两本书为辅,了解到了算法背后真正暗含的想法,每一步这么做的原因到底是什么

不得不否认,这两本书中确实数学比较多,推导也有些跳步,所以一开始容易看的一头雾水,但是不要被劝退,先耐下性子明白每个算法做了些什么,再借助更多的网上资料去了解为什么这么做。做相应的笔记,相信你最后一定会有很大的收获(确信 (刚学习完的人如是说道

做不下去的时候想想你是逃不过这一步的,种一棵树最好的时间在十年前,其次是现在

机器学习实战学习

我个人是刚开始这个阶段,因此还没有什么深刻的感触,就先给出我的推荐
首先是两本书籍

  • 机器学习实战:基于Scikit-Learn、Keras和Tensorflow
  • 机器学习实战

学习完成后建议去Kaggle平台、阿里云、天池这些平台寻找一些数据挖掘的竞赛,走一遍流程。推荐是寻找高分解决方案,跟着走一遍流程。这一步是培养你对数据的想法和理解

深度学习基础

同样我个人也是还没开始这个阶段,只是以前断断续续看过李宏毅老师的深度学习课程,所以给出我个人打算学习的一些知识,偏基础知识

  • 优化算法:梯度下降法、动量法、Adam、AdaGrad、RMSProp。能理解优化算法的基本步骤、参数更新公式、优缺点,演化过程克服了什么样的问题。
  • CNN
  • RNN、LSTM、GRU
  • 损失函数
  • 各种模型评价指标,如准确率、精确率、召回率、AUC、F1-Score、ROC曲线、PR曲线
    关于比较主流的Transform、Bert这些更多取决于你想应聘的岗位,因为我个人后续应该是做计算机视觉相关的研究,所以就暂时先不考虑这些。

应用领域

这个就跟你细化的希望的岗位有关,如果有相应的科研经历,那就最好寻找与自己科研经历相匹配的岗位,譬如目标检测、人脸识别等。
重点是整理出该领域的主流模型演变过程

个人计划

  • 统计学习方法
  • 机器学习
  • CS229课程讲义

  • 机器学习实战(笔记+代码实现)
  • 一些Kaggle、阿里天池的竞赛 (方案+代码实现)
  • MATHEMATICS FOR MACHINE LEARNING(数学知识,目前还没有单独系统地学习过数学知识,都是用到了然后学习下,觉得这样也还能应付,但是总感觉少了些什么,所以我先替大家试试水,看看学习过后会不会有更深的理解)

  • CS231n (笔记+作业)
  • Deep Learning(笔记,主要目的解决上面提出的基础问题)

  • 由自己的科研方向决定啦,暂时还未知

后续安排

主要是先跨过机器学习应用学习这一阶段,然后根据CS229讲义更新一下自己的机器学习基础知识学习的笔记,边更新边上传自己的笔记博客。所以如果同学们想学习后续可以跟着我的专栏来哦,我的个人计划中的内容都会尽量的写成通俗易懂,知其所以然的笔记,尽快的上传到对应专栏,也帮助大家少走一点弯路。如果想进行交流,欢迎在评论区留言,也可以私信我。

大家的热情就是我努力的动力呀。

你可能感兴趣的:(自我成长,算法,深度学习,人工智能,机器学习)