这么多人喜欢考SVM,真的,你们在工作中用过SVM吗?调用过libsvm还是liblinear?很多人这辈子看到拉格朗日算子就是在SVM的介绍文章里吧。
这么多人喜欢考GBDT,难道现在不是一开始就无脑上xgboost或是lightgbm么?非从GBDT开始调?最终不还得用XGBoost。
还有这么多人喜欢问ID3,C4.5和Gini,真的,你家广告系统排序用ID3?还是出价、召回用C4.5?
还有让人手推BPTT,这个,真有必要吗?就是用个LSTM+CRF做序列标注而已啊。
问个L1/L2,是不是还要从VC维讲到Hoeffding's inequality。
还有让把attention有几种方式讲清楚,真的,就用个transformer而已啊,要不是看邱锡鹏的综述,我都没见过那么多种attention,关键是,看完也忘记了。
也不是说不能考,但也与时俱进一下,校招考考,看看这几年是不是混日子。社招稍微考考,看是不是简历瞎写。如果是AI Lab之类研究职位,那你就好好考,上面的问题也没啥意义。
但最重要的,难道不是看项目有没有给公司涨CTR/CPM/CVR/GMV吗?一顿操作猛如虎,线上效果丑成狗。
这么多年业务做下来,发现,DL玩得再溜理论讲得再好,不涨商业指标也没用。也不知道你们有啥好看不起只会掉包的同事?他就算用统计字典能涨CPM,他就是牛逼,他能发现系统薄弱之处能解决实际问题,下次晋升位次就是排前面。又不是评诺贝尔奖。
工业界干活,初中级职位,能有基本ML、统计学知识、有工程能力,能把项目说清楚,沟通能力良好,一般来说就差不多。高端职位或是要带人,就要看技术之外的能力,只会埋头干活不能涨点,技术再好也没用。
从我这几年看了两三百份简历和面试的经验,能把项目讲清楚讲明白,中间穿插一点技术展开,已经可以筛掉60%以上的人。多来个两轮,写几道easy的leetcode,人是否靠谱,基本能判断,根本用不着推SVM,写BPTT,连XGBoost为啥更好都不一定要问。也不知道你们图啥。你说人难招吗?简历一点都不缺。你说好招么?还真是难招。有一半能把项目讲清楚,逻辑理顺,实验设计良好,还有线上效果,就已经很好了。
《功勋》里于敏那个故事里有一段招考片段,于敏出了一道题,让学生在半个小时里用四种不同解法。这个就很合理。如果现在是招曲率引擎工程师,让写出质数无穷多的九种证明,这个也合理的不得了。
可现在,不就推推广告识别人脸,非要搞得这么卷么?工业界ML这点事,99%就那点事,真没那么高大上,也就是搭上了行业发展和国家发展的快车,真觉得自己能改变世界?
应届生就算了,社招也这样?设想一下,你手推SVM,BPTT不带喘气,但一个模型半年调不上线。隔壁小王,当年你面进来的时候连logistic regression的loss函数都写得磕磕碰碰,但也不知道是运气好还是眼光好,上个简单策略,CPM/CTR有显著提高。公司究竟是需要你,还是需要小王?不是每个公司都叫DeepMind,说白了,绝大多数公司,就是要涨点。
各位首先要做的,是在面试过程中不让候选人觉得自己是傻逼,这个公司是傻逼。毕竟选择是双向的,莫要『我见候选人是废物,候选人见你亦如是』。
综上,不是不能考基础,但能不能别摆出一副孔乙己的嘴脸。『我一般就考一道题,推个SVM』『SVM用过是吧?那说说KKT条件吧』,『用过LSTM是吧,推一下BPTT吧』有人不看书也推不出SVM和BPTT,可是能给公司涨CTR/CPM,还是10+以上的,你要不要吧。
毕竟我们招人不是为了看你的水平到底有多牛逼,而是想看你是否能帮我们分摊工作,在工作中创造价值。有些人的机器水平很高,但是完全没办法用在工作上就是白搭。
不多废话了,直接放出我之前用过的一套面试题,你们感受一下:
我也自己整理了一套模拟面试题(内容包含面试问题,错误案例,正解),私我【机器学习】免费领取~
假设你在大学/培训期间完成了一个人工智能项目,你在你的简历中是这样描述你的项目的:
基于Python语言开发完成了遥感影像分类系统,检测自然环境、土地利用和植被生态。在该项目中通过对图形进行归一化和标准化完成了预处理,随后基于TensorFlow/Keras实现了卷积、池化和激活等CNN结构。随后通过添加BatchNormalization和Dropout等结构进一步提高精度并防止过拟合。在项目后期使用数据增强进一步优化了性能,最终达到了95%的识别率。
Q1:
我看到这里你使用了BN和Dropout的方式防止了过拟合,那么请你说一下什么是过拟合以及过拟合的表现形式。
你可能会这么回答:
过拟合的就是模型的准确率非常低。具体来说就是在训练集和验证集上准确率都很低。
错误原因:
这句话看上去非常专业,实际上从根本上就是错的。属于对知识的理解错误。
过拟合就是由于过于追求完美拟合现有数据集,以至于会将单个数据点的特征认为是一般特征。结果就是预测新数据的能力极差,表现特征就是在训练集上准确度很高,但是在验证集上准确度很低。下图就很好地展示了欠拟合,拟合和过拟合三种情况下的情况。
Q2:
我看到你这里写的最终达到了95%的识别率,那么这个95%是在什么条件下获得的?对于这个值有做其他的处理么?
你可能会这么回答:
我这里是用的Keras默认的评判指标,应该是叫做accuracy。我看到这个指标结果很不错所以没有调整。
错误原因:
其实在这个问题中我想要考察的是:对Keras库进行深入的研究。同时对于模型效果评价体系没有一个全面的认知,对于为什么要使用accuracy说不出利弊。
所以重点要打出识别率有什么弊端,再简单介绍一下交叉验证就可以了。
从这个问题可以看到判断机器学习的水平除了看最基本的理论基础以外。重点是去还会深挖你的简历里的项目,判断你的项目的能力(也就是未来的工程能力)以及从一些优化处理的问题来判断你对业务的理解以及自己独立分析和实现的能力。
1、理论基础(包括:GBDT,分类树,回归树,关联规则,监督学习,Bias和Variance模型等等,参考资料:《机器学习理论基础》 《机器学习Python Data Analysis》)
2、把自己项目中的数据处理,建模,可视化等内容都了如指掌(参考自己的简历)
3、培养自己的编程能力(只要每天保持刷题的习惯基本没啥大问题,参考资料:《机器学习KNN算法入门 Machine Learning - KNN algorithm》)
4、数据处理以及数据挖掘的能力(参考资料:tornadomeet 机器学习 笔记)
我也自己整理了一套模拟面试题(内容包含面试问题,错误案例,正解),私我【机器学习】免费领取~
当然所有学习都不是一蹴而就的,在工作中学习的过程中不断查漏补缺,不断提高自己的水平才是最重要的。希望每个同学都能拿到自己的dream offer~
作为一名久经沙场的算法面试官,最近陆陆续续也面了几十个同学。有几个学生的给我的感触很深。一个是学车辆工程的学生,那个学生还挺实在,上来就说非常抱歉我可能不太符合贵公司的招聘要求。。问了一下,感觉没咋写过代码。。。我作为转行的,我对转行的同学都是非常友好的。基本只会看学校这个基本面,不会卡专业,不会不给转行学生机会,真的看实力。
那对于算法工程师什么是实力的体现呢?我认为主要是1. 理论基本功 2. 工程能力 3. 业务理解能力。这也是面试官判断面试者机器学习水平的三个重要维度。
数学原理和机器学习基础很重要,面试三板斧LR,SVM,GBDT的原理是必须要搞清楚的,内部细节也要懂,最好自己实现过才讲得清。例如你说你用过xgboost,那你就要说得清xgboost好在哪里,有哪些改进。特征工程也很重要,是基本功。现在算法更新很快,推陈出新,只有基本功好,才能快速跟上前沿。强烈推荐李航的统计学习方法,真心很精练了。
此外,针对只有炼丹(深度学习)经验的同学,我还喜欢问的问题:
2. 工程能力
初学者的一大误区就是觉得深度学习就是网上找个公开数据集,github上找个开源代码,然后开始花里胡哨就完了。实际工作中算法工程师对工程能力的要求非常是非常硬核的。首先算法工程师是一名工程师。模型训练出来绝对不是万事大吉了,只是模型落地的第一步。
模型太重速度太慢,不符合线上需求,怎么办?
当然,这些都是针对深度学习领域工程能力的考查,此外也会考查传统的算法题与数据结构(LeetCode),有些情况也会问一些system design的问题。
3. 业务能力
考查业务能力的主要是业务场景题,让面试者设想一个业务场景,考查他该如何解决?
现在,算法工程师的要求的确水涨船高,基本要求候选人三个方面都没有短板。理论基本功,只要好好学过斯坦福的那几门课(cs229, cs231, cs224)问题到不大。业务场景题,有过实际经验的同学,也基本能说上两句。最要命的恰恰是工程能力,很多同学都是在工程能力上折戟成沙。
还好英特尔工程师们分析人工智能领域遇到的种种计算瓶颈,把他们的解决方案用更贴近硬件的方式整合进英特尔至强处理器里,为人工智能算法提供澎湃动力,也能解决算法工程师们的燃眉之急。回到我前面提到的工程能力的几个难题:
英特尔至强可扩展处理器集成 AVX-512 指令集,为算法模型开辟了专用快车道。英特尔开发的oneDNN函数库在AVX-512 指令集进一步开发, 它不仅集成有众多优化的深度学习基元,例如直接批量卷积、池化、激活等,可提升各类深度学习应用的效率,更可针对 CPU 的各项特性实施优化。轻松将算法模型中的各种操作向量化为 AVX-512 指令,并在支持 AVX-512 指令集的在英特尔至强可扩展处理器中带来强劲算力。
大多数 AI 模型多采用传统的 FP32 数据格式,其实这种格式完全可以在损失很小精度的前提下,转换成 BF16 或 INT8 格式,以换取更高的处理效率或者说吞吐量。但人为转换费时费力,不仅无法根据处理器平台特性实施优化,且转换后的模型也无法兼容不同的硬件平台。
为此,英特尔推出了 OpenVINO工具套件,则是专业和省心工具的代表,它提供的模型量化功能,为上述问题提供了应对良方。它能让基于不同 AI 框架,如 TensorFlow、MXNet、PyTorch 等构建的 FP32 数据格式 AI 模型,在损失很少精度的情况下转化为 INT8 和 BF16 数据格式。同时可以利用英特尔DL Boost技术把对低精度数据格式的操作指令融入到了 AVX-512 指令集中,即 AVX-512_VNNI (矢量神经网络指令) 和 AVX-512_BF16(bfloat16),对模型的训练和推理都提供了强大的支持。
使用 OpenVINO量化压缩的模型服务,其推理性能是普通的 Tensorflow Serving推理性能的3.4倍,效果群拔。
英特尔的OpenVINO工具套件,对传统的 OpenCV 图像处理库也进行了指令集优化,实现了性能与速度的显著提升。
如下图所示,在典型的图像抠图应用场景中,OpenVINO工具套件带来了 5 倍的推理速度提升,而在不良内容检测和文本检测场景中,效率提升更是达到了 6 倍和 11 倍之多。
这时候就可以用上英特尔开发的数据分析加速库DAAL(Data Analytics Acceleration Library)。在英特尔至强处理器上,英特尔优化了XGBoost 代码库,最新的优化成果已经集成到 XGBoost 1.0 及之后的版本。相比 XGBoost 0.9 版,新版本性能提升 2 倍以上,最高达 54 倍。
总而言之,算法同学非常值得深入学习英特尔一系列工具箱,如OpenVINO、oneDNN 、DAAL等,尤其是它们所属的 oneAPI 统一编程模型。这是一个跨架构工具组合,帮助开发者简化异构编程的流程、加速性能、提升生产力。凭借这些高级工具,开发者可在英特尔CPU、GPU、FPGA上实现AI工作负载的加速,并使代码可以在目前及未来的英特尔处理器及加速器上运行。
掌握好oneAPI,便可以快速拥有算法模型上线部署的各种能力,可以轻松地将训练好模型在英特尔平台的各种处理芯片上快速部署起来,提高自己的算法落地能力!
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有