<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Neuroevolution | Language Technologies Lab</title><link>https://nlp.unibo.it/tag/neuroevolution/</link><atom:link href="https://nlp.unibo.it/tag/neuroevolution/index.xml" rel="self" type="application/rss+xml"/><description>Neuroevolution</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Tue, 01 Jul 2025 00:00:00 +0000</lastBuildDate><image><url>https://nlp.unibo.it/media/logo.svg</url><title>Neuroevolution</title><link>https://nlp.unibo.it/tag/neuroevolution/</link></image><item><title>Interlocking-free Selective Rationalization Through Genetic-based Learning</title><link>https://nlp.unibo.it/publication/ruggeri-signorelli-2025-interlocking/</link><pubDate>Tue, 01 Jul 2025 00:00:00 +0000</pubDate><guid>https://nlp.unibo.it/publication/ruggeri-signorelli-2025-interlocking/</guid><description>&lt;h2 id="research-setting"&gt;Research setting&lt;/h2&gt;
&lt;p&gt;Selective rationalization builds text classifiers that explain themselves.
Besides the label, the model returns a highlight, also called a rationale: the subset of input tokens on which its decision is based.
The most popular design is the select-then-predict (SPP) architecture.
A generator (the selector) reads the text and marks each token as selected or not, and a predictor classifies the text from the selected tokens alone, so the highlight is by construction what the decision rests on.&lt;/p&gt;
&lt;figure class="lt-viz lt-svg"&gt;
&lt;svg viewBox="0 0 800 345" role="img" aria-labelledby="spp-title" xmlns="http://www.w3.org/2000/svg"&gt;
&lt;defs&gt;&lt;marker id="spp-arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"&gt;&lt;path class="lt-s-head" d="M0 0 L10 5 L0 10 z"/&gt;&lt;/marker&gt;&lt;/defs&gt;
&lt;title id="spp-title"&gt;Select-then-predict on a Toy string: the selector keeps the three characters a, b, a, and the predictor reads only them to output class aba.&lt;/title&gt;
&lt;text class="lt-s-sub" x="60" y="34"&gt;INPUT STRING&lt;/text&gt;
&lt;rect class="lt-s-tok" x="60" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="75.0" y="69"&gt;c&lt;/text&gt;&lt;rect class="lt-s-tok" x="94" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="109.0" y="69"&gt;b&lt;/text&gt;&lt;rect class="lt-s-tok" x="128" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="143.0" y="69"&gt;c&lt;/text&gt;&lt;rect class="lt-s-tok" x="162" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="177.0" y="69"&gt;b&lt;/text&gt;&lt;rect class="lt-s-tok" x="196" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="211.0" y="69"&gt;a&lt;/text&gt;&lt;rect class="lt-s-tok" x="230" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="245.0" y="69"&gt;c&lt;/text&gt;&lt;rect class="lt-s-tok" x="264" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="279.0" y="69"&gt;a&lt;/text&gt;&lt;rect class="lt-s-tok" x="298" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="313.0" y="69"&gt;a&lt;/text&gt;&lt;rect class="lt-s-tok" x="332" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="347.0" y="69"&gt;b&lt;/text&gt;&lt;rect class="lt-s-tok" x="366" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="381.0" y="69"&gt;a&lt;/text&gt;&lt;rect class="lt-s-tok" x="400" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="415.0" y="69"&gt;c&lt;/text&gt;&lt;rect class="lt-s-tok" x="434" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="449.0" y="69"&gt;c&lt;/text&gt;&lt;rect class="lt-s-tok" x="468" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="483.0" y="69"&gt;b&lt;/text&gt;&lt;rect class="lt-s-tok" x="502" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="517.0" y="69"&gt;c&lt;/text&gt;&lt;rect class="lt-s-tok" x="536" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="551.0" y="69"&gt;b&lt;/text&gt;&lt;rect class="lt-s-tok" x="570" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="585.0" y="69"&gt;c&lt;/text&gt;&lt;rect class="lt-s-tok" x="604" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="619.0" y="69"&gt;a&lt;/text&gt;&lt;rect class="lt-s-tok" x="638" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="653.0" y="69"&gt;c&lt;/text&gt;&lt;rect class="lt-s-tok" x="672" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="687.0" y="69"&gt;b&lt;/text&gt;&lt;rect class="lt-s-tok" x="706" y="46" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono" x="721.0" y="69"&gt;c&lt;/text&gt;
&lt;path class="lt-s-arrow" marker-end="url(#spp-arrow)" d="M400 88 V108"/&gt;
&lt;rect class="lt-s-box lt-s-sel" x="250" y="112" width="300" height="56" rx="12"/&gt;
&lt;text class="lt-s-txt lt-s-strong" x="400" y="136"&gt;Selector (generator)&lt;/text&gt;
&lt;text class="lt-s-txt lt-s-small" x="400" y="156"&gt;keeps a few tokens, masks the rest&lt;/text&gt;
&lt;path class="lt-s-arrow" marker-end="url(#spp-arrow)" d="M400 172 V194"/&gt;
&lt;text class="lt-s-sub" x="60" y="200"&gt;HIGHLIGHT&lt;/text&gt;
&lt;rect class="lt-s-off" x="60" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="94" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="128" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="162" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="196" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="230" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="264" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-on" x="298" y="206" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono lt-s-ontxt" x="313.0" y="229"&gt;a&lt;/text&gt;&lt;rect class="lt-s-on" x="332" y="206" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono lt-s-ontxt" x="347.0" y="229"&gt;b&lt;/text&gt;&lt;rect class="lt-s-on" x="366" y="206" width="30" height="34" rx="6"/&gt;&lt;text class="lt-s-txt lt-s-mono lt-s-ontxt" x="381.0" y="229"&gt;a&lt;/text&gt;&lt;rect class="lt-s-off" x="400" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="434" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="468" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="502" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="536" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="570" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="604" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="638" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="672" y="206" width="30" height="34" rx="6"/&gt;&lt;rect class="lt-s-off" x="706" y="206" width="30" height="34" rx="6"/&gt;
&lt;path class="lt-s-arrow" marker-end="url(#spp-arrow)" d="M400 248 V272"/&gt;
&lt;rect class="lt-s-box lt-s-pred" x="250" y="276" width="300" height="56" rx="12"/&gt;
&lt;text class="lt-s-txt lt-s-strong" x="400" y="300"&gt;Predictor&lt;/text&gt;
&lt;text class="lt-s-txt lt-s-small" x="400" y="320"&gt;sees only the highlight&lt;/text&gt;
&lt;path class="lt-s-arrow" marker-end="url(#spp-arrow)" d="M554 304 H604"/&gt;
&lt;rect class="lt-s-label" x="608" y="284" width="132" height="40" rx="20"/&gt;
&lt;text class="lt-s-txt lt-s-strong lt-s-labeltxt" x="674" y="309"&gt;class: aba&lt;/text&gt;
&lt;/svg&gt;
&lt;figcaption&gt;The select-then-predict architecture on an example string built with the rules of the paper&amp;rsquo;s Toy dataset, where class aba is defined by the hidden pattern a, b, a. The predictor sees only the highlight, so the highlight is a faithful explanation of the label.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The model learns from labels only: no gold highlights are given during training.
Regularization terms push highlights to be short (sparsity) and made of connected tokens (contiguity).&lt;/p&gt;
&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;Training the generator and the predictor together leads to a problem called interlocking.
If the generator gets stuck on a poor selection, the predictor adapts to that selection, which in turn pushes the generator to keep it.
The two modules then settle in a poor solution.
Prior work only mitigates interlocking with sampling, extra guidance modules, heuristics, or additional regularization.&lt;/p&gt;
&lt;figure class="lt-viz lt-gap"&gt;
&lt;div class="lt-viz-scroll"&gt;
&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th scope="col"&gt;Approach&lt;/th&gt;&lt;th scope="col"&gt;Interlocking-free&lt;/th&gt;&lt;th scope="col"&gt;No feature-based heuristics&lt;/th&gt;&lt;th scope="col"&gt;No extra modules or tools&lt;/th&gt;&lt;th scope="col"&gt;Predictor feedback reaches the generator&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Differentiable sampling (Bao et al., 2018; Bastings et al., 2019)&lt;/th&gt;
&lt;td&gt;&lt;i class="fas fa-times-circle lt-no" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;no&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Weight sharing, FR (Liu et al., 2022)&lt;/th&gt;
&lt;td&gt;&lt;i class="fas fa-times-circle lt-no" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;no&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;External guidance (Yu et al., 2021; Sha et al., 2023; Hu and Yu, 2024)&lt;/th&gt;
&lt;td&gt;&lt;i class="fas fa-times-circle lt-no" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;no&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-times-circle lt-no" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;no&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Heuristic generator pre-training (Jain et al., 2020)&lt;/th&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-times-circle lt-no" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;no&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-times-circle lt-no" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;no&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-times-circle lt-no" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;no&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Three-stage training (Li et al., 2022)&lt;/th&gt;
&lt;td&gt;&lt;i class="fas fa-adjust lt-partial" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;partially&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="is-ours"&gt;
&lt;th scope="row"&gt;This paper (GenSPP) &lt;span class="lt-ours"&gt;This work&lt;/span&gt;&lt;/th&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;i class="fas fa-check-circle lt-yes" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="sr-only"&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;figcaption&gt;How GenSPP relates to the prior work discussed in the paper (Sections 1, 3, and 4).&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Objective.&lt;/strong&gt; Remove interlocking altogether by training the generator and the predictor disjointly, without heuristics, extra regularization, or architectural changes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="approach"&gt;Approach&lt;/h2&gt;
&lt;p&gt;GenSPP keeps the select-then-predict architecture and changes only how it is trained.
The generator is not trained with gradients: a genetic algorithm searches over its weights.
Each candidate set of generator weights is an individual, and the set of individuals is the population.
To score an individual, GenSPP freezes it and trains a brand new predictor on its highlights, so a generator is never judged by a predictor that has adapted to an earlier selection.
The score, called fitness, comes from the validation set: the lower the classification loss and the highlight regularization, which weigh equally, the higher the fitness.&lt;/p&gt;
&lt;figure class="lt-viz lt-stages" id="lt-stages-4250499484-2"&gt;
&lt;div class="lt-stages-tabs" role="tablist"&gt;
&lt;button type="button" role="tab" id="lt-stages-4250499484-2-tab-0" aria-controls="lt-stages-4250499484-2-panel-0" aria-selected="true" tabindex="0"&gt;1. Initialize&lt;/button&gt;
&lt;button type="button" role="tab" id="lt-stages-4250499484-2-tab-1" aria-controls="lt-stages-4250499484-2-panel-1" aria-selected="false" tabindex="-1"&gt;2. Train predictor&lt;/button&gt;
&lt;button type="button" role="tab" id="lt-stages-4250499484-2-tab-2" aria-controls="lt-stages-4250499484-2-panel-2" aria-selected="false" tabindex="-1"&gt;3. Fitness&lt;/button&gt;
&lt;button type="button" role="tab" id="lt-stages-4250499484-2-tab-3" aria-controls="lt-stages-4250499484-2-panel-3" aria-selected="false" tabindex="-1"&gt;4. Select parents&lt;/button&gt;
&lt;button type="button" role="tab" id="lt-stages-4250499484-2-tab-4" aria-controls="lt-stages-4250499484-2-panel-4" aria-selected="false" tabindex="-1"&gt;5. Crossover&lt;/button&gt;
&lt;button type="button" role="tab" id="lt-stages-4250499484-2-tab-5" aria-controls="lt-stages-4250499484-2-panel-5" aria-selected="false" tabindex="-1"&gt;6. Mutation&lt;/button&gt;
&lt;button type="button" role="tab" id="lt-stages-4250499484-2-tab-6" aria-controls="lt-stages-4250499484-2-panel-6" aria-selected="false" tabindex="-1"&gt;7. Score offspring&lt;/button&gt;
&lt;button type="button" role="tab" id="lt-stages-4250499484-2-tab-7" aria-controls="lt-stages-4250499484-2-panel-7" aria-selected="false" tabindex="-1"&gt;8. Survival&lt;/button&gt;
&lt;/div&gt;
&lt;div class="lt-stages-panel" role="tabpanel" id="lt-stages-4250499484-2-panel-0" aria-labelledby="lt-stages-4250499484-2-tab-0"&gt;
&lt;p class="lt-stages-name"&gt;1. Initialize&lt;/p&gt;
&lt;ol class="lt-stages-flow"&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Input text&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-evolved"&gt;
&lt;i class="fas fa-dna" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Generator&lt;/strong&gt;
&lt;span&gt;Optimized&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Highlights&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Predictor&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Label&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="lt-stages-text"&gt;A population of I generators is initialized at random (I = 50 in the experiments). Each individual is one full set of generator weights.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="lt-stages-panel" role="tabpanel" id="lt-stages-4250499484-2-panel-1" aria-labelledby="lt-stages-4250499484-2-tab-1"&gt;
&lt;p class="lt-stages-name"&gt;2. Train predictor&lt;/p&gt;
&lt;ol class="lt-stages-flow"&gt;
&lt;li class="is-data"&gt;
&lt;i class="fas fa-file-alt" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Input text&lt;/strong&gt;
&lt;span&gt;Data&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-frozen"&gt;
&lt;i class="fas fa-snowflake" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Generator&lt;/strong&gt;
&lt;span&gt;Frozen&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-data"&gt;
&lt;i class="fas fa-file-alt" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Highlights&lt;/strong&gt;
&lt;span&gt;Data&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-trained"&gt;
&lt;i class="fas fa-fire" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Predictor&lt;/strong&gt;
&lt;span&gt;Trained&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-data"&gt;
&lt;i class="fas fa-file-alt" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Label&lt;/strong&gt;
&lt;span&gt;Data&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="lt-stages-text"&gt;For each individual, a predictor is initialized from scratch and trained with gradient descent to minimize the classification loss, while the generator weights stay frozen.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="lt-stages-panel" role="tabpanel" id="lt-stages-4250499484-2-panel-2" aria-labelledby="lt-stages-4250499484-2-tab-2"&gt;
&lt;p class="lt-stages-name"&gt;3. Fitness&lt;/p&gt;
&lt;ol class="lt-stages-flow"&gt;
&lt;li class="is-data"&gt;
&lt;i class="fas fa-file-alt" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Input text&lt;/strong&gt;
&lt;span&gt;Data&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-frozen"&gt;
&lt;i class="fas fa-snowflake" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Generator&lt;/strong&gt;
&lt;span&gt;Frozen&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-data"&gt;
&lt;i class="fas fa-file-alt" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Highlights&lt;/strong&gt;
&lt;span&gt;Data&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-frozen"&gt;
&lt;i class="fas fa-snowflake" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Predictor&lt;/strong&gt;
&lt;span&gt;Frozen&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-data"&gt;
&lt;i class="fas fa-file-alt" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Label&lt;/strong&gt;
&lt;span&gt;Data&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="lt-stages-text"&gt;The trained predictor is evaluated on the validation set with the generator still frozen. Fitness is a minimization problem turned into a score: the lower the classification loss and the highlight regularization, which weigh equally, the higher the fitness.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="lt-stages-panel" role="tabpanel" id="lt-stages-4250499484-2-panel-3" aria-labelledby="lt-stages-4250499484-2-tab-3"&gt;
&lt;p class="lt-stages-name"&gt;4. Select parents&lt;/p&gt;
&lt;ol class="lt-stages-flow"&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Input text&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-evolved"&gt;
&lt;i class="fas fa-dna" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Generator&lt;/strong&gt;
&lt;span&gt;Optimized&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Highlights&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Predictor&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Label&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="lt-stages-text"&gt;From the population of I generators, I/2 pairs of parents are drawn by roulette-wheel selection, where each individual is picked with probability proportional to its fitness.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="lt-stages-panel" role="tabpanel" id="lt-stages-4250499484-2-panel-4" aria-labelledby="lt-stages-4250499484-2-tab-4"&gt;
&lt;p class="lt-stages-name"&gt;5. Crossover&lt;/p&gt;
&lt;ol class="lt-stages-flow"&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Input text&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-evolved"&gt;
&lt;i class="fas fa-dna" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Generator&lt;/strong&gt;
&lt;span&gt;Optimized&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Highlights&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Predictor&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Label&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="lt-stages-text"&gt;One-point crossover mixes each pair. A swap point is drawn at random, and the two parents exchange the parameters beyond that point, so the I/2 pairs produce I new generators.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="lt-stages-panel" role="tabpanel" id="lt-stages-4250499484-2-panel-5" aria-labelledby="lt-stages-4250499484-2-tab-5"&gt;
&lt;p class="lt-stages-name"&gt;6. Mutation&lt;/p&gt;
&lt;ol class="lt-stages-flow"&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Input text&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-evolved"&gt;
&lt;i class="fas fa-dna" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Generator&lt;/strong&gt;
&lt;span&gt;Optimized&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Highlights&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Predictor&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Label&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="lt-stages-text"&gt;Each parameter of the new generators is perturbed with Gaussian noise, with mutation probability pm. Crossover explores the weight space globally, and mutation explores it locally.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="lt-stages-panel" role="tabpanel" id="lt-stages-4250499484-2-panel-6" aria-labelledby="lt-stages-4250499484-2-tab-6"&gt;
&lt;p class="lt-stages-name"&gt;7. Score offspring&lt;/p&gt;
&lt;ol class="lt-stages-flow"&gt;
&lt;li class="is-data"&gt;
&lt;i class="fas fa-file-alt" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Input text&lt;/strong&gt;
&lt;span&gt;Data&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-frozen"&gt;
&lt;i class="fas fa-snowflake" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Generator&lt;/strong&gt;
&lt;span&gt;Frozen&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-data"&gt;
&lt;i class="fas fa-file-alt" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Highlights&lt;/strong&gt;
&lt;span&gt;Data&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-trained"&gt;
&lt;i class="fas fa-fire" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Predictor&lt;/strong&gt;
&lt;span&gt;Trained&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-data"&gt;
&lt;i class="fas fa-file-alt" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Label&lt;/strong&gt;
&lt;span&gt;Data&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="lt-stages-text"&gt;Every new generator goes through stages 2 and 3. It is frozen, a fresh predictor is trained on its highlights, and its fitness is computed.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="lt-stages-panel" role="tabpanel" id="lt-stages-4250499484-2-panel-7" aria-labelledby="lt-stages-4250499484-2-tab-7"&gt;
&lt;p class="lt-stages-name"&gt;8. Survival&lt;/p&gt;
&lt;ol class="lt-stages-flow"&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Input text&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-evolved"&gt;
&lt;i class="fas fa-dna" aria-hidden="true"&gt;&lt;/i&gt;
&lt;strong&gt;Generator&lt;/strong&gt;
&lt;span&gt;Optimized&lt;/span&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Highlights&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Predictor&lt;/strong&gt;
&lt;/li&gt;
&lt;li class="is-idle"&gt;
&lt;strong&gt;Label&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="lt-stages-text"&gt;Old and new generators compete for the I places of the next generation. Half of the places go to the fittest individuals, and the other half are filled by roulette-wheel selection.&lt;/p&gt;
&lt;/div&gt;
&lt;p class="lt-stages-legend"&gt;
&lt;span class="is-evolved"&gt;&lt;i class="fas fa-dna" aria-hidden="true"&gt;&lt;/i&gt; Optimized by the genetic search&lt;/span&gt;
&lt;span class="is-trained"&gt;&lt;i class="fas fa-fire" aria-hidden="true"&gt;&lt;/i&gt; Trained with gradients&lt;/span&gt;
&lt;span class="is-frozen"&gt;&lt;i class="fas fa-snowflake" aria-hidden="true"&gt;&lt;/i&gt; Kept frozen&lt;/span&gt;
&lt;span class="is-data"&gt;&lt;i class="fas fa-file-alt" aria-hidden="true"&gt;&lt;/i&gt; Data&lt;/span&gt;
&lt;/p&gt;
&lt;figcaption&gt;The GenSPP genetic algorithm (Algorithm 1 and Section 5 of the paper). Stages 1 to 3 run once on the initial population. Stages 4 to 8 form one generation, repeated for G generations (G = 100 in the main experiments).&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The fitness does not need to be differentiable, so GenSPP needs no sampling tricks and no dataset-specific sparsity target.&lt;/p&gt;
&lt;h2 id="results"&gt;Results&lt;/h2&gt;
&lt;p&gt;The paper compares GenSPP with four select-then-predict systems: FR, MGR, MCD, and G-RAT.
All systems share the same recurrent architecture, and every score is an average over five runs with different random seeds.&lt;/p&gt;
&lt;p&gt;Two datasets are used, both with gold highlights that serve only for evaluation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Toy&lt;/strong&gt; is a synthetic dataset introduced in the paper. It has 10k random strings of 20 characters, and each of three classes is defined by one hidden pattern (aba, baa, or abc), which is the gold highlight. Strings also contain pieces of the other patterns, so the full pattern must be selected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HateXplain&lt;/strong&gt; is a dataset of about 20k English social media posts from platforms such as X and Gab. Each post is labeled by at least three annotators, who also marked the words that justify the label. The paper uses it for binary hate speech classification and merges the annotators&amp;rsquo; highlights by majority voting.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Three metrics describe each system:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Highlight F1 (Hl-F1)&lt;/strong&gt; compares the selected tokens with the gold highlight, token by token. Higher is better.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Macro-F1 (Clf-F1)&lt;/strong&gt; measures classification quality, averaged over classes. Higher is better.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selection rate (R)&lt;/strong&gt; is the percentage of input tokens that the generator selects, from 0 to 100. Lower means shorter highlights.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="lt-viz lt-proj-numbers"&gt;&lt;li&gt;&lt;span class="lt-proj-number"&gt;76.02&lt;/span&gt;&lt;span class="lt-proj-number-label"&gt;Hl-F1 on Toy, against 65.70 for the best baseline&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="lt-proj-number"&gt;42.62&lt;/span&gt;&lt;span class="lt-proj-number-label"&gt;Hl-F1 on HateXplain, against 36.17 for the best baseline&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="lt-proj-number"&gt;6.51%&lt;/span&gt;&lt;span class="lt-proj-number-label"&gt;selection rate on HateXplain, against 24.68% to 25.55% for the baselines&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="lt-viz lt-bars"&gt;
&lt;figcaption class="lt-viz-title"&gt;Highlight F1 (Hl-F1) on Toy &lt;span&gt;(higher is better)&lt;/span&gt;&lt;/figcaption&gt;
&lt;ul&gt;&lt;li class="lt-bar" tabindex="0"&gt;
&lt;span class="lt-bar-label"&gt;FR&lt;/span&gt;
&lt;span class="lt-bar-track"&gt;&lt;span class="lt-bar-fill" style="--w: 54.06999999999999%"&gt;&lt;/span&gt;&lt;span class="lt-bar-err" style="--l: 50.05%; --ew: 8.04%" aria-hidden="true"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="lt-bar-value"&gt;54.07 &lt;small&gt;± 4.02&lt;/small&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li class="lt-bar" tabindex="0"&gt;
&lt;span class="lt-bar-label"&gt;MGR&lt;/span&gt;
&lt;span class="lt-bar-track"&gt;&lt;span class="lt-bar-fill" style="--w: 50.34%"&gt;&lt;/span&gt;&lt;span class="lt-bar-err" style="--l: 39.11%; --ew: 22.46%" aria-hidden="true"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="lt-bar-value"&gt;50.34 &lt;small&gt;± 11.23&lt;/small&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li class="lt-bar" tabindex="0"&gt;
&lt;span class="lt-bar-label"&gt;MCD&lt;/span&gt;
&lt;span class="lt-bar-track"&gt;&lt;span class="lt-bar-fill" style="--w: 65.7%"&gt;&lt;/span&gt;&lt;span class="lt-bar-err" style="--l: 61.940000000000005%; --ew: 7.519999999999999%" aria-hidden="true"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="lt-bar-value"&gt;65.70 &lt;small&gt;± 3.76&lt;/small&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li class="lt-bar" tabindex="0"&gt;
&lt;span class="lt-bar-label"&gt;G-RAT&lt;/span&gt;
&lt;span class="lt-bar-track"&gt;&lt;span class="lt-bar-fill" style="--w: 50.22%"&gt;&lt;/span&gt;&lt;span class="lt-bar-err" style="--l: 42.44%; --ew: 15.560000000000002%" aria-hidden="true"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="lt-bar-value"&gt;50.22 &lt;small&gt;± 7.78&lt;/small&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li class="lt-bar is-ours" tabindex="0"&gt;
&lt;span class="lt-bar-label"&gt;GenSPP &lt;span class="lt-ours"&gt;This work&lt;/span&gt;&lt;/span&gt;
&lt;span class="lt-bar-track"&gt;&lt;span class="lt-bar-fill" style="--w: 76.02%"&gt;&lt;/span&gt;&lt;span class="lt-bar-err" style="--l: 75.38%; --ew: 1.28%" aria-hidden="true"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="lt-bar-value"&gt;76.02 &lt;small&gt;± 0.64&lt;/small&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="lt-viz-note"&gt;Highlight quality when training from scratch. Source: Table 1 of the paper (average over five seed runs).&lt;/p&gt;
&lt;details class="lt-viz-table"&gt;
&lt;summary&gt;Show as table&lt;/summary&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope="col"&gt;System&lt;/th&gt;&lt;th scope="col"&gt;Highlight F1 (Hl-F1) on Toy&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;FR&lt;/td&gt;&lt;td&gt;54.07 ± 4.02&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;MGR&lt;/td&gt;&lt;td&gt;50.34 ± 11.23&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;MCD&lt;/td&gt;&lt;td&gt;65.70 ± 3.76&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;G-RAT&lt;/td&gt;&lt;td&gt;50.22 ± 7.78&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GenSPP (this work)&lt;/td&gt;&lt;td&gt;76.02 ± 0.64&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/details&gt;
&lt;/figure&gt;
&lt;figure class="lt-viz lt-bars"&gt;
&lt;figcaption class="lt-viz-title"&gt;Highlight F1 (Hl-F1) on HateXplain &lt;span&gt;(higher is better)&lt;/span&gt;&lt;/figcaption&gt;
&lt;ul&gt;&lt;li class="lt-bar" tabindex="0"&gt;
&lt;span class="lt-bar-label"&gt;FR&lt;/span&gt;
&lt;span class="lt-bar-track"&gt;&lt;span class="lt-bar-fill" style="--w: 31.15%"&gt;&lt;/span&gt;&lt;span class="lt-bar-err" style="--l: 28.59%; --ew: 5.12%" aria-hidden="true"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="lt-bar-value"&gt;31.15 &lt;small&gt;± 2.56&lt;/small&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li class="lt-bar" tabindex="0"&gt;
&lt;span class="lt-bar-label"&gt;MGR&lt;/span&gt;
&lt;span class="lt-bar-track"&gt;&lt;span class="lt-bar-fill" style="--w: 29.38%"&gt;&lt;/span&gt;&lt;span class="lt-bar-err" style="--l: 24.549999999999997%; --ew: 9.66%" aria-hidden="true"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="lt-bar-value"&gt;29.38 &lt;small&gt;± 4.83&lt;/small&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li class="lt-bar" tabindex="0"&gt;
&lt;span class="lt-bar-label"&gt;MCD&lt;/span&gt;
&lt;span class="lt-bar-track"&gt;&lt;span class="lt-bar-fill" style="--w: 27.92%"&gt;&lt;/span&gt;&lt;span class="lt-bar-err" style="--l: 26.26%; --ew: 3.32%" aria-hidden="true"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="lt-bar-value"&gt;27.92 &lt;small&gt;± 1.66&lt;/small&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li class="lt-bar" tabindex="0"&gt;
&lt;span class="lt-bar-label"&gt;G-RAT&lt;/span&gt;
&lt;span class="lt-bar-track"&gt;&lt;span class="lt-bar-fill" style="--w: 36.17%"&gt;&lt;/span&gt;&lt;span class="lt-bar-err" style="--l: 34.550000000000004%; --ew: 3.2400000000000007%" aria-hidden="true"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="lt-bar-value"&gt;36.17 &lt;small&gt;± 1.62&lt;/small&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li class="lt-bar is-ours" tabindex="0"&gt;
&lt;span class="lt-bar-label"&gt;GenSPP &lt;span class="lt-ours"&gt;This work&lt;/span&gt;&lt;/span&gt;
&lt;span class="lt-bar-track"&gt;&lt;span class="lt-bar-fill" style="--w: 42.62%"&gt;&lt;/span&gt;&lt;span class="lt-bar-err" style="--l: 41.89%; --ew: 1.46%" aria-hidden="true"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="lt-bar-value"&gt;42.62 &lt;small&gt;± 0.73&lt;/small&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="lt-viz-note"&gt;Highlight quality when training from scratch. Source: Table 1 of the paper (average over five seed runs).&lt;/p&gt;
&lt;details class="lt-viz-table"&gt;
&lt;summary&gt;Show as table&lt;/summary&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope="col"&gt;System&lt;/th&gt;&lt;th scope="col"&gt;Highlight F1 (Hl-F1) on HateXplain&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;FR&lt;/td&gt;&lt;td&gt;31.15 ± 2.56&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;MGR&lt;/td&gt;&lt;td&gt;29.38 ± 4.83&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;MCD&lt;/td&gt;&lt;td&gt;27.92 ± 1.66&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;G-RAT&lt;/td&gt;&lt;td&gt;36.17 ± 1.62&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GenSPP (this work)&lt;/td&gt;&lt;td&gt;42.62 ± 0.73&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/details&gt;
&lt;/figure&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Toy Clf-F1&lt;/th&gt;
&lt;th&gt;Toy R (%)&lt;/th&gt;
&lt;th&gt;HateXplain Clf-F1&lt;/th&gt;
&lt;th&gt;HateXplain R (%)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FR&lt;/td&gt;
&lt;td&gt;99.78&lt;/td&gt;
&lt;td&gt;14.80&lt;/td&gt;
&lt;td&gt;72.14&lt;/td&gt;
&lt;td&gt;25.55&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MGR&lt;/td&gt;
&lt;td&gt;99.92&lt;/td&gt;
&lt;td&gt;15.05&lt;/td&gt;
&lt;td&gt;71.14&lt;/td&gt;
&lt;td&gt;25.30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCD&lt;/td&gt;
&lt;td&gt;99.90&lt;/td&gt;
&lt;td&gt;15.18&lt;/td&gt;
&lt;td&gt;70.37&lt;/td&gt;
&lt;td&gt;25.07&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;G-RAT&lt;/td&gt;
&lt;td&gt;99.36&lt;/td&gt;
&lt;td&gt;14.81&lt;/td&gt;
&lt;td&gt;73.85&lt;/td&gt;
&lt;td&gt;24.68&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GenSPP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;99.00&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;11.47&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;69.71&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;6.51&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;Classification quality and selection rate. Source: Table 1 of the paper.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;GenSPP selects the most accurate highlights on both datasets, 10.3 Hl-F1 points above the best baseline on Toy and 6.5 points above it on HateXplain.
Its classification macro-F1 stays comparable to the baselines, and its highlights are much shorter on HateXplain.
Its scores also vary less across seed runs, while MGR and G-RAT are notably unstable on Toy.
In a second test, the generator starts from a deliberately skewed state, pre-trained to select the first token according to the class label, which imitates interlocking: GenSPP recovers and reaches 74.28 Hl-F1 on Toy and 42.81 on HateXplain with G = 150 generations (Table 2 of the paper).&lt;/p&gt;
&lt;h2 id="takeaways"&gt;Takeaways&lt;/h2&gt;
&lt;ol class="lt-viz lt-takeaways"&gt;
&lt;li&gt;&lt;strong&gt;Interlocking can be removed, not only mitigated.&lt;/strong&gt;&lt;span&gt;Judging each frozen generator with a freshly trained predictor breaks the dependency between the two modules that causes interlocking.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Genetic search fits rationalization well.&lt;/strong&gt;&lt;span&gt;It needs no differentiable objective, no sampling, and no dataset-specific sparsity threshold, and it produced the best highlights on both benchmarks.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The cost is training time.&lt;/strong&gt;&lt;span&gt;A seed run takes about 36 minutes on Toy and 78 minutes on HateXplain, against about 8 and 4 minutes for the baselines. The paper notes that parallel evaluation of individuals could reduce this.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item></channel></rss>