新智元推荐
来源:DataWhale
作者:张怡
编辑整理:元子
这是一篇关于如何成为一名AI算法工程师的长文。作者回顾了自己成长为一名算法工程师,并分享了入门机器学习的经验,以及学习资源。
这是一篇关于如何成为一名AI算法工程师的长文。作者回顾了自己成长为一名算法工程师,进行了经验总结。
本文分为以下几个部分:
我是因为什么开始接触敲代码人工智能/机器学习/深度学习自学如何寻找学习资料如何选择编程语言/框架校招/社招/实习/面试经验一碗鸡汤
声明:
本篇内容均属于个人观点,建议采纳对自己有用的经验,如有疏漏,欢迎指正,共同进步!
年5月开始第一份实习/年7月开始学敲代码/年11月硕士毕业
擅长的编程语言:R/Python。
不花钱报班,全靠自学,最初是因为穷,后来发现“开源”的世界真是太美好了!
我是因为什么开始接触敲代码?
我的第一个模型是什么?由于本科是数学,研究生是量化分析,第一份实习是一家金融科技公司,开始接触所谓的“Fintech”
第一个任务就是做客户的信用评分卡模型,目的给每个用户打一个信用分数,类似支付宝的芝麻信用分。这是银行标配的一个模型,最常见最传统的算法用的就是逻辑回归。
在课堂上使用的工具是SAS,SPSS,属于有操作界面的,菜单非常齐全,只需要鼠标点一点就能建模,很好上手。
但是SAS这些要付钱的,年费还是相当的贵,所以深圳大部分公司进行数据分析和建模工作都选择开源免费的R语言或者Python。这就体现了掌握一门编程语言的重要性。
虽然说是建模任务,但是前三个月跟建模基本都扯不上边。都在做数据清洗,表格整理(摊手),都在library各种包,用的最多的可能是data.table和dplyr。没办法,很多模型都有包可以直接调用,是最简单的环节了。
其实一开始,我一直在犯很低级的错误,各种报错,没有library啦,标点符号没打对啦,各种很low的错误犯了一次又一次,而且连报错的内容都不会看,不知道怎么去改正。如果你也像我一样,真的请不要灰心,我就是这样走过来的。对着错误一个个去解决就好了~
当时什么都不知道的时候,觉得真难呀,每个环节都有那么多细节要照顾,要学的那么多,做完一个还有一个,还要理解业务含义。但是当完整的做一遍之后再回头,就会觉得,其实,也没那么难嘛~
敲代码容易吗
因为我不是计算机专业的,所以基本上属于没怎么敲过代码的那种。
后来发现程序员也有好多种类的,前端后端等,因此敲的代码种类也很多,才会有几十种的编程语言,下图是一些这几年的主流语言。
实习时我一直被队友嫌弃很蠢,而且一开始敲的东西怎么也运行不通,运行出来的都是鬼结果。有n次想放弃的念头,“我干嘛一定要敲这玩意儿?”,但也有n+1次想坚持的理由,因为我真的喜欢我正在做的事。为什么用“坚持”,因为真的不容易。不难,但真的需要有耐心。
一开始我的状态就是一行行代码的运行,一个个命令的熟悉,反复看,反复运行。
从敲出第一行代码到敲出第一个完整的模型花了3个月学习XGBoost,光是理论学了3个月,因为前期铺垫要学的还有adaboost/gbdt和各种机器学习的知识模块从R切换到python花了1个月从机器学习(MachineLearning)切换到自动机器学习(AutoMachineLearning)花了2个月从NLP零基础到搭建一个智能问答机器人花了1个月
从一年前的“什么是过拟合,什么是交叉检验,损失函数有哪些”到后来参加全球人工智能峰会时都能听懂的七七八八,会觉得,努力没有白费呀!
可以看出,经过前面的积累,后面会学的越来越快。
慢慢的就从一开始的那种“唉,怎么又报错啊,好挫败”的心态变成现在的“啊?没error?感觉不对啊,再查验一遍吧”这种抖M倾向的人。代码虐我千百遍,我已经被磨的没有了脾气。
已经有几个朋友说想转行了,我何曾没想过,只是不知不觉中坚持了下来而已。因为热爱,越虐越停不下来
小结
设定一个非常清晰的目标
为什么第一个写:“我是因为什么开始敲代码的”,因为动机真的非常重要!
所以,很多人在问我“如何学python?”这种问题时,我的第一回答都是“你学python用来干嘛?”
在学校也敲打过python,做个爬虫demo什么的,因为目的性不强没多久就放一边了。清晰的目标就比如说你要做NLP,你要知道NLP的应用有智能问答,机器翻译,搜索引擎等等。
然后如果你要做智能问答你要知道现在最发达的技术是深度学习,使用的算法有RNN/LSTM/Seq2Seq/等等一系列。而我的清晰目标是在实习的时候给我的任务。当任务很明确的时候,所需要的语言就明确了,所要学习的算法也就明确了,很多东西就顺理成章了不用一头乱撞了。
从金融到科技
AI的应用范围很广,每一个研究方向都是无穷尽的。由于金融公司很少与图像处理,NLP等技术会有交集,而我强大的好奇心让我决定去纯粹的科技公司一探究竟。目前已投身于智能家居,目标是Javis
人工智能/机器学习/深度学习
我经常在公交的广告牌上看见这些词,好像哪家公司没有这个技术就落后了似的。更多的还有强化学习,迁移学习,增量学习等各种学习。这些词儿之间到底什么关系?
机器学习是人工智能的一种,深度学习是机器学习的一种。学AI先学机器学习。
计算机的“算法”与数学的“算法”的区别
理论知识对于AI算法工程师极其重要。敲代码只是思路的一个实现过程。这里的“算法”和计算机CS的“算法”还不太一样,AI算法是偏数学推导的,所以数学底子还是需要点的,学的越深,要求越高。面试的时候,很少让手写代码,90%都是在问模型抠算法细节。
在学校我是一个不爱记笔记的人,甚至是一个不爱上课的人。但是自从入了机器学习的坑后,笔记写的飞起~
机器学习的框架
按照数据集有没有Y值可以将机器学习分为监督学习、半监督学习和无监督学习。监督学习是分类算法,无监督学习是聚类算法。
机器学习的通用流程和相关技术如下图:
ML这棵树还可以有更多的分支。先有个整体感受,再一个一个的解决掉。这里的知识点也是面试最爱问的几个,是重点呀!面试过的同学应该都不陌生了。
机器学习如何入门
机器学习之大,初学者都无从下手。说白了,机器学习就是各种模型做预测,那么就需要有数据,要想有好的效果,就要把原始的脏数据洗干净了才能用。数据内隐藏的信息有时候是肉眼不可见的,那么就需要一些相关技巧来把有用信息挖出来。所有绞尽脑汁使用的技巧,都是为了能预测的更准确。但是谁也没办法做到百分百的命中。
这里简单介绍下机器学习的三大块:传统的机器学习ML、图像处理CV、自然语言处理NLP。
再推荐一个入门神器:Kaggle(