Korzhinskii-Net Is Getting Traction — And Here's the Honest Story of Why I Built It
When I uploaded Korzhinskii-Net to arXiv, I half-expected it to disappear into the void where most single-author geoscience-ML preprints go. Instead people started emailing.
7/17/20264 min read
When I uploaded Korzhinskii-Net to arXiv, I half-expected it to disappear into the void where most single-author geoscience-ML preprints go. Instead people started emailing. A few exploration geologists, a couple of PINN researchers, someone from a geothermal group who wanted to know if the same architecture would work for their problem. So before the paper gets flattened into an abstract and a benchmark number, I want to write down what it actually is and, more honestly, why I bothered.
What it does, in one breath
Korzhinskii-Net is a physics-informed neural network that predicts where ore is likely to be, not by learning correlations from surface maps, but by simulating the subsurface — Darcy flow, heat moving through rock, and a reaction term that decides where dissolved metal drops out of solution. You feed it a candidate site, it solves a small coupled PDE system over a 2-D radial slice of crust, and the mineralisation field lights up where the physics says metal should precipitate.
On six Russian ore provinces, under a deliberately harsh evaluation protocol, it hit a mean PR-AUC of 0.708 against 0.235 for the best classical baseline. More importantly for anyone who actually drills holes: it puts 95% of known deposits in the top 5% of the ranked grid. That's the number that matters, because drilling is expensive and being "roughly right on average" doesn't pay for a rig.
The honest part: why I built it
I'll be blunt about the thing that annoyed me into doing this.
Almost every mineral prospectivity paper I read followed the same recipe. Take a stack of surface layers — fault maps, geochemistry, magnetic anomalies. Train a random forest or a CNN. Report a great AUC. Publish. And the whole time nobody seemed bothered that the model had no idea what a hydrothermal system is. It was pattern-matching on shadows of the process, never the process itself. Metals don't concentrate because a fault happens to be visible from a satellite. They concentrate because hot fluid rises off an intrusion, carries dissolved metal upward, and dumps it when the temperature and chemistry cross a threshold. That's physics. That's chemistry. And it was completely absent from the models claiming to predict it.
The second thing that bothered me was the evaluation. If you do cross-validation naively in this field, your negatives sit right next to your positives, and the model "learns" that being near a known deposit means being a deposit. You get beautiful scores that mean nothing. A lot of impressive-looking results in this literature are, I suspect, partly that leak.
So I wanted to do two stubborn things at once. First, build a model that actually simulates the rock instead of guessing from the surface. Second, evaluate it in a way that would embarrass me if it were cheating — hard ring-shaped negatives around every positive, jittered depths so the network can't memorise elevation tags, baseline features turned off for the competitors so there's no informational asymmetry, and the same folds shared across all nine models. I wanted the baselines to have every fair chance.
They still lost by a factor of three. And the ablations tell you why: strip out the physics and Korzhinskii-Net collapses to exactly the level of a plain supervised MLP (0.171). The gains aren't architecture cosmetics. They're the heat equation.
The name
I named it after Dmitri Korzhinskii, whose mid-century theory of infiltration metasomatism describes exactly this — sharp mineral zones forming along a fluid path as a moving fluid equilibrates with the rock it passes through. The satisfying part is that the network rediscovers his picture on its own. It wasn't hard-coded to produce reaction fronts. The chimney of hot fluid over the intrusion, the convergence of Darcy flow, the peak in mineralisation right where concentration first exceeds equilibrium solubility along a streamline — that all emerges from the loss. It felt less like engineering and more like the physics was already there, waiting to be let out. Korzhinskii-Net is, in spirit, a differentiable Korzhinskii column.
What I'm not going to pretend
Since I'm being honest, here's what it doesn't do. The radial-symmetry assumption is a real simplification — Sukhoi Log, which is structurally controlled, is exactly the kind of deposit that bends this assumption. The reaction term is a one-component caricature of genuine metasomatic thermodynamics; there's no multi-metal speciation, no redox, no pH evolution yet. The proxy layers are coarse global open data, not proprietary geophysics. And I've only tested it where deposits are already catalogued, which means true out-of-distribution performance is still an open question I can't answer honestly yet.
None of that erases the result. But I'd rather you knew the edges of it than oversell.
Why it's open
The whole pipeline is on GitHub under Apache-2.0 — training code, the benchmark protocol, the evaluation harness, all of it. I did that on purpose. Half the reason results in this field are hard to trust is that nobody can rerun them under the same leakage controls. If you think my hard negatives are too easy, or my folds are leaking, or my baselines are hobbled — download it, break it, tell me. That's the only version of this work I actually respect.
The bigger bet is this: the pattern of coupling open geoscientific proxies to a physics-informed differentiable simulator under weak supervision isn't specific to ore. It should carry to geothermal assessment, carbon sequestration siting, subsurface hydrogen storage — anywhere the thing you care about lives underground and the physics is known but the data is sparse.
I built Korzhinskii-Net because I got tired of models that predict the rock without understanding it. If it's getting traction now, I hope it's for that reason and not the headline number. Simulate the subsurface. Don't just correlate its shadow.