当我们选购商品时发生了什么

发布于 · 1436 字 · 4 分钟

#方法论#形式化

本文由笔者撰写初稿,经与 LLM 讨论后整理润色并审阅。使用模型:Gemini 4 Argon。


第一步,先明确输入和输出。

假设我们有一系列主观需求和客观参数作为输入 Input(r1,r2,…,rn,c1,c2,…,cm)\text{Input}(r_1, r_2, \dots, r_n, c_1, c_2, \dots, c_m),同时面对一个商品的候选全集 AllProduct(p1,p2,…,pk)\text{AllProduct}(p_1, p_2, \dots, p_k)。表面上看,选购商品是构造一个从 Input\text{Input} 到 AllProduct\text{AllProduct} 幂集的映射,或者说找到并构造一个筛选函数 ff,使得在给定 Input\text{Input} 下能从 AllProduct\text{AllProduct} 中筛出一个可行子集 Product\text{Product},再按照一定的价值准则对 Product\text{Product} 的元素做偏序排序。

但事实是,在真正开始选购之前,我们往往并不了解 Input\text{Input}——不论是需求 rr 还是参数 cc,我们可能并不知道自己的需求该如何准确表述,也不知道这样的 ff 需要接收什么样的 cc 作为判据。

所以,选购一定是一个迭代过程。但仅靠上面的静态模型,还不足以解释迭代的成分究竟在哪里。要拆解这个问题,得先对构造 ff 的过程做点研究。

残缺与冗余的输入

显然,ff 不是一个先验存在的函数。要构造 ff,必须先对初始输入 Input1\text{Input}_1(一个有限的、元数可能过多也可能过少的输入)进行分解。在构造 ff 的过程中,如果去对照 AllProduct\text{AllProduct} 并与真实世界交互,通常会发现两类问题。

第一类问题是 Input1\text{Input}_1 的元数是残缺的,某些很重要的维度一开始居然完全没有考虑到。比如买鞋居然还要考虑宽度,男鞋宽楦有 D、2E、4E 之分(不过很不幸,由于一般来说只有非大陆品牌的鞋在这方面有比较正式的分级和研究,许多大陆消费者甚至无法仅凭商品列表意识到这个参数,只能在实际穿鞋过程中通过感觉鞋子很紧、脚侧被勒痛,才发现自己的 Input1\text{Input}_1 是残缺的)。

第二类问题是输入冗余。有时我们会发现,自己列出的某个参数其实是被其他一个或多个参数决定的。这时候由于领域知识的不足(否则一开始也不会没有发现冗余了),强行独立指定的几个参数之间甚至可能存在内部矛盾,导致在 AllProduct\text{AllProduct} 中根本筛不出任何商品。

经验算子与输入解耦

在遍历 AllProduct\text{AllProduct} 参数结构与接收实证反馈的过程中,我们可以抽象出所谓的经验(或者说学习结果),将其记作 hh。也就是说,在尝试以 Input1\text{Input}_1 为起点、以 AllProduct\text{AllProduct} 为候选集构造筛选规则 ff 从而寻找 Product\text{Product} 的时候,会沉淀出算子 hh——它用来更新和规整我们的 Input\text{Input} 结构,补齐缺失维度并消去冗余与矛盾,从而降低构造 ff 的复杂度,更准确地找出 Product\text{Product}。

读到这里可能会觉得有些奇怪,但又说不上哪里奇怪——前面说要找一个映射 ff,为什么一会儿像是把 Input\text{Input} 当作起点去构造 ff,一会儿又像是把商品喂给 ff?

事实上,针对具体购买任务实例化的筛选规则 fInputf_{\text{Input}}(接收候选商品并给出是否入选及偏序关系)本身是随着 Input\text{Input} 变化的。在没有沉淀出 hh 之前,输入里的噪声、残缺与筛选逻辑是混在一起的;换句话说,得出 hh 的过程,其实是迭代地对 Input\text{Input} 和 ff 解耦合的过程。先由 hh 将粗糙的 Input\text{Input} 规整为规范参数空间里的 Inputfinal\text{Input}_{\text{final}},再根据规整化后的输入导出对应的筛选函数 ffinalf_{\text{final}}。

选择与设计的分叉

一旦把 hh 抽离出来,选择与设计的分叉就在这里出现了。

选择是什么呢?选择只求单点收敛,无非是在某一次具体的迭代中凑出了那个 InputA,final\text{Input}_{A,\text{final}},并且摸索出了对应的 fA,finalf_{A,\text{final}},于是从 AllProduct\text{AllProduct} 中得出了 ProductA\text{Product}_A。至于中间有没有提炼出普适的 hh,并不影响这次选择结束。

而选型与设计则是得到了完整的 hh。得到 hh 后,任意给定一个粗糙的 InputX\text{Input}_X,都知道如何用 hh 将 InputX\text{Input}_X 规整化为 InputX,final\text{Input}_{X,\text{final}},同时根据规整化后的输入构造出对应的 fX,finalf_{X,\text{final}}:

  1. 如果拿着 fX,finalf_{X,\text{final}} 去现有的 AllProduct\text{AllProduct} 里能筛出非空子集 ProductX\text{Product}_X,这就是专业的选型或导购。
  2. 如果规整后的 fX,finalf_{X,\text{final}} 在现有的 AllProduct\text{AllProduct} 中筛出了空集(市面上没有任何现成商品满足这套规范参数),转而将这套约束反转过来作为蓝图,去定义一件原本不存在的新商品 pnewp_{\text{new}} 以扩充 AllProduct\text{AllProduct},这就成了产品设计。

结语

把选购商品的过程拆开来看,所谓的“懂行”或“经验”并不是什么神秘的直觉,无非是在反复试错中沉淀出了规整算子 hh,把原本缠在一起的“理清自己要什么(规整 Input\text{Input})”和“按标准挑东西(构造 ff)”拆成了两件独立的事。单次买对东西,只是在某一个具体样本上走通了闭环;而掌握了 hh,才算把零散的试错转化成了可复用的方法。

本文采用CC BY-NC-ND 4.0许可协议:转载请署名并注明出处,禁止商业使用,禁止演绎(不得修改、翻译或改编)。

评论