GRIN

General Recognition theory, INverted — fit GRT models to identification data in milliseconds, with uncertainty you can actually trust.

What this is

General Recognition Theory asks a precise question: when someone identifies a stimulus that varies on two dimensions, are those dimensions processed independently? GRT answers it by treating each stimulus as a bivariate distribution in a perceptual space, and reading the shape of that space out of a confusion matrix.

The hard part has always been the fitting. Maximum likelihood needs an optimiser per participant, per model, and it gives you a point estimate with standard errors that are only as good as the asymptotics. GRIN replaces the optimiser with a neural network trained on millions of simulated experiments. Inference becomes a single forward pass — about a millisecond — and returns a posterior, not just a point.

Everything on this site runs in your browser. Your data are never uploaded anywhere.

Space Builder

Build a perceptual space with your own hands. Break separability, add a correlation, and watch the confusion matrix change. Then run a virtual experiment and see whether GRIN can find its way back to what you built.

Start here →

Space Builder: Time Attack

The same, plus response times. Discover the thing accuracy cannot tell you: three different processing architectures produce identical confusion matrices, and only the timing pulls them apart.

The interesting one →

Analyse

Bring your own data. Upload a trial-level CSV and get GRT parameters, model comparison, and a maximum-likelihood fit for reference — side by side, so you can see exactly where they agree and where they don't.

Bring your data →

Validate

Should you believe any of this? Parameter recovery, interval calibration, and head-to-head comparison against grtools, mdsdt, and plain maximum likelihood — on simulated and on real data.

Kick the tyres →

Dynamics

Everywhere else on this site is one fit, examined. GRIN is fast enough that fitting isn't something you do after data collection — it's something you can do during it. Watch what that actually unlocks.

Fit as a process →
The honest version

What GRIN is good at

  • Speed. A participant is a forward pass. Fitting 200 people is about as fast as fitting one, which makes hierarchical and adaptive designs practical for the first time.
  • Calibrated uncertainty. The network returns a posterior. We check that its 90% intervals actually contain the truth 90% of the time — see Validate.
  • Small samples. It was trained down to a single trial per stimulus, so it degrades gracefully instead of failing to converge.

What it is not

  • It is not assumption-free. GRIN is amortised over a prior. Feed it something that prior never generated and it will hand you a confident answer that means nothing. The app checks for this and says so.
  • It assumes decisional separability throughout, and 2×2 designs only.
  • It is not a replacement for thinking. A winning model class with a probability of 0.4 is not a finding, and we will tell you that too.
Cite / source

GRIN is open source. The simulator, the networks, the validation suite, and this site are all in the repository. If you use it, please cite the paper — and if you find a case where it breaks, please tell us, because that is the useful kind of bug.