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