Sparsity Normalization

April 16, 2026 · View on GitHub

"Sparsity Normalization: Stabilizing the Expected Outputs of Deep Networks" 공식 구현 코드

arXiv: https://arxiv.org/abs/1906.00150


개요

희소 입력(sparse input)이 있을 때 신경망의 출력이 불안정해지는 Variable Sparsity Problem (VSP) 을 분석하고, 이를 해결하는 Sparsity Normalization (SN) 을 제안합니다.

SN은 각 샘플에서 관찰된 피처 수 cic_i로 출력을 정규화합니다:

h^=f(xW)Kci\hat{h} = f(xW) \cdot \frac{K'}{c_i}

K=E[ci]K' = \mathbb{E}[c_i] 는 학습 데이터 평균 관찰 수로, SN은 관측 수에 무관하게 기댓값을 일정하게 유지합니다.


실험 모듈

모듈프레임워크설명데이터셋
uci/PyTorchUCI 회귀 (결측값 삽입 실험)sklearn 자동 로드
cfautorec/TensorFlow 1.xAutoRec 협업 필터링MovieLens (자동 다운로드)
cfnade/TensorFlow 1.xCF-NADE 협업 필터링MovieLens (자동 다운로드)
emr/PyTorchICU 사망률 예측 (LSTM)PhysioNet 2012 (직접 다운로드 필요)

설치

각 모듈은 독립적인 환경에서 실행 가능합니다. 사용할 모듈 폴더의 requirements.txt 를 설치하세요.

# PyTorch 기반 모듈 (uci, emr)
pip install torch numpy scikit-learn tqdm

# TensorFlow 기반 모듈 (cfautorec, cfnade)
pip install tensorflow==1.12.0 numpy scipy requests tqdm

빠른 시작

# UCI 회귀 실험
python3 -m uci.trainer --dataset=boston --sparsity_normalization=True

# AutoRec 협업 필터링
python3 -m cfautorec.trainer --dataset=movielens-100k --normalize_input=True

# CF-NADE 협업 필터링
python3 -m cfnade.trainer --dataset=movielens-1m --sparsity_normalization=True

# PhysioNet 2012 사망률 예측 (데이터 준비 후)
python3 -m emr.preprocessor
python3 -m emr.trainer --mode=SN

자세한 실행 방법은 각 모듈의 README를 참고하세요.


인용

@article{yi2019sparsity,
  title={Sparsity Normalization: Stabilizing the Expected Outputs of Deep Networks},
  author={Yi, Joonyoung},
  journal={arXiv preprint arXiv:1906.00150},
  year={2019}
}