Skip to content

第二十四章 解释

第一条解释生成出来的时候,林知行盯着屏幕看了半分钟。

那是一条英语课的排课结果:"王老师被安排在周三上午第一二节,因为周三上午王老师无其他课程,且城北校区距其住所最近(3.2公里)。"

语法没问题。信息也对。但他总觉得哪里不对劲。

他把"3.2公里"删掉了。太精确了。一个老师看到系统算出了自己家到学校的精确距离,第一反应不会是"系统好聪明",而是"系统怎么知道我家在哪"。

他改成"距离校区较近"。

然后他又看了一遍,把"因为"改成了"原因:",句式更正式一点。再看一遍,把"王老师无其他课程"改成"该时段无其他课程安排",主语从人变成了时间段,语气就没那么生硬了。

这一条解释改了四遍,花了十二分钟。


开发AI解释层的难度,跟之前做排课算法完全不是一个量级。

算法部分是硬骨头——约束变量的传播、冲突检测、回溯搜索,每一行代码都涉及数据结构和计算逻辑的取舍。林知行花了两周才把demo跑通,其中五天是在跟真实的教师数据死磕。

但解释层不是算法问题,是翻译问题。

排课算法做决策的时候,背后是一堆约束条件的权重比较。比如某位老师被安排在周三上午,可能是因为:一、该时段没有其他课程冲突;二、该老师的资质适合这门课;三、该校区离老师家最近;四、该时段教室资源有空余。四个约束同时满足,权重叠加,算法输出了"周三上午"这个结果。

但你不能把四个约束原封不动地告诉用户。用户不想看权重矩阵,他们只想要一句话:为什么是我?为什么是这个时间?

林知行写了一个翻译模块。核心逻辑很简单——从约束条件中提取"主要因素",按照用户能理解的语言组织成句子。他设了三条规则:第一条,只展示对结果影响最大的两到三个约束;第二条,不用技术术语,用日常语言;第三条,加上具体的数值或事实作为支撑,让解释有"锚点"。

第一版做出来的时候,生成的解释很机械。比如:"李老师被安排在周一第一节,因为约束1满足且约束3满足。"

约束1是什么?约束3是什么?用户看不懂。

他改了一版,把约束编号替换成具体描述:"李老师被安排在周一第一节,因为该时段空闲且李老师具有该科目授课资质。"

好了一些,但还是干巴巴的。像机器写的。

他想起姜意在报告里说的那句话——"用户按场景和情绪思考"。

场景和情绪。

他又改了一版:"李老师被安排在周一第一节。原因:周一上午李老师没有其他课程,且她是该校区唯一的物理老师。"

语气柔和了,信息也更具体。但这还是在描述约束条件,没有"场景感"。

他盯着屏幕想了很久,最后做了一个决定:给每类约束条件配一个"解释模板"。

时间冲突类的模板:"XX老师在该时段没有其他课程安排。"

资质匹配类的模板:"XX老师持有XX科目的授课资质。"

距离类的模板:"XX校区距XX老师的住所较近。"

校区需求类的模板:"XX校区在该时段缺少XX科目的任课老师。"

然后用模板组合生成完整的解释。这样既保证了信息准确,又避免了解释过于机械或过于精确的问题。

模板的措辞他也调了好几遍。"持有授课资质"太正式,改成"擅长该科目"。"缺少任课老师"太负面,改成"需要安排该科目课程"。每一个措辞都在"准确"和"让人舒服"之间找平衡。


第三天晚上,方小满从外面回来,看到林知行坐在电脑前一动不动,屏幕上是一长串排课结果,每条结果旁边都跟着一行灰色小字。

"这是什么?"方小满凑过来看。

"解释功能。"林知行说,"每条排课结果旁边加一条说明,告诉用户系统为什么这么排。"

方小满读了几条:"赵老师被安排在周四下午第三四节,因为周四下午赵老师没有其他课程,且城南校区需要安排数学课……这不就是把算法的逻辑翻译成人话吗?"

"差不多。"林知行说。

"这有什么用?"方小满问。

林知行转过椅子,看着他:"你还记得排课系统刚上线的时候,有三个校区的老师集体投诉吗?"

"记得啊,那会儿你和我连夜去道歉来着。"

"当时我们以为问题是数据不完整——三个校区的教师健康信息没录进去,导致怀孕的老师被排了满课。"林知行说,"但后来我复盘了一下,就算数据是完整的,就算排课结果是对的,老师还是会打电话来问'为什么这么排'。"

"因为不信任呗。"方小满说。

"对。"林知行指了指屏幕,"这个功能就是解决信任问题的。老师看到结果,同时看到解释,就知道系统是'想过的',不是随机分配的。"

方小满想了想:"那你打算什么时候上线?"

"明天先推一个校区试一下。"林知行说,"我让刘主管选一个反馈最差的校区,看解释功能能不能把投诉率压下去。"

方小满点点头:"行。那我去跟刘主管说。"

他转身要走,又回头看了一眼屏幕:"那个灰色小字能不能换个颜色?灰色太淡了,年纪大的老师可能看不清。"

林知行愣了一下,然后说:"改成深灰。"

方小满笑了一下,走了。


刘主管选了城西校区。

选它的原因很直接——这个校区投诉最多。排课系统上线两个月,城西校区一共收到了十一条教师投诉,其中七条的表述都是"看不懂为什么这么排"。

林知行把解释功能推到了城西校区的后台,然后在宿舍等反馈。

等了两天,没有投诉。

第三天,刘主管打来电话。

"小林,城西那边这两天一条投诉都没有。"刘主管的声音听起来有点奇怪,像是在忍着什么。

"嗯。"林知行说。

"你知道以前是什么频率吗?"刘主管说,"平均一天一条。"

林知行握着手机,没说话。

"我今天下午去城西转了一圈,"刘主管继续说,"正好赶上数学组的老师在看新课表。我站在门口听了十分钟。"

"听到了什么?"

"一个老师说,'这次排的还行,起码知道为什么这么排了。'另一个老师说,'这个系统总算不是瞎排的了。'"刘主管顿了一下,"你知道'总算不是瞎排的了'这句话意味着什么吗?"

林知行知道。

意味着信任。

"还有,"刘主管说,"有个老师专门找到了解释里的那句话——'城西校区需要安排数学课程'——她说这说明系统知道她们校区缺数学老师,这让她觉得系统'懂行'。"

林知行没想到一个措辞上的选择会产生这种效果。

"我准备把这个功能推广到全部校区。"刘主管说,"你那边方便吗?"

"方便。"林知行说,"我今天就推。"

挂了电话,林知行在宿舍里坐了一会儿。

他打开后台数据面板,拉出城西校区上线解释功能前后的对比数据。教师对排课结果的接受率——以"未提出修改请求"为指标——从65%跳到了91%。

两天时间,二十多个百分点的提升。

而他做的只是在每条结果旁边加了一行灰色小字。


全部校区上线后,数据比城西试点还要好。

一周之内,三十七个校区的平均教师接受率从65%上升到92%。刘主管在工作群里发了一条消息:"本周零投诉,排课系统解释功能效果显著。"

张老板当天下午就打来了电话。

"小林。"张老板的声音里压着一股劲,像是想笑但忍着,"你知道这个功能值多少钱吗?"

林知行不知道。

"我们之前请的第二家公司,"张老板说,"做了半年,花了二十多万,排课核心功能还没跑通。你这个解释功能,我猜你花了不到五天?"

"四天。"林知行说。

"四天。"张老板重复了一遍,"小林,我跟你讲一个事。我昨天参加了一个教育行业的饭局,聊到了排课系统。有个校长问我,你们系统最大的优势是什么?我说,老师看得懂。"

林知行没接话。

"你知道那个校长怎么说?"张老板说,"他说,'老师看得懂'这五个字,比什么算法都值钱。"

林知行握着手机,心里涌上来一种很奇怪的感觉。不是骄傲,也不是得意,而是一种"对上了"的感觉——他做了一件对的事,而且是从一个他以前完全不会考虑的角度做的。

"张老板,"林知行说,"这个功能的启发来自一个做产品的朋友。"

"哦?"张老板说,"你还有做产品的朋友?"

"最近认识的。"林知行说。

"有机会介绍我认识认识。"张老板笑了,"能让你这种技术脑袋想到做解释功能的产品经理,不简单。"


林知行给姜意发了一条消息:"功能上线了,效果不错。谢谢。"

姜意的回复很快:"数据怎么样?"

"接受率从65%涨到92%。"林知行说,"一周零投诉。"

姜意发了一个"👍"。

然后她说:"别谢我,你欠我一顿饭。"

林知行打开手机银行看了一下余额——四百三十块。

他回:"学校食堂可以吗?"

姜意发了一个笑哭的表情。

"你认真的吗?"她问。

"认真的。"林知行说,"学校食堂二楼的麻辣烫不错,十五块钱能吃饱。"

姜意没有回复。

过了两分钟,她发来一条消息:"行。下周二中午。"

林知行盯着"下周二中午"五个字,忽然觉得这顿饭好像比那个AI解释功能更让他紧张。


那天晚上,林知行在技术社区发了一篇帖子。

标题是《AI应用的"解释层"——让用户信任AI的第一步》。

帖子不长,三千多字。他没有堆砌技术细节,而是从一个真实的问题切入:"你的AI应用做出了一条正确的推荐/决策/排课结果,但用户不信。为什么?"

然后他讲了排课系统的案例。从上线后的教师投诉,到姜意的用户调研报告,到解释功能的设计思路和上线效果。他把接受率的变化曲线贴了上去——65%到92%,一周时间。

在帖子里,他引用了姜意的一句话:"信任不是靠正确性建立的,是靠可解释性建立的。"

他没有点名,只写了一句:"这个想法来自一个做产品的朋友。"

帖子发出去的时候是晚上十一点。他关了电脑,上床睡觉。

第二天早上醒来,手机上多了几十条通知。

帖子被三个行业大V转发了。其中一个是有十五万粉丝的产品经理博主,转发评论是:"终于有技术人意识到可解释性的重要性了。这不是锦上添花,是雪中送炭。"

评论区里吵得很热闹。有人说"可解释AI是学术概念,落地没那么简单",有人说"这不就是加个日志功能吗,有什么值得写文章的",还有人说"92%的接受率数据是怎么统计的?样本量多少?置信区间多少?"

林知行一一回复了。关于统计方法,他写了一段详细的说明:样本覆盖三十七个校区、一千一百余名教师,数据来源于系统的修改请求日志,"未提出修改请求"即视为"接受"。

他回复完最后一条评论,刷新了一下页面。

评论区最新的一条,来自一个ID叫"姜意"的用户。

没有文字,只有一个表情符号。

"👍"

林知行盯着那个大拇指看了几秒钟,然后合上了电脑。

窗外是五月的下午,阳光照在对面宿舍楼的墙上。方小满在上铺睡午觉,偶尔翻个身,床板发出吱嘎的声响。

林知行躺在床上,脑子里还在转。不是在转代码,也不是在转数据,而是在转一个问题:姜意说的那个"可解释AI",他现在做的只是最表层的一层——给排课结果加了一条文字说明。真正的可解释AI要做的事情远不止于此。如果把这个方向深挖下去,能不能做成一个更大的东西?

他翻了个身,拿起手机,打开备忘录,记下了一行字:

"可解释AI——排课系统只是起点。"

然后他放下手机,闭上眼睛。

该睡觉了。

明天还有很多代码要写。

(本章完)