[Day 07] 如何作出一盘好吃的AI专案

为了大家都能吃到一份最棒的「刻骨铭心初恋金银情侣套餐」,接下来就由我「食神」亲自示范。首先要重金礼聘一对热恋中的猪,趁牠们不注意时放牠们血作成浓情化不开的猪红,再将牠们的皮炸成情比金坚的炸猪皮,接着将一生只恋爱一次的巴黎九棍鱼起肉打成鱼蛋,最後放在印度的感情咖哩上,就成了这份对於青年男女谈恋爱有着妙不可言的神密套餐。此时中国厨艺学院第105期毕业生唐牛看不下去了说道:「这不就是街边杂碎面吗?九十九块九,你这样做生意有没有良心呀?你连握刀最基本的腕力都没有,还说你懂烧菜,让我唐牛来让你见识见识,如何作一碗好吃的杂碎面」。

(番外篇)受到唐牛的刺激,於是我连夜想出另一道精彩的「AI咖哩饭」,并将作法公诸於世,这样才不会让大家觉得我不会作菜,不配当食神。接下来大家可要睁大眼睛、拿着笔记本狂抄了。

人工智慧(AI)专案与咖哩饭制作流程比较
Fig. 7-1 人工智慧(AI)专案与咖哩饭制作流程比较。(OmniXRI整理绘制, 2019/5/27)

说到AI,大家都觉得它无所不能,飞天遁地,但其实不然,它还是得按照一定的标准工作流程(SOP)实施,才能完美落地。通常大部份人都会最终应用来反推如何制作,这个方向对的,搞错目标,点错菜单,端上来的一定不是自己要的美食。以咖哩饭为例,首先要确定想要吃的是泰式、日式、台式还是私家秘式。就像要建立AI专案要先确认应能应用是属於一维信号(如声音、振动、温湿度等)的时序预测、辨识,还是二维信号(如影像等)的分类、特徵提取(物件侦测)、分割,亦或是多维资料集(如复合感测、影音混合等)的聚类、分类,甚至是像下棋玩游戏的增强学习类应用。这样才能让厨师(AI工程师)知道要准备什麽材料及使用何种工法来完成这道美味的咖哩饭(AI专案)。

首先要准备「素材」,厉害的厨师都是从选择素材开始,熟悉素材特性才能精准掌握如何呈献美味。一粒米、一只鸡、一颗红萝卜、马铃薯、洋葱甚至配料都会影响最後端上桌的口味,AI专案的原始「资料收集」也是如此,如何收集,如何保持多样性,常常也是决定AI专案的成败。不过话说回来,只有极少数的厨师会自己种菜、养鸡来控制原料品质,因为这些都是耗费体力,弄的全身脏兮兮的工作,且这份工作需要大量的专业领域知识(Domain Knowledge)才能完成,所以交给好的素材供应商或是契作包商来帮忙控管素材(原始资料)品质,可能才是比较好的作法。

有了素材後,还要先处理成乾净的「原料」,我想很少厨师会想从杀一只鸡(除了中华一番雷恩的猛牛青龙斩)、晒谷精米开始作起。但如果厨师愿意仔细清洗素材上不必的东西(如鸡毛、稻殻、果皮等)且去除无法使用的素材并分级,那对於後续的烹饪工作就起到决胜的关键点。同样地,AI专案取得的原始资料(如感测器时序信号、声音、影像等)若不经清洗或前处理(Pre-Processing),只想着靠後面庞大的模型及参数来完成学习,那就已挖下需要耗费更多算力来完成应用的大坑,将会难以填补。虽然大部份的AI工程师都很讨厌这项又烦又累且老板又不重视的工作,但有时AI工程师可以透过资料清洗的过程了解更多资料来源问题,进而提出更好的前处理方案,这样会对後续AI专案的进行或改善会有很大的帮助。另

再来是原料「分解」,要完成一份好吃的咖哩饭,所需的材料可能只是原始素材的一部份,比方说十人份的咖哩要一只鸡、五杯米、二条红萝卜、三个马铃薯、一颗洋葱,那就要先将原料其分解成适合的尺寸、份量,再准备其它配料(次要材料)并依烹煮的量来取用适当的数量,比方说一些胡椒粒、咖哩叶、黄姜粉及其它香料,如此才方便交给後面的大厨来烹调。同样地,AI专案中有了乾净的原料,就要有专业人士依领域知识帮忙进行「资料标注」。很多人都以为目前的AI可以像人一样做非监督式(没人教、没标准答案)的学习或聚类(分类),但很不幸地是这可能还要很多年後才会达到大家可以接受的程度,所以目前绝大多数的应用都还是监督式学习,必须要有专业人士帮忙标注资料,不就会像股市名言所说「好的老师(标注)带你上天堂,不好的老师(标注)带你住套房」。有些日常生活应用可能一般人就能标的不错,但像马达(或心跳)异音、视觉瑕疵检测侦测,甚至要进行程度分级时,此时光靠AI工程师也很难分辨、标注,很容易标错,一定要有专业人士或自学专业知识来补强,不然这个AI专案就难以成功落地。

当厨师取得这些品质不错且分解好的材料後,通常还要依想要烹煮的份量来取用材料,放到「临时缓冲区」等待烹煮。而暂时用不到的材料就放到冰箱冷藏甚至冷冻库这些「长期储存」区。有时在烹煮过程中也需要一些「工作缓冲区」来摆放需要二次加工的材料。同样地,在AI专案中,有时收集到的资料一大堆但没空清洗,或者已有妥善专业的标注但考虑数量过多会影响模型训练时间,此时就需要有「长期储存区」(如硬碟或云端储存区)来存放资料。当进入训练模型阶段时则需要大量的「临时缓冲区」(如随机记忆体)来暂存训练过程中的参数值。完成训练後的模型和训练好的参数就要再存回长期储存区中,完成「资料仓储」的动作,以便後续调整训练结果时能轻松的调用、查询不同条件下训练的结果。

最後,当然就是开始施展厨艺料理美味的咖哩饭了,而神秘的配方和工序就成了「加工」阶段最重要的不外传的心法,同时反覆的实验怎麽作才能满足不同客人的口味,也是成为特级厨师(对不起串场中华一番了)不可或缺的一环了。同样地,AI工程师要如何设计模型(模型建立),找出有用的结构(特徵提取),设定超参数及根据不同结果而重新练模型(分析推论),甚至重新挑选素材,这又不是三言两语可以说完的,就让我们留待下集分晓。

ps. 为让文章更活泼传达硬梆梆的技术内容,所以引用了经典电影「食神」的桥段,希望小弟戏剧性的二创不会引起电影公司的不悦,在此对星爷及电影公司致上崇高的敬意,敬请见谅。


<<:  [Day 10] 近朱者赤,近墨者黑 - KNN

>>:  认识HTML(五):建立超连结和清单

Day14-TypeScript(TS)使用成员存取修饰词(Access Modifier)

今天要来介绍TypeScript(TS)使用成员存取修饰词(Access Modifier), 控制...

Day 20: Security Hub 新帐号加入、Insight设定

上篇我们讲到了有/没有使用AWS Organization 启用Security hub的状况,那如...

Day 17 - SVG 使用

唷呼~各位看官们今天最後一天上班日,明天就要放中秋连假了,欢呼吧,各位!下班後要搭乘大众运输返乡的...

[神经机器翻译理论与实作] AI也会写故事?聊聊文本生成吧!

前言 近年来以谷歌的 Google Assistant 、苹果的 Siri 和微软的 Cortana...

[Day-3] R语言 - 分群分类 傻傻分不清楚~ (clustering vs classification)

您的订阅是我制作影片的动力 订阅点这里~ 若内容有误,还请留言指正,谢谢您的指教 ...