从"新闻推送"这个日常现象出发,用高中数学的向量、对数函数等知识,一步步还原人工智能推荐系统的底层数学逻辑。
计算机没有理解语义的能力,它只会计算数字。因此,要让计算机判断两篇新闻是否相似,必须先把文字变成数字。这个过程分两步:
阅读以下三条新闻,凭直觉判断:浏览"新闻1"后,新闻2和新闻3哪个更可能被推送?
新闻1与新闻2共享的关键词:AlphaFold3蛋白质结构DNARNA……这些词不是每篇文章都有的,是标识这篇文章主题的"关键词"。
而"的""了""在"等虚词虽然频率很高,却几乎每篇文章都有,不具有标识性。数学化的核心问题就是:如何让计算机区分哪些词重要、哪些词不重要?
TF-IDF 是信息检索中最经典的词权重算法,由两部分组成:衡量词在本文中频率的 TF,以及衡量词在整个语料库中稀缺程度的 IDF。
一个词在文章中出现越多,说明它越重要。但单纯用次数不公平——长文章中每个词的次数都会更多。因此用频率代替次数:
其中 ft = 词 t 在文档 d 中出现的次数,n = 文档 d 的总词数。
如果一个词在很多文章中都出现(如"的""了"),说明它没有标识性,重要度应低。设语料库共 N 篇文档,词 t 出现在 nt 篇中:
三个候选函数,哪个更好?拖动滑块改变 nt,观察函数值的变化:
为避免分母为零(若某个词在所有文档中都未出现,nt=0),实际中分母加1平滑处理:
词在本文中越常见(TF↑),且在整个语料库中越稀少(IDF↑),权重越高。两者都是单调递增函数,因此取乘积:
高亮词为关键词候选(TF-IDF 较高)
| 词语 | 词频 TF | 文档频率 nt | IDF = lg(N/(1+nt)) | TF-IDF |
|---|---|---|---|---|
| AlphaFold3 | 3/120 | 12 | lg(1000/13) ≈ 1.887 | 0.0472 |
| 蛋白质 | 4/120 | 35 | lg(1000/36) ≈ 1.444 | 0.0481 |
| 结构 | 3/120 | 80 | lg(1000/81) ≈ 1.092 | 0.0273 |
| 药物 | 2/120 | 120 | lg(1000/121) ≈ 0.918 | 0.0153 |
| 谷歌 | 1/120 | 200 | lg(1000/201) ≈ 0.697 | 0.0058 |
| 发现 | 2/120 | 600 | lg(1000/601) ≈ 0.221 | 0.0037 |
| 的 | 15/120 | 999 | lg(1000/1000) ≈ 0 | ≈ 0 |
计算出所有词的 TF-IDF 后,将一篇新闻表示为一个 n 维向量——每个维度对应词汇表中的一个词,分量为该词的 TF-IDF 值。
| 词语 | AlphaFold3 | 蛋白质 | 结构 | DNA | 视频 | 模型 | … |
|---|---|---|---|---|---|---|---|
| 维度编号 | 第1维 | 第2维 | 第3维 | 第4维 | 第5维 | 第6维 | … |
| 新闻1 | 0.047 | 0.048 | 0.027 | 0.019 | 0 | 0.008 | … |
| 新闻2 | 0.051 | 0.044 | 0.030 | 0.022 | 0 | 0.006 | … |
| 新闻3 | 0 | 0 | 0 | 0 | 0.053 | 0.041 | … |
选取两个维度(蛋白质权重、视频权重)可视化三篇新闻的方向关系:
新闻1与新闻2方向相近(小角度),与新闻3方向差异大(大角度)。注意:实际系统中向量维度可达数万维。
确定了用向量表示新闻后,问题转为:如何度量两个向量的相似程度?可以用向量差的模,也可以用夹角——哪个更合理?
设两篇新闻的特征向量分别为 x = (x₁, x₂, …, xₙ) 和 y = (y₁, y₂, …, yₙ),则它们夹角 θ 的余弦值为:
拖动滑块调整两个向量的角度,观察余弦值的变化:
| 维度 | xi(新闻1) | yi(新闻2) | xiyi | xi² | yi² |
|---|---|---|---|---|---|
| AlphaFold3 | 0.047 | 0.051 | 0.002397 | 0.002209 | 0.002601 |
| 蛋白质 | 0.048 | 0.044 | 0.002112 | 0.002304 | 0.001936 |
| 结构 | 0.027 | 0.030 | 0.000810 | 0.000729 | 0.000900 |
| DNA | 0.019 | 0.022 | 0.000418 | 0.000361 | 0.000484 |
| 合计 | — | — | 0.005737 | 0.005603 | 0.005921 |
输入两段文字,系统将模拟计算它们的关键词权重和余弦相似度(简化版,仅统计词频)。
学生课后提出的问题,恰好指向了真实 AI 系统中需要进一步优化的方向。
"人咬狗"和"狗咬人"关键词完全相同,但含义完全不同。纯词袋模型无法区分。
词汇表可达数十万维,海量文章两两计算余弦值的时间复杂度极高。
输入错别字也能搜到想要的结果,说明系统不是完全精确匹配。
新上线的新闻没有历史数据,如何建立特征向量?
参考文献:刘进, 顿继安, 冯启磊. "新闻推送"的数学模型教学——兼谈AI作为数学建模数学资源的价值与开发路径. 数学通报, 2025, 第64卷第10期, 34-38, 45.
本网页基于论文核心思路拓展构建,增加了交互演示与拓展讨论,供学习参考。