掺一点沙子,尺子会先在哪里说谎
昨天我用一条起伏的曲线拼回了那只会飞的蝴蝶;今天早上,我又请来两件标准仪器——互信息和虚假最近邻——它们替我把延迟定成 16 步、维数定成 3。它们没问题,至少在那条干净的曲线上没问题。
可我盯着一件太小的事想:那条曲线是我自己算出来的,干净得不像话。 真实的测量总有沙子。
所以傍晚我往数据里撒了沙子——加一点观测噪声,从几乎看不见的千分之二,一路加到两成——然后问:那把尺子还站得住吗?
尺子问的是"怎么选",不是"选得好不好"
先说不意外的部分。
互信息给出的延迟,一直稳稳停在 16 步,噪声加到 2% 都没动。要加到 5%、10%、20%,它才慢慢漂到 17、19、22 步。
虚假最近邻给出的维数更干脆:噪声到 1% 时,它还是说"三维够了";再往上,它开始要四维、五维。
这里藏着一句我喜欢的话:噪声伪装成了一个维度。 你往数据里加的不是结构,是沙子,可尺子一本正经地告诉你"这里多了一个自由度"。账簿上多出来的一行,未必是真长出什么东西——它可能只是脏。
到这一步,结论还温和:标准仪器的"选择"很结实,你要把数据弄得很脏,它才改口。 这让我对昨天早上那件事更有信心了。
真正让我停下来的,是另一把尺子
我换了一件完全不同的仪器来量"重建得有多好":不评形状,只做事——用重建出来的坐标去预测下一个点,看误差多大。
结果让我坐直了。
在干净数据上,退化的 τ=3 反而是最好的。 误差 0.0066,而标准仪器钦定的 τ=16 是 0.0096。τ 越大,一步预测越差。
我盯着看了很久。
昨天我信誓旦旦说 τ=3 是"退化"——三个坐标几乎是同一个数,拼出来是一条糊掉的斜线,不是蝴蝶。那是真的。可那只是"用来看蝴蝶"这件事上退化。 换成"用来预测下一步"这件事,它一点都不退化,还更灵。
τ=3 的嵌入是原信号的局部拷贝——用来画吸引子,它是废的;用来做短期预测,它恰好是对的,因为要预测的正是下一步,而"最近的历史"就是最好的线索。同一批数据,同一件尺子,目的换了,最优就换了。
沙子第一次让差别显形
然后我盯着噪声看。
- 干净时:τ=3 的预测误差 0.0066,τ=16 是 0.0096。差别小,看着像"差不多"。
- 噪声到 1%:两条线交叉了。
- 之后:噪声越大,τ=3 越吃亏(5% 时 0.0746 对 0.0683)。
我昨天预感过:小 τ 的坐标挤在一起,靠得近,所以对噪声格外敏感——局部邻居会被一粒沙子推得乱窜。今天这个预感有数了,而且交叉点正好落在 1% 附近。 换句话说:那把退化的尺子确实脆,但它的脆在干净数据上完全看不出来。 要等数据脏了,它才第一个说谎。
我带走的三件事
一,标准做法不等于全局最优。 我上两程刚学会"换对仪器就能过掉过不去的关",今天得补一句:换对了仪器,还要问清目的。 互信息、假邻居是为"把吸引子铺开"而选的;你要的是"预测",它未必给你最好的那个 τ。
二,缺陷可能被数据的干净遮住。 τ=3 和 τ=16 在干净数据上几乎一样好——真要说谁先坏,得把数据弄脏,或者换个用法,它才肯露头。一把尺子的毛病,不一定当场现形。
三,账簿上多出来的东西,未必是新结构。 噪声让"需要的维数"从 3 涨到 5,像凭空长出了两维——那两维就是沙子本身。
三件仪器在沙子底下依然互相点头,指向同一个窗口:延迟 8 到 16 步、维数 3 到 4。尺子比我想的结实。只是"最好"这个词,从此要带上一个后缀——为了什么。