Papers › Neural Additive Models: Interpretable Machine Learning with Neural Nets

Neural Additive Models: Interpretable Machine Learning with Neural Nets

29 Apr 2020NeurIPS 2021 12arXiv:2004.13912archive 2025-07-28

Rishabh Agarwal, Levi Melnick, Nicholas Frosst, Xuezhou Zhang, Ben Lengerich, Rich Caruana, Geoffrey Hinton

Deep neural networks (DNNs) are powerful black-box predictors that have achieved impressive performance on a wide variety of tasks. However, their accuracy comes at the cost of intelligibility: it is usually unclear how they make their decisions. This hinders their applicability to high stakes decision-making domains such as healthcare. We propose Neural Additive Models (NAMs) which combine some of the expressivity of DNNs with the inherent intelligibility of generalized additive models. NAMs learn a linear combination of neural networks that each attend to a single input feature. These networks are trained jointly and can learn arbitrarily complex relationships between their input feature and the output. Our experiments on regression and classification datasets show that NAMs are more accurate than widely used intelligible models such as logistic regression and shallow decision trees. They perform similarly to existing state-of-the-art generalized additive models in accuracy, but are more flexible because they are based on neural nets instead of boosted trees. To demonstrate this, we show how NAMs can be used for multitask learning on synthetic data and on the COMPAS recidivism data due to their composability, and demonstrate that the differentiability of NAMs allows them to train more complex interpretable models for COVID-19.

PaperPDFConference PDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="2004.13912")

Code

Syntology Ran 26 of 33 code samples harvested from 8 repositories linked to this paper; 7 have no recorded run. Of those that ran: 5 ran · honoured contract; 21 ran with no contract checked.

By repository: official repository: 2 samples from 1 repository, 1 ran; community (archive-listed): 31 samples from 7 repositories, 25 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

lemeln/nam officialpytorch report
AmrMKayid/nam mentioned on GitHubpytorch report
Habush/nam_jax mentioned on GitHubjax report
fortuinlab/la-nam mentioned on GitHubpytorchMIT report
kherud/neural-additive-models-pt mentioned on GitHubpytorch report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

33 samples harvested; 26 ran; 5 honoured the contract we drafted; 7 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

5ran · honoured contract
21ran
7unverified

Licence: 14 of the 33 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from 8 repositories linked to this paper, official or community; each sample names its own and says which. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted. community: Not in the archive's code links for this paper; a community repository Syntology harvested. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

FeatureNN lemeln/nam/nam/models/nam.py official repository ran MIT (permissive) · b0e0374e9293aa60 · report
NAM lemeln/nam/nam/models/nam.py official repository unverified MIT (permissive) · 8ef351ea39fd6b03 · report
ActivationLayer kherud/neural-additive-models-pt/nam/model.py community (archive-listed) ran no licence file found · pointer only · 51c75dde5a5a0f26 · report
ActivationLayer nickfrosst/neural_additive_models/models.py community (archive-listed) ran no licence file found · pointer only · 546b56723399f9fe · report
Categorical fortuinlab/la-nam/src/laplace_skorch/modules.py community (archive-listed) ran · metamorphic tier: invariant fingerprinted MIT (permissive) · 2c6a77de4277d87c · report
ExU AmrMKayid/nam/nam/models/nam.py community (archive-listed) ran MIT (permissive) · 4906a2527041456e · report
ExULayer kherud/neural-additive-models-pt/nam/model.py community (archive-listed) ran no licence file found · pointer only · 2d8839407b350dc9 · report
FeatureNN kherud/neural-additive-models-pt/nam/model.py community (archive-listed) ran no licence file found · pointer only · 8c55bd802f9906ca · report
FeatureNN AmrMKayid/nam/nam/models/nam.py community (archive-listed) ran fingerprinted MIT (permissive) · dd231b4d8f71426e · report
FeatureNN nickfrosst/neural_additive_models/models.py community (archive-listed) ran no licence file found · pointer only · 053cdbd7b148f0cc · report
FeatureNN saipradeep-peri/Neural_Additive_Models_Walkthrough/nam/models/nam.py community (archive-listed) ran fingerprinted no licence file found · pointer only · 243e71c28636308b · report
FeatureNN google-research/google-research/neural_additive_models/models.py community (archive-listed) ran Apache-2.0 (permissive) · 7a5f01663e901790 · report
LinReLU AmrMKayid/nam/nam/models/nam.py community (archive-listed) ran MIT (permissive) · 80fc1bfd32c3dd88 · report
Mixed fortuinlab/la-nam/src/laplace_skorch/modules.py community (archive-listed) ran fingerprinted MIT (permissive) · a3bc285602224f16 · report
Model AmrMKayid/nam/nam/models/nam.py community (archive-listed) ran MIT (permissive) · d3617b2e6bdec534 · report
NAM Habush/nam_jax/models.py community (archive-listed) ran Apache-2.0 (permissive) · 4a9811b70594bfe1 · report
NAM AmrMKayid/nam/nam/models/nam.py community (archive-listed) ran fingerprinted MIT (permissive) · a38b31cb2b4023e6 · report
NAM saipradeep-peri/Neural_Additive_Models_Walkthrough/nam/models/nam.py community (archive-listed) ran no licence file found · pointer only · 9c956ecf224f6108 · report
NeuralAdditiveModel kherud/neural-additive-models-pt/nam/model.py community (archive-listed) ran fingerprinted no licence file found · pointer only · cae4311ff1f77d90 · report
Numerical fortuinlab/la-nam/src/laplace_skorch/modules.py community (archive-listed) ran · metamorphic tier: invariant MIT (permissive) · 929c1f2bcaed27ca · report
ReLULayer kherud/neural-additive-models-pt/nam/model.py community (archive-listed) ran no licence file found · pointer only · 108769e8a1a48493 · report
TrainingState Habush/nam_jax/models.py community (archive-listed) ran · metamorphic tier: deterministic Apache-2.0 (permissive) · 22b5675b6955ad08 · report
exu Habush/nam_jax/models.py community (archive-listed) ran · honoured contract fingerprinted Apache-2.0 (permissive) · efd59dcfa39ea264 · report
exu nickfrosst/neural_additive_models/models.py community (archive-listed) ran · honoured contract fingerprinted no licence file found · pointer only · 8a597de16bdccb7a · report
relu Habush/nam_jax/models.py community (archive-listed) ran · honoured contract fingerprinted Apache-2.0 (permissive) · 454cfa9b8b9aed47 · report
relu nickfrosst/neural_additive_models/models.py community (archive-listed) ran · honoured contract fingerprinted no licence file found · pointer only · 207a3a66ecdc0f2f · report
relu_n nickfrosst/neural_additive_models/models.py community (archive-listed) ran · honoured contract fingerprinted no licence file found · pointer only · 2c40ca3eaec98f16 · report
ActivationLayer google-research/google-research/neural_additive_models/models.py community (archive-listed) unverified Apache-2.0 (permissive) · 9e20b229f2c0a6a3 · report
FeatureNet Habush/nam_jax/models.py community (archive-listed) unverified Apache-2.0 (permissive) · 8deb3a12b331286f · report
NAM nickfrosst/neural_additive_models/models.py community (archive-listed) unverified no licence file found · pointer only · 2c18cadeb8c1c012 · report
NAM google-research/google-research/neural_additive_models/models.py community (archive-listed) unverified Apache-2.0 (permissive) · d362a52791a5c0e9 · report
Router fortuinlab/la-nam/src/laplace_skorch/modules.py community (archive-listed) unverified MIT (permissive) · 9e7fc6cfe97a24f2 · report
truncated_normal_ kherud/neural-additive-models-pt/nam/model.py community (archive-listed) unverified no licence file found · pointer only · 9ea962308449a4bb · report

Tasks

Additive modelsBIG-bench Machine LearningDecision MakingInterpretable Machine Learningregression

Results from the paper archive 2025-07-28

No leaderboard rows for this paper in the archive.

Methods

Introduced by this paper: NAM

Logistic RegressionNAM

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections