即使事先知道要拍照,她的穿着还是出人意料的简单:白T恤、黑裙子,当然还少不了带隔层的双肩包来保护笔记本电脑——好像随时都能拿出来写上几行代码
她的双肩包像个“百宝箱”,里面除了装着电脑,还备着各式接口的数据传输线,几乎能连接这间小会议室里的所有设备
新产品上线前的那几次测试,总是会发现一些意想不到的漏洞,需要连夜排除,大家往往会经历几个不眠之夜
张栋栋觉得自己骨子里是个“技术流”,喜欢跟机器打交道,遇到问题也爱“用技术说话”
在北京,“西二旗”是人流量最大的地铁站之一。离此不远的中关村软件园内,互联网公司和高科技企业林立。在网上,“西二旗人”很容易被贴上标签,“码农”是最常见的说法。程序、算法、迭代、优化……有人说,程序员的生活单调到只有睡眠和工作,就像代码里的0和1。
1992年出生的张栋栋却不认同这些看法。她是曙光信息产业股份有限公司大数据及创新事业部的研究人员,也是一位工作在“西二旗”的人工智能算法工程师,主要从事超大规模视频智能分析引擎开发和算法优化工作。“90后”“女性”“程序员”,这些不同的特质会在她的身上碰撞出怎样的火花?记者日前来到位于中关村软件园的曙光信息产业股份有限公司,体验“90后”人工智能算法工程师张栋栋的一天。
边介绍边演示,桌上这台配置不错的笔记本电脑也有些跟不上她的节奏,系统时不时会有些卡顿
即使事先知道要拍照,张栋栋今天的穿着还是出人意料的简单:白T恤、黑裙子,当然还少不了带隔层的双肩包来保护笔记本电脑——好像随时都能拿出来写上几行代码。
来到偌大的办公平台时,已是上午10点,张栋栋工位周围的同事还不多。“一些人在出差,一些人在开会,一些人可能刚下班。”张栋栋说。为了不影响在工位上工作的同事,我们决定将体验地点换到一间小会议室。楼里的小会议室出奇的多,每间可以容纳五六个人,白板上留着反复擦写后的记号笔痕迹,仿佛能重现一场场热烈的讨论。
张栋栋的工作跟我们经常能见到的“电子眼”相关。这些分布于各个角落的“电子眼”一直默默地守护着人们的安全,可是它们是如何在茫茫人海中快速、准确地锁定目标的?又怎样将数量庞大、响应迟缓、内容大多没有应用价值的监控视频变为更易查找、能被深度挖掘的高密度数据?在它们的背后,离不开一整套视频智能分析系统的支持。
为了帮助我这个门外汉快速理解,张栋栋将自己上周的工作进行了一场“情景还原”。“狭义上来说,人工智能也是一种算法,要靠数据来不断优化,大量的数据往往包含很多冗余甚至无用的信息,这时就需要数据清洗与整合。”张栋栋指着屏幕说。刚见面还有些腼腆的她,讲起技术来似乎一下子放开了,“拿这组人脸图片来说,每张都有标签,标签分很多列,分别标注着所属人的编号、性别、年龄等特征信息,当然其中每个人也可能有多张图片。”
“接下来要进行的是数据的可视化操作,一是为查看图片质量,二是为获得一个统计学上的数据描述,这时候就会发现一些‘噪音’(指对数据的干扰和影响)。”张栋栋举例说,“比如一张图片里可能有多个人脸或者没有人脸,属于同一个人的不同图像却发现根本不是一个人,或者同样的图片发现存了两遍等等——系统录入时的误操作会导致这些情况的发生。要保证机器能够学习到高质量的数据,就要把这些数据存在的问题罗列出来,再根据不同的问题找到数据清洗的方法。数据清洗是一个很重要的过程,虽然耗费时间,但关系到后续模型的准确率。”
边介绍边演示,桌上这台配置不错的笔记本电脑也有些跟不上她的节奏,系统时不时会有些卡顿,一直尝试理清思路的我也是一样。为了看起来方便,张栋栋连上了墙上的电子屏幕。这时我发现,她的双肩包像个“百宝箱”,里面除了装着电脑,还备着各式接口的数据传输线,几乎能连接这间小会议室里的所有设备。
键盘起起落落,一行行的代码便落在了屏幕上,远程服务器上记录着她每一次的灵光乍现
清洗完数据,接下来还要对数据进行前期预处理,包括从图片中截取人脸、把分散的数据集中到同一个大文件中,这些工作都是在为后续的模型训练做准备。张栋栋说:“人工智能对算力有很高的要求,原始数据体量大,处理过程就会耗用很多的CPU(中央处理器)资源,处理时间也比较长。后面训练时,如果数据量太大,我们还会用到分布式并行训练的方法来提高速度。”此外,数据增强也是预处理的一部分,就是对刚才的工作反其道而行之——人为增加数据的“噪音”。
“数据清洗要去除噪音,这个时候为什么又要增加噪音呢?”我有些不解。“这是为了让模型适应多种实际场景,在人脸识别里,就是应对逆光、人像不全等极端情况,专业名词叫‘提高模型泛化能力’。”张栋栋解释说。
把这些工作做完之后,还要在原来的算法结构的基础上进行改进,俗称“改代码”。“人脸识别也有多种算法,需要选择合适的来修改。我们前期已经对各种算法进行了评估,有一个大概的算法结构,只要拿过来稍微改一下就可以使用了。”
说到这里,我们才算进入模型训练阶段,张栋栋也正式开始了她今天的工作。“训练的过程其实就是一个降低损失函数(预测值与真实值之间差距)的过程。”键盘起起落落,一行行的代码便落在了屏幕上,远程服务器上记录着她每一次的灵光乍现,也不会放过任何一个程序故障。
“在机器学习中,一般会将样本分成独立的三部分——训练集、验证集和测试集,其中测试集用来检验模型的性能如何。两方面决定了一个模型或算法的好坏,一个是结构,另一个是模型参数。训练的最终目的就是要找到合适的参数,使测试集的准确率更高。”张栋栋说,当最后测试集显示准确率已经比较高,并且已经收敛到一个平稳的状态后,训练就告结束,后续就可以对新数据进行预测和推理。
“程序员真的能记住这么多的代码吗?”看她双手如飞,我有些好奇。“其实这就跟我们背诗句、单词差不多,熟能生巧嘛。”张栋栋笑了,“有时候也做不到一字不差,但大致的逻辑和思路是能记得的。”初秋的午后,阳光照射在园区空荡的街道上,打开的窗边偶尔会传来几声鸟鸣,旋即被起伏的键盘敲击声所取代。旁边几间会议室的灯渐次点亮,人们进进出出。程序员工作的过程似乎不像传说中的那般“压力山大”。
中华养生网