AI-LECTURER 速報課|2026-10-01|約 25 分鐘

表格資料也能「看例子就答題」:NVIDIA Kumo Tabular 讓預測不用再從頭訓練

📍 真實場景
小琪,中型電信公司客服部的資料分析專員,不是工程師,只會基本 Python

主管週五要她交出「下個月哪些客戶可能退租」的名單,手上只有 400 筆標好「有退租/沒退租」的客戶表格

😖 卡住的地方:傳統做法要先整理欄位、調一堆參數、訓練、驗證,每換一個問題(例如改預測客戶會不會欠費)就得整套重來,一週根本做不完
💡 這課讓她看懂:NVIDIA 新公開的 Kumo Tabular 是怎麼「把那 400 筆有答案的表格當作例題,直接算出新客戶的答案」,不用訓練也不用調參數

🧭 這到底是什麼(白話版)

NVIDIA 在 Hugging Face 上公開了 Kumo Tabular,這是一個專門處理「表格資料」的 預訓練模型已經先用大量資料學過一輪基本功的模型,拿來就能用,不必你從零教起。表格資料就是客戶名單、交易紀錄、感測器紀錄、保險理賠、訂單這類一列一列的資料。預測客戶會不會流失、會不會違約、明年需求多少、房價多少,都是企業最常做的表格預測。

它的用法跟以往很不一樣:你給它一張「有答案的表格」(稱為 上下文這裡指你一次丟給模型看的那批有答案的範例資料),再給它「想預測的新列」,它會在 一次前向傳遞資料從模型輸入端一路算到輸出端,只走一趟、不回頭修改模型 內直接吐出答案:分類問題給各類別的機率,數值問題給預測數字。全程沒有訓練、沒有調參數、也不用做特徵工程(也就是人工挑選與加工欄位)。

這種「看例子就答題」的能力叫 in-context learning在提示裡看幾個範例就學會做新任務,模型本身的權重一個都不更新,原本是大型語言模型的招牌。素材指出它同樣適用於表格:模型先在數百萬張表格上預習,之後把有答案的表格讀進來當作參考。Kumo Tabular 有三種大小(2,800 萬到 2.15 億個 參數模型內部可以調整的數字旋鈕,數量越多通常越強也越吃資源),以 OpenMDW-1.1 授權釋出、可商用,而且只用「人造資料」預訓練。

它在 TabArena、BeyondArena、TALENT、ScoringBench 四個 基準測試大家用同一批題目給不同模型考試,比較誰分數高的公開榜單 都排第一。過去二十年這類工作主要靠 梯度提升樹一種把很多棵小決策樹接力組合起來的傳統機器學習方法,表格預測的老牌主力,效果很好,但每個新問題都要重新蒐集標籤、調參、驗證、部署,Kumo Tabular 想把這段流程大幅縮短。

🎯 為什麼值得你花時間

省掉每個問題都要重來的流程傳統做法每換一個問題就得重做特徵工程、超參數搜尋、驗證、部署。Kumo Tabular 只要給它有標籤的表格,一次計算就出結果,分析師可以在同一天試好幾個預測問題。
可商用、開放、而且有程式碼模型權重放在 Hugging Face,程式碼在 GitHub(NVIDIA/structured-data-models),授權為 OpenMDW-1.1,素材明確說可商用。對中小企業而言,不必自己養一個訓練團隊也能用上。
小模型也能拿到榜首三種尺寸從 2,800 萬到 2.15 億參數,比動輒數十億參數的語言模型小很多,標題所說的「準確度與效率的新前緣」就是指:用較小的模型仍能排名第一,部署成本低。

⚙️ 它是怎麼運作的

1
儲存格嵌入(Cell Embedding)把每一格資料變成模型看得懂的一串數字。數字欄與類別欄分別用不同權重,透過 傅立葉特徵用許多不同頻率的正弦與餘弦波來表示一個數值,讓模型容易分辨數值的大小與細微差異 編碼。缺值不需要先補資料,模型會特別處理;上下文裡的每個單位還會加上「標籤嵌入」,讓模型知道它的答案是什麼。
▼
2
列嵌入(Row Embedding)把同一列的多個欄位交互看過,整合成「這一列整體長什麼樣」的一個向量。這一步回答素材所說的第二件事:理解同一列裡各欄位如何互相影響(例如月費高加上用了很短時間)。
▼
3
上下文注意力(In-context attention)讓「還不知道答案的新列」去比對「已有答案的上下文列」,找出最像的那些,並參考它們的標籤。這是整個模型最關鍵的一步,也就是「看例子答題」的地方。
▼
4
直接輸出預測分類問題輸出各類別的機率,回歸問題(預測數字)輸出數值。這些全在一次前向傳遞內完成,沒有任何權重被更新。
傳統做法 vs. Kumo Tabular:每個新問題要做什麼
工作項目傳統梯度提升樹流程Kumo Tabular
蒐集有答案的資料要要(當作上下文)
特徵工程要,人工加工欄位不用
超參數搜尋要不用
針對新任務重新訓練要,每個任務從零學不用,一次前向傳遞
預訓練資料無(不適用)只用人造資料預訓練

🔍 程式碼漫遊(點有 ● 的行看白話講解)

這是一個「教學用玩具」,只用標準函式庫模擬 in-context 預測的核心想法:新客戶去跟「有答案的範例列」比相似度,越像的範例,投的票越重。它不是 Kumo Tabular 的真實程式,真實模型是用 Transformer 學出相似度,這裡用簡單距離代替,方便你看清楚流程。

●maxes = [max(abs(r[0][i]) for r in context) for i in range(cols)]
💬 每個欄位除以自己的最大值,讓「月費」與「使用月數」處於同一尺度,避免數字大的欄位主導。
●d = math.dist(norm(feats), norm(query))
💬 算新客戶和某個範例的距離,越小代表越像。真實模型用注意力機制學出這個相似度。
●scores.append(-d / temp)
💬 距離取負號,越像分數越高;temp 是「挑剔度」,越小越只聽最像的那幾筆。
●w = [math.exp(s - m) for s in scores]
💬 用 softmax(把分數變成加總為 1 的權重)算出每個範例的發言份量;減去最大值是為了避免數字爆掉。
●return sum(wi * lab for wi, (f, lab) in zip(w, context)) / total
💬 把範例的答案(0 或 1)依權重加總,就得到「流失機率」,全程沒有任何訓練步驟。

🛠️ 動手做:用 30 行程式體驗「不訓練、看範例直接預測」

這是一個真實小專案:下載(或複製)檔案,照步驟在你電腦上跑起來。

📄 toy_icl.py ⬇ 下載
import math

# 有答案的表格(上下文):[月費, 使用月數] -> 是否退租 (1=退租, 0=續約)
CONTEXT = [
    ([300, 2], 1), ([350, 3], 1), ([280, 1], 1),
    ([200, 24], 0), ([250, 30], 0), ([180, 18], 0),
]
# 想預測的新客戶(沒有答案)
QUERY = [[320, 2], [210, 20], [260, 6]]


def predict(context, query, temp=0.3):
    cols = len(query)
    maxes = [max(abs(r[0][i]) for r in context) for i in range(cols)]

    def norm(x):
        return [x[i] / maxes[i] for i in range(cols)]

    scores = []
    for feats, _label in context:
        d = math.dist(norm(feats), norm(query))
        scores.append(-d / temp)
    m = max(scores)
    w = [math.exp(s - m) for s in scores]
    total = sum(w)
    return sum(wi * lab for wi, (_f, lab) in zip(w, context)) / total


if __name__ == "__main__":
    for q in QUERY:
        p = predict(CONTEXT, q)
        print(f"月費={q[0]} 使用月數={q[1]} -> 退租機率 {p:.2f}")
    # 試試看:把 CONTEXT 換成你自己的資料,模型權重完全沒有被更新
  1. 在 PowerShell 建立資料夾:New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\Desktop\toy_icl"
  2. 把上面的 toy_icl.py 內容存成 UTF-8 檔案,放進該資料夾(例如用記事本另存新檔,編碼選 UTF-8)
  3. 切換目錄:Set-Location "$env:USERPROFILE\Desktop\toy_icl"
  4. 執行:python toy_icl.py(若找不到 python,改用 py toy_icl.py;若中文亂碼,先執行 chcp 65001)
  5. 觀察輸出:前兩位客戶應分別得到偏高與偏低的退租機率;接著把 CONTEXT 的標籤改掉再執行,看預測如何立刻跟著變
  6. 想試真正的 Kumo Tabular:到 https://github.com/NVIDIA/structured-data-models 照官方說明安裝並載入 https://huggingface.co/nvidia/Kumo-Tabular 權重(本教案不代寫其 API,以官方文件為準)

🧠 工程思維透鏡(資深工程師看到的是什麼)

🔭 為什麼只用「人造資料」預訓練,反而是個聰明的取捨?
真實表格多半涉及隱私、授權,難以大量蒐集;人造資料則可以無限產生、刻意涵蓋各種欄位關係與缺值情況,還沒有版權與個資風險。代價是人造分佈與真實世界可能有落差,所以榜單上在真實資料集(TabArena 等)的成績才是關鍵證據。資深工程師看到這種設計,會先問:驗證用的資料和訓練用的資料是否完全分離。
🔭 「不用訓練」把成本搬到哪裡去了?
訓練成本並沒有消失,而是被一次性地挪到模型預訓練階段,由 NVIDIA 付掉;使用者改付「推論時把上下文讀進去」的成本。上下文越大,每次預測越貴,且大表格可能塞不進去。這是「攤提」的思路:把重複的學習工作集中做一次,換來每個任務的邊際成本趨近於零。
🔭 三種尺寸(2,800 萬到 2.15 億參數)說明了什麼設計理由?
表格任務常在公司內部伺服器或甚至筆電上跑,且需要低延遲;小模型能降低部署門檻。提供多個尺寸等於讓使用者自己在準確度和速度之間選位置,這正是標題「準確度與效率前緣」所指的權衡。

📝 隨堂考(點選答案,立即回饋)

Q1. Kumo Tabular 對新資料做預測時,最主要的運作方式是什麼?
✅ 素材明確說它給定有標籤的列後,在單次前向傳遞內預測新列,不訓練、不調參、不做特徵工程。
Q2. Kumo Tabular 的預訓練資料是什麼?
✅ 素材寫明它「只用人造資料」預訓練。
Q3. 下列哪一項不屬於模型需要做到的三件事之一?
✅ 三件事是:欄內意義、列內欄位互動、上下文列與查詢列的關聯;收集資料不是模型的工作。
Q4. 小琪想同時試「退租」與「欠費」兩個預測,用 Kumo Tabular 的思路,她最主要省下了什麼?
✅ 標籤還是要有(當上下文),省下的是每個任務從零訓練、調參、特徵加工的重複勞動。

🃏 翻牌記憶卡(先想答案,再點開對答)

Kumo Tabular 是什麼?點我翻面
NVIDIA 公開的表格資料預訓練基礎模型,支援分類與回歸,可商用(OpenMDW-1.1)。
in-context learning 在表格上的意思?點我翻面
把有標籤的表格當作範例讀進去,直接預測新列,不更新模型權重。
模型要做到哪三件事?點我翻面
理解欄內數值意義、理解列內欄位互動、把有標籤的上下文列與待預測列建立關聯。
缺值要先補嗎?點我翻面
不用補,模型有特別的處理方式,不需事先插補。
三種模型尺寸是多少?點我翻面
約 2,800 萬到 2.15 億個參數。
它在哪四個基準測試排第一?點我翻面
TabArena、BeyondArena、TALENT、ScoringBench。

✅ 離開前自測(全勾=這課真的學會了)

0%