如何构建一个系统

假设有要处理的数据
A1
A2
A3
...

你想要设计一个功能 F,这个F应该处理数据 Ai,那么你需要编写程序P=F,是的:

O1 = F(A1)
O2 = F(A2)
O3 = F(A3)
...

如果写了个F,一次就解决了,那就万事大吉了。

如果不行,你会发现:

处理A1,需要上下文 C1
处理A2,需要上下文 C2
处理A3,需要上下文 C3
...

那么如果 F(Ci,Ai) 能解决问题,那就万事大吉了。

这个时候程序,Pi = F(Ci)

可能你需要一个通用的 P0=F(C0),解决了一票Ai,但是另外一些Aj,你总是需要定制一个 Pj=Fj(Cj)

现在,开始分层,引入层组织 L,于是你有

L10 = [
  F0,
  F1
]

L11 = [
  F3,
  F4
]
...

进一步的,你会有

L20 = [
  L11,
  L12
  ...
]
...

这样,就像神经网络一样,你的系统就搭建起来了。
System = Ln0(最上层的L应该只有一个节点)
Ln0 = \(\sum_{i=0}^{m} (L_{n-1, i})\)
...

到这个时候,会有一个问题:

  • 如果Lij 需要定制参数
    • 如果 Lij 这里固化了参数,最上层S就无法修改,S需求不满足的时候,就需要知道Lij的细节。
    • 如果 Lij 把参数全部层层暴露给更上层的L_{i+1} 传递,参数太多会导致系统参数非常啰嗦。

因此,在每一层,都好做好:

  • 分离可变部分和不可变部分,最小化需要配置的参数
  • 最终,S这里只应该有一个 system level config parameters

--end--

posted @ 2024-05-21 02:11  ffl  阅读(20)  评论(0编辑  收藏  举报