.ipynbpublished

Large Tabular Model 입문과 소재 데이터 실습

Large Tabular Model 입문과 소재 데이터 실습

표 데이터에서도 사전학습된 모델을 활용할 수 있을까? 이 글은 Tabular Foundation Model의 핵심 원리를 설명하고, 합성 소재 데이터로 예측 모델을 비교하는 실습을 제공합니다. 머신러닝의 입력과 정답 개념을 알고 있다면 따라올 수 있습니다.

핵심은 모델의 크기보다 경험의 재사용입니다. 새로운 표마다 모델을 만드는 대신, 여러 표 문제를 풀도록 사전학습한 모델에 기존 관측값을 제공해 새 값을 예측할 수 있습니다. 다만 모든 표에서 기존 모델보다 좋다는 뜻은 아닙니다.

읽기 약 15분 · 실습 별도 · 자료 및 API 확인 2026년 9월 9일

1 표 데이터에서 무엇을 예측하는가

Ni 몰분율 소성 온도 ℃ 소성 시간 h 방전 용량 mAh/g
0.60 750 12 175
0.80 780 10 198
0.85 730 15 203
0.75 760 12 ?

위 숫자는 설명용 가상 데이터입니다. 한 행은 실험 하나, 열은 실험 조건이나 측정값입니다. 입력 벡터 x는 세 가지 조건, 정답 y는 방전 용량입니다. 앞의 실험을 이용해 마지막 행의 물성을 예측하는 것이 회귀입니다. 합격 여부처럼 범주를 예측하면 분류입니다.

Large Tabular Model은 단일한 표준 구조의 이름이 아닙니다. 문헌을 찾을 때는 Tabular Foundation Model 또는 TFM을 함께 검색하면 좋습니다. 이 글은 그중 문맥 내 학습을 사용하는 TabPFN 계열을 중심으로 설명합니다. 다른 TFM은 실제 표 사전학습이나 미세조정을 사용할 수 있으므로 여기의 설명을 모든 모델에 그대로 적용하면 안 됩니다.

2 모델을 학습하는 것과 문맥을 제공하는 것

일반적인 지도학습을 간단히 쓰면 다음과 같습니다.

D=\{(x_i,y_i)\}_{i=1}^{n},\qquad \theta_D=\mathrm{Train}(D),\qquad \hat y_*=f_{\theta_D}(x_*)

D는 이미 수행한 실험, θ_D는 그 데이터로 얻은 모델의 파라미터입니다. 새 데이터가 주어지면 모델을 다시 학습하거나 업데이트합니다. 트리 모델의 θ는 신경망 가중치가 아니라 분기와 리프 값 등으로 생각하면 됩니다.

문맥 내 학습을 사용하는 모델은 다음처럼 표현할 수 있습니다.

q_\theta(y_*\mid x_*,D),\qquad \hat y_*=\mathbb{E}_{q_\theta}[y_*]

사전학습된 θ를 고정하고, 관측 데이터 D와 질문 x_*를 함께 처리하여 예측 분포를 얻습니다. 평균을 취하면 하나의 예측값이 됩니다. 분류에서는 각 클래스의 확률을 사용합니다. 이처럼 예시를 입력 문맥으로 제공하는 것이 In-Context Learning, ICL입니다. TabPFN 원 논문

비유하면, 매번 새 학생을 가르치는 대신 여러 문제 유형을 공부한 학생에게 실험 기록과 새 문제를 함께 보여주는 방식입니다. 그렇다고 실험 기록을 무시하는 것은 아닙니다. 같은 질문이라도 관측 기록이 달라지면 답이 달라집니다.

질문 일반적인 개별 데이터 학습 기본 ICL 추론
새 표의 정보는 어디에 들어가나 학습 결과인 모델에 반영 입력 문맥에 제공
새 표마다 가중치를 업데이트하나 신경망에서는 보통 그렇다 필요하지 않다
사전학습 비용이 있나 해당 모델에 따라 다름 이미 지불된 사전학습 비용이 있다
새 관측을 추가하면 재학습 또는 업데이트 문맥을 갱신해 다시 예측

코드에 fit()이 있다고 반드시 역전파 학습이 일어나는 것은 아닙니다. TabPFN의 기본 사용에서 이 호출은 관측 데이터 준비와 추론 상태 구성 등의 역할을 합니다. 선택적인 미세조정 기능과 구분해야 합니다. 또한 GPR도 관측값을 조건으로 예측하므로, 관측 데이터를 활용한다는 사실 자체가 TFM만의 특징은 아닙니다.

3 합성 표로 무엇을 배우는가

TabPFN의 출발점은 다양한 생성 규칙에서 합성 데이터셋을 만들고 일부 정답을 숨겨 맞히는 사전학습입니다. 원 논문은 구조적 인과 모델과 베이지안 신경망을 활용합니다. 이는 소재 논문을 읽고 화학 상식을 습득했다는 의미와 다릅니다. TabPFN 원 논문

직관을 위한 가상 생성 규칙을 생각해 봅시다. 한 문제는 온도에 비례해 성능이 증가하고, 다른 문제는 중간 온도에서 최고 성능을 갖습니다. 또 다른 문제는 조성과 온도의 상호작용이 큽니다. 관측 잡음과 무관한 열도 섞습니다. 이러한 여러 문제를 풀며 적은 관측으로 관계를 추론하는 방식을 배웁니다.

\theta^*=\arg\min_\theta\mathbb E_{(D_C,D_Q)\sim p(D)}\left[-\sum_{(x,y)\in D_Q}\log q_\theta(y\mid x,D_C)\right]
기호 읽는 방법
p(D) 합성 표를 만들어 내는 분포
D_C 정답을 보여주는 관측 행
D_Q 정답을 숨기는 질문 행
q_θ 모델이 예측하는 정답의 확률 또는 밀도
−log q_θ 실제 정답에 낮은 확률을 주면 커지는 벌점

사전학습 때는 θ가 바뀝니다. 새 표에 기본 ICL을 적용할 때는 θ를 고정합니다. 두 단계를 구분하는 것이 중요합니다.

확률적 관점에서 PFN은 주어진 사전분포 아래의 사후 예측을 근사하도록 학습됩니다.

p(y_*\mid x_*,D)=\int p(y_*\mid x_*,\phi)\,p(\phi\mid D)\,d\phi

φ는 가능한 데이터 생성 규칙입니다. 관측과 잘 맞는 여러 규칙의 예측을 가중 평균한다고 읽으면 됩니다. 실제 세계가 사전학습에서 가정한 규칙과 다르면 성능과 불확실성이 부정확할 수 있습니다. TabPFN 원 논문

4 Attention은 무엇을 하는가

질문 행의 예측에 필요한 정보를 관측 행과 특성 표현에서 가져오는 장치로 생각할 수 있습니다. 일반적인 Attention의 수식은 다음과 같습니다.

\mathrm{Attention}(Q,K,V)=\mathrm{softmax}\left(\frac{QK^T}{\sqrt{d_k}}+M\right)V

Q는 찾으려는 정보, K는 비교할 표현, V는 전달할 정보입니다. M은 보면 안 되는 위치를 가리는 마스크입니다. 평가 행의 실제 정답을 모델이 보지 않도록 데이터 흐름을 설계해야 합니다. 이 식만으로 TabPFN 전체 구조가 정의되는 것은 아니며, 행과 열을 처리하는 방식은 버전마다 다릅니다.

단순히 원래 단위의 값끼리 가까운 행을 찾는 알고리즘은 아닙니다. 내부 표현을 거쳐 정보를 결합합니다. 또한 Attention 가중치를 그대로 인과적 중요도라고 해석하면 안 됩니다.

표의 열 이름을 바꾸는 것만으로 모델이 새 물리 개념을 이해한다고 기대해서도 안 됩니다. 이 실습에서 Ni 몰분율이라는 이름은 사람이 이해하기 위한 메타데이터이고, 물리 지식의 주입 수단은 아닙니다.

5 모델과 논문 버전을 구분하자

자료 공부할 주제
TabPFN 원 논문 ICLR 2023 합성 사전학습과 ICL의 출발점
TabPFN 후속 Nature 논문 2025 후속 표 파운데이션 모델 연구
TabICL 논문 2025 큰 표에서 ICL의 계산 비용을 다루는 방향
TabPFN 공식 저장소 실제 설치와 현재 API

TabICL은 행과 열의 정보를 처리하는 구조를 통해 큰 표에서 ICL을 확장하는 연구입니다. 논문에서 비교한 TabPFNv2의 조건을 모든 후속 버전의 한계로 해석하면 안 됩니다. TabICL 논문

공식 저장소의 기본 모델은 업데이트될 수 있습니다. 아래 실습은 ModelVersion.V2를 명시하여 기본 체크포인트 변경에 따른 혼동을 줄입니다. 실행한 패키지 버전과 체크포인트도 기록해야 재현성이 높아집니다. TabPFN 공식 저장소

6 파이썬 실습

목표는 최고 모델을 발표하는 것이 아니라 비교 절차를 익히는 것입니다. 240개 합성 실험으로 평균 예측, Random Forest, Histogram GBDT, GPR을 비교하고 TabPFN을 선택적으로 추가합니다. Histogram GBDT는 scikit-learn 구현으로 XGBoost와 같은 라이브러리는 아닙니다.

Python 3.10 이상 환경에서 시작합니다.

python -m pip install numpy pandas scikit-learn
python tabular_demo.py

# TabPFN까지 비교할 때
python -m pip install tabpfn
python tabular_demo.py --tabpfn --device cpu
# CUDA 환경이 준비되어 있다면 --device cuda

TabPFN은 최초 실행에 가중치 다운로드가 필요할 수 있습니다. 설치와 체크포인트 접근 문제는 모델 성능 실패와 구분하세요. 코드와 가중치의 이용 조건은 버전별로 확인해야 합니다. 이 예제는 로컬 패키지를 사용합니다. TabPFN 공식 저장소

합성 데이터 생성

rng = np.random.default_rng(42)
ni = rng.uniform(0.50, 0.95, 240)
temp = rng.uniform(680, 850, 240)
hours = rng.uniform(6, 20, 240)
y = (160 + 65 * (ni - 0.5)
     - 0.002 * (temp - 770)**2
     + 5 * np.log(hours / 6)
     + 0.08 * (ni - 0.7) * (temp - 770)
     + rng.normal(0, 3, 240))

Ni의 선형 효과, 최적 온도를 갖는 곡선, 시간에 따른 완만한 증가, 조성과 온도의 상호작용을 넣었습니다. 실제 NCM 물성 모델이 아니며 실험 조건 결정에 사용할 수 없습니다. 전체 코드는 첨부한 tabular_demo.py와 노트북에 있습니다.

TabPFN 호출의 핵심

from tabpfn import TabPFNRegressor
from tabpfn.constants import ModelVersion

model = TabPFNRegressor.create_default_for_version(
    ModelVersion.V2, device="cpu"
)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

X_test의 정답은 fit()에 전달하지 않습니다. 예측 후에만 실제 정답과 비교합니다. GPR의 표준화는 Pipeline 안에서 학습 데이터에만 맞추며, 다른 모델에 같은 표준화를 강제로 적용하지 않습니다.

두 평가 상황

평가 학습 데이터 평가 데이터 확인하는 문제
무작위 분할 3회 전체 범위에서 75% 남은 25% 비슷한 분포의 새 관측
고Ni 영역 제외 Ni < 0.84 Ni ≥ 0.84 관측하지 않은 조성 범위로의 확장

두 상황은 표본 수와 난도가 다르므로 점수 차이가 순수하게 외삽 효과만을 뜻하지는 않습니다. 같은 상황 안에서는 모든 모델에 동일한 분할을 적용합니다. 무작위 분할 3회는 같은 데이터의 재분할이므로 독립적인 실험 3회를 수행한 것과도 다릅니다.

결과 읽기

MAE는 평균 절대 오차, RMSE는 큰 오차에 더 민감한 지표입니다. 둘 다 이 예제에서는 mAh/g 단위이며 작을수록 좋습니다. R²는 클수록 좋지만 음수도 가능하며, 평가 정답의 평균을 상수로 사용하는 기준보다 나쁨을 뜻합니다. 코드의 Mean 모델은 학습 정답의 평균을 쓰므로 R²의 기준과 정확히 같지는 않습니다.

실행하면 scores.csv, synthetic_materials.csv, environment.json이 생성됩니다. 적합과 예측 시간을 따로 측정하지만 다운로드, 초기화, 캐시, 하드웨어의 영향을 받습니다. 엄밀한 속도 벤치마크로 사용하지 마세요.

7 실제 소재 데이터로 바꾸려면

우선 숫자형 입력만으로 시작하면 비교가 단순해집니다.

df = pd.read_csv("my_experiments.csv")
features = ["ni_fraction", "temperature_C", "hours"]
X = df[features]
y = df["capacity_mAh_g"]

첨부 코드의 make_materials() 호출을 이 데이터 준비 단계로 바꾸고, 실제 변수 수가 다르면 GPR의 length_scale=np.ones(3)도 입력 열 수에 맞춥니다. 결측값은 이 입문 예제에서 다루지 않으므로 처리 방식을 먼저 정해야 합니다.

같은 시편에서 나온 반복 측정은 같은 그룹으로 묶어 학습과 평가 사이에 섞이지 않게 합니다. 다음 달 실험을 예측하려면 시간 기준 분할을, 새 조성계를 예측하려면 조성계 기준 분할을 사용합니다. 타깃 측정 이후에만 알 수 있는 변수를 입력에 넣으면 실제 사용 시 재현할 수 없는 성능이 나올 수 있습니다.

모델 선택과 튜닝에는 학습 데이터 내부 검증을 사용하고 최종 평가 데이터는 따로 남깁니다. 이 자료의 고정 설정은 교육용 기준이며 튜닝을 충분히 한 모델 간 우열을 보여주지 않습니다.

8 Active Learning으로 연결하기

다음 실험을 고를 때는 평균 예측의 정확도만으로 충분하지 않습니다. 불확실성을 제공하는 모델이라면 별도 검증 데이터에서 예측 구간에 정답이 실제로 얼마나 들어오는지 확인해야 합니다. 분포 밖에서도 이 신뢰도가 유지되는지는 별도 문제입니다.

예를 들어 최대화 문제의 UCB는 다음처럼 쓸 수 있습니다.

a(x)=\mu(x)+\beta\sigma(x)

μ는 예상 성능, σ는 불확실성, β는 탐색에 줄 비중입니다. 모델마다 불확실성의 정의와 보정 수준이 달라 같은 β가 같은 행동을 만들지는 않습니다. 이 예제는 점 예측 비교까지 다루며 TabPFN의 예측 구간이나 획득 함수는 구현하지 않습니다.

포럼에서 함께 확인해 볼 질문은 다음과 같습니다.

  • 데이터 수를 50개와 200개로 바꾸면 모델 순위가 유지되는가?
  • 무작위 분할에서 좋던 모델이 고Ni 영역에서도 좋은가?
  • 실제 데이터에서는 조성보다 배치나 장비 차이를 외우고 있지 않은가?
  • 예측 오차가 줄어드는 것이 다음 실험의 성공률 증가로 이어지는가?

참고 자료

  1. TabPFN 원 논문 ICLR 2023 — 사전분포와 ICL의 원리.
  2. Accurate predictions on small data with a tabular foundation model — Nature 2025 후속 논문. 이 자료의 설명은 열람한 원 논문과 공식 구현을 중심으로 작성했습니다.
  3. TabICL 2025 — 큰 표로 확장하는 연구.
  4. TabPFN 공식 코드 — 설치, API, 모델 버전 안내.

실행 검증 범위

이 자료를 작성한 환경에서는 TabPFN 패키지가 설치되어 있지 않아 TabPFN 추론을 실행하지 않았습니다. 관련 코드는 공식 API를 확인하여 작성했습니다. 기본 네 모델의 실행 결과와 환경 기록은 실습 묶음의 verified_results에 포함됩니다. 결과는 교육용 합성 데이터에만 해당하며 TabPFN의 우수성을 입증하는 벤치마크가 아닙니다.

실제 실행에서 얻은 MAE는 다음과 같습니다. 무작위 분할은 세 번의 평균입니다.

모델 무작위 분할 MAE 고Ni 영역 MAE
학습 평균 예측 7.910 14.330
Random Forest 3.233 6.191
Histogram GBDT 3.084 5.280
GPR 2.548 3.211

GPR의 일부 커널 파라미터가 최적화 상한에 도달했다는 경고가 있었습니다. 예측은 완료되었지만 충분히 튜닝된 결과로 해석하면 안 됩니다. 이 합성 함수의 매끄러운 형태가 GPR에 유리할 수 있다는 점도 고려해야 합니다.

공유한 사람 · 이젠 술도 못마심

첨부 파일 2개

공개 노트북은 GitHub에도 공개됩니다. 삭제·숨김 후 최신 파일은 제거되지만 이전 커밋 기록과 이미 복사된 파일은 남을 수 있습니다.

함께 나눈 한마디 0

첫 댓글로 이야기를 이어가보세요.

로그인하면 댓글을 남길 수 있어요.