1. 机器学习算法工程师必备技能
【导读】成为合格的机器学习算法工程师并非易事。您需要掌握从开发到调试再到优化的一系列功能。这些功能中的每一个都需要足够的精力和经验来掌握。成为合格的机器学习算法工程师(以下简称算法工程师)更加困难,因为除了掌握工程师的一般技能外,您还需要掌握机器学习算法的知识网络。下面我们就将成为一名合格的算法工程师所需的技能进行拆分,一起来看一下究竟需要掌握哪些技能才能算是一名合格的算法工程师。
2. 从小白到机器学习算法工程师,我做了哪些准备
机器学习方面的面试主要分成三个部分: 1. 算法和理论基础 2. 工程实现能力与编码水平 3. 业务理解和思考深度 1. 理论方面,我推荐最经典的一本书《统计学习方法》,这书可能不是最全的,但是讲得最精髓,薄薄一本,适合面试前突击准备。 我认为一些要点是: 统计学习的核心步骤:模型、策略、算法,你应当对logistic、SVM、决策树、KNN及各种聚类方法有深刻的理解。能够随手写出这些算法的核心递归步的伪代码以及他们优化的函数表达式和对偶问题形式。 非统计学习我不太懂,做过复杂网络,但是这个比较深,面试可能很难考到。 数学知识方面,你应当深刻理解矩阵的各种变换,尤其是特征值相关的知识。 算法方面:你应当深刻理解常用的优化方法:梯度下降、牛顿法、各种随机搜索算法(基因、蚁群等等),深刻理解的意思是你要知道梯度下降是用平面来逼近局部,牛顿法是用曲面逼近局部等等。 2. 工程实现能力与编码水平 机器学习从工程实现一般来讲都是某种数据结构上的搜索问题。 你应当深刻理解在1中列出的各种算法对应应该采用的数据结构和对应的搜索方法。比如KNN对应的KD树、如何给图结构设计数据结构?如何将算法map-red化等等。 一般来说要么你会写C,而且会用MPI,要么你懂Hadoop,工程上基本都是在这两个平台实现。实在不济你也学个python吧。 3. 非常令人失望地告诉你尽管机器学习主要会考察1和2 但是实际工作中,算法的先进性对真正业务结果的影响,大概不到30%。当然算法必须要足够快,离线算法最好能在4小时内完成,实时算法我没搞过,要求大概更高。 机器学习大多数场景是搜索、广告、垃圾过滤、安全、推荐系统等等。对业务有深刻的理解对你做出来的系统的结果影响超过70%。这里你没做过实际的项目,是完全不可能有任何体会的,我做过一个推荐系统,没有什么算法上的高大上的改进,主要是业务逻辑的创新,直接就提高了很明显的一个CTR(具体数目不太方便透露,总之很明显就是了)。如果你做过实际的项目,一定要主动说出来,主动让面试官知道,这才是最大最大的加分项目。 最后举个例子,阿里内部机器学习挑战赛,无数碾压答主10000倍的大神参赛。最后冠军没有用任何高大上的算法而是基于对数据和业务的深刻理解和极其细致的特征调优利用非常基本的一个算法夺冠。所以啥都不如真正的实操撸几个生产项目啊。
3. 机器学习算法工程师用什么编程语言
《1-欢迎学习机器学习纳米学位工程师课程(进阶)》网络网盘资源免费下载
链接:https://pan..com/s/1bpulI-RAj4pLvncJMDuSdQ
-欢迎学习机器学习纳米学位工程师课程(进阶)|3-探索性项目-泰坦尼克号幸存者分析|2-从人工智能到机器学习|1-欢迎学习机器学习工程师|说明.docx|4-学习项目介绍.mp4|3-机器学习无处不在.mp4|3-机器学习无处不在 答案.mp4|3-机器学习无处不在|2-机器学习与传统编程的异同.mp4|1-欢迎来到机器学习课程.mp4|9-基础知识:人工智能的四个学派.mp4|8-什么是基于知识的人工智能?.mp4|7-人工智能的实际运用:Watson.mp4|7-人工智能的实际运用:Watson 答案.mp4
4. 成为python全栈工程师需要掌握哪些知识
【导读】Python全栈工程师,是从前端页面的实现,到后台代码的编写,再到数据库的管理,一人可以搞定一个公司网站的所有事情,真正实现全栈开发。这门职业的要求相对比较高,要求python全栈工程师具有完整成熟的技术和知识,那么成为python全栈工程师需要掌握哪些知识?
第一,Python语言基本语法。
Python语言的基本语法掌握起来并不困难,甚至可以说非常简单,因为Python是脚本语言,所以语法也比较直接
第二,Python做Web开发。
Python是Web开发的传统三大解决方案之一(还包括java和PHP),Web开发是全栈工程师必须掌握的内容。用Python做Web开发需要学习对应的框架,比如Django。
第三,Python做数据分析。
Python做数据分析是一个比较常见的应用场景,Python做数据分析需要学习对应的算法以及实现过程。会使用到的库包括Numpy、matplotlib等。
第四,Python做爬虫。
Python做爬虫应用是一个非常常见的应用,有大量的案例可以参考。
第五,Python做机器学习类应用。
Python目前在机器学习领域(人工智能相关)的应用非常普遍,所以对于Python全栈工程师来说,掌握机器学习相关的内容也是有必要的。需要掌握的算法包括决策树、朴素贝叶斯、回归、kNN分类等,同时需要掌握基本的线性代数和概率论相关知识。
以上就是python全栈工程师知识的相关内容,就和大家分享到这里了,学习是永无止境的,学习一项技能更是受益终身,所以,只要肯努力学,什么时候开始都不晚。
5. 如何成为一名合格的算法工程师
BAT企业的算法工程师是这样工作的:问题抽象、数据采集和处理、特征工程、建模训练调优、模型评估、上线部署。(具体操作可以看阿里算法专家chris老师的算法工作流视频算法工作流是怎样的?)而一个算法工程师真正值钱的地方在于问题抽象和上线部署这两个。
6. 算法工程师应该学哪些
一、算法工程师简介
(通常是月薪15k以上,年薪18万以上,只是一个概数,具体薪资可以到招聘网站如拉钩,猎聘网上看看)
算法工程师目前是一个高端也是相对紧缺的职位;
算法工程师包括
音/视频算法工程师(通常统称为语音/视频/图形开发工程师)、图像处理算法工程师、计算机视觉算法工程师、通信基带算法工程师、信号算法工程师、射频/通信算法工程师、自然语言算法工程师、数据挖掘算法工程师、搜索算法工程师、控制算法工程师(云台算法工程师,飞控算法工程师,机器人控制算法)、导航算法工程师(
@之介
感谢补充)、其他【其他一切需要复杂算法的行业】
专业要求:计算机、电子、通信、数学等相关专业;
学历要求:本科及其以上的学历,大多数是硕士学历及其以上;
语言要求:英语要求是熟练,基本上能阅读国外专业书刊,做这一行经常要读论文;
必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。
算法工程师的技能树(不同方向差异较大,此处仅供参考)
1 机器学习
2 大数据处理:熟悉至少一个分布式计算框架Hadoop/Spark/Storm/ map-rece/MPI
3 数据挖掘
4 扎实的数学功底
5 至少熟悉C/C++或者Java,熟悉至少一门编程语言例如java/python/R
加分项:具有较为丰富的项目实践经验(不是水论文的哪种)
二、算法工程师大致分类与技术要求
(一)图像算法/计算机视觉工程师类
包括
图像算法工程师,图像处理工程师,音/视频处理算法工程师,计算机视觉工程师
要求
l
专业:计算机、数学、统计学相关专业;
l
技术领域:机器学习,模式识别
l
技术要求:
(1) 精通DirectX HLSL和OpenGL GLSL等shader语言,熟悉常见图像处理算法GPU实现及优化;
(2) 语言:精通C/C++;
(3) 工具:Matlab数学软件,CUDA运算平台,VTK图像图形开源软件【医学领域:ITK,医学图像处理软件包】
(4) 熟悉OpenCV/OpenGL/Caffe等常用开源库;
(5) 有人脸识别,行人检测,视频分析,三维建模,动态跟踪,车识别,目标检测跟踪识别经历的人优先考虑;
(6) 熟悉基于GPU的算法设计与优化和并行优化经验者优先;
(7) 【音/视频领域】熟悉H.264等视频编解码标准和FFMPEG,熟悉rtmp等流媒体传输协议,熟悉视频和音频解码算法,研究各种多媒体文件格式,GPU加速;
应用领域:
(1) 互联网:如美颜app
(2) 医学领域:如临床医学图像
(3) 汽车领域
(4) 人工智能
相关术语:
(1) OCR:OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程
(2) Matlab:商业数学软件;
(3) CUDA: (Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台(由ISA和GPU构成)。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题
(4) OpenCL: OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。
(5) OpenCV:开源计算机视觉库;OpenGL:开源图形库;Caffe:是一个清晰,可读性高,快速的深度学习框架。
(6) CNN:(深度学习)卷积神经网络(Convolutional Neural Network)CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。
(7) 开源库:指的是计算机行业中对所有人开发的代码库,所有人均可以使用并改进代码算法。
(二)机器学习工程师
包括
机器学习工程师
要求
l
专业:计算机、数学、统计学相关专业;
l
技术领域:人工智能,机器学习
l
技术要求:
(1) 熟悉Hadoop/Hive以及Map-Rece计算模式,熟悉Spark、Shark等尤佳;
(2) 大数据挖掘;
(3) 高性能、高并发的机器学习、数据挖掘方法及架构的研发;
应用领域:
(1)人工智能,比如各类仿真、拟人应用,如机器人
(2)医疗用于各类拟合预测
(3)金融高频交易
(4)互联网数据挖掘、关联推荐
(5)无人汽车,无人机
相关术语:
(1) Map-Rece:MapRece是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Rece(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。
(三)自然语言处理工程师
包括
自然语言处理工程师
要求
l
专业:计算机相关专业;
l
技术领域:文本数据库
l
技术要求:
(1) 熟悉中文分词标注、文本分类、语言模型、实体识别、知识图谱抽取和推理、问答系统设计、深度问答等NLP 相关算法;
(2) 应用NLP、机器学习等技术解决海量UGC的文本相关性;
(3) 分词、词性分析、实体识别、新词发现、语义关联等NLP基础性研究与开发;
(4) 人工智能,分布式处理Hadoop;
(5) 数据结构和算法;
应用领域:
口语输入、书面语输入
、语言分析和理解、语言生成、口语输出技术、话语分析与对话、文献自动处理、多语问题的计算机处理、多模态的计算机处理、信息传输与信息存储 、自然语言处理中的数学方法、语言资源、自然语言处理系统的评测。
相关术语:
(2) NLP:人工智能的自然语言处理,NLP (Natural Language Processing) 是人工智能(AI)的一个子领域。NLP涉及领域很多,最令我感兴趣的是“中文自动分词”(Chinese word segmentation):结婚的和尚未结婚的【计算机中却有可能理解为结婚的“和尚“】
(四)射频/通信/信号算法工程师类
包括
3G/4G无线通信算法工程师, 通信基带算法工程师,DSP开发工程师(数字信号处理),射频通信工程师,信号算法工程师
要求
l
专业:计算机、通信相关专业;
l
技术领域:2G、3G、4G,BlueTooth(蓝牙),WLAN,无线移动通信, 网络通信基带信号处理
l
技术要求:
(1) 了解2G,3G,4G,BlueTooth,WLAN等无线通信相关知识,熟悉现有的通信系统和标准协议,熟悉常用的无线测试设备;
(2) 信号处理技术,通信算法;
(3) 熟悉同步、均衡、信道译码等算法的基本原理;
(4) 【射频部分】熟悉射频前端芯片,扎实的射频微波理论和测试经验,熟练使用射频电路仿真工具(如ADS或MW或Ansoft);熟练使用cadence、altium designer PCB电路设计软件;
(5) 有扎实的数学基础,如复变函数、随机过程、数值计算、矩阵论、离散数学
应用领域:
通信
VR【用于快速传输视频图像,例如乐客灵境VR公司招募的通信工程师(数据编码、流数据)】
物联网,车联网
导航,军事,卫星,雷达
相关术语:
(1) 基带信号:指的是没有经过调制(进行频谱搬移和变换)的原始电信号。
(2) 基带通信(又称基带传输):指传输基带信号。进行基带传输的系统称为基带传输系统。传输介质的整个信道被一个基带信号占用.基带传输不需要调制解调器,设备化费小,具有速率高和误码率低等优点,.适合短距离的数据传输,传输距离在100米内,在音频市话、计算机网络通信中被广泛采用。如从计算机到监视器、打印机等外设的信号就是基带传输的。大多数的局域网使用基带传输,如以太网、令牌环网。
(3) 射频:射频(RF)是Radio Frequency的缩写,表示可以辐射到空间的电磁频率(电磁波),频率范围从300KHz~300GHz之间(因为其较高的频率使其具有远距离传输能力)。射频简称RF射频就是射频电流,它是一种高频交流变化电磁波的简称。每秒变化小于1000次的交流电称为低频电流,大于10000次的称为高频电流,而射频就是这样一种高频电流。高频(大于10K);射频(300K-300G)是高频的较高频段;微波频段(300M-300G)又是射频的较高频段。【有线电视就是用射频传输方式】
(4) DSP:数字信号处理,也指数字信号处理芯片
(五)数据挖掘算法工程师类
包括
推荐算法工程师,数据挖掘算法工程师
要求
l
专业:计算机、通信、应用数学、金融数学、模式识别、人工智能;
l
技术领域:机器学习,数据挖掘
l
技术要求:
(1) 熟悉常用机器学习和数据挖掘算法,包括但不限于决策树、Kmeans、SVM、线性回归、逻辑回归以及神经网络等算法;
(2) 熟练使用SQL、Matlab、Python等工具优先;
(3) 对Hadoop、Spark、Storm等大规模数据存储与运算平台有实践经验【均为分布式计算框架】
(4) 数学基础要好,如高数,统计学,数据结构
l
加分项:数据挖掘建模大赛;
应用领域
(1) 个性化推荐
(2) 广告投放
(3) 大数据分析
相关术语
Map-Rece:MapRece是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Rece(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。
(六)搜索算法工程师
要求
l
技术领域:自然语言
l
技术要求:
(1) 数据结构,海量数据处理、高性能计算、大规模分布式系统开发
(2) hadoop、lucene
(3) 精通Lucene/Solr/Elastic Search等技术,并有二次开发经验
(4) 精通Lucene/Solr/Elastic Search等技术,并有二次开发经验;
(5) 精通倒排索引、全文检索、分词、排序等相关技术;
(6) 熟悉Java,熟悉Spring、MyBatis、Netty等主流框架;
(7) 优秀的数据库设计和优化能力,精通MySQL数据库应用 ;
(8) 了解推荐引擎和数据挖掘和机器学习的理论知识,有大型搜索应用的开发经验者优先。
(七)控制算法工程师类
包括了云台控制算法,飞控控制算法,机器人控制算法
要求
l
专业:计算机,电子信息工程,航天航空,自动化
l
技术要求:
(1) 精通自动控制原理(如PID)、现代控制理论,精通组合导航原理,姿态融合算法,电机驱动,电机驱动
(2) 卡尔曼滤波,熟悉状态空间分析法对控制系统进行数学模型建模、分析调试;
l
加分项:有电子设计大赛,机器人比赛,robocon等比赛经验,有硬件设计的基础;
应用领域
(1)医疗/工业机械设备
(2)工业机器人
(3)机器人
(4)无人机飞控、云台控制等
(八)导航算法工程师
要求
l 专业:计算机,电子信息工程,航天航空,自动化
l 技术要求(以公司职位JD为例)
公司一(1)精通惯性导航、激光导航、雷达导航等工作原理;
(2)精通组合导航算法设计、精通卡尔曼滤波算法、精通路径规划算法;
(3)具备导航方案设计和实现的工程经验;
(4)熟悉C/C++语言、熟悉至少一种嵌入式系统开发、熟悉Matlab工具;
公司二(1)熟悉基于视觉信息的SLAM、定位、导航算法,有1年以上相关的科研或项目经历;
(2)熟悉惯性导航算法,熟悉IMU与视觉信息的融合;
应用领域
无人机、机器人等。
7. 算法工程师是做什么的真正做过的回答,怎么去做一个算法工程师与机器学习哪个好一些
算法工程师是这样工作的:问题抽象、数据采集和处理、特征工程、建模训练调优、模型评估、上线部署。而一个算法工程师真正值钱的地方在于问题抽象和上线部署这两个。
那么怎么去做一个算法工程师?算法工程师是一个非常高端的职位;是非常紧缺的专业工程师,兼具前途和钱途!
1.专业要求:计算机、电子、通信、数学等相关专业;
2.学历要求:本科及其以上的学历,大多数是硕士学历及其以上;
3.语言要求:英语要求是熟练,基本上能阅读国外专业书刊;
必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。
机器学习是一门多领域交叉学科,涉及概率论、统计学、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要是归纳、综合,而不是演绎。
关于算法工程师的相关学习,推荐CDA数据师的相关课程,课程内容兼顾培养解决数据挖掘流程问题的横向能力以及解决数据挖掘算法问题的纵向能力。要求学生具备从数据治理根源出发的思维,通过数字化工作方法来探查业务问题,通过近因分析、宏观根因分析等手段,再选择业务流程优化工具还是算法工具,而非“遇到问题调算法包”点击预约免费试听课。
8. 干货分享 | AI研发工程师成长指南
作者 | Japson
来源 | 木东居士
0x00 前言
首先,《AI研发工程师成长指南》这个题目其实有些标题党了,准确地来说,本文内容应该是:“要想成为一名AI研发工程师,需要具备哪些技能”。
其次,本文对“AI研发工程师”这个title的定义,也并不是大家第一印象中的“算法工程师”、“数据科学家”。
再次,本文实际上作者结合现阶段行业发展、技术趋势以及自身工作性质做出的关于自身定位、职业技能、发展方向的思考。就像魔兽世界中的“职业攻略”,当我们在游戏中新建一个角色时,会先去了解这个职业的特点、天赋、技能树等信息,这样才会在“练级”的过程中少走些弯路。
最后,作者不是从一个很高的角度来对整个成长体系进行一个全面地阐述。而是站在道路的地点,不断摸索、不断前进、不断地调整自己的规划。因此本文不算是Best Practices,勉强算是Beta version,也希望能和大家不断交流,不断“发版”。
0x01 关于AI行业的思考算法工程师的门槛
AI算法工程师年薪百万,应届毕业生年薪都有80w… 去年AI人才缺口就已经过百万,今年将达500w… 加入《XXX训练营》,XX天打造AI算法工程师…在网络上充斥着各种类似上面那样的吸引眼球的文章标题,向你诉说着人工智能这一火的不能再火的领域美好的前景。仿佛我们看了两遍西瓜书、处理了MNIST和几朵鸢尾花、在自己的笔记本电脑上掉了几个包、得到了和教程上一样的结果,打了几场比赛,我们就已经拿到了AI领域的通行证、成功转型算法工程师、接大厂offer到手软了一样。
但实际,现在AI算法工程师的就业难度和准入门槛,远比我们想象的要高。
上一张网络上流传的“诸神黄昏”吧
可以说一点不夸张,现在很多大厂的校招算法岗,门槛就是海外名校/985工科院校的博士/硕士。除了拥有与学历匹配的学术能力以外,工程基础也要非常扎实。
有人说:“我看网上说,AI人才缺口非常大,我不去大厂不就行了?其他的公司要求没那么高吧?”
要求高不高我不知道,但是有一下两点:
绝大多数公司,是不需要雇佣AI算法工程师,即没有相关的业务需求,也负担不起算法团队的开销 2019年研究生报考人数290万人,预计招生70万人,其中计算机是热门专业,并且其中多数人的研究方向都是: 机器学习、数据挖掘之类。此间竞争之激烈,诸如此类,虽未得其皮毛,也略见一斑。
AI企业痛点
当然,我说这些不是为了打击大家的信心,而是要指出现在行业内的痛点:AI工程化。
人工智能发展到现阶段,已经从实验室中的算法走向了工程化应用的阶段。但是算法落地并没有想象中的顺利,开始有越来越多诸如场景碎片化、应用成本高、实验室场景到实际应用场景效果差距较大等问题被暴露出来,而这些也成为当前阶段AI落地应用过程中新的痛点。
领域内高水平的paper都是公开发表的,除了少数的核心算法,人才济济的AI企业很难在算法性能上与友商拉开距离。那么AI企业想要商业化,想要创收,行业细分领域纵深成了决定成败的重要因素。需要下沉到业务领域,真刀真枪地进行拼杀。
在技术突破-商业化-产品化-工程化的阶段路线中,除了技术强,接下来还有很多路要走。谁能够更好更快地把算法从实验室中拿出来、卖出去;更好更快地将模型交付到业务场景,真正产生实际的价值,让客户满意,谁才能活得更久。
对于Scientist/Researcher而言,技术可以是一篇论文、一项 ImageNet 竞赛的冠军、也可以是一个重要数值(比如人脸识别准确率)的突破;但在商务侧来说,论文与冠军并不实用,如果技术无法融进安防、汽车、金融等行业,变成切切实实的产品,客户与合作伙伴就会拒绝买单。
对于AI企业来说,能否深入了解各行业的业务流程、业务规则、知识经验,进而将技术能力转化为业务解决方案创造价值,是发展的保障。
那么对于我们个人来说,应该如何发展呢?
0x02 AI研发AI工程化
在《ML/DL科普向:从sklearn到tensorflow》一文中,我们谈到:
…… 那么对于我们这些非算法岗位的人来说,就没有办法涉及这一领域了么?其实我认为,对于企业来说,对于AI人才的需求分为两种:一种是学术界的牛人,发过大paper,有学术界比赛的结果的。公司需要他们去做算法研究,保持技术的领先性,在业内赢得口碑,这样才能在领域内保持头部领域。另一方面,人工智能早已不是一个概念了,企业需要把业务部门的算法落地的人,能够快速、稳定、高效地把实验室中的算法落实到生产环境中,解决实际问题的人。这就需要那些工程底子扎实、能够实打实地写代码,并且对算法模型理解深刻,能够快速将AI项目工程化、落地有产出的复合型人才。
还是基于这个观点,我决定将自身的技能树偏向企业需要的第二种人,也就是标题所提出的“AI研发工程师”。从实际的工程应用角度出来,focus人工智能项目落地的全流程以及解决方法,提高自己的AI工程化能力,以此作为个人核心竞争力。
AI项目全流程
网络上很多文章描述的所谓“机器学习项目全流程”,例如:数据收集处理、特征工程、训练模型、模型测试等等。这套流程对不对?对。但是远远不能满足企业的需求。
AI项目是团队创造出的具有商业价值的产品、服务以及交付产物。有着明确的需求、计划、周期、成本、交付流程以及验收标准。
以下以toB业务为例,对AI项目全流程进行简单梳理。toC业务大体如此,只是将客户替换成公司业务方即可。
初步需求沟通确认 该环节主要是由销售、售前完成。了解客户的基本情况,辅助客户根据自身业务挖掘AI应用场景。根据实际的业务需求、数据质量、硬件资源、期望产物来评估具体的方案以及建模思路。 POC阶段 Proof of Concept。在完成初步的评估之后,团队需要针对客户具体应用进行验证性测试,包括确定业务场景边界、业务评判指标、数据调研、资源需求、硬件/平台部署等。 场景方案确认 该环节需要售前、科学家、工程师等多角色与客户进行细致的场景沟通,明确需求、确定验收标准、评估工作量。因为该阶段结束后即输出SOW方案,因此需要反复沟通商榷。 建模开发阶段 4.1项目详细规划 项目经理根据前期资料提供详细的方案设计、功能清单、资源投入、里程碑安排等内容,召开项目启动会,明确项目内容及分工职责。 4.2数据处理 科学家在明确业务场景及需求后,对数据处理。其内容包括:数据质量检查、ETL处理(工作量较大)。还要对清洗后的数据进行探索性数据分析(Exploratory Data Analysis)以及可视化展示。EDA能够帮助我们在探索阶段初步了解数据的结构及特征,甚至发现一些模式和模型 4.3特征工程 根据探索性分析得到的输出,结合对具体业务的理解,对分散的数据拼表并进行特征工程。 4.4建模 形成初版建模,并对根据业务需求评估标准进行效果验证。后续需要不断进行模型迭代,直到满足需求,并做模型效果汇报。 4.5系统研发 将训练好的模型发布服务、部署上线,开发外围对接系统以及部分定制化功能的开发。输出可运行的系统。 测试上线 对系统进行流程测试、性能测试,满足需求后对项目进行交付&验收。 0x03 核心竞争力&技能树核心竞争力
通过对AI项目全流程的介绍,我们将目光瞄准到“建模开发阶段”的“系统研发”部分。虽然在上面只是一句话带过,但是其中的工作量和技术含量不小。
提起机器学习,尤其是深度学习,大家可能会对诸如Tensorflow,Pytorch,Caffee的工具耳熟能详。但其实在实际的机器学习的生命周期中,训练模型(上述工具主要解决的问题)只是整个机器学习生命周期的很小一部分。
数据如何准备?如何保证线上线下一致性?模型训练好了如何分布式部署?如何构建HA?需要批量处理还是实时处理?实时数据如何拼接?如何对模型服务进行监控、告警?做成PaaS还是MLaaS?
机器学习具有天然的Pipline特性,在企业需求中,大大小小的业务场景有众多的模型,这些模型如何进行打包、处理、发布?离线训练、批量预估、实施预估、自学习等任务类型交错,不同建模工具Sklearn、Tensorflow,Pytorch构造的模型如何进行整合?开发框架Spark ML、Flink ML等如何协同、对接。生产环境如何进行扩展和伸缩?如何支持AB Test?
为了解决这些问题,新生的开源框架层出不穷:Google自研的对接Kubernets和Tensorflow的开源平台Kubeflow;Spark团队打造的ML pipelines辅助工具MLflow;雅虎提供的机器学习及服务平台BigML;阿里巴巴推出的分布式机器学习平台SQLflow等等。众多厂商纷纷发力,目的就是解决AI工程化应用的痛点。
这些工作都是需要一大批工程师去完成。因此,我认为了解AI工程化场景、解决方案;熟悉AI项目流程、机器学习Pipline;掌握AI系统研发、服务部署上线能力的工程师将会逐渐成为AI团队的中坚力量。
技能树
之前铺垫了那么多,既是梳理思路,也是为接下来的系列做一个开篇。按照我的初步计划,技能树大概包括(不分先后):
工程能力: 身为工程师首先要有工程能力,springboot/Netty/Thrift/等相关工具框架一定要掌握,微服务是机器学习平台的基础。 Spark SQL、Spark ML等更是大数据工程师用来做机器学习的利器,不但要掌握、更要从中抽象出流程和处理方法。 容器化: docker和k8s现在几乎是机器学习部署的必备技能,也是众多平台的基础。 是重要的前置技能。 机器学习&深度学习: 不要求能够手推算法、模型优化,但要能够了解含义、上手使用,起码要成为一名优秀的调包侠(也便于吹水)。 开源框架: 其实我最近打算学习kubeflow,并输出学习笔记及总结实践。 本文其实是这个系列的开篇。 当然,后续还有有调整。 0xFF 后记其实这种类型的文章,比单纯的学习笔记、技术文章难写多了。一方面,拖延症迫使我把难写的文章放在后面写,另一方面,强迫症又迫使我一定要在系列前出一个开篇。其实写到最后,总觉得核心部分还差点儿意思,没有搔到痒处,这是因为目前我还没有能力站在一个全局的角度对职业技术体系进行划分,只能梳理出目前的规划和看法。后续要还需和朋友们进行交流。
有些事情是一定要做的,纵观一些大牛前辈,无一不是在正确的时候做了正确的事。明确自己的目标,在前进的道路上不断微调自己的方向,这样才能在这个竞争激烈的职业中生存下去。
接下来会有系列的技术学习笔记,考虑到学习的连贯性,前期可能是一些基础的docker/k8s等系列,后期会研究一些开源框架。技术文章可能会枯燥乏味,知识点也缺乏新意,但是经过自己的整理和实践,再加上自身的理解感悟,相信会不断完善自己的知识体系。
9. 如何从普通JAVA程序员向机器学习算法工程师转变
建议先看两类书:(1)计算机原理;(2)数据结构和算法。(看数据结构之前先看C语言)。 第二. Java、.net、C++、PB、VB、Delphi、汇编到底应该学哪个?哪个最简单就先学哪个、公司用哪个就学哪个、哪个和有缘(比如刚好认识一个愿意
10. 算法工程师是做什么的真正做过的回答,怎么去做一个算法工程师与机器学习哪个好一些
算法工程师不是也有一种叫做机器学习算法工程师吗?怎么把算法工程师和机器学习两个分开了?
这是我上周听过的阿里的一位算法专家的直播课内容:
BAT企业的算法工程师是这样工作的:问题抽象、数据采集和处理、特征工程、建模训练调优、模型评估、上线部署。而一个算法工程师真正值钱的地方在于问题抽象和上线部署这两个。
他刚好讲到企业中的算法工程师的实际工作流程是怎样的?以及如何成为算法工程师,就是需要掌握哪些重要技能?
推荐给你看下咯:菜鸟窝人工智能特训营你只需要看第一章就好了,听完之后就能解答你的提问了。