训练营课程共 6 大主题、 42 讲,包含 17 个核心知识点,另配有 3 个可实际操作的训练项目(及数据)
以模型为驱动,详解几个经典机器学习模型的原理、数学推导、训练过程和优化方法。
三要素:数据、模型、算法。及之间的关系。
模型的获取(训练)和评价(验证/测试)过程,相应数据集合的划分以及具体的评价指标。
和后面讲述的具体模型结合起来,就可以实践了!
有监督学习中经典的线性回归、朴素贝叶斯、逻辑回归、决策树模型。
支持向量机、支持向量回归、隐马尔科夫和条件随机场模型
无监督学习无须标注,方便运行。
无监督学习中的聚类、高斯混合及主成分分析等模型。训练数据无须标注,方便在各种数据上随时进行尝试,是这些模型的特征。
经常用来作为有监督的辅助手段。
深度学习与机器学习的关联与衔接、以及深度学习目前的应用领域
以经典模型为驱动,讲述每一个模型所解决的问题域,模型原理和数学推导过程。
模型,都附有实例和相应的 Python 代码。
每个例子的数据量都非常小
——这样设计就是为了让读者可以用人脑模拟计算机,根据刚刚学到的模型算法对这些极小量数据进行“模拟训练/预测”,以此来加深对模型的理解。
在面试中被要求从头解释某一个机器学习模型的运行原理、推导过程和优化方法
机器学习模型虽然很多,但是经典、常用的很有限。
触类旁通各大模型与算法
各种机器学习模型的具体形式和推导过程虽然有很大差别,但在更基础的层面上有许多共性。掌握共性之后,再去学新的模型、算法,就会高效得多。
一般性共同点
还需要以若干具体模型为载体
问题,解决方案,解决方案的数学抽象,数学模型求解
极简版实例
以原理为核心
也同样介绍了:划分数据集、从源数据中提取特征、模型训练过程、模型的测试和评估等方法和工具。
是分类模型还是回归模型?
选取的特征是哪些?
——
——
大致可以分为三个不同角色:算法、工程,和数据。
GitChat 中有大量的文章教大家怎么入行 AI,
1
算法工程师(也有公司叫科学家)
读论文&实现之
https://arxiv.org
Dynamic Routing Between Capsules
1回溯学习能力
去读参考文献,去网上搜索,去书籍中查找……总之,动用一切资源和手段,搞清不明概念的含义和联系。
学术研究方法论。
老论文,那么只要清楚文中图表含义,看公式推导明白一头一尾(最开始公式成立的物理意义,以及结束推导后最终形式所具备的基本性质)也就可以了。
但读最新论文就不同。因其新,必然未经时光检验,因此也就没人预先替你验证的它的正确性。在这种情况下,看公式就得看看推导了。
否则,外一是数学推导有错,导致了过于喜人的结果,却无法在实践中重现,岂不空耗时力?
——我们可以用实践来检验它的正确性啊吧
2数学能力
如果目前数学能力不够,当然也可以学。但就与后面要说的做工程用到什么学什么的碎片化学习不同,做算法,需要系统学习数学。
微积分、线性代数、概率统计,是无法回避的。如果在这方面有所缺乏,那还是先从计算机系的本科数学课开始吧,个人推荐北师大教材。
3理论联系实际,将学术论述与产品、业务结合的能力
——
——
2. 做工程
日常工作
处理数据、选取特征或者调节参数的手段,般都有据可循
“旧”论文,学术含量低一些(不那么硬)的论文。
直接找到某个问题的处理方法,因此,可以跳读。
对于其中的数学公式,能够读懂头尾也就可以了。
编码能力,和基础算法能力(不是前面说的那种算法,而是链、树、图的构建、删除、遍历、查找、排序等数据结构里讲的那种算法)
得对算法有一定程度的掌握
对于数据处理和模型验证
a) 应用问题域是什么?(e.g. 分类、回归、聚类……)
b) 应用目标是什么?(e.g. 判别算法、生成算法……)
c) 适合应用的数据集,它能对数据造成怎样的影响?(e.g. 适用少量高维稀疏数据……)
d) 该算法的函数库,调用该算法生成模型。
模型调优:
数学公式
a) 各个参数的意义
(e.g. 迭代次数,对应到公式中参数的含义……),
调节参数
b) 加约束条件(e.g. L0, L1, L2 ……)来优化算法。
c) 可替换模型
d) 多个弱模型加权组成强模型(e.g. adaboost)。
运行效率优化:
推导过程
优化方法
资源占用及消耗
a) 了解算法在当前数据集上的运行效率(e.g. 需要进行哪些运算,是否易于被分布式等)。
b) 了解在其他语言、平台、框架的工具包中有否同等或近似功能但在当前应用场景下效率更高的算法。
c) 能够针对具体场景,通过转换模型的最优化方法(optimizer)来改进运行效率。
数据
i). 具有业务含义的信息,
ii).用于运算的数字,
【1】特征选取:
从业务角度区分输入数据包含的特征,
这些特征对结果的贡献。
a) 对领域有所了解。
b) 能够根据需要标注数据。
c) 知道如何
从全集中通过划分特征子集、
加减特征等方法
选取有效特征集。
【2】向量空间模型(VSM)构建:
将日常
转化成算法可以运算的数据。
a) 能够把文字、语音、图像等输入转化成算法所需输入格式(一般为实数空间的矩阵或向量)。
b) 能够根据信息熵等指标选取有效特征。
数据清洗和处理:
a) 能够运用统计学方法等 ETL 手段清洗输入数据。
b) 能够对数据进行归一化(normalization), 正则化(regularization)等标准化操作。
c) 能够采用 bootstrap 等采样方法处理有限的训练/测试数据,以达到更好的运算效果
模型验证:
算法+数据——模型
度量模型质量的方法。
i) 了解 bias,overfitting
ii) 了解各种模型度量指标(e.g. Accuracy, Precision,Recall, F1Score……)
iii) 能够构建训练集、测试集
iv) 能够运用多种不同的验证方法(e.g. 2-Fold cross-validation,K-Fold cross-validation, Leave-One-Out cross-validation……)来适应不同的数据集。
——
——
3. 数据标注
3.1 标注数据的重要性
实践领域被证明有直接作用的,基本上还都是有监督模型。
依赖于海量的标注数据。
现阶段而言,数据远比算法重要。
3.2 数据人工标注的必要性
Zero利用围棋严格完备而明晰的规则,自己制造出了巨大量的标注数据
而且可以随时造出更多。
按完备无二义性规则运行的游戏,因此计算机程序才能依据规则自动产生标注数据。
真实人类世界的事情,基本没有完全按矩而行无意外的情况。
因此,对人类真正有用的模型,还是需要人工标注的训练数据。
有多种技术用以在标注的过程中辅助人工
3.3 人工智能的“勤行”
3.3.1 什么叫做标注
把所有查询商品属性的意图都定义为“商品查询”。
[00183]<-{商品 Id}号商品快递到[伊犁]<-{目的地}[邮费]<-{商品属性}多少?||商品查询
3.3.2 数据标注的日常工作
3.3.3 数据标注的难点
整体一致性
与业务的集合
每个人也都有自己的理解和侧重,很难保证一致,很可能一句话在某个人看来是“查询商品”,而在另一个人看来就是“要求售后”。(即使是将所有数据交给一个人,也可能在不同时间段理解不同。)
出于对数据标注工作的不重视(正好与对算法的过分重视相映成趣),很多公司外包了数据标注工作。对于数据标注的不一致性,则采取一种暴力解决方案:让多个人(比如3个)同时标注同一份数据,一旦出现不一致,就采用简单多数法,取最多人一致认定的那种结果(比如3个人中两个都选“查询商品“,则选定”查询商品“为最终 label)。
这种方案对于粗标数据还可以起到一定作用,但如果是精标,则往往连多数人一致的情况都难以出现。如果三个人所标结果完全不一样,那么这条数据也就失去了标注价值。
【2】与业务的集合是数据标注面对的另一个挑战。
一旦未来人工智能的落地点在各个领域全面铺开,很可能需要的是针对具体企业、具体业务,不断变更的标注需求。
标注这件事情看似容易,但是一旦标注原则有所改变,就要整个重新来过。以前的标注不但不是积累,反而是累赘。
如何应对快速变更的业务需求,同步更新标注结果,将是一个在AI真正服务于大众时全面爆发的问题。偏偏现阶段还未引起足够重视。
3.3.4 数据标注的潜力
就目前而言,数据对模型的影响远胜于算法。一群年薪百万起步的算法工程师耗费经年的成果,对于模型质量直接的影响甚至比不上一个靠谱标注团队一两个月的精心标注。对模型的影响尚且如此,更何况是商业价值。
而数据标注这个人工智能领域的“勤行”,人工智能蓝领,一定是刚需!
一切标注工作的难点和潜藏的风险,也就是这项工作的潜力和从事这项工作未来职业发展的可能性所在。
3.3.5 数据标注的职业发展
如前所述,数据标注的难点在于:
如何根据业务设定标注原则
如何快速统一地实现标注原则
同时,和所有门槛低的工种一样,从事数据标注工作,要面临如何从极大量基数资质类似的人员中脱颖而出的问题。还有就是如何与越来越多的自动化标注技术共处的问题。
因此,笔者个人建议的数据标注职业提升路径:经验+业务+管理。大致步骤为:
通过实践积累数据标注的工作经验
深入理解业务需求并将其体现到数据的标注结果中
管理标注团队达到高效的标注结果与业务变更 align
未来也许会出现一个“数据经理”之类称谓的职位:其职责以负责提供高质量标注数据为基础,技术上衔接工程领域的 ETL 和数据处理,产品上对接业务,带领团队为公司产品或服务的 revenue 提供直接贡献。
4. 认清形势,脚踏实地
5. 小公司的 AI 之路
得知道招人进来做什么,有什么事情可以应用 AI 技术提高其质量或效率,而这种提升又可以用什么样的指标来衡量。换言之,就是:小公司用 AI,先定好 KPI 再招人。
笔者个人意见:大部分小企业真的用不着算法工程师,完全可能通过:
业务数据 + ML/DL 工具 => 工作模型
来实现应用 AI 技术的目的。
如此一来,小企业真正需要的是:
i)少量了解模型原理,能够直接应用现成框架、工具、算法库训练模型的程序员(2中所描述的做工程的人);
ii)针对业务提出模型应用需求并提供数据的人——不仅仅是数据标注,而是综合了业务、数据、技术的复合型人才。3中所述“数据经理”很可能首先批量地从小企业中涌现。