A GAN learns to disguise a drone attack. A detector learns to catch it anyway.
6.0The output scale that fixed a critic winning for the wrong reason
What the first metric hid
1The critic separated real swarms from generated ones, so the GAN looked like it was training.
2It was separating them by magnitude alone. A bare Tanh output covers under 40% of the real feature range, so the critic never had to look at the behaviour. That is what broke run 1.
Markdown to a typeset PDF, with the PDF format written out byte by byte. No dependencies.
0 bytesThe size of requirements.txt, and that is not an oversight
What the first metric hid
1The output looked right, and the tests passed.
2Looking right is not being reproducible. A test walks the syntax tree and fails the build if the engine imports a clock, so the same input cannot quietly produce a different file tomorrow.
An AI legal-compliance platform for Indian small and medium businesses.
84.8%Macro F1 for BERT named-entity recognition
What the first metric hid
1Macro F1 of 84.8% across the entity types.
2Macro F1 averages every class equally, so a rare obligation type carries the same weight as a common one. That is the number I want for compliance, where the rare clause is the one that bites.
Drone navigation with no GPS, using an error-state Kalman filter over three sensors.
IMU + VIO + UWBThree sensors, one ESKF
What the first metric hid
1The fused trajectory tracked the truth, so the fusion looked right.
2Each sensor has a different failure mode. VIO fails on blank walls, UWB fails behind metal, and the IMU never fails, it just drifts. The test that matters is dropping one at a time.
A star swells, collapses and explodes in the browser. A separate NumPy model checks the physics.
10,000Particles in the NumPy prototype that cross-checks the browser physics
What the first metric hid
1The explosion looked right on screen, and looking right is most of the job in a visualisation.
2Looking right is not the physics being right. A separate NumPy implementation runs the same rules headless and logs the numbers, so the shader and the maths have to agree.
Six models on 108,353 observations, and the honest finding is that the ensemble bought almost nothing.
0.0004The R squared a Random Forest gained over plain linear regression
What the first metric hid
1Best model: Random Forest, test R squared 0.9414. That is the number a dashboard would show.
2Plain linear regression scores 0.9410 on the same split. The forest wins by 0.0004, and its train score of 0.983 against 0.941 on test says it is memorising rather than learning.
Predicting bioactivity for colon-cancer compounds, leading the ML side of a team of five.
5Person research team, ML led by me
What the first metric hid
1The models scored well on the held-out split.
2Molecules are not independent rows. Very similar compounds landing on both sides of a random split make a model look better than it is. Chemistry decides what counts as a fair split.