<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anya Huang</title>
    <description>The latest articles on DEV Community by Anya Huang (@anyah_07).</description>
    <link>https://dev.to/anyah_07</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4140073%2F957cb904-7e3e-4b56-82a9-419673a90fa2.jpg</url>
      <title>DEV Community: Anya Huang</title>
      <link>https://dev.to/anyah_07</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anyah_07"/>
    <language>en</language>
    <item>
      <title>I Benchmarked 19 LLMs as ML Paper Reviewers. Size and Price Didn’t Predict the Score</title>
      <dc:creator>Anya Huang</dc:creator>
      <pubDate>Mon, 12 Oct 2026 06:59:04 +0000</pubDate>
      <link>https://dev.to/anyah_07/challenge-submission-5h1f</link>
      <guid>https://dev.to/anyah_07/challenge-submission-5h1f</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyoe1n2gmuljad5lgrk5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyoe1n2gmuljad5lgrk5f.png" alt="Rank 1-5" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3nrry49i1rutlehaprl5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3nrry49i1rutlehaprl5.png" alt="Rank 6-10" width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnw3et2hqh12ckfzkvw9o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnw3et2hqh12ckfzkvw9o.png" alt="Rank 11-15" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftkrctof5xgodxrocfnfb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftkrctof5xgodxrocfnfb.png" alt="Rank 16-20" width="800" height="331"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmtfqj5gt6z22xe365hzl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmtfqj5gt6z22xe365hzl.png" alt="Rank 21" width="798" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/kaggle-2026-09-23"&gt;Kaggle Benchmarking Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Benchmarked
&lt;/h2&gt;

&lt;p&gt;Can an LLM review an ML experiment and catch the flaw, &lt;em&gt;and&lt;/em&gt; stay quiet when there isn't one?&lt;/p&gt;

&lt;p&gt;I've been working on models trained on synthetic data that I then test on real data, and I keep seeing how easy it is to report a number that only holds on the synthetic side. I wanted to know whether an LLM would catch that kind of slip when reviewing a writeup.&lt;/p&gt;

&lt;p&gt;I wrote short experiment summaries, each with a conclusion and some evidence. The model must name one validity flaw from a fixed list or answer &lt;code&gt;none&lt;/code&gt;. There are 7 flaw types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;synthetic data presented as real-world evidence&lt;/li&gt;
&lt;li&gt;test-set leakage&lt;/li&gt;
&lt;li&gt;small-sample overclaims&lt;/li&gt;
&lt;li&gt;accuracy on imbalanced classes&lt;/li&gt;
&lt;li&gt;degenerate confidence intervals&lt;/li&gt;
&lt;li&gt;uncorrected multiple comparisons&lt;/li&gt;
&lt;li&gt;best-of-N seed cherry-picking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key design choice is &lt;strong&gt;matched pairs&lt;/strong&gt;. Each flaw has a flawed version and a sound twin that share the same skeleton and differ only in the detail that matters. For example, "tested 30 subgroups, no correction" versus "pre-specified one subgroup." A model can't win by pattern-matching on wording, and the sound twins measure false alarms.&lt;/p&gt;

&lt;p&gt;Every item runs twice: neutral, and with an added note that the authors consider the result conclusive. That gives 112 items per model (7 flaws × 2 variants × 4 reps × 2 conditions). Half the items are flawed and half are sound, so a model that answers &lt;code&gt;none&lt;/code&gt; every time scores 0.50.&lt;/p&gt;

&lt;h2&gt;
  
  
  Models Tested
&lt;/h2&gt;

&lt;p&gt;I registered 21 models from the models Kaggle offered, covering Anthropic, OpenAI, Google, Qwen, xAI, Z.ai and DeepSeek. I wanted several generations and sizes within a family (Haiku 4.5 vs 5.5, GPT-5.4 nano vs mini vs 5.5, Qwen3 Next vs 235B) as well as different vendors.&lt;/p&gt;

&lt;p&gt;Two models are not in the results:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek-R1&lt;/strong&gt; was still running when I ran out of time, so I excluded it rather than report a partial run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grok 4.5&lt;/strong&gt; shows 0.00. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That leaves 19 scored models.&lt;/p&gt;

&lt;h2&gt;
  
  
  Findings
&lt;/h2&gt;

&lt;p&gt;Score is accuracy over 112 items (the share where the model named the right flaw, or correctly said &lt;code&gt;none&lt;/code&gt;).&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rank&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Qwen 3 235B A22B Instruct&lt;/td&gt;
&lt;td&gt;1.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;GPT-5.4 mini&lt;/td&gt;
&lt;td&gt;0.98&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;GPT-5.5&lt;/td&gt;
&lt;td&gt;0.95&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Claude Haiku 5.5&lt;/td&gt;
&lt;td&gt;0.95&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Gemini 3.1 Flash-Lite Preview&lt;/td&gt;
&lt;td&gt;0.94&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Gemini 3.1 Pro Preview&lt;/td&gt;
&lt;td&gt;0.94&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Claude Opus 5&lt;/td&gt;
&lt;td&gt;0.93&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Gemma 4 26B A4B&lt;/td&gt;
&lt;td&gt;0.92&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Gemini 3.5 Flash-Lite&lt;/td&gt;
&lt;td&gt;0.92&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Gemini 3.7 Flash&lt;/td&gt;
&lt;td&gt;0.92&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;GLM-5&lt;/td&gt;
&lt;td&gt;0.91&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Claude Sonnet 5&lt;/td&gt;
&lt;td&gt;0.88&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Qwen 3 Next 80B Thinking&lt;/td&gt;
&lt;td&gt;0.86&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Grok 4.20 (Non-Reasoning)&lt;/td&gt;
&lt;td&gt;0.78&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;gpt-oss-20b&lt;/td&gt;
&lt;td&gt;0.78&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;GPT-5.4 nano&lt;/td&gt;
&lt;td&gt;0.76&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;Qwen 3 Next 80B Instruct&lt;/td&gt;
&lt;td&gt;0.70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;Claude Haiku 4.5&lt;/td&gt;
&lt;td&gt;0.68&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Gemma 4 31B&lt;/td&gt;
&lt;td&gt;0.55&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;1. Most models handle this, and the top is crowded.&lt;/strong&gt; Eleven of 19 models scored 0.91 or higher. At 112 items, one item is about 0.9 points, and the 95% interval is roughly ±4 points near 0.95, so I can't separate models within that group. For the same reason I wouldn't read much into 0.94 vs 0.92. My own test run of Claude Haiku 5.5 scored 0.946, and on Kaggle it showed 0.96 and later 0.95, so run-to-run noise is already a point or two.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Price, size and release date don't predict the score.&lt;/strong&gt; GPT-5.4 mini (0.98) beat GPT-5.5 (0.95). Claude Haiku 5.5 (0.95) beat Claude Sonnet 5 (0.88). But the pattern isn't "small wins": within OpenAI's 5.4 line, mini scored 0.98 and nano 0.76. Across generations, Haiku 4.5 scored 0.68 and Haiku 5.5 scored 0.95, a 27-point jump.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Qwen spans nearly the whole range.&lt;/strong&gt; Qwen 3 235B Instruct scored 1.00 (112 of 112). Qwen 3 Next 80B Instruct scored 0.70, and its thinking variant scored 0.86. Each is a single run, so I'd call the thinking gain suggestive, but it is large.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The bottom is close to "say none every time."&lt;/strong&gt; Gemma 4 31B scored 0.55, barely above the 0.50 you get from never flagging anything. I haven't looked at its answers, so I can't say whether it misses flaws, says &lt;code&gt;none&lt;/code&gt; too often, or has trouble with the answer format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. A perfect score has a degenerate interval.&lt;/strong&gt; Qwen 3 235B's 112/112 gives a normal-approximation confidence interval of [1.00, 1.00], which is exactly the "degenerate CI" flaw that one of my 7 item types is built around. A Wilson interval gives roughly 0.97 to 1.00. That is a fair reminder that 1.00 on 112 items is not proof of perfection.&lt;/p&gt;

&lt;h2&gt;
  
  
  What went wrong, and what I'd fix
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Thinking tokens ate my output budget.&lt;/strong&gt; My first full run, on Gemini 2.5 Flash, lost 24 of 112 items. I had capped output at 1,500 tokens, and Flash spent about 1,440 of them on reasoning, so the structured answer was cut off and couldn't be parsed. The failures weren't random: they were mostly sound items in the "confident" condition, which is the case the benchmark cares most about. Dropping them would have inflated the score. The fix was a larger cap with retries. I kept a guard that refuses to score a model when too many items fail.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My fix has a trade-off.&lt;/strong&gt; Items that fail all retries are scored as wrong (&lt;code&gt;invalid&lt;/code&gt;), not dropped. That keeps the item count fixed, but it means infrastructure failures count against the model. I believe that is what produced Grok 4.5's 0.00, but I did not confirm it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Templated data.&lt;/strong&gt; The items come from templates with a few variants per flaw, so strong models may be recognizing templates and not reviewing papers. 112 items is also small.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I didn't get to
&lt;/h2&gt;

&lt;p&gt;I built the benchmark to separate three things: missing real flaws, false alarms on sound twins, and being swayed by the "authors are confident" note. I ran out of time to break the scores down that way. So I can't say &lt;em&gt;why&lt;/em&gt; the lower models score lower, or whether the confident note changes anything. The data to answer it is there, since every item is tagged by variant, condition and flaw type.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next:&lt;/strong&gt; that breakdown, an open-ended version without the label list, real retracted-paper methods sections, harder and subtler flaws so the top models don't bunch at the ceiling, and sound twins reviewed for ambiguity.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Benchmark
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.kaggle.com/benchmarks/tasks/anyahuang/ml-review-flaw-detection" rel="noopener noreferrer"&gt;https://www.kaggle.com/benchmarks/tasks/anyahuang/ml-review-flaw-detection&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  kagglechallenge #ai #machinelearning #devchallenge
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>kagglechallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
