AI匹配:矩阵优先,神经网络随后

发布: (2026年2月1日 GMT+8 07:37)
11 min read
原文: Dev.to

Source: Dev.to

1. 真正的业务问题:“我们从哪里获取用于训练神经网络的数据?”

让我们从大多数团队不愿明确阐述的问题说起。

神经网络 不会 因为它们本身不好而失败。
它们失败的原因是 它们需要的数据尚不存在

要训练一个有意义的匹配模型,你需要:

  • 历史匹配记录
  • 结果(成功/失败)
  • 用户行为(点击、接受、转化)
  • 足够的量级以避免过拟合

早期系统往往缺乏这些数据。这就产生了一个悖论:

  1. 你需要好的匹配来获取用户。
  2. 你需要用户来获取数据。
  3. 你需要数据来训练匹配模型。

大多数团队会悄悄忽视这一点,直接上线:

  • 随机相关性
  • 过度自信的 AI 标注
  • 伪装成 “ML” 的脆弱规则引擎

这不是技术问题,而是 产品和架构问题

2. 一个具体的使用案例:选择合适的营销渠道或代理机构

情景: 一家公司正在推出新的营销活动,想要选择 合适的广告渠道、代理机构或网红

约束条件真实:

  • 预算有限
  • 品牌声誉受到影响
  • 对什么会有效的期望不明确

对于此确切设置 没有历史绩效数据

供给侧属性(渠道、代理机构、网红):

  • 不同的覆盖范围
  • 不同的可信度
  • 不同的风险特征
  • 不同的沟通风格

业务问题 不是

“哪个选项在统计上与此活动相似?”

真正的问题是:

“哪个选项最符合此活动的期望和约束?”

这是一种 兼容性问题,而非相似性问题。

3. 为什么 “只训练神经网络” 在这里行不通

此时,通常会有人说:

“我们把所有东西都嵌入进去,之后再训练模型。”

这只有在你已经拥有以下条件时才有效:

  • 结果(Outcomes)
  • 标签(Labels)
  • 规模(Scale)

在我们的使用场景中,这些都不存在。尝试使用神经网络会导致三种失败之一:

  1. 在极少数据上过拟合 – 模型输出看似自信的噪声。
  2. 模型被“暂时”禁用 → 实际上是永久禁用 – 团队失去信任。
  3. 没有对“拟合”意义的先验理解 – 系统盲目无知。

真正的问题并不是缺少机器学习人才;而是 系统没有“拟合”这一先验概念。 你需要一个先验。

4. 重新构建问题:相似性 vs. 兼容性

这是关键的概念转变。

大多数机器学习工具围绕 相似性 构建:

  • Cosine similarity
  • Euclidean distance
  • Nearest‑neighbors

相似性回答:

“这两件事有多相似?”

但业务匹配很少会这样提问。相反,它会问:

“这个选项在此情境下有多合适?”

那就是 兼容性——它具有:

  • 非对称
  • 基于期望
  • 领域特定

并且它可以 显式 表达,而无需假装从不存在的数据中学习它。

Source:

5. 解决方案:兼容性矩阵(特征矩阵,而非机器学习)

与其尝试学习相关性,不如将领域知识编码为矩阵

定义两个小而稳定的特征空间。

活动方

blog_type ∈ { corporate, brand_voice, expert, personal }

涵盖:

  • 沟通的正式程度
  • 预期的权威水平
  • 可接受的个人叙事方式

供应方(机构 / 网红 / 渠道)

social_status ∈ { celebrity, macro, micro, nano }

涵盖:

  • 感知的权威性
  • 覆盖范围的预期
  • 风险容忍度
  • 可信度

现在定义一个 compatibility matrix

compatibility[blog_type][social_status] → score ∈ [0 … 1]

该矩阵回答:

“给定此活动风格,这种权威水平有多合适?”

不是猜测;它是一个 product hypothesis

6. 示例:一个简单的 4 × 4 兼容矩阵

               | celebrity | macro | micro | nano
---------------|-----------|-------|-------|------
corporate     | 1.0       | 0.8   | 0.4   | 0.2
brand_voice   | 0.7       | 1.0   | 0.8   | 0.5
expert        | 0.6       | 0.9   | 1.0   | 0.7
personal      | 0.3       | 0.6   | 0.9   | 1.0
# Compatibility Matrix lookup (Day‑1 matching)
matrix = {
    'corporate':   [1.0, 0.8, 0.4, 0.2],
    'brand_voice': [0.7, 1.0, 0.8, 0.5],
    'expert':      [0.6, 0.9, 1.0, 0.7],
    'personal':   [0.3, 0.6, 0.9, 1.0]
}

def matrix_score(campaign_type: str, influencer_status: str) -> float:
    """O(1) lookup — thousands of RPS without trouble."""
    statuses = ['celebrity', 'macro', 'micro', 'nano']
    idx = statuses.index(influencer_status)
    return matrix[campaign_type][idx]

# Production usage
score = matrix_score('corporate', 'macro')  # 0.8 ✅
print(f"Corporate ↔ Macro: {score}")

这在业务层面的含义

  • Corporate(企业)活动侧重权威性和低风险。
  • Personal(个人)叙事在可关联的、小众的声音中更能发挥作用。
  • Expert(专家)活动更看重可信度,而不是单纯的覆盖量。

重要说明

  • 这些数字是 相对值,而非绝对值。
  • 它们并不预测成功,而是定义 预期匹配度,而非结果。

7. 为什么在没有数据的情况下也能工作

“这不就是硬编码的逻辑吗?”

是的——这正是重点。
当你没有数据时,唯一可靠的真相来源是人类专业知识。将这种专业知识转化为透明的矩阵:

  1. 你获得即刻相关性——系统可以立刻给出合理的推荐。
  2. 避免过拟合——没有模型在少量数据上过拟合。
  3. 创建反馈回路——随着真实结果的出现,你可以调整矩阵或逐步引入机器学习组件。

换句话说,这个矩阵是一个基线,在拥有足够信号后可以演化为数据驱动的模型。

8. 从矩阵到机器学习(当数据到来时)

当你开始收集结果时,你可以:

  1. Validate 矩阵与真实转化率进行验证。
  2. Calibrate 分数(例如,通过逻辑回归),同时保持相同的特征空间。
  3. Hybridize – 将矩阵作为贝叶斯模型中的强先验或作为下游学习器的特征。

由于 特征定义保持不变,仅最终相关性得分的计算方式改变,过渡是平滑的。

9. 要点

  • 不要等到有数据 再开始提供相关性。
  • 显式编码领域知识 为 compatibility matrix。
  • 将矩阵视为 product hypothesis,而不是最终预测。
  • 将其用作未来 data‑driven model 的 launchpad

通过将问题从“similarity”重新定义为“compatibility”,并在前期利用人类专业知识,你可以从第一天起交付一个有用的匹配引擎——无需大数据。


为什么使用 Compatibility Matrix?

一个 compatibility matrix结构化分级显式 的,区别于:

  • 二元规则
  • if/else
  • “Fake” ML 模型

Compatibility matrix 为你提供:

  • 确定性行为
  • 可解释的决策
  • 可控的偏差
  • 早期相关性的稳定性

最重要的是,它在任何数据存在之前为系统提供 a worldview

Source:

8. 如何在不重写的情况下演变为机器学习

这种方法 不是反机器学习——它是 机器学习前置
随着系统运行,你自然会收集:

  • 哪些匹配被列入候选名单
  • 哪些被接受
  • 哪些导致了互动或转化

此时,转变是渐进的。

阶段 1 — 仅矩阵

score = compatibility_matrix[blog_type][social_status]

阶段 2 — 混合

# Phase 2: Matrix 70% + NN 30%
matrix_score = 0.8
nn_score = nn_model.predict(features)   # 0.75
final_score = 0.7 * matrix_score + 0.3 * nn_score   # 0.785

阶段 3 — 机器学习主导

score = nn_prediction

矩阵永远不会消失;它会变成:

  • 基线
  • 正则化器
  • 冷启动的后备方案

9. 为什么这能让你在第一天就具备相关性

匹配系统中最大的隐藏风险是 上线时的无关性
如果用户看到的匹配质量差:

  • 他们不会互动
  • 你无法收集数据
  • 你的机器学习路线图在起步前就夭折

兼容性矩阵可以避免这个陷阱。它能为你提供:

  • 合理的默认值
  • 与业务预期相符的行为
  • 来自用户的信任
  • 实际反映意图的数据

所有这些都不需要假装拥有大数据。

# Day 1: 100% matrix, no training data needed
def get_matches(request, suppliers, min_score=0.6):
    matches = []
    for supplier in suppliers:
        score = matrix_score(request.campaign_type, supplier.category)
        if score >= min_score:
            matches.append((supplier, score))
    # Sort by score descending and return top 14
    return sorted(matches, key=lambda x: x[1], reverse=True)[:14]

# Real metrics: 47 suppliers → 12 matches → 3 % conversion
# O(n) complexity, thousands of RPS, zero cold start

最后要点

如果只能记住一个概念:
相似度 是一个数学概念。
兼容性 是一个业务概念。

神经网络擅长在世界给你数据之后学习相似度。
兼容性矩阵让你在那个时刻到来之前就可以行动。

  • 先有矩阵。
  • 后用神经网络。

这不是妥协,而是让真实的匹配系统活得足够久以进行学习的方式。

Back to Blog

相关文章

阅读更多 »

理解梯度爆炸问题

为什么神经网络会爆炸——一个帮助训练的简单修复 一些神经网络,尤其是RNN,在训练时可能感觉像在风暴中驾驶船只,因为微小的…