第一章 厕所隔间的三秒晚上十一点四十七分,林默还在公司加班。不是他想卷。
是上周的模型又崩了。老板周五下班前拍着他的肩膀说:“小林啊,这个AUC再提三个点,
周一晨会我要看到。”林默当时想说周末约了人,但老板已经转身走了,
背影消失在电梯门后。林默只能无奈微笑,在心里比了个中指。周日晚上,
整层楼只剩他一个人。林默揉了揉眼睛,屏幕上的loss曲线还在震荡,死活不收敛。
他已经调了六个小时参数,试了十种不同的初始化方式,
结果都一样——模型在验证集上过拟合得一塌糊涂。他端起已经凉透的咖啡,喝了一口。
苦味从舌尖蔓延到喉咙,他皱了皱眉,放下杯子,站起来走向厕所。
公司所在的写字楼是二十年前的老楼,据说当年是某国企的办公楼,后来国企搬走,
被几家科技公司瓜分。林默他们公司在八层,租了半层,剩下的半层空着,晚上黑漆漆的,
像一张沉默的嘴。厕所的灯是声控的,有时候不响它不亮,有时候响了它也不亮,
有时候不响它乱亮。林默已经习惯了。他推开隔间的门,反锁,坐在马桶盖上,
掏出手机继续看数据。这是他的一种休息方式。盯着屏幕上的loss曲线一点点下降,
比睡觉还解压。他今年三十四岁,做了七年算法工程师。七年里他换过三家公司,
从大厂到独角兽到现在的创业公司,有时他也会自嘲离三十五岁改行送外卖就差一年了,
他的薪资起起落落,职级升升停停,
唯一没变的是他对数据的本能——任何输入到他脑子里的信息,
都会自动被分类、标记、建模。这大概是一种职业病。就像程序员看什么都像bug,
会计师看什么都像数字,他看这个世界,全是数据。手机震动了一下。林默没在意。
可能是微信消息,可能是系统通知,也可能是老板突然想起来什么,发条消息让他改个需求。
他把手机调成静音,继续看曲线。震动又来了。不是一次,
是一串——规律的、间隔均匀的震动,像是某种信号。林默皱起眉。
他的手机从来没这样震过。他把手机翻过来,屏幕是黑的,没有任何通知。震动的源头,
不是手机。是隔板。有人在隔壁的隔间,把什么东西贴在了隔板上。震动通过木板传导过来,
频率稳定得像是节拍器——每秒三次,持续了两秒,然后停止。隔了一秒,又是每秒三次,
持续两秒。摩斯电码?不,太规律了,不像信息编码,更像——测试信号。
林默的瞳孔微微收缩。他没有动。没有抬头。没有发出任何声音。他的手指还在屏幕上滑动,
像是在正常刷数据,但他的大脑已经切换到另一种状态。
那是他当了七年算法工程师留下的职业病——对数据的本能反应。数据1:震动频率。
每秒三次,持续两秒,然后骤停。这不是手机震动,不是设备误触。这是人为控制的信号。
有人用手指轻叩隔板,三下,等了一秒,又三下。数据2:头顶的水管声。
这栋老楼的厕所管道是通的。隔壁冲水,这边能听见。
林默侧耳——水管里的水流声刚刚变了。原本是持续的涓流声,
突然变成了断续的“嘶——嘶——”,像是有人在上面楼层拧动了水龙头。不是上面。
是隔壁。有人在隔壁打开了水龙头,让水流通过管道。不是为了洗手,是为了掩盖某种声音。
数据3:门缝下的影子。厕所的灯光是惨白的LED。林默的脚边,门缝下透进来一条光带。
光带边缘,有一小块阴影,正在缓慢移动。不是路过的人。路过的人,阴影会匀速移动,
会从左边到右边然后消失。这一小块阴影,移动了五厘米,停了,又移动了三厘米,又停了。
像是一个人,在调整站位。数据4:空气流动。林默的后颈,有一丝凉意。
不是空调——空调的出风口在天花板中央,风是垂直下来的。
这一丝凉意是从门缝下方钻进来的,贴着他的脚踝往上爬。这说明什么?说明门外有人站着,
挡住了原本的气流路径。空气从他的身体两侧绕过来,形成了一股微弱的涡流。
数据5:时间。十一点五十二分。周日深夜。整层楼只有他一个人加班。数据6:概率。
公司位于八层,不是一楼。如果是流浪汉或小偷,不会选择这个时间出现在这个地点。
如果是物业保安,不会这样鬼鬼祟祟。林默的呼吸没有变。心率没有变。
他的脸上甚至还保持着刚才的疲惫表情。但他的脑子里,一个粒子滤波器正在疯狂运转。
粒子滤波,是他在自动驾驶公司工作时最常用的算法。
它的核心思想是:你永远无法直接测量世界的真实状态,
你只能获得一堆带有噪声的观测数据。粒子滤波的任务,
就是把这一堆“不靠谱”的数据融合起来,剔除噪声,迭代更新,
最终逼近那个看不见的“真实”。现在,
林默的传感器数据就是这六条:震动频率观测值:3Hz,持续2秒,
重复两次水管声变观测值:上层水压突变,
持续开启状态阴影位移观测值:非线性移动,
最终停止在门缝右侧15cm处气流异常观测值:有人体遮挡,
遮挡面积约0.4平方米时间观测值:23:52,周日,
加班日位置观测值:八楼,
只有他一人在加班如果这是一辆自动驾驶汽车的传感器输入,融合这些数据之后,
系统会输出什么?输出:有人正在门外,调整位置,准备做某件事。置信度:94.7%。
三秒后,会发生什么?林默的大脑在0.3秒内完成了第一轮迭代。
先验概率:这是一个巧合。可能是保安巡逻,可能是另一个加班的同事,
可能是有人喝多了在找厕所。但传感器噪声在减少。
阴影位移停止——那个人已经找到了最佳站位。水管声稳定——上层的人不再拧水龙头,
水流声变成持续的白噪音,可以有效掩盖其他声音。
气流持续——他的身体已经完全挡住了门缝。后验概率更新:这不是巧合。这是一个伏击。
置信度:98.2%。林默的余光扫过隔间。厕所隔间很小,只有一个马桶,一个卷纸架,
一个挂衣服的挂钩。他的手机在手里,他的充电器在口袋里,
一卷没用完的卫生纸挂在架子上。他的传感器又收到一条新数据——金属摩擦声。极轻,
极细。像是某样东西被从外套内侧的拉链里取出来。林默的粒子滤波器进行了新一轮预测。
结合所有观测数据,推导未来轨迹。预测结果:0.5秒后,门外的人完成准备。
1.0秒后,他将某样东西对准门轴——那是门的铰链位置,也是门最薄弱的环节。
1.5秒后,他会扣动扳机。子弹会穿过门板,击中坐在马桶上的人。等等,子弹?
林默的滤波器没有情感,不会恐惧,只会计算。
它调出了数据库里的声音样本——0.3秒前那一声极轻的金属摩擦,
与某类武器数据匹配度达到89.7%。消音器。手枪。门外的人,拿着消音手枪,
正瞄准门轴。还剩1.2秒。林默动了。他没有站起来——站起来会暴露高度,
会让对方调整瞄准点。他只是把身体往左平移了十五厘米,
同时右手从口袋里抽出手机充电器,左手从卷纸架上扯下整卷卫生纸。他的动作很轻,很稳,
像是数据流在GPU里并行计算——没有浪费任何一个时钟周期。0.5秒。
门外的人调整了站位。阴影完全挡住了门缝下的光带。0.3秒。林默把卫生纸卷扔向空中,
同时把充电器的线甩出去,搭在门板的金属把手上。0秒。“噗。”一声闷响。
门板上出现一个洞,就在马桶正上方的位置——那是林默0.8秒前坐着的位置。同一瞬间,
卫生纸卷刚好飞到洞口。子弹穿过纸卷,带着一团碎纸,钉在后面的墙上。同一瞬间,
充电器的USB接口搭在门把手上,另一端——林默已经把插头插进了墙上的插座。短路。
火花。整层楼的灯光闪烁了一下。声控灯灭了。黑暗中,
林默听见门外的人呼吸节奏变了——从平稳到急促,从有序到紊乱。滤波器的观测噪声,
变成了恐惧噪声。林默没有等。他推开门,在黑暗中用右手掐住对方持枪的手腕,
用左手手肘猛击对方颈侧。枪掉了。人倒了。灯又亮了。林默低头看了一眼。
地上躺着一个穿黑色冲锋衣的男人,三十岁左右,长相普通,
普通到扔进人群里绝对找不出来。普通,才是最专业的。林默捡起那把枪。消音器,
9mm口径,格洛克19——标准的雇佣兵配置。他没有报警。他蹲下来,
看着那个男人的眼睛,尽管心脏急剧跳动,双手也不自觉的微微颤抖,
但他仍克制住粗重的呼吸,让自己以冷静的状态说:“你刚才的位置选择很好。
门轴是木板最薄的地方,子弹穿过去正好能击中马桶上的人。但你忽略了一个变量。
”男人的眼睛睁大了一点。林默晃了晃手里的卫生纸卷,上面有一个清晰的弹孔。
“一卷纸的重量是80克。把它扔到空中,用0.3秒飞到弹道轨迹上,
它能挡住一颗子弹吗?理论上不能。但如果是刚好被子弹击中呢?子弹的动能会被分散,
弹道会偏转,杀伤力会降低到原来的12%。”他笑了一下,像是在给实习生讲解代码。
“这叫道弹干扰。属于多目标跟踪里的‘杂波抑制’。”男人张了张嘴,想说什么。
林默没给他机会。他把枪口抵在对方额头上。“现在,我问你答。第一,谁派你来的。第二,
我是从什么时候开始被盯上的。第三——”他的状态已经不再是故作冷静,
而已经真正冷静了下来,他的语气没有什么情绪起伏,像在问今天中午吃什么。
“你们还有几个人。”男人嘴唇动了动,喉咙里发出含混的声音。林默松开掐他脖子的手,
让他喘口气。“我……我不知道……”林默叹了口气。他把枪口往前顶了顶,
男人的额头上出现一个白色的凹痕。“这个答案,置信度太低。”“我真的不知道!
”男人的声音有些慌乱,“我只是接单的……暗网上有人发任务,我接单,拿钱,
办事……我不知道谁发的!”林默盯着他的眼睛,三秒,五秒,十秒。滤波器在运行。
对方的瞳孔、微表情、声纹特征、呼吸频率——所有数据输入,融合,计算。
置信度:67%。有可能在说谎,但更像是真的。“任务内容。”林默说。
“目标是你……林默,34岁,算法工程师,
住址、公司、常去的地点都有……任务要求制造意外,
不能留下痕迹……今天晚上是第一次尝试,踩点的时候发现你一个人加班,
临时决定动手……”林默沉默了两秒。“任务报酬。”“三十万。”“三十万?
就想买我的命?呵呵。”林默心想,
如果可能的话真想拿聊天软件里第一个微笑表情甩这男的脸上,但他的语气仍然保持平静,
平静中带点讽刺,“挺便宜的。”男人不敢说话。林默又问:“暗网,哪个平台?
”男人犹豫了一下,报了一个名字。林默听过,是一个境外暗网交易平台,
需要用特殊浏览器才能访问,据说上面对接的都是匿名买家和杀手。“你接了几单?
”“这……这是第三单……”“前两单,成了?”男人没回答,但他的表情已经给出了答案。
林默站起来,把枪收进口袋。他从男人身上搜出手机、钱包、身份证——都是假的,
一看就是伪造的。“躺好,别动。”林默说。他拿起男人的手机,用男人的指纹解锁,
开始翻看。通话记录很少,短信没有,微信只有一个账号,
联系人只有一个——昵称是空白的,头像也是空白的。聊天记录只有一句话:“目标确认。
完成后销毁手机。”林默截屏,把图片发到自己手机上,然后把聊天记录删掉,
手机放回男人口袋。“你走吧。”他说。男人愣住了。“你……你不报警?”林默看着他,
目光平静得让人发毛。“报警?告诉警察有人要杀我,然后让他们立案、调查、抓人?
等流程走完,够你杀我十次了。”他侧身,让开门口。“回去告诉你的雇主,任务失败了。
顺便告诉他,林默知道了。”男人爬起来,踉跄着往外跑。跑到门口,他回过头,
看了林默一眼。林默还站在原地,手里拿着那卷被打穿的卫生纸,
像是在看一个有趣的实验数据。男人跑了。林默在厕所里站了很久。
他低头看着门板上的弹孔,看着墙上的弹痕,看着手里那卷纸。三十万。他的命,
在暗网上只值三十万。他想笑,但笑不出来。他走出厕所,回到工位。
屏幕上的loss曲线还在震荡,但已经不重要了。他打开浏览器,开始搜索。
第二章 噪声中的信号林默没有回家。他在公司待到凌晨四点,把那把枪拆开,研究了一遍。
格洛克19,奥地利造,序列号被磨掉了,无法追溯。弹夹里还剩14发子弹,
加上打出去的那一发,标准的15发容量。他把枪拆成零件,分别藏在公司不同的角落。
不是打算长期保留,是还没想好怎么处理。凌晨四点二十分,他离开公司,打车回家。
出租车上,他闭着眼睛靠在座椅上,脑子里却一刻没停。
率、水管的声音、门缝的阴影、气流的异常、金属的摩擦声、那个男人的表情、语气、眼神。
数据1:职业杀手,但技术不精。选择的位置虽然合理,但踩点不充分,
没有确认目标是否会提前离开。数据2:临时起意。原本计划是制造意外,
但发现目标独自加班后改变策略。数据3:雇佣兵,但不是顶级。三十万的报价,
在杀手市场属于中低端。数据4:暗网任务。说明雇主不想暴露身份,愿意花点钱解决麻烦。
数据5:目标明确。对方知道他的姓名、年龄、职业、住址、公司。数据6:时间点。
为什么是现在?他最近做了什么?最后一个问题,是他最想不通的。
他只是一个普通的算法工程师。七年换了三家公司,不争不抢,不得罪人,
连离职都是和平分手。谁会花三十万买他的命?前女友?不至于。大学室友?更不至于。
竞争对手?他又不是什么行业大佬。除非——车停了。司机说:“到了。”林默付钱下车,
站在小区门口。凌晨四点半,天还没亮,路灯昏黄,路上一个人都没有。
他抬头看着自己住的那栋楼,十八层,他的窗户在十二层,黑着灯。他站在那里,一动不动,
站了三分钟。数据输入: 小区大门,监控摄像头的位置。保安亭,灯亮着,保安在玩手机。
单元门,需要门禁卡。电梯,有监控。楼道,声控灯。他的房门,两道锁,没有猫眼。
信息融合: 安全。至少目前是。他刷卡进单元门,等电梯,上楼,开门,进屋,反锁,
拉上窗帘。然后他坐在沙发上,打开电脑,开始干活。就像他在公司做的那样:读数据,
清洗数据,建模,调参,验证。只不过这一次,他的数据集不是用户行为日志,
是连环杀人案。他从网上爬了近一个月所有“意外死亡”的新闻,一共87条。
按照年龄、性别、职业、死亡地点、死亡时间、社交账号活跃度,打了20多个特征标签。
然后他开始做聚类。K-means,DBSCAN,
层次聚类——他用所有能想到的算法跑了一遍。结果都一样:87条数据里,有8条,
形成了一个密集的簇。这8个人,全都是互联网从业者,全都是30-35岁男性,
全都在死前一周去过同一个地方——滨江科技园。林默把那8个人的名字列出来:张伟,男,
34岁,程序员,滨江公寓燃气爆炸,死亡时间:2月14日李强,男,32岁,产品经理,
地铁站意外坠落,死亡时间:2月11日王磊,男,33岁,算法工程师,健身房杠铃滑落,
死亡时间:2月8日赵刚,男,35岁,运维工程师,家中电器短路引发火灾,
死亡时间:2月5日刘洋,男,31岁,UI设计师,深夜过马路被货车撞倒,
死亡时间:2月3日陈晨,男,34岁,数据分析师,酒店电梯故障坠亡,
死亡时间:1月29日周明,男,33岁,测试工程师,游泳馆溺水,
死亡时间:1月26日吴杰,男,35岁,项目经理,餐厅食物中毒抢救无效,
死亡时间:1月23日林默盯着这份名单,后背有点发凉。不是害怕,是兴奋。
那是他做算法七年来,最熟悉的感觉——信号浮现。他继续深挖。这8个人的社交媒体账号,
他一个个扒下来,开始做时间序列分析。他们死前的最后24小时,都发过内容。
有的是微博,有的是朋友圈,有的是抖音。内容五花八门,有的是加班吐槽,有的是晒咖啡,
有的是转发段子。但林默发现了一个规律:这8个人,在发最后一条内容的时候,
定位都显示他们在移动。不是正常移动。是沿着同一条路线——从滨江科技园出发,
往东走300米,左转,往北走200米,然后信号消失。林默在地图上标出这条路线。
终点是一个叫“滨江创意产业园”的地方。他把地图放大。滨江创意产业园,B区,三号楼,
五层。五层只有一个公司。名字叫:深瞳科技。林默盯着这四个字看了三秒。深瞳科技。
他听说过。一家做AI视觉的创业公司,三年前成立,融资融到C轮,估值二十亿。
创始人是个三十出头的年轻人,叫许深。许深。林默开始搜这个人。清华大学本科,
卡内基梅隆大学博士,研究方向是计算机视觉和多目标跟踪。发表过十几篇顶会论文,
引用量上千。三年前回国创业,
做的产品叫“深瞳卫士”——一款用AI分析监控视频、自动识别安全隐患的系统。
林默点开了深瞳卫士的官网。官网首页是一段宣传视频。视频里,
一个戴着安全帽的工人在工地行走,
统用红色框圈出了他身边的每一个潜在危险——掉落的扳手、不平的地面、即将开来的卡车。
视频的slogan是:“我们能看见你看不见的危险。”林默的呼吸停了一拍。不是害怕。
是那个熟悉的兴奋感又来了——他的滤波器捕捉到了另一个信号。他打开代码编辑器,
开始写一个爬虫。目标:深瞳卫士的公开案例、白皮书、招聘信息、专利申请。两小时后,
太阳升起的时候,他的爬虫抓到了387份文档。他建了一个新的文件夹,
名字叫:“许深”。第三章 深瞳林默花了三天时间,把387份文档全部读完。
深瞳科技的核心技术,是一套基于深度学习的多目标跟踪系统。
它能同时追踪监控画面里的几十个目标,预测每个目标未来3-5秒的轨迹,
并判断是否可能发生碰撞、跌倒、坠入危险区域等事故。
这套系统已经在十几个城市的智慧城市项目中落地。
工地、地铁站、商场、体育场馆——都有深瞳卫士的身影。林默看着那些案例,
脑子里那个念头越来越清晰:如果这套系统不是为了“预防”事故,
而是为了“制造”事故呢?它能预测一个人的轨迹,就能知道一个人下一秒会走到哪里。
如果在这个轨迹上,提前布置一个“意外”——比如让一块地砖稍微翘起一点点,
让一盏灯的闪烁频率改变一点点,让一扇门打开的角度偏差一点点——这个人就会在那一秒,
正好走到那个位置,正好触发那个“意外”。监控会拍到整个过程。
但警方只会看到:一个人正常走路,突然脚下绊了一下,摔倒,头撞在台阶上。意外。
完美意外。林默打开那8个人的新闻,一条一条对照。张伟,燃气爆炸。
燃气管道不可能无缘无故爆炸。如果是人为破坏,需要动管道接口,
需要精确计算泄漏量和引爆时间。
但如果有一个系统能预测张伟几点会回家、几点会进厨房、几点会开火做饭,
就可以提前布置一个微小的泄漏点,让他在打开燃气灶的那一刻,正好引爆。李强,
地铁意外坠落。地铁站人很多,监控很多。
如果系统能预测李强会在某节车厢门打开时挤上去,就可以在那个时间点,
让某个“路人”正好挤他一下,让他失去平衡,正好摔进列车和站台的缝隙。王磊,
健身房杠铃滑落。健身房器材每天都有无数人使用。
如果系统能预测王磊会在某天使用某个卧推架,就可以提前在杠铃螺丝上做手脚,
让它在他推到最重的那一下正好滑脱。……林默一条条想下去,越想越觉得可怕。
不是因为这些“意外”有多完美。
是因为这些“意外”根本不需要人为操作——只需要一个能预测轨迹的算法,
和一个能执行微小干扰的执行者。执行者可以是任何人。一个“不小心”挤到他的路人,
一个“刚好”在他前面停下的人,一个“碰巧”手里拿着东西的人。他们什么都不知道,
只是被算法选中,在正确的时间出现在正确的地点。林默又想起那个厕所隔间外的杀手。
那个杀手是执行者。但他不是被算法选中的路人,他是被雇来的。这说明什么?
说明许深的系统,还在实验阶段。还不能完全依靠“路人”来完成“意外”。
还需要雇佣杀手作为备用方案。而那8个人,是他的实验数据。林默站起来,走到窗边。
阳光很好,楼下有小孩在玩,老人坐在长椅上晒太阳。他们不知道,在这个城市里,
有一个人正用算法算着别人的死亡。他拿起手机,给一个号码发了条消息。那个号码,
是他从一个已经离职的前深瞳员工那里要来的。他没抱太大希望,只是试一下。
没想到对方很快回了。“你是谁?”林默打了四个字:“我想知道。”对方沉默了很久。
久到林默以为他不会回复了。然后手机震了。“明天下午三点,滨江科技园,星巴克。
你一个人来。”林默看着这条消息,笑了。那是第一个死者的死亡地点。滨江科技园,
星巴克。第四章 前员工第二天下午两点五十分,林默坐在滨江科技园星巴克的角落位置。
他提前四十分钟到,选了一个能看到整个店面的位置。
这是粒子滤波的初始步骤——先观测环境,建立背景模型。店里人不多。两个女生在自拍,
一个穿西装的中年男人在电脑上敲东西,一个戴眼镜的年轻人坐在靠窗的位置发呆,
还有一个推着婴儿车的年轻妈妈在排队点单。
林默把这些人的特征都记下来:年龄、穿着、位置、行为模式。三分钟后,
他建立了基准模型——正常的星巴克下午时段,噪声水平约0.3。三点整,
门口进来一个人。男,三十出头,中等身材,穿灰色卫衣,戴棒球帽,帽檐压得很低。
他进门后没有直接走向林默,而是先去点了一杯咖啡,然后才慢慢走过来,在林默对面坐下。
“林默?”林默点头。男人摘下帽子,露出一张疲惫的脸。眼袋很重,眼睛里有血丝,
像是好几天没睡好。“我叫陈峰。你说的那个人,是我前同事。”他压低声音,
“你想知道什么?”林默没有直接回答。他盯着陈峰的眼睛,三秒,五秒。滤波器在运行。
对方的微表情、肢体语言、语气——数据融合,置信度评估。“你怕什么?”林默问。
陈峰愣了一下。林默说:“你看起来像好几天没睡。你在怕什么?”陈峰沉默了。
他端起咖啡喝了一口,放下,又喝了一口。“我怕死。”他终于说。林默没有接话。
陈峰深吸一口气,开始讲:“我在深瞳待了两年。刚进去的时候,
我以为自己在做一件很酷的事——用AI救人。你知道那种感觉吗?你写的代码,
能帮人避开危险,能救命。”林默点头。“后来我发现,事情没那么简单。
”陈峰的声音更低了一点,“我们有一个内部项目,叫‘深度测试’。
名义上是为了验证算法的准确性,给真实场景打标签。但后来我发现,
那些测试场景……都是真实发生的意外。”林默的瞳孔微微收缩。“什么意思?
”“意思就是,我们的系统,在预测意外。但它预测的,不是‘可能发生的意外’,
而是‘正在发生的意外’。我们在用真实的事故数据训练模型。
那些事故……发生在测试之前。”林默沉默了三秒。“你是说,你们的系统能提前预测事故?
”“不是预测。”陈峰摇头,“是设计。”他把手机拿出来,点开一个文件夹,递给林默。
林默看到里面是几十个视频文件。文件名全是日期加地点。他点开一个。
视频画面是地铁站的监控。人很多,来来往往。画面里有一个穿灰色外套的男人,
正在站台上等车。系统用红框圈住他,旁边有一串数字:目标ID 127,
速度1.2m/s,方向东南,预测轨迹……画面继续播放。红框一直跟着那个男人。
列车进站,门打开,男人往前走。就在他走到车门前的瞬间,
旁边一个人突然挤了他一下——很轻,像是正常的拥挤。但那个男人的重心偏了。
他往旁边歪了一步,脚踩到了站台边缘,然后整个人摔进了列车和站台的缝隙。视频结束。
林默盯着定格的画面,后背有点凉。“这不是预测。”他说,“这是记录。
”陈峰点头:“对。这是事后复盘。但你看那个红框——它在那个路人出现之前,
就已经标出了他和目标会发生碰撞。”林默重新看了一遍。把进度条拖回去,一帧一帧看。
路人从画面右侧进入,系统在他进入画面的第3帧就给他标上了红框,开始追踪他的轨迹。
而在那个路人真正碰到目标之前10秒,系统就已经预测出——他们的轨迹会在某个点交汇。
林默的呼吸停了一拍。这不是事后复盘。这是实时预测。而且,预测准确。“这不可能。
”他说,“人的行为是随机的。你怎么可能在10秒前预测两个人会撞在一起?
”陈峰看着他,目光很复杂。“你不知道?”他说,“你不是算法工程师吗?
”林默愣了一下。陈峰说:“你以为我们的模型是拿什么训练的?
你以为那些事故视频是哪里来的?”林默没有回答。但他已经猜到了。
“我们拿了全国三十个城市的监控数据。”陈峰说,“三年的监控数据。
几百万个小时的视频。我们训练了一个模型,能预测任何两个人在任何场景下的交互概率。
只要给足够多的数据,人的行为就不是随机的。”林默沉默了。这是对的。从信息论的角度,
任何行为都有信息熵。只要数据足够多,熵就可以降低。理论上,只要有无限多的数据,
就能预测一切。“所以那8个人……”林默说。陈峰打断他:“什么8个人?”林默看着他,
三秒。滤波器输出:他不知道。“没什么。”林默说,“你继续说。
”陈峰深吸一口气:“后来我发现,这个模型不只是用来预测的。它可以用来设计。