美文网首页工作生活
「ML笔记」- 机器学习生命周期(Machine Learnin

「ML笔记」- 机器学习生命周期(Machine Learnin

作者: adi0229 | 来源:发表于2019-07-09 16:00 被阅读0次

    背景

    问题:公众视角 -> 机器学习是「黑盒&黑魔法」。

    一些研究调查表明,尽管机器学习技术以及渗透到了各行各业的应用之中,但公众对机器学习知之甚少。

    2017 年The Royal Society对英国普通大众进行采访,发现大部分被试对机器学习“一无所知”。虽然大部分人都知道一些采用了机器学习的科技应用,但是他们不知道机器学习如何运作,就算是比较宽泛的概念也不了解。

    另一项调研,对机器学习项目里的 UX 设计师进行了调查,发现他们对机器学习也缺乏常识了解。其中一位被试,TA 把机器学习看做「黑魔法」,TA 表示:“设计师不理解科技的「边界限制」以及如何合理地应用它。”

    传送门:mltidbits小姐姐们自我简介

    问题:机器学习从业者-> 缺乏人种多样性 -> 「女性&黑人」是少数派

    • 2018 年,在 21 个机器学习学术会议中,仅有 18%的第一作者是女性。
    • 黑人在谷歌员工中占比 2.5%。

    简介

    在油管的ML Tidbits频道,2位麻省AI相关专业的女博士,通过视频来阐释机器学习的整个工作循环周期,内容通俗易懂且有趣,通过此举,她们致力于减少公众对机器学习的理解偏差,以及提升机器学习相关从业人士的背景多样性。

    视频传送门:https://www.youtube.com/watch?v=ZmBUnJ7lGvQ

    总流程:机器学习生命周期

    定义问题(Problem Definition) -> 数据收集(Data Collection) -> 数据分割(Dataset Spit up) -> 模型训练(Model Training) -> 模型评估(Model Evaluation) -> 应用部署(System Deployment) -> 改变世界(Impact the world)!

    例子 -> 一个类似朋友圈的 APP

    MIT 的博士2位小姐姐,通过介绍一个有趣好懂的例子,来讲解机器学习应用的全流程。

    假设: 你有一个点子,想要为朋友们做一个类似微信朋友圈的APP

    • 这个 APP,采用机器学习技术(图片分类 -> 人脸情绪识别)
      • 根据他们上传的照片,判断TA是不是心情悲伤。
      • 如果判断TA心情悲伤,给TA发送提示消息,让TA给朋友打语音电话,或者发送一张萌图给 TA
      • 默认假设:看了萌图,你的朋友更容易高兴起来。

    问题来了:

    • 如何创建这个机器学习应用系统?
    • 相应的道德问题有哪些?如何处理?

    1.定义问题(Problem Definition)

    从点子 -> 应用,需要走过很长的流程啊。

    • 定义问题

    首先,我们需要定义待解决的问题,明确问题的可操作性定义。
    然后,问题明确之后,相关的团队成员才能协同开展工作,整个团队可以围绕着同一个目标,朝着同一个轨道在前进。

    根据本次例子中的产品逻辑,使用机器学习术语来表述,这个问题定义该为「二元分类」任务。也就说,我们让电脑来预测情绪,你的朋友上传的照片是否体现了 TA 有着悲伤情绪,这里包含两个情况,也就是两种分类,因此称为「二元分类」任务。

    • 问题假设

    同时,我们需要对情绪下一个可操作性定义,这样,在后续工作中,我们才能确认数据集图片样本对应的标签,是准确无误的。
    比如什么是悲伤,什么是不悲伤,如何定义,如何判断?如果是复合情绪呢?本例中,我们假设人们只有 2 种情绪,悲伤或不悲伤。这样做,牺牲了对复合情绪的考虑。(当然,有人可以既悲伤又高兴,或者看起来悲伤,其实内心狂喜。同时,如果脸部表情不能准确呈现用户内心情绪呢?(根据莉莎.巴瑞特教授的「情绪建构论」)。

    • 问题限制

    本例中,我们本能地「假设」,根据用户上传的照片(包含 TA的影像),我们可以判断用户的情绪。现实世界中,这个假设成立吗?如何界定对假设的置信度?

    总之,模型难以完美,要有妥协。

    如果悲伤的人,上传照片之后,收看了萌图,或者得到提示,给朋友打了一通语音电话,心情变好了,那不就是实现了初心吗?

    2. 数据收集(Data Collection)

    • 第一步:总体定义

    从哪些用户总体(Population)收集数据?用来做什么?

    若用户总体不具有代表性,那么机器从数据集中学到的特征,也是没有代表性的,实际的模型应用表现,会很差劲。

    样本群体需要如何从用户总体中获取,他们之间的相似度及差别是什么?
    用户总体数量需要多少,也就是说,多少人你需要考虑顾及到?

    • 第二步:特征衡量

    你无法管理你不能衡量的东西 -- [Morris A. Cohen]
    You can't manage things you can't measure

    考虑下列问题:

    • 我们假设,要从总体用户群中手机照片图片,那么,在总体中,他们的照片(自拍/他拍)的质量是否稳定可靠?
    • 是否收集其他信息 -> 用户人口学特征(性别/年龄/坐标等)?
    • 是否需要收集标签(label)?本例中,图片的标签类别分为悲伤(sad)或不悲伤(not sad)
    • 标签如何收集?拍照时做调研,或者找专业人员来手工标注?注意,务必评估标签的准确程度,包括偏差(bias,有些标签存在争议。)乃至错误的比率。
    • 样本平衡。每种标签类别都有足够的样本数,以及比例均衡。本例中,悲伤和不悲伤的标签数目应该是五五开。这样,模型才能充分学习到图片中的人物悲伤与否的视觉特征。

    接着,数据科学&机器学习工作的脏话累活到了。

    这一步叫做「数据预处理」。(以下省略数十万字)
    本例中,数据预处理或许是图片处理成为一致的大小和分辨率。

    • 数据收集(其他可选方法):

    获取开源数据集。例如,我们在网上找到已经处理好的数据集,对图片进行了是否在微笑的标注。为了能处理我们的任务,我们可以->转换标签-->微笑/不微笑 -> 不悲伤/悲伤

    同时,需要验证数据是否可靠:

    这个公开数据集,是否可信?数据是如何收集的,总体是多少?是否很好的测量?是否适合我们的任务?

    有时候,根据手头可用数据及标签,我们会迭代&修正初始的「问题定义」。也就是说,重新定义问题(Redefine Problem)。此外,真实的机器学习工作流,并不是一个顺时针不变的进程,流程有时会根据现实变化,反复回溯修改,这是一个螺旋式进程。

    3.数据集分割

    数据收集完毕之后,我们需要分割数据集,一般会把数据集分成三份:训练集-验证集-测试集。

    训练集:模型学习数据特征的那部分,数量占比最大。类似我们考试时,做的常规习题
    验证集:模型做常规习题之后,会做模拟题,比如高考前每月进行月考模拟考,以此来评估日常学习的效果。
    测试集:模型学习了训练集及在验证集评估之后,类似于真正一锤定音的高考题目。需要真刀真枪地在一些它没有学习过的题目上,进行预测分类等任务。

    4. 定义模型

    前期的数据准备好了之后,万事俱备只欠东风。这时候,就是「机器」学习的时候了。

    模型结构,需要根据数据类型来搭建。比如,如果你的数据是时序数据(timeseries),那么你最好选择擅长学习时序关系的模型架构。

    常见的数据结构类型:

    文本数据(text)
    结构数据(tabular)
    图片数据(image)

    本例中,对于图片数据,卷积神经网络是当前最合适的。卷积神经网络的简易应用,参见笔记[旧调重弹—— Fastai-v3版尝鲜之猫狗图片识别(https://www.jianshu.com/p/7f315d0482a4)

    模型结构的深度及广度,不是越高级越复杂越好,针对具体的数据集,合适就好。
    对于简单的数据集,模型无需太复杂。
    对于复杂的数据集,模型不能太简单。

    如何微调模型的结构和参数等,目前更多地依靠数据科学家们的直觉经验,更像一门艺术,而非严谨的科学。fastai创始人Jeremy曾解释过,他都是根据经验法则(Rule of Thumb)来选择超参数(HyperParameters)中的学习率(LearningRate)的。

    5. 训练模型

    • 不同模型,有着不同的步骤来优化表现。例如,神经网络反向传播技术(BackPropagation)来迭代模型各层的权重来优化模型整体表现。
    • 通过对比评估在验证集上的表现,我们可以选择最优的模型结构,选择训练时长。(比如,在过拟合之前停止训练。)

    6. 评估模型

    • 测试集。模型训练完毕之后,我们可以在测试集上评估其整体表现。
    • 基准(benchmark)数据集。我们可以在公开的基准数据集上测试,以对比我们与其他模型的性能。别忘了「交叉验证」思维,同时,需要对基准数据集的是否可靠进行评估。
    • 衡量模型的指标。针对不同任务,我们需要选择不同的指标(metrics)来评估模型。如果你了解「真阳性(True Positive)」、「False Negative(假阴性)」等概念,那么,在本例中,你应该明白,模型预测时出现了太多的「假阳性」的错误判断,并不是那么重要,因为如果你的朋友并不悲伤,但是给 TA 发送萌图,也并不影响,这是锦上添花。但是如果模型有太多的「假阴性(False Negative)」,那就表现差劲了,因为,我们不想错失那些上传了在图片里表现悲伤的朋友们。所以,我们更密切关注「 假阴性率(False Negative Rate)」这一指标。
    • 评估模型在不同用户群(sub-group)中的表现,我们需要保证,在不同的用户分群中,模型的表现都是一致的。比如,如果训练集的图片,大多来自女性,那么在预测其他性别朋友的图片时,模型的表现会很差。在部署模型前,我们需要测试,及时发现这些表现不均衡的问题。

    7. 应用部署

    • 第一步

    为了确保模型高效及正确地部署到现实世界,请考虑模型的外在呈现:

    用户交互界面如何设计?模型预测结果如何在界面中视觉化呈现?
    如何让用户上传图片?是否需要考虑相应地调整亮度?
    如何获取用户实时反馈:如果某些图片中的用户情绪,我们的模型预测错了,如何收集这些错误的例子?

    • 第二步

    假如,这个产品原型冷启动之后,在朋友之间大受欢迎,我们想要提升(Scale it up)用户规模和群体。请考虑如何 适配新增的用户群:

    • 新增用户群:其他用户群?比如,老年人&小孩,模型是否还适用?是否需要新增关于「老年人」&「小孩」的数据集?甚至邀请「老年人」来做用研测试?
    • 与利益相关者沟通:随着应用的影响力范围规模增大,更多的利益相关者会参与进来,如何协同平衡各方的利益?
    • 用户隐私&数据知情权:用户数据如何收集?如何使用?本例中,最开始,我们假设用户都知道了他们的图片会被收集,但如果我们提升了用户群体的规模,我们也需要让其他用户对自己的隐私数据是如何被收集/存储/处理的。

    当模型在现实中运转时,我们需要密切监控的表现,保证其朝着积极的方向在运行。
    如果出现故障bugs或社会争议(比如,有人认为YouTube推荐系统存在政治偏见及用户内容的刻意诱导。Was this Google Executive deeply misinformed or lying in the New York Times?

    结尾鸡汤:记住,世界在变,新问题每天降临,让我们用机器学习的集体智慧,来拥抱不确定吧。

    Changelog

    2019.5.13 init
    2019.5.15 add content
    2019.5.17 finish draft
    2019.7.06 edit
    2019.7.09 publish

    相关文章

      网友评论

        本文标题:「ML笔记」- 机器学习生命周期(Machine Learnin

        本文链接:https://www.haomeiwen.com/subject/ypnqhctx.html