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.
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 →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.
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.