本文主要是介绍BAT NLP 实习offer共勉,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
传送门: https://zhuanlan.zhihu.com/p/36096340
Part I:你的简历
Part II:深度学习
Part III:机器学习
Part IV:算法编程
Part VI:佛系养生篇
背景:广州某985本硕,研究方向NLP/DL/RL,面了BAT和网易游戏这四家,其中三个是做问答或对话系统。
offer情况:全部收到offer。offer可能会迟到,但是不会缺席的。
本文主要总结一下我个人的准备过程,时间为半个月左右。
一面首先要过coding这一关,白板编程,接下来面试主要围绕你简历展开考察深度学习基础,然后再聊一聊传统机器学习。
Part I:你的简历
首先你要写一份漂亮的简历,用语简练专业,突出重点,对大部分同学来说压缩成一页就够了,最多两页。
推荐这个免费网站:超级简历,非常简洁漂亮又有迎面而来的大神既视感。
你的简历需要包含这几部分:
1)教育背景:可以写上绩点排名,所在实验室以及研究方向。
2)项目经历:写明问题背景,xx数据集,xx解决方法,具体评价指标达到xx,相比xx方法提升了xx个百分点,最后还可以附上代码开源地址,或者项目上线地址。
3)实习经历:实习所负责的职责,和项目经历一样的写法。
4)论文:如果你投research岗位,顶会是个大加成;如果你投的是nlp工程岗位,论文其实没有硬性要求,更看重项目。
5)荣誉奖项:xx奖学金,kaggle xx牌,xx比赛排名。(打比赛最好是先solo再组队,自己的贡献一目了然)
6)其它:放上你的github地址,blog地址。
其中项目是重点,我相信看到这篇文章的你,应该有相关的NLP项目,那么你应该对你简历所写上去的东西负责任(也就是对细节非常熟),对方可能会问到你:
1)具体参数设置,为什么要这样设置(掌握一下调参玄学)
2)你的模型,为什么这么做,为什么能work,和xx方法比怎么样
3)可能根据你的项目及模型,提出某个可能存在的深藏不露的问题,问你如何解决
4)项目难点是什么,又如何解决,从哪几方面解决,效果提升多少
5)如今的你再来看从前的这个任务,有没有更好的解决思路
6)给你一个新的业务场景,你怎么把你的模型移植上去,怎么重新设计模型,和你之前项目的区别是什么,需要注意哪些问题
7)项目分工,你做了哪部分工作
8)你这个任务的state of the art
Part II:深度学习
这部分其实我没怎么复习,都是经验之谈。
首先关于基础原理,你至少要知道这些:
1)CNN原理,如何用在文本上,在什么情况下适合用CNN,在什么情况下用LSTM
2)RNN系列,掌握RNN、LSTM和GRU的内部结构,RNN产生梯度消失的原因,LSTM如何解决,GRU对LSTM的改进。
3)Word2vec工具,怎么训练词向量,skip-gram和cbow,可以参考一下:一篇通俗易懂的word2vec(也可能并不通俗易懂)
4)Attention机制,比较常见的方法,可以参考一下:Attention用于NLP的一些小结
5)NLP基础任务,比如分词算法(序列标注任务),分类算法
关于实战部分,你至少也要知道这些:
1)数据预处理,权重初始化,为什么不能全部初始化为0,词向量怎么预训练
2)过拟合问题,原因是什么,怎么解决,主要从数据和模型两方面出发:机器学习中用来防止过拟合的方法有哪些?
3)调参技巧,比如,卷积核大小怎么按层设置,bn放在哪里比较合适,激活函数之间的区别(sigmoid,tanh和relu),词向量维度怎么设置,等等。
4)模型评估指标,acc,pre,recall,f1,roc曲线和auc曲线,分别适用于什么任务,怎么降低偏差,怎么降低方差,可以关注一下Hulu微信公众号:Hulu机器学习问题与解答系列 | 第一弹:模型评估
5)优化方法,批量梯度下降,随机梯度下降,mini-batch梯度下降的区别,adam,adagrad,adadelta,牛顿法
6)梯度消失问题,原因(链式求导,激活函数),解决方法(主要是batch norm);以及梯度爆炸问题(梯度截断)
7)关于训练集和验证集,为什么要划分,如何划分(留出法,交叉验证)
8)如何处理数据不均衡问题,也是从数据和模型两方面出发解决。
其实大部分问题,google一下就有答案。
Part III:传统机器学习
看这本书:周志华-机器学习(俗称西瓜书)
这本书我们实验室人手一本,真正通俗易懂,有基础的话一周就能看得差不多,很多内容我在大三的时候已经学过了。这本书比李航统计学习方法要好看很多,特别适合没有基础的入门者。
我觉得这本书的目录差不多已经涵盖了面试会问到的内容,至少要看完第2-9章,第14章的概率图模型也看一下,第16章的强化学习就见仁见智了,虽然我在简历上写到强化学习背景,但实际上问到我强化学习的只有那么一位面试官(RL+对话系统)
你至少要掌握的算法原理:
1)朴素贝叶斯
2)逻辑回归,线性回归
3)决策树,不同的划分方式,ID3,C4.5,CTAR,XGBoost等等
4)Ensemble模型
5)SVM,核函数选择,不同SVM形式
6)HMM,CRF,如何轻松愉快地理解条件随机场(CRF)?
7)最大熵原理,图解最大熵原理(The Maximum Entropy Principle)
8)KNN和K-Means,DBSACN也了解一下,以及各种距离计算方式,关于机器学习距离的理解
以上列出的算法都需要掌握其基本原理以及优缺点,可以参考:机器学习算法优缺点及其应用领域 - CSDN博客
你必须要会写的公式:
1)BP后向传播过程的推导,可以参考:漫谈LSTM系列的梯度问题,先定义Loss函数,然后分别对输出层参数和隐藏层参数进行求导,得到参数的更新量。
2)softmax和交叉熵推导,分成i=j 和 ij 两种情况来算,参考这里:大师网-简单易懂的softmax交叉熵损失函数求导
3)各种Loss函数
4)似然函数,负对数似然函数的推导
5)最小二乘法,利用矩阵的秩进行推导
7)贝叶斯定理,拉普拉斯平滑
你最好也要掌握一下的公式:
1)RNN在BP过程中梯度消失的原因,也把这个链式求导过程写出来。
2)各种优化方法的公式,SGD,Momentum,Adagrad,Adam,机器学习优化方法总结比较 - 合唱团abc - 博客园
3)Batch Normalization,就是个归一化过程,再加一个scale操作
4)SVM推导,拉格朗日了解一下:机器学习之拉格朗日乘数法
5)最大熵模型相关推导,一步一步理解最大熵模型 - wxquare - 博客园
Part IV:算法编程
不管你面试什么公司,请记住coding几乎是必考的,这是工程师的基本功。
编程分成三种:普通算法编程,海量数据编程,模型编程。
普通算法编程,一般用C++,需要掌握数组,链表,二叉树,递归,贪心,动态规划,各种容器,各种排序算法,在时间或者空间上的优化思路,以及复杂度的分析。
容器是个好东西,用vector代替数组,用map实现桶思想,用set排序,用queue写bfs,用stack写dfs等等。
推荐大家刷:剑指offer,这本书两天就可以看完(如果仅仅是看题目以及思路),然后上牛客网做一下题:剑指Offer_编程题_牛客网,66道原题全在这,而且评论区有大神出没,某些题的解法我觉得比书上的要巧妙。或者刷LeetCode也可以。
随手列几道常考的代码题:
1)复杂链表的复制,链表的删除
2)最长公共子序列,逆序对
3)快排,归并排序,堆排序
4)二分查找,以及衍生的题目
5)深度优先搜索
海量数据编程,这种用python写比较方便一点,可以把大文件划分成小文件,或者分治加哈希:十道海量数据处理面试题与十个方法大总结 - CSDN博客
模型编程,有时候可能会让你用某个深度学习框架搭某个模型,不过这种比较少。
做科研比较推荐pytorch,业界用tf 比较多,不过也得看组看个人,如果项目需要上线很有可能就是要用tf了。我个人比较喜欢用pytorch,方便搭模型,对RL也很友好。但tf 还是要掌握一下的,指不定哪天这个项目就是要用tf来上线呢。
总之,刷题即可,多写代码多搭模型。
以上都是非常基础的内功,最重要的是你如何向别人去展示你的实力,我觉得只有理解到位了,且有自己的思考,才能和别人进行愉悦的交流和探讨。
Part VI:佛系养生篇
offer固然重要,身体是最重要的。
最近没有更新专栏,因为身体出了点状况,三天两头跑医院。因此添加这一节内容告诉大家,有钱不如去买口红买机械键盘!不要大把花在医院!
1. 牙齿超级重要!
牙齿要保护好,并及时拍片检查。
因为牙齿真的真的真的很重要!嘤嘤嘤!我小时候牙齿动过手术,现在复发很严重,要做好多次手术,我瑟瑟发抖!
(刚刚动完第一次手术,人生依然美好!并不影响我的颜值!开心!)
2. 眼睛是心灵的窗户
1) 眼药水,推荐日本santen那一款。
2) 日常转动眼珠,先顺时针慢慢转动几圈,再逆时针转动几圈(超有效)。
3) 轻轻按摩眼窝和太阳穴。
4) 眼霜,熬越晚的夜就用越贵的眼霜。
3. 关于熬夜
不要熬夜!早睡早起!
熬夜使你脸浮肿!熬夜使你第二天没精神写代码!熬夜使你内分泌失调!熬夜会带来很多潜伏的问题!熬夜玩手机不如看论文!
对付不得已的浮肿:
1) 每天洗脸的时候,顺时针转动头部,再逆时针转动,大概花几分钟时间,非常有效。
2) 轻轻按摩咬肌附近,要先上乳液。
3) 从下巴往上沿轮廓轻轻推动肉肉
4) 轻轻拍打下颌处肉肉(俗称打脸)
4. 多运动!
道理大家都懂。
很久之前我和实验室另一个妹子,一起办了健身卡,想要相互push,后来,我一次也没去过,她只去过一次.......
但最后她加入了校内的运动社团,强制签到push,每周30公里的运动量妥妥的。
但是我找到了这个:
30分钟瘦身操
感觉很方便~~~啦啦啦
这篇关于BAT NLP 实习offer共勉的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!