来源:Datawhale
这是一篇关于如何成为一名 AI 算法工程师的长文~
常常有朋友私信问,如何学 python 呀,如何敲代码呀,如何进入 AI 行业呀?
恰好转头看看自己这一年走过的路,进行一次履历总结。
来看看你间隔成为一名 AI 工程师还有多远吧~
⭐详细内容:
我是由于什么开始打仗敲代码人工智能/机器学习/深度学习自学如何探求学习资料如何选择编程措辞/框架校招/社招/演习/口试履历一碗鸡汤⭐声明:
本篇内容均属于个人不雅观点,建议采纳对自己有用的履历,如有疏漏,欢迎示正,共同进步!2017 年 5 月开始第一份演习 / 2017 年 7 月开始学敲代码 / 2017 年 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 个月。从机器学习 (Machine Learning) 切换到自动机器学习 (Auto Machine Learning) 花了 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(www.kaggle.com)这是一个天下级的最威信的机器学习比赛,已被谷歌收购。上面的赛题不仅很有代表性,还有很多免费的精良的数据集供你利用,要知道网络数据是机器学习的第一大难题,它就帮你办理了。入门不用立马参加比赛,把数据下载下来,尽情折腾就好了,假如没有思路,去网上搜别人的解题条记和代码借鉴一下也很美好~由于这是大家都争相打榜的比赛,以是你并不孤单。
ML 入门该参加的赛题(Titanic)
图像入门该参加的赛题(数字识别)
NLP 入门该参加的赛题(情绪剖析、quora 问句语义匹配)
等做完第一个 titanic 的比赛该当就有点觉得了。上面 4 个比赛我都做过,以为很经典,很适宜入门。
深度学习的入门算法有哪些
如今的样本输入可以是笔墨,可以是图像,可以是数字。
深度学习是随着图像处理火起来的。乃至现在这个观点都火过了「机器学习」。
深度学习的算法紧张都是神经网络系列。入门推举 CNN(卷积神经网络) 的一系列:
LeNet5AlexNetVGGGoogleNetResNet自学如何探求学习资料?
开源的天下,美好的天下❤
「开源」,我的爱!
代码届里开源的中央思想便是,share and free
对付机器学习,网上的社区氛围特殊好,分享的很多很全面,而且 MLer 都非常乐于助人。
先容几个我常常逛的社区,论坛,和网页:
kaggle(www.kaggle.com)
环球最威信的机器学习比赛,已被谷歌收购。赛题覆盖传统机器学习、nlp、图像处理等,而且都是很实际的问题,来自各行各业。kaggle 是数一数二完善的 ML 社区了,赛题开放的数据集就很有用,非常适宜新手练手。对精良的 kaggler 也供应事情机会。
github(www.github.com)
环球最大同性交友网站,适宜搜项目,开源大社区,大家一起看星星,看 issue~
StackOverFlow(www.stackoverflow.com)
代码报错找它,代码不会敲找它!
所有与代码干系的坑,基本都有人踩过啦
csdn(www.csdn.net)
最接地气的博客聚拢地,最常看的网页之一,一样平常用来搜索细节知识点或者代码报错时
sklearn(scikit-learn.org/stable)
专业做机器学习 100 年!
各算法各技巧的例子 code 搜罗万象
medium(medium.com)
创办人是 Twitter 的创始人,推崇优质内容,海内很多 AI "大众大号的搬运都来自于这里,medium 里每个作者都有自己独特的见地,值得学习和开拓眼界,须要科学上网
towards data science(towardsdatascience.com)
与 medium 很像,须要科学上网
google AI blog(ai.googleblog.com)
谷歌的 AI 团队掩护的博客,每天至少更新一篇技能博客。刚在上海开的谷歌开拓者大会宣告将会免费开放机器学习课程,值得关注一下,毕竟是 AI 巨子
各种大神的技能博客/个人网站
有很多的网站,会不定期的更新在我的个人博客里
有口碑的 AI 公开课平台
首先解释我没有上课,也没有报班,属于个人学习习气问题。但考虑到学习差异性,以是还是总结了口碑排名靠前的课程系列。条件,须要有一定数学根本,没有的可以顺便补一补。
coursera(www.coursera.org/browse)
吴恩达 (Andrew Ng) 机器学习
deeplearning.ai(www.deeplearning.ai)
fast.ai(www.fast.ai)
专注于深度学习。Fast.ai 的创始人就蛮故意思的,是横扫 kaggle 图像处理的高手,不摆架子,也不故弄玄虚。中央思想便是深度学习很大略,不要怕。fast.ai 有博客和社区。Jeremy 和 Rachel 鼓励撰写博客,构建项目,在会议中进行谈论等活动,以实力来代替传统证书的证明浸染。
udacity(in.udacity.com)
有中文版,课程覆盖编程根本,机器学习,深度学习等。
网易云教室
碎片韶光
科技圈也是有潮流要赶的,等你入坑就知道。
追最新的论文,最新的算法,最新的比赛,以及 AI 圈的网红是哪些~有条件的开个 twitter,平时娱乐看看机器学习板块还是蛮故意思的,有很多自嘲的漫画~
推举几个我超爱看的 AI 主题美剧
硅谷(强推!
切实其实是我日常生活,太有共鸣了~下饭剧)
西部天下(看的时候不要学我一贯在思考如何实现这个那个技能)
实用的小技巧
浏览器首推 chrome
当阅读英文网页呼吸困难时,右击选择「翻成中文(简体)」
考过雅思和 GMAT,曾经我也是一个热爱英文的孩子,如今跪倒在海量技能文档和文献里苟活
搜索问题一定用 google,如果没办理是你的问题不是 google 的锅
baidu???ummm...... 别难堪我...... 很少用
学会提问很主要,搜索格式推举
措辞+问题,例如:python how to convert a list to a dataframe
直接复制缺点信息,例如:ValueError: No variables to save...
请把所有的问题往上抛,网上查比问人快!
总是问别人会引起关系分裂的~
学会顺藤摸瓜
当你读到一个非常不错的技能文档时,看完别急着关掉。这可能是一个个人网站,去不雅观察菜单栏里有没有【About】选项。或者这也可能是一个精良的社区,看看有没有【Home】选项,去看看 po 的其它的文章。
很多精良网站都是英文,科学上网必不可少
学习用度不来自课程,可能来自于硬件哀求,学生党要利用好学校资源
小结
虽然说了那么多,但还是要说请放弃海量资料!
用多少,找多少就好了!
(别把这句话当耳旁风)
资料不在量多而在于内容是有质量担保的。很多课程或者"大众年夜众号只管塞知识,你有疑问它也解答不了的时候,这样出来的效果不好,就像一个模型只管演习,却不验证,便是耍泼皮。
如何选择编程措辞/框架
首选英语!
!
!
(咳咳,我负责的)
说到底,措辞只是工具,不去盲目的追求任何一种技能。根据任务来选择措辞,不一样的程序员选择不一样的编程措辞。很多人末了不是把重点放在能力而是炫工具,那就有点走偏了。
据不雅观察,在机器学习组里 R 和 Python 是利用率最高的两门措辞,一样平常你哪个用的顺就用哪个,只要能达到效果就行,除非逼迫规定。
我利用之后的感想熏染是,人生苦短,我用 python
用 python 建个模型到底多难?
算法任务大致分为两种,一种是普通算法工程师做的「调包、调参」,另一种是高等算法工程师做的,可以自己创建一个算法或者能灵巧修正别人的算法。
先说说建个模到底有多大略吧。
有精良的算法封装框架
tensorflow / caffe / keras /...
Auto ML 是不可阻挡的一个方向
Auto ML(auto machine learning),自动机器学习。便是你只管丢进去数据,坐等跑出结果来就行了。前一阵子谷歌的 CloudML 炒的很火,愿景是让每个人都能建模,但毕竟这种做事是要钱的。以是我研究了下开源的 auto sklearn 框架的代码,创造了什么呢?建模到底有多大略呢?就,大略到 4 行代码就可能打败 10 年事情履历的建模师。
再说回来,如果你自己根本不知道自己在做什么,只能跑出来一个你不能卖力的结果,便是很糟糕的,那还不是一个合格的算法工程师。你的模型必须像你亲生的那样。但是,只要你想,绝对能做到的!
学习 python 电脑上要装哪些东西
Anaconda
对,便是这么大略粗暴,装这个就 ok 了
学 python 的该当都会面临到底是 python2 还是 python3 的决议吧。措辞版本和环境真的很让人头疼,但是 Anaconda 惊艳到我了,便是可以自定义 python 环境,你可以左手 py2 右手 py3
推举几个 python 的 IDE
Spyder
Anaconda 自带的 ide。界面排版与 Rstudio 和 Matlab 很相似。输入什么就输出什么结果,适宜剖析事情,我写小功能的时候很喜好用。
Jupyter Notebook
Anaconda 自带的 ide,属于 web 界面的。当你程序跑在虚拟机,想调代码的时候适宜用。
PyCharm
对付写项目的,或者代码走读的比较友好。当你须要写好多 python 文件相互 import 时,特殊好用。
我的条记本配置
(不考虑经济约束的请忽略这条)
牌子+型号:ThinkPad X1 Carbon
推举配置:i7+16G 内存+256G(或更多) 硬盘
系统推举:Linux,由于开源,有空可以玩玩
校招/社招/演习/口试履历
如何安排校招
大厂的开放韶光会比较早,密切关注网申韶光节点:
2019 届的秋招:2019 年 7 月 - 2019 年 11 月2020 届的春招:2020 年 2 月 - 2020 年 4 月2020 届的暑期演习:2020 年 3 月 - 2020 年 5 月2020 届的秋招:2020 年 7 月 - 2020 年 11 月(以此类推)手撕代码能力
建议提早半年开始准备。我的代码也是从演习开始敲起,敲了半年才以为下手如有神哈哈。不要做没实际意义的课后题,也不要照着书本例题敲,敲完你就忘了,书本这些都是已经打消万难的东西,得不到什么发展。
入门修炼:全国大学生数学建模竞赛、全美大学生数学建模竞赛、kaggle、天池…
项目经历/演习经历
如果明确自己的职业方向为人工智能/数据挖掘类的,请不要摧残浪费蹂躏韶光去申请其他与技能无关的演习。端茶送水,外卖跑腿,打印纸并不能帮你。当时由于身边同学都断断续续出去演习,面前有一份大厂行政的演习,我…竟然犹豫了一下,好在也还是谢绝了。
只管即便选择大厂的技能演习,毕竟往后想进去会更难。但是不要由于一个月拿 3000 块就只干 3000 块的活。把全体项目跟下来,理解框架的架构,优化的方向,多去考试测验,就算加班(加班在深圳很正常)也是你赚到,思考如何简化重复性事情,去考试测验理解自己部门和其他部门的事情内容与方向,理解的越多你对自己想做的事情理解的也越多。
我演习做的评分卡模型,除了传统逻辑回归,也考试测验新的 XGB 等等,而且虽然别人也在做,但是私下自己会把全体模型写一遍,包含数据洗濯和模型调头等,这样对业务的理解也更透彻,口试起来所有的细节都是亲手做过的,也就比较顺了。
如果没有演习在手,天下给我们数据挖掘选手的大门还是洞开着的。kaggle 上有专门给数据挖掘入门者的练习场。干系的比赛还有很多,包括腾讯、阿里等大厂也时时时会发布算法大赛,目测这样的算法大赛只会越来越多,你坚持做完一个项目,你在平台上还可以得到干系名次,名次越靠前越有利哈哈哈这是废话。
BAT 常见的口试题(不分先后)
自我介绍/项目先容种别不屈衡如何处理数据标准化有哪些方法/正则化如何实现/onehot 事理为什么 XGB 比 GBDT 好数据洗濯的方法有哪些/数据洗濯步骤缺失落值添补办法有哪些变量筛选有哪些方法信息增益的打算公模样形状本量很少情形下如何建模交叉考验的实现决策树如何剪枝WOE/IV 值打算公式分箱有哪些方法/分箱事理是什么手推 SVM:目标函数,打算逻辑,公式都写出来,平面与非平面核函数有哪些XGB 事理先容/参数先容/决策树事理先容/决策树的优点Linux/C/Java 熟习程度过拟合如何办理平时通过什么渠道学习机器学习(好问题值得好好准备)决策树先剪枝还是后剪枝好丢失函数有哪些倾向做数据挖掘还是算法研究(好问题)bagging 与 boosting 的差异模型评估指标有哪些阐明模型繁芜度/模型繁芜度与什么有关说出一个聚类算法ROC 打算逻辑如何判断一个模型中的变量太多决策树与其他模型的丢失函数、繁芜度的比较决策树能否有非数值型变量决策树与神经网络的差异与优缺陷比拟数据构造有哪些model ensembling 的方法有哪些小结
问题是散的,知识是有关联的,学习的时候要从大框架学到小细节。
没事多走走招聘网站看看招聘需求,理解市场的需求到底是什么样的。时期变革很快,捕捉信息的能力要磨炼出来。你可以关注的点有:职业名/职业方向/须要会什么编程措辞/须要会什么算法/薪资/...
每个口试的结尾,口试官会问你有没有什么想问的,请把稳这个问题也很关键。
比如:这个小组目前在做什么项目/实现项目紧张用什么措辞和算法/…
只管即便不要问加不加班,有没有加班费之类的,别问我为什么这么说(摊手)
在口试中碰着不理解的,比如 C++语法不懂,可以问这个 C++详细在项目中实现什么功能。如果你提出好问题,能再次引起口试官对你的兴趣,那就能增加口试成功率。
应届生就好好准备校招,别
虽然是做技能的,但是日常 social 一下还是收益很大的。演习的时候,也要与周围同事和平相处,尤其是老大哥们,大概哪天他就帮你内推大厂去了。内推你能知道意想不到的信息,口试官,岗位需求,最近在做什么项目之类的。
挑选给你机会的公司,不要摧残浪费蹂躏自己的韶光。不要每家都去,去之前理解这家公司与你的匹配度。
尤其社招,你一改动简历就很多人给你打电话,你要有策略的去进行口试,把握总结每个机会。像我便是东一榔头西一榔头的,好多都是止步于第一壁,就没复书儿了,由于每次面完没有好好反思总结,等下次再碰着这问题还是抓瞎,十分花费自己的韶光和信心。
一碗鸡汤
统统才刚刚开始,别焦急
AI 才刚刚起步,为什么呢?由于上数学课的时候,教材上都是柯西,牛顿,高斯等等,觉得他们活在迢遥的时期,很有陌生感。但是现在,我每天用的模型是比我没大几岁的陈天奇创造出来的,我乃至 follow 他的社交账号,他就鲜活在我的天下里,这种觉得,很奇妙。
每次查论文查文献的时候,看 2017 年出来的都以为晚了,懊悔自己怎么学的这么慢,看 2018 年 2 月出来的才心里有点安慰。这个证明,你在时期发展的浪潮上,也是统统刚刚起步的证明。机遇与寻衅并肩涌现的时候,是你离创造历史最近的时候。而所谓的风口所谓的浪尖都不主要,主要的是,由于你喜好。
找一件可以坚持的事,不要停滞去探求的脚步
当人做喜好的事情时,会发光呀!
当你由于真的热爱某件事,而不断靠近它的时候,你的灵魂像是被上帝指示了迷津,受到了指示,受到了召唤。你会很自然的知道该做什么,你想做什么,彷佛生而为了这件事而来。你有时候自己都想不明白为什么做这件事。看过玉轮与六便士的该当懂这种义务感~
我不是属于聪明的那类人,我是属于比较倔的那种。便是只要我认定的,我认定到底。天知道我有多少次疑惑过自己,有多少次想放弃,但我还是选择咬牙向前,选择相信自己。坚持的意义就在这里。