Complete report folder move to paper
Browse files- acm/AFFECTOR-ARC-ACM-source.zip +0 -3
- acm/AFFECTOR-ARC-ACM.bbl +0 -264
- acm/AFFECTOR-ARC-ACM.pdf +0 -3
- acm/AFFECTOR-ARC-ACM.tex +0 -741
- acm/LITERATURE_SOURCES.md +0 -100
- acm/README.md +0 -21
- acm/references.bib +0 -120
- acm/source.md +0 -357
acm/AFFECTOR-ARC-ACM-source.zip
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:b853151dde3750c4ebb79ff61d2930ada77ac75456f79fcd03b2535b6fa05f01
|
| 3 |
-
size 214206
|
|
|
|
|
|
|
|
|
|
|
|
acm/AFFECTOR-ARC-ACM.bbl
DELETED
|
@@ -1,264 +0,0 @@
|
|
| 1 |
-
%%% -*-BibTeX-*-
|
| 2 |
-
%%% Do NOT edit. File created by BibTeX with style
|
| 3 |
-
%%% ACM-Reference-Format-Journals [18-Jan-2012].
|
| 4 |
-
|
| 5 |
-
\begin{thebibliography}{12}
|
| 6 |
-
|
| 7 |
-
%%% ====================================================================
|
| 8 |
-
%%% NOTE TO THE USER: you can override these defaults by providing
|
| 9 |
-
%%% customized versions of any of these macros before the \bibliography
|
| 10 |
-
%%% command. Each of them MUST provide its own final punctuation,
|
| 11 |
-
%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two
|
| 12 |
-
%%% do not use final punctuation, in order to avoid confusing it with
|
| 13 |
-
%%% the Web address.
|
| 14 |
-
%%%
|
| 15 |
-
%%% To suppress output of a particular field, define its macro to expand
|
| 16 |
-
%%% to an empty string, or better, \unskip, like this:
|
| 17 |
-
%%%
|
| 18 |
-
%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax
|
| 19 |
-
%%%
|
| 20 |
-
%%% \def \showDOI #1{\unskip} % plain TeX syntax
|
| 21 |
-
%%%
|
| 22 |
-
%%% ====================================================================
|
| 23 |
-
|
| 24 |
-
\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi
|
| 25 |
-
\ifx \showDOI \undefined \def \showDOI #1{#1}\fi
|
| 26 |
-
\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi
|
| 27 |
-
\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi
|
| 28 |
-
\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi
|
| 29 |
-
\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi
|
| 30 |
-
\ifx \shownote \undefined \def \shownote #1{#1} \fi
|
| 31 |
-
\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi
|
| 32 |
-
\ifx \showURL \undefined \def \showURL {\relax} \fi
|
| 33 |
-
% The following commands are used for tagged output and should be
|
| 34 |
-
% invisible to TeX
|
| 35 |
-
\providecommand\bibfield[2]{#2}
|
| 36 |
-
\providecommand\bibinfo[2]{#2}
|
| 37 |
-
\providecommand\natexlab[1]{#1}
|
| 38 |
-
\providecommand\showeprint[2][]{arXiv:#2}
|
| 39 |
-
|
| 40 |
-
\bibitem[Cui and Chen(2025)]%
|
| 41 |
-
{cui2025pas}
|
| 42 |
-
\bibfield{author}{\bibinfo{person}{Sasha Cui} {and} \bibinfo{person}{Zhongren
|
| 43 |
-
Chen}.} \bibinfo{year}{2025}\natexlab{}.
|
| 44 |
-
\newblock \bibinfo{title}{{Painless Activation Steering: An Automated,
|
| 45 |
-
Lightweight Approach for Post-Training Large Language Models}}.
|
| 46 |
-
\newblock
|
| 47 |
-
\newblock
|
| 48 |
-
\showeprint[arxiv]{2509.22739v3}
|
| 49 |
-
\urldef\tempurl%
|
| 50 |
-
\url{https://arxiv.org/abs/2509.22739v3}
|
| 51 |
-
\showURL{%
|
| 52 |
-
\tempurl}
|
| 53 |
-
\newblock
|
| 54 |
-
\shownote{Cited version dated 2026-05-15; metadata checked 2026-11-13}.
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
\bibitem[Diallo et~al\mbox{.}(2026)]%
|
| 58 |
-
{diallo2026style}
|
| 59 |
-
\bibfield{author}{\bibinfo{person}{Diaoulé Diallo}, \bibinfo{person}{Katharina
|
| 60 |
-
Dworatzyk}, \bibinfo{person}{Sophie Jentzsch}, \bibinfo{person}{Peer
|
| 61 |
-
Schütt}, \bibinfo{person}{Sabine Theis}, {and} \bibinfo{person}{Tobias
|
| 62 |
-
Hecking}.} \bibinfo{year}{2026}\natexlab{}.
|
| 63 |
-
\newblock \bibinfo{title}{{The Effectiveness of Style Vectors for Steering
|
| 64 |
-
Large Language Models: A Human Evaluation}}.
|
| 65 |
-
\newblock
|
| 66 |
-
\newblock
|
| 67 |
-
\showeprint[arxiv]{2601.21505v1}
|
| 68 |
-
\urldef\tempurl%
|
| 69 |
-
\url{https://arxiv.org/abs/2601.21505v1}
|
| 70 |
-
\showURL{%
|
| 71 |
-
\tempurl}
|
| 72 |
-
\newblock
|
| 73 |
-
\shownote{Cited version dated 2026-01-29; metadata checked 2026-11-13}.
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
\bibitem[Ferrando et~al\mbox{.}(2025)]%
|
| 77 |
-
{ferrando2025dsas}
|
| 78 |
-
\bibfield{author}{\bibinfo{person}{Alex Ferrando}, \bibinfo{person}{Xavier
|
| 79 |
-
Suau}, \bibinfo{person}{Jordi Gonzàlez}, {and} \bibinfo{person}{Pau
|
| 80 |
-
Rodriguez}.} \bibinfo{year}{2025}\natexlab{}.
|
| 81 |
-
\newblock \bibinfo{title}{{Dynamically Scaled Activation Steering}}.
|
| 82 |
-
\newblock
|
| 83 |
-
\newblock
|
| 84 |
-
\showeprint[arxiv]{2512.03661v2}
|
| 85 |
-
\urldef\tempurl%
|
| 86 |
-
\url{https://arxiv.org/abs/2512.03661v2}
|
| 87 |
-
\showURL{%
|
| 88 |
-
\tempurl}
|
| 89 |
-
\newblock
|
| 90 |
-
\shownote{Cited version dated 2026-07-30; metadata checked 2026-11-13}.
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
\bibitem[Ha et~al\mbox{.}(2026)]%
|
| 94 |
-
{ha2026empathy}
|
| 95 |
-
\bibfield{author}{\bibinfo{person}{JuHeon Ha}, \bibinfo{person}{Byounghan Lee},
|
| 96 |
-
\bibinfo{person}{Yunseo Choi}, {and} \bibinfo{person}{Kyung-Ah Sohn}.}
|
| 97 |
-
\bibinfo{year}{2026}\natexlab{}.
|
| 98 |
-
\newblock \bibinfo{title}{{Empathy Is Steerable but Multi-Axial: Mechanism
|
| 99 |
-
Geometry and Persona Effects in LLMs}}.
|
| 100 |
-
\newblock
|
| 101 |
-
\newblock
|
| 102 |
-
\showeprint[arxiv]{2609.15654v1}
|
| 103 |
-
\urldef\tempurl%
|
| 104 |
-
\url{https://arxiv.org/abs/2609.15654v1}
|
| 105 |
-
\showURL{%
|
| 106 |
-
\tempurl}
|
| 107 |
-
\newblock
|
| 108 |
-
\shownote{Cited version dated 2026-09-14; metadata checked 2026-11-13}.
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
\bibitem[Jeong(2026)]%
|
| 112 |
-
{jeong2026emotion}
|
| 113 |
-
\bibfield{author}{\bibinfo{person}{Jihoon Jeong}.}
|
| 114 |
-
\bibinfo{year}{2026}\natexlab{}.
|
| 115 |
-
\newblock \bibinfo{title}{{Extracting and Steering Emotion Representations in
|
| 116 |
-
Small Language Models: A Methodological Comparison}}.
|
| 117 |
-
\newblock
|
| 118 |
-
\newblock
|
| 119 |
-
\showeprint[arxiv]{2604.04064v1}
|
| 120 |
-
\urldef\tempurl%
|
| 121 |
-
\url{https://arxiv.org/abs/2604.04064v1}
|
| 122 |
-
\showURL{%
|
| 123 |
-
\tempurl}
|
| 124 |
-
\newblock
|
| 125 |
-
\shownote{Cited version dated 2026-04-05; metadata checked 2026-11-13}.
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
\bibitem[Panickssery et~al\mbox{.}(2024)]%
|
| 129 |
-
{panickssery2024caa}
|
| 130 |
-
\bibfield{author}{\bibinfo{person}{Nina Panickssery}, \bibinfo{person}{Nick
|
| 131 |
-
Gabrieli}, \bibinfo{person}{Julian Schulz}, \bibinfo{person}{Meg Tong},
|
| 132 |
-
\bibinfo{person}{Evan Hubinger}, {and} \bibinfo{person}{Alexander~Matt
|
| 133 |
-
Turner}.} \bibinfo{year}{2024}\natexlab{}.
|
| 134 |
-
\newblock \bibinfo{title}{{Steering Llama 2 via Contrastive Activation
|
| 135 |
-
Addition}}.
|
| 136 |
-
\newblock
|
| 137 |
-
\newblock
|
| 138 |
-
\showeprint[arxiv]{2312.06681v4}
|
| 139 |
-
\urldef\tempurl%
|
| 140 |
-
\url{https://arxiv.org/abs/2312.06681v4}
|
| 141 |
-
\showURL{%
|
| 142 |
-
\tempurl}
|
| 143 |
-
\newblock
|
| 144 |
-
\shownote{Cited version dated 2024-07-05; metadata checked 2026-11-13}.
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
\bibitem[Shu et~al\mbox{.}(2026)]%
|
| 148 |
-
{shu2026emotion}
|
| 149 |
-
\bibfield{author}{\bibinfo{person}{Bangzhao Shu}, \bibinfo{person}{Arinjay
|
| 150 |
-
Singh}, {and} \bibinfo{person}{Mai ElSherief}.}
|
| 151 |
-
\bibinfo{year}{2026}\natexlab{}.
|
| 152 |
-
\newblock \bibinfo{title}{{Why Are Some Emotions Harder for LLMs? Uncovering
|
| 153 |
-
the Causal Mechanisms of Emotion Inference via Sparse Autoencoders}}.
|
| 154 |
-
\newblock
|
| 155 |
-
\newblock
|
| 156 |
-
\showeprint[arxiv]{2604.25866v3}
|
| 157 |
-
\urldef\tempurl%
|
| 158 |
-
\url{https://arxiv.org/abs/2604.25866v3}
|
| 159 |
-
\showURL{%
|
| 160 |
-
\tempurl}
|
| 161 |
-
\newblock
|
| 162 |
-
\shownote{Cited version dated 2026-10-24; metadata checked 2026-11-13}.
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
\bibitem[Sun et~al\mbox{.}(2026)]%
|
| 166 |
-
{sun2026emotion}
|
| 167 |
-
\bibfield{author}{\bibinfo{person}{Moran Sun}, \bibinfo{person}{Tianlin Li},
|
| 168 |
-
\bibinfo{person}{Yuwei Zheng}, \bibinfo{person}{Zhenhong Zhou},
|
| 169 |
-
\bibinfo{person}{Aishan Liu}, \bibinfo{person}{Xianglong Liu}, {and}
|
| 170 |
-
\bibinfo{person}{Yang Liu}.} \bibinfo{year}{2026}\natexlab{}.
|
| 171 |
-
\newblock \bibinfo{title}{{How Emotion Shapes the Behavior of LLMs and Agents:
|
| 172 |
-
A Mechanistic Study}}.
|
| 173 |
-
\newblock
|
| 174 |
-
\newblock
|
| 175 |
-
\showeprint[arxiv]{2604.00005v1}
|
| 176 |
-
\urldef\tempurl%
|
| 177 |
-
\url{https://arxiv.org/abs/2604.00005v1}
|
| 178 |
-
\showURL{%
|
| 179 |
-
\tempurl}
|
| 180 |
-
\newblock
|
| 181 |
-
\shownote{Cited version dated 2026-03-09; metadata checked 2026-11-13}.
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
\bibitem[Turner et~al\mbox{.}(2023)]%
|
| 185 |
-
{turner2023actadd}
|
| 186 |
-
\bibfield{author}{\bibinfo{person}{Alex Turner}, \bibinfo{person}{Lisa
|
| 187 |
-
Thiergart}, \bibinfo{person}{David Udell}, \bibinfo{person}{Gavin Leech},
|
| 188 |
-
\bibinfo{person}{Ulisse Mini}, {and} \bibinfo{person}{Monte MacDiarmid}.}
|
| 189 |
-
\bibinfo{year}{2023}\natexlab{}.
|
| 190 |
-
\newblock \bibinfo{title}{{Activation Addition: Steering Language Models
|
| 191 |
-
Without Optimization}}.
|
| 192 |
-
\newblock
|
| 193 |
-
\newblock
|
| 194 |
-
\showeprint[arxiv]{2308.10248v1}
|
| 195 |
-
\urldef\tempurl%
|
| 196 |
-
\url{https://arxiv.org/abs/2308.10248v1}
|
| 197 |
-
\showURL{%
|
| 198 |
-
\tempurl}
|
| 199 |
-
\newblock
|
| 200 |
-
\shownote{Cited version dated 2023-08-20; metadata checked 2026-11-13}.
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
\bibitem[Wang et~al\mbox{.}(2026)]%
|
| 204 |
-
{wang2026readbest}
|
| 205 |
-
\bibfield{author}{\bibinfo{person}{Yibo Wang}, \bibinfo{person}{Jisheng Dang},
|
| 206 |
-
\bibinfo{person}{Bimei Wang}, \bibinfo{person}{Yitao Wu},
|
| 207 |
-
\bibinfo{person}{Wencan Zhang}, \bibinfo{person}{Hong Peng},
|
| 208 |
-
\bibinfo{person}{Jizhao Liu}, \bibinfo{person}{Bin Hu}, \bibinfo{person}{Qi
|
| 209 |
-
Tian}, {and} \bibinfo{person}{Tat-Seng Chua}.}
|
| 210 |
-
\bibinfo{year}{2026}\natexlab{}.
|
| 211 |
-
\newblock \bibinfo{title}{{Read-Best Is Not Steer-Best: A Probing--Steering
|
| 212 |
-
Layer Dissociation in Omni-Modal Large Language Models}}.
|
| 213 |
-
\newblock
|
| 214 |
-
\newblock
|
| 215 |
-
\showeprint[arxiv]{2609.22135v1}
|
| 216 |
-
\urldef\tempurl%
|
| 217 |
-
\url{https://arxiv.org/abs/2609.22135v1}
|
| 218 |
-
\showURL{%
|
| 219 |
-
\tempurl}
|
| 220 |
-
\newblock
|
| 221 |
-
\shownote{Cited version dated 2026-08-24; metadata checked 2026-11-13}.
|
| 222 |
-
|
| 223 |
-
|
| 224 |
-
\bibitem[Wu et~al\mbox{.}(2025)]%
|
| 225 |
-
{wu2025emotion}
|
| 226 |
-
\bibfield{author}{\bibinfo{person}{Xiuwen Wu}, \bibinfo{person}{Hao Wang},
|
| 227 |
-
\bibinfo{person}{Zhiang Yan}, \bibinfo{person}{Xiaohan Tang},
|
| 228 |
-
\bibinfo{person}{Pengfei Xu}, \bibinfo{person}{Wai-Ting Siok},
|
| 229 |
-
\bibinfo{person}{Ping Li}, \bibinfo{person}{Jia-Hong Gao},
|
| 230 |
-
\bibinfo{person}{Bingjiang Lyu}, {and} \bibinfo{person}{Lang Qin}.}
|
| 231 |
-
\bibinfo{year}{2025}\natexlab{}.
|
| 232 |
-
\newblock \bibinfo{title}{{AI shares emotion with humans across languages and
|
| 233 |
-
cultures}}.
|
| 234 |
-
\newblock
|
| 235 |
-
\newblock
|
| 236 |
-
\showeprint[arxiv]{2506.13978v1}
|
| 237 |
-
\urldef\tempurl%
|
| 238 |
-
\url{https://arxiv.org/abs/2506.13978v1}
|
| 239 |
-
\showURL{%
|
| 240 |
-
\tempurl}
|
| 241 |
-
\newblock
|
| 242 |
-
\shownote{Cited version dated 2025-06-11; metadata checked 2026-11-13}.
|
| 243 |
-
|
| 244 |
-
|
| 245 |
-
\bibitem[Yang et~al\mbox{.}(2026)]%
|
| 246 |
-
{yang2026steerscope}
|
| 247 |
-
\bibfield{author}{\bibinfo{person}{Haotian Yang}, \bibinfo{person}{Huikang
|
| 248 |
-
Jiang}, \bibinfo{person}{Yucheng Wu}, \bibinfo{person}{Wen-Jie Jiang},
|
| 249 |
-
\bibinfo{person}{Chenpeng Wang}, \bibinfo{person}{Yibin Lou}, {and}
|
| 250 |
-
\bibinfo{person}{Liangming Pan}.} \bibinfo{year}{2026}\natexlab{}.
|
| 251 |
-
\newblock \bibinfo{title}{{Does Steering Break Your Model? A Multi-Dimensional
|
| 252 |
-
Evaluation Suite for LLM Steering Methods}}.
|
| 253 |
-
\newblock
|
| 254 |
-
\newblock
|
| 255 |
-
\showeprint[arxiv]{2610.07722v1}
|
| 256 |
-
\urldef\tempurl%
|
| 257 |
-
\url{https://arxiv.org/abs/2610.07722v1}
|
| 258 |
-
\showURL{%
|
| 259 |
-
\tempurl}
|
| 260 |
-
\newblock
|
| 261 |
-
\shownote{Cited version dated 2026-10-06; metadata checked 2026-11-13}.
|
| 262 |
-
|
| 263 |
-
|
| 264 |
-
\end{thebibliography}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
acm/AFFECTOR-ARC-ACM.pdf
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:4d34c7993aad06ba2df9c62cae433e61a7e7cd2d4299087e19d061dbac469743
|
| 3 |
-
size 124747
|
|
|
|
|
|
|
|
|
|
|
|
acm/AFFECTOR-ARC-ACM.tex
DELETED
|
@@ -1,741 +0,0 @@
|
|
| 1 |
-
% ACM manuscript layout for an independently distributed technical report.
|
| 2 |
-
\documentclass[manuscript,screen,nonacm]{acmart}
|
| 3 |
-
\setcopyright{none}
|
| 4 |
-
\settopmatter{printacmref=false,printccs=false}
|
| 5 |
-
\acmDOI{}
|
| 6 |
-
\acmISBN{}
|
| 7 |
-
\usepackage{longtable,booktabs,array,calc}
|
| 8 |
-
\usepackage{xurl}
|
| 9 |
-
\usepackage{fvextra}
|
| 10 |
-
\DefineVerbatimEnvironment{verbatim}{Verbatim}{breaklines=true,fontsize=\small}
|
| 11 |
-
\usepackage{tikz}
|
| 12 |
-
\usetikzlibrary{positioning}
|
| 13 |
-
\providecommand{\tightlist}{\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
| 14 |
-
\providecommand{\passthrough}[1]{#1}
|
| 15 |
-
\providecommand{\pandocbounded}[1]{#1}
|
| 16 |
-
\begin{document}
|
| 17 |
-
\title{AFFECTOR-ARC: Emotional Trajectory Control through Transformer
|
| 18 |
-
Activation Steering}
|
| 19 |
-
\author{William Taggart}
|
| 20 |
-
\affiliation{\department{Modern and Classical Languages and Literatures}
|
| 21 |
-
\institution{Virginia Tech}\city{Blacksburg}\state{Virginia}\country{USA}}
|
| 22 |
-
\email{wtaggart@vt.edu}
|
| 23 |
-
\subtitle{Technical Report: November 13, 2026}
|
| 24 |
-
\begin{abstract}
|
| 25 |
-
AFFECTOR-ARC is an experimental command-line system for rewriting text
|
| 26 |
-
under a user-defined emotional trajectory. It runs a frozen Qwen3.5-0.8B
|
| 27 |
-
model on an NVIDIA GPU and changes selected internal activations during
|
| 28 |
-
generation. A trajectory specifies valence, inward/outward emotional
|
| 29 |
-
orientation, and intensity across normalized document position. Small
|
| 30 |
-
sets of contrasting English passages establish three activation
|
| 31 |
-
directions at each selected transformer layer. At inference time, the
|
| 32 |
-
requested coordinates determine a weighted displacement, scaled relative
|
| 33 |
-
to the current hidden-state magnitude, smoothed across decoding steps,
|
| 34 |
-
and constrained by an RMS budget. Paired hooks apply this displacement
|
| 35 |
-
to both the feed-forward input and its residual path. Document rewriting
|
| 36 |
-
combines these interventions with four editing styles, sentence-aware
|
| 37 |
-
segmentation, bounded generation, and incremental reporting. This report
|
| 38 |
-
derives the mechanism from its implemented operations and distinguishes
|
| 39 |
-
numerical controls from emotional outcomes. CPU policy tests pass; the
|
| 40 |
-
current revision still requires CUDA validation. No measured claim of
|
| 41 |
-
emotional accuracy, semantic preservation, or multilingual effectiveness
|
| 42 |
-
is made.
|
| 43 |
-
\end{abstract}
|
| 44 |
-
\keywords{activation steering, emotional text generation, transformer models, controllable generation}
|
| 45 |
-
\maketitle
|
| 46 |
-
\section{Literature review: activation steering and
|
| 47 |
-
emotion}\label{literature-review-activation-steering-and-emotion}
|
| 48 |
-
|
| 49 |
-
This focused review covers twelve papers, emphasizing 2025-2026 research
|
| 50 |
-
and retaining two methodological foundations. Titles, author lists,
|
| 51 |
-
version histories, and the claims summarized here were checked against
|
| 52 |
-
arXiv records and the corresponding paper text on November 13, 2026. The
|
| 53 |
-
cited versions are fixed below; availability on arXiv alone does not
|
| 54 |
-
establish peer review. The implications for this project are research
|
| 55 |
-
motivations, not evidence that its implementation reproduces these
|
| 56 |
-
results.
|
| 57 |
-
|
| 58 |
-
\textbf{From activation differences to behavioral control.} Activation
|
| 59 |
-
steering changes internal model states during inference while leaving
|
| 60 |
-
the backbone weights fixed. Turner et al.~derive intervention vectors
|
| 61 |
-
from contrasting prompts; Panickssery et al.~average differences across
|
| 62 |
-
positive and negative behavioral examples. These provide the
|
| 63 |
-
methodological basis for contrastive calibration, but do not validate a
|
| 64 |
-
particular emotional coordinate system or insertion site.
|
| 65 |
-
\citep{turner2023actadd}; \citep{panickssery2024caa}.
|
| 66 |
-
|
| 67 |
-
\textbf{Emotional expression and human judgment.} Wu et al.~relate model
|
| 68 |
-
emotion spaces to human valence/arousal judgments and report
|
| 69 |
-
concept-based steering across linguistic-cultural settings. Diallo et
|
| 70 |
-
al.~evaluate perceived emotional intensity and text quality with human
|
| 71 |
-
raters, finding that effects depend on emotion and steering strength.
|
| 72 |
-
Together they motivate separate measures of emotional movement and
|
| 73 |
-
readability. Their axes and numerical strengths cannot be assumed
|
| 74 |
-
equivalent to this project's inward/outward direction or RMS-scaled
|
| 75 |
-
controls. \citep{wu2025emotion}; \citep{diallo2026style}.
|
| 76 |
-
|
| 77 |
-
\textbf{Emotion can affect more than tone.} Sun et al.'s E-STEER uses
|
| 78 |
-
valence-arousal-dominance interventions to study reasoning, generation,
|
| 79 |
-
safety, and agent behavior, reporting non-monotonic relationships.
|
| 80 |
-
Jeong's small-model comparison reports both coherent emotional changes
|
| 81 |
-
and degeneration, including repetition, depending on extraction method
|
| 82 |
-
and architecture. These findings motivate reporting failed generations
|
| 83 |
-
alongside successes and testing strength sweeps rather than assuming
|
| 84 |
-
that larger perturbations improve emotional fit. Neither study
|
| 85 |
-
establishes an operating range for this implementation.
|
| 86 |
-
\citep{sun2026emotion}; \citep{jeong2026emotion}.
|
| 87 |
-
|
| 88 |
-
\textbf{Reading an emotion is different from controlling it.} Shu et
|
| 89 |
-
al.'s revised study identifies uneven causal organization of sparse
|
| 90 |
-
features across emotion categories and tests interventions for emotion
|
| 91 |
-
recognition. Wang et al.~show, in omni-modal models, that layers with
|
| 92 |
-
strong emotion-probing accuracy need not be the best intervention
|
| 93 |
-
layers. Recognition results therefore inform evaluator design, while
|
| 94 |
-
layer selection for rewriting still requires causal tests on generated
|
| 95 |
-
text. Neither finding licenses importing layer indices across
|
| 96 |
-
architectures. \citep{shu2026emotion}; \citep{wang2026readbest}.
|
| 97 |
-
|
| 98 |
-
\textbf{Multiple axes and adaptive control.} Ha et al.~find that
|
| 99 |
-
supportive-empathy directions are only partially separable: intervening
|
| 100 |
-
on one can shift other EPITOME proxy scores. Cui and Chen automate
|
| 101 |
-
vector extraction from labeled data, with task-dependent benefits.
|
| 102 |
-
Ferrando et al.~adapt intervention strength to context, studying the
|
| 103 |
-
balance between toxicity mitigation and retained utility. These
|
| 104 |
-
approaches motivate broader calibration, cross-axis tests, and future
|
| 105 |
-
adaptive control. The present coordinate mixture is not an
|
| 106 |
-
implementation of their learned selectors or context-dependent gates.
|
| 107 |
-
\citep{ha2026empathy}; \citep{cui2025pas}; \citep{ferrando2025dsas}.
|
| 108 |
-
|
| 109 |
-
\textbf{Evaluation must include costs as well as target effects.} Yang
|
| 110 |
-
et al.'s SteerScope evaluates steering efficacy jointly with side
|
| 111 |
-
effects, generalization, and data dependence. In its tested settings,
|
| 112 |
-
activation methods do not dominate prompt steering on the
|
| 113 |
-
efficacy/side-effect trade-off. For this project, the resulting
|
| 114 |
-
evaluation priorities are prompt-only and unsteered baselines, blinded
|
| 115 |
-
emotional and quality ratings, content-change assessment appropriate to
|
| 116 |
-
the rewrite style, and complete accounting of repetition, truncation,
|
| 117 |
-
and original-text fallbacks. This is an evaluation agenda, not a
|
| 118 |
-
completed benchmark. \citep{yang2026steerscope}.
|
| 119 |
-
|
| 120 |
-
\section{Problem and operating
|
| 121 |
-
principle}\label{problem-and-operating-principle}
|
| 122 |
-
|
| 123 |
-
A language model generates text by repeatedly estimating a distribution
|
| 124 |
-
over the next token. Its intermediate hidden states are numerical
|
| 125 |
-
vectors that contribute to those estimates. Changing a hidden state can
|
| 126 |
-
change the continuation even when the input text and the model's stored
|
| 127 |
-
parameters remain fixed.
|
| 128 |
-
|
| 129 |
-
AFFECTOR-ARC uses this property to influence the emotional expression of
|
| 130 |
-
a rewrite. The user supplies an input document and a sequence of
|
| 131 |
-
emotional coordinates. The software maps positions in the input to
|
| 132 |
-
positions on that sequence, converts the coordinates into activation
|
| 133 |
-
displacements, and applies the displacements while generating each
|
| 134 |
-
rewritten passage.
|
| 135 |
-
|
| 136 |
-
The term \textbf{geometry} means an ordered path through a
|
| 137 |
-
three-dimensional coordinate space, together with layer settings and
|
| 138 |
-
optional calibration matrices. It does not mean that the software
|
| 139 |
-
reconstructs a solid surface or applies geometric constraints directly
|
| 140 |
-
to words. A text's emotional interpretation, a numerical target, and a
|
| 141 |
-
model's hidden states are distinct objects. The calibration is an
|
| 142 |
-
experimental mapping between them.
|
| 143 |
-
|
| 144 |
-
Two execution modes are available:
|
| 145 |
-
|
| 146 |
-
\begin{itemize}
|
| 147 |
-
\tightlist
|
| 148 |
-
\item
|
| 149 |
-
\textbf{Rewrite:} process an entire UTF-8 text document in chunks,
|
| 150 |
-
write the transformed text, and record attempts and failures.
|
| 151 |
-
\item
|
| 152 |
-
\textbf{Smoke:} run five controlled generation conditions to check
|
| 153 |
-
basic intervention and cleanup behavior.
|
| 154 |
-
\end{itemize}
|
| 155 |
-
|
| 156 |
-
The interface is a command-line runner for a CUDA allocation. It does
|
| 157 |
-
not provide a desktop interface, a hosted API service, automatic
|
| 158 |
-
emotional scoring, or conversational history.
|
| 159 |
-
|
| 160 |
-
\section{Runtime and data flow}\label{runtime-and-data-flow}
|
| 161 |
-
|
| 162 |
-
The runner loads \nolinkurl{Qwen/Qwen3.5-0.8B} at revision
|
| 163 |
-
\nolinkurl{2fc06364715b967f1860aea9cf38778875588b17}. The implementation
|
| 164 |
-
uses \nolinkurl{Qwen3_5ForConditionalGeneration}, its text decoder layers,
|
| 165 |
-
float32 computation, eager attention, and the first process-visible CUDA
|
| 166 |
-
device. It checks for 24 decoder layers; the geometry and calibration
|
| 167 |
-
code assume hidden width 1,024. The backbone is in evaluation mode, its
|
| 168 |
-
parameters have gradients disabled, and calibration and generation run
|
| 169 |
-
without gradient tracking.
|
| 170 |
-
|
| 171 |
-
The execution sequence is:
|
| 172 |
-
|
| 173 |
-
\begin{verbatim}
|
| 174 |
-
Read text and geometry settings
|
| 175 |
-
→ validate controls
|
| 176 |
-
→ load the pinned model on CUDA
|
| 177 |
-
→ calibrate the selected layers
|
| 178 |
-
→ select rewrite or smoke mode
|
| 179 |
-
→ generate with temporary activation hooks
|
| 180 |
-
→ remove hooks and save results
|
| 181 |
-
\end{verbatim}
|
| 182 |
-
|
| 183 |
-
Source files are distributed with the repository.
|
| 184 |
-
\nolinkurl{ENGINE_MANIFEST.json} records hashes for the bundled engine
|
| 185 |
-
snapshot. Model weights are downloaded separately. The setup script
|
| 186 |
-
creates a Python 3.12 environment, installs PyTorch from the CUDA 12.6
|
| 187 |
-
wheel index, pins Transformers to 5.22.2, runs the CPU policy tests, and
|
| 188 |
-
records installed packages in \nolinkurl{environment-resolved.txt}. PyTorch
|
| 189 |
-
and several support packages are resolved during setup rather than fully
|
| 190 |
-
locked in advance.
|
| 191 |
-
|
| 192 |
-
The example Slurm script requests one GPU, eight CPU cores, 64 GB of
|
| 193 |
-
host memory, and one hour. These are scheduling requests, not measured
|
| 194 |
-
minimum requirements. Users must supply an allocation and a suitable
|
| 195 |
-
model cache. The runner is single-process and single-GPU; it is not a
|
| 196 |
-
concurrent inference server.
|
| 197 |
-
|
| 198 |
-
\section{Emotional coordinates and trajectory
|
| 199 |
-
interpolation}\label{emotional-coordinates-and-trajectory-interpolation}
|
| 200 |
-
|
| 201 |
-
A trajectory point is
|
| 202 |
-
|
| 203 |
-
\[
|
| 204 |
-
p_j=(t_j,v_j,d_j,i_j),
|
| 205 |
-
\]
|
| 206 |
-
|
| 207 |
-
where positions \(t_j\) increase strictly within \([0,1]\). Valence
|
| 208 |
-
\(v_j\) ranges from negative to positive in \([-1,1]\). Direction
|
| 209 |
-
\(d_j\) ranges from inward-oriented to outward-oriented emotion in
|
| 210 |
-
\([-1,1]\). Intensity \(i_j\) ranges from low to high in \([0,1]\).
|
| 211 |
-
Direction is an operational contrast concerning emotional orientation;
|
| 212 |
-
it is not dominance, speaker identification, or positive versus negative
|
| 213 |
-
sentiment.
|
| 214 |
-
|
| 215 |
-
Between adjacent points, the software linearly interpolates each
|
| 216 |
-
emotional coordinate. Before the first point and after the last, it uses
|
| 217 |
-
the endpoint values. The coefficient vector passed to the activation
|
| 218 |
-
module is
|
| 219 |
-
|
| 220 |
-
\[
|
| 221 |
-
c(t)=\bigl(v(t),d(t),2i(t)-1\bigr).
|
| 222 |
-
\]
|
| 223 |
-
|
| 224 |
-
Consequently, intensity 0.5 contributes a zero intensity coefficient;
|
| 225 |
-
intensity zero contributes a negative coefficient. These are control
|
| 226 |
-
conventions, not empirically established psychological units.
|
| 227 |
-
|
| 228 |
-
For a chunk occupying character offsets \([a,b)\) in an input of length
|
| 229 |
-
\(N\), its target is evaluated at
|
| 230 |
-
|
| 231 |
-
\[
|
| 232 |
-
t=\frac{a+b}{2N}.
|
| 233 |
-
\]
|
| 234 |
-
|
| 235 |
-
That target remains constant throughout generation of the chunk. A long
|
| 236 |
-
trajectory can therefore guide a short document without pairing source
|
| 237 |
-
and target paragraphs one to one. Only the positions sampled by the
|
| 238 |
-
target chunks are used; narrow changes between those positions may be
|
| 239 |
-
missed. The mapping uses original input positions, not positions in the
|
| 240 |
-
expanding or contracting output. Adjacent chunks receive separate
|
| 241 |
-
generation calls without prior rewritten chunks as conversational
|
| 242 |
-
context.
|
| 243 |
-
|
| 244 |
-
The runner accepts a native geometry JSON file and supported analysis
|
| 245 |
-
JSON structures containing emotional coordinates. It recalibrates the
|
| 246 |
-
basis on the current CUDA runtime even when the imported geometry
|
| 247 |
-
includes one. With no geometry argument, it uses a demonstration path
|
| 248 |
-
with three points; this path is not inferred from the input document.
|
| 249 |
-
|
| 250 |
-
\section{Estimating activation
|
| 251 |
-
directions}\label{estimating-activation-directions}
|
| 252 |
-
|
| 253 |
-
A hidden state at a selected layer is a vector in \(\mathbb{R}^{1024}\).
|
| 254 |
-
To estimate a direction associated with one emotional contrast, the
|
| 255 |
-
system compares the model's states for paired passages that differ in
|
| 256 |
-
the desired property.
|
| 257 |
-
|
| 258 |
-
There are four hand-authored English pairs for each of three axes. For
|
| 259 |
-
layer \(\ell\), axis \(j\), and pair \(k\), let \(h^+_{\ell,j,k}\) and
|
| 260 |
-
\(h^-_{\ell,j,k}\) denote the captured states for the two members. The
|
| 261 |
-
mean difference is
|
| 262 |
-
|
| 263 |
-
\[
|
| 264 |
-
u_{\ell,j}=\frac14\sum_{k=1}^{4}
|
| 265 |
-
\left(h^+_{\ell,j,k}-h^-_{\ell,j,k}\right).
|
| 266 |
-
\]
|
| 267 |
-
|
| 268 |
-
For a vector of dimension \(D\), define root-mean-square magnitude as
|
| 269 |
-
|
| 270 |
-
\[
|
| 271 |
-
\operatorname{RMS}(x)=\sqrt{\frac1D\sum_{r=1}^{D}x_r^2}.
|
| 272 |
-
\]
|
| 273 |
-
|
| 274 |
-
The normalized direction is
|
| 275 |
-
|
| 276 |
-
\[
|
| 277 |
-
b_{\ell,j}=\frac{u_{\ell,j}}
|
| 278 |
-
{\max(\operatorname{RMS}(u_{\ell,j}),10^{-8})}.
|
| 279 |
-
\]
|
| 280 |
-
|
| 281 |
-
The three directions form the rows of a matrix
|
| 282 |
-
\(B_\ell\in\mathbb{R}^{3\times1024}\). Calibration captures the final
|
| 283 |
-
chat-formatted prompt position immediately before
|
| 284 |
-
\nolinkurl{post_attention_layernorm}. It does not average all token
|
| 285 |
-
positions. All selected layers are captured during the same 24 forward
|
| 286 |
-
passes: three axes, four pairs, and two members per pair.
|
| 287 |
-
|
| 288 |
-
Default layers are 8, 16, and 23, using zero-based indexing, with
|
| 289 |
-
weights 1, 1, and 0.5. This is subtraction, averaging, and
|
| 290 |
-
normalization; there is no training optimizer, backbone fine-tuning,
|
| 291 |
-
orthogonalization, or outcome-based fitting. The small calibration set
|
| 292 |
-
may encode vocabulary, topic, or perspective along with emotion.
|
| 293 |
-
Normalizing the vectors does not establish that the axes are independent
|
| 294 |
-
or valid across languages.
|
| 295 |
-
|
| 296 |
-
\section{From coordinates to bounded
|
| 297 |
-
displacements}\label{from-coordinates-to-bounded-displacements}
|
| 298 |
-
|
| 299 |
-
\subsection{Selecting and weighting
|
| 300 |
-
axes}\label{selecting-and-weighting-axes}
|
| 301 |
-
|
| 302 |
-
Let \(T\) be axis temperature. Each coordinate first receives magnitude
|
| 303 |
-
|
| 304 |
-
\[
|
| 305 |
-
q_j=|c_j|^{1/T}.
|
| 306 |
-
\]
|
| 307 |
-
|
| 308 |
-
Axes are sorted by this magnitude. The algorithm retains at most
|
| 309 |
-
\nolinkurl{axis_top_k} axes and stops adding axes after their accumulated
|
| 310 |
-
magnitude reaches \nolinkurl{axis_mass} times the total magnitude.
|
| 311 |
-
Selection includes the axis that crosses the threshold. The retained
|
| 312 |
-
coefficients are
|
| 313 |
-
|
| 314 |
-
\[
|
| 315 |
-
a_j=\operatorname{sign}(c_j)q_jm_j,
|
| 316 |
-
\]
|
| 317 |
-
|
| 318 |
-
where \(m_j\) is one for a retained axis and zero otherwise.
|
| 319 |
-
Coefficients are not renormalized after selection. For coordinate
|
| 320 |
-
magnitudes below one, \(T<1\) reduces their magnitudes and emphasizes
|
| 321 |
-
relative differences; \(T>1\) increases them and makes those differences
|
| 322 |
-
less pronounced. These operations affect three activation coefficients,
|
| 323 |
-
not token probabilities.
|
| 324 |
-
|
| 325 |
-
\subsection{Strength, inertia, and
|
| 326 |
-
budget}\label{strength-inertia-and-budget}
|
| 327 |
-
|
| 328 |
-
For the current final-token state \(h_{\ell,n}\), strength \(s\), and
|
| 329 |
-
layer weight \(w_\ell\), the raw displacement is
|
| 330 |
-
|
| 331 |
-
\[
|
| 332 |
-
r_{\ell,n}=s\,w_\ell\operatorname{RMS}(h_{\ell,n})(aB_\ell).
|
| 333 |
-
\]
|
| 334 |
-
|
| 335 |
-
Multiplication by the current state's RMS expresses the intervention
|
| 336 |
-
relative to the layer's numerical scale. A negative layer weight
|
| 337 |
-
reverses the mixed direction at that layer.
|
| 338 |
-
|
| 339 |
-
On the first decoding step, the smoothed displacement equals
|
| 340 |
-
\(r_{\ell,n}\). On later steps, inertia \(\rho\) combines the previous
|
| 341 |
-
applied displacement with the new raw displacement:
|
| 342 |
-
|
| 343 |
-
\[
|
| 344 |
-
\widetilde\delta_{\ell,n}=\rho\delta_{\ell,n-1}+(1-\rho)r_{\ell,n}.
|
| 345 |
-
\]
|
| 346 |
-
|
| 347 |
-
Budget \(\beta\) then limits the RMS ratio:
|
| 348 |
-
|
| 349 |
-
\[
|
| 350 |
-
\delta_{\ell,n}=\widetilde\delta_{\ell,n}
|
| 351 |
-
\min\left(1,
|
| 352 |
-
\frac{\beta\operatorname{RMS}(h_{\ell,n})}
|
| 353 |
-
{\max(\operatorname{RMS}(\widetilde\delta_{\ell,n}),10^{-12})}
|
| 354 |
-
\right).
|
| 355 |
-
\]
|
| 356 |
-
|
| 357 |
-
Strength determines the proposed displacement; budget supplies its
|
| 358 |
-
ceiling. Raising the budget has no effect when the proposed displacement
|
| 359 |
-
already fits below it. Budget 1 permits a displacement as large in RMS
|
| 360 |
-
as the hidden state itself. It is not a token allowance, a
|
| 361 |
-
semantic-change quota, or a guarantee of stronger emotional accuracy.
|
| 362 |
-
Inertia uses the previous already-capped displacement and resets with
|
| 363 |
-
each new generation call.
|
| 364 |
-
|
| 365 |
-
\subsection{Intervention site}\label{intervention-site}
|
| 366 |
-
|
| 367 |
-
Let \(h\) denote the state entering the feed-forward portion of a
|
| 368 |
-
decoder block. Without intervention, that portion computes
|
| 369 |
-
|
| 370 |
-
\[
|
| 371 |
-
y=h+\operatorname{FFN}(\operatorname{Norm}(h)).
|
| 372 |
-
\]
|
| 373 |
-
|
| 374 |
-
The implemented intervention produces
|
| 375 |
-
|
| 376 |
-
\[
|
| 377 |
-
y=(h+\delta)+\operatorname{FFN}(\operatorname{Norm}(h+\delta)).
|
| 378 |
-
\]
|
| 379 |
-
|
| 380 |
-
A pre-hook adds \(\delta\) to the normalization input; a block-output
|
| 381 |
-
hook adds the same displacement to the residual result. Adding a vector
|
| 382 |
-
only after an unchanged feed-forward computation would have a different
|
| 383 |
-
effect. Only the final prompt position is modified during prefill;
|
| 384 |
-
cached decoding modifies the current generated position. The module does
|
| 385 |
-
not wait for specific words or phrases. Generation hooks are removed in
|
| 386 |
-
a \nolinkurl{finally} block.
|
| 387 |
-
|
| 388 |
-
This is an open-loop intervention. Coefficients come from the requested
|
| 389 |
-
absolute coordinates, not the difference between a measured output
|
| 390 |
-
emotion and the target. A zero coefficient adds no intervention on that
|
| 391 |
-
axis; it does not actively neutralize emotion already expressed by the
|
| 392 |
-
model.
|
| 393 |
-
|
| 394 |
-
\section{User controls and rewrite
|
| 395 |
-
instructions}\label{user-controls-and-rewrite-instructions}
|
| 396 |
-
|
| 397 |
-
{ % do not increment counter
|
| 398 |
-
\begin{longtable}[]{@{}
|
| 399 |
-
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3000}}
|
| 400 |
-
>{\raggedleft\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.4000}}
|
| 401 |
-
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3000}}@{}}
|
| 402 |
-
\toprule\noalign{}
|
| 403 |
-
\begin{minipage}[b]{\linewidth}\raggedright
|
| 404 |
-
Control
|
| 405 |
-
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedleft
|
| 406 |
-
Default without an imported override
|
| 407 |
-
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
|
| 408 |
-
Function
|
| 409 |
-
\end{minipage} \\
|
| 410 |
-
\midrule\noalign{}
|
| 411 |
-
\endhead
|
| 412 |
-
\bottomrule\noalign{}
|
| 413 |
-
\endlastfoot
|
| 414 |
-
Strength & 0.12 & Scale the proposed activation displacement \\
|
| 415 |
-
Budget & 0.20 & Cap displacement RMS relative to hidden-state RMS \\
|
| 416 |
-
Inertia & 0.20 & Weight the preceding applied displacement \\
|
| 417 |
-
Axis top-k & 3 & Maximum number of retained emotional axes \\
|
| 418 |
-
Axis mass & 1.0 & Cumulative magnitude threshold for axis selection \\
|
| 419 |
-
Axis temperature & 1.0 & Exponent control for emotional-axis
|
| 420 |
-
magnitudes \\
|
| 421 |
-
Temperature & 0 & Select greedy decoding or token sampling \\
|
| 422 |
-
Top-p & 0.95 & Probability-mass cutoff when sampling \\
|
| 423 |
-
Top-k & 40 & Token candidate count when sampling \\
|
| 424 |
-
Base output tokens & 512 & Initial generation allowance, expanded in
|
| 425 |
-
rewrite mode \\
|
| 426 |
-
Time limit & 120 seconds & Per-generation stopping threshold \\
|
| 427 |
-
\end{longtable}
|
| 428 |
-
}
|
| 429 |
-
|
| 430 |
-
The CLI overrides only the activation settings explicitly supplied;
|
| 431 |
-
other settings come from the imported geometry or defaults. Validation
|
| 432 |
-
permits strength 0--2, budget 0--1, inertia 0--0.99, axis top-k 1--3,
|
| 433 |
-
axis mass 0.01--1, and axis temperature 0.1--3. These accepted ranges
|
| 434 |
-
are not validated operating recommendations. The terminal displays the
|
| 435 |
-
warning: \textbf{Extreme values for strength, budget, and inertia may
|
| 436 |
-
cause generation failures.}
|
| 437 |
-
|
| 438 |
-
At temperature zero, decoding is greedy and top-p/top-k are inactive. At
|
| 439 |
-
positive temperature, they affect token selection after the model
|
| 440 |
-
computes its scores. They do not replace or modify the three-axis
|
| 441 |
-
activation selection mechanism.
|
| 442 |
-
|
| 443 |
-
Four system-prompt styles provide separate editing constraints:
|
| 444 |
-
|
| 445 |
-
\begin{itemize}
|
| 446 |
-
\tightlist
|
| 447 |
-
\item
|
| 448 |
-
\textbf{Minimal:} change a few words or phrases while preserving
|
| 449 |
-
nearly all wording and sentence order.
|
| 450 |
-
\item
|
| 451 |
-
\textbf{Restrained:} adjust tone through wording, rhythm, and emphasis
|
| 452 |
-
while preserving central meaning, facts, terminology, and structure;
|
| 453 |
-
invent no scenes or metaphors.
|
| 454 |
-
\item
|
| 455 |
-
\textbf{Balanced:} allow a clearer emotional shift and modest
|
| 456 |
-
figurative language while retaining central meaning, facts, people,
|
| 457 |
-
and events.
|
| 458 |
-
\item
|
| 459 |
-
\textbf{Creative:} permit changes to meaning, imagery, and events,
|
| 460 |
-
while requesting concise output in the same language.
|
| 461 |
-
\end{itemize}
|
| 462 |
-
|
| 463 |
-
Restrained is the default in rewrite mode. Smoke mode retains its
|
| 464 |
-
original general rewriting instruction unless a style is explicitly
|
| 465 |
-
selected. Each prompt requests complete sentences and treats supplied
|
| 466 |
-
text as material rather than instructions. A per-chunk suffix specifies
|
| 467 |
-
the original character count and hard character allowance. Numerical
|
| 468 |
-
emotional coordinates are not inserted into these prompts; the
|
| 469 |
-
coordinates act through hidden states. Prompt instructions influence
|
| 470 |
-
generation but are not formal semantic guarantees. The runner has no
|
| 471 |
-
semantic-equivalence rejection filter and does not lower steering
|
| 472 |
-
settings automatically.
|
| 473 |
-
|
| 474 |
-
\section{Segmentation, length control, and
|
| 475 |
-
repetition}\label{segmentation-length-control-and-repetition}
|
| 476 |
-
|
| 477 |
-
The runner reads and trims the outer whitespace of a UTF-8 text file.
|
| 478 |
-
Blank lines define paragraphs. Long paragraphs are split using a
|
| 479 |
-
700-character ceiling, preferring sentence punctuation when a suitable
|
| 480 |
-
boundary exists, then whitespace, and finally a hard split. This is a
|
| 481 |
-
punctuation heuristic, not a linguistic sentence parser. Original
|
| 482 |
-
whitespace between chunks is preserved during output assembly.
|
| 483 |
-
|
| 484 |
-
Within each original paragraph, the character ceiling is 125\% of the
|
| 485 |
-
original span processed so far. If \(s\) is the first chunk's start,
|
| 486 |
-
\(b_j\) the current chunk's end, and \(U_j\) the output characters and
|
| 487 |
-
intervening whitespace already used, the current allowance is
|
| 488 |
-
|
| 489 |
-
\[
|
| 490 |
-
L_j=\max\left(0,\left\lfloor1.25(b_j-s)\right\rfloor-U_j\right).
|
| 491 |
-
\]
|
| 492 |
-
|
| 493 |
-
Unused allowance carries forward within that paragraph. It cannot be
|
| 494 |
-
borrowed from future chunks or transferred across a blank-line paragraph
|
| 495 |
-
boundary. Character counts are Python string lengths, not word counts,
|
| 496 |
-
encoded byte counts, or model-token counts.
|
| 497 |
-
|
| 498 |
-
Generation aims for the original length. Starting at 85\% of the current
|
| 499 |
-
input chunk's characters, a recognized sentence ending can stop
|
| 500 |
-
generation. A separate hard character threshold prevents excessive
|
| 501 |
-
expansion. The token allowance is
|
| 502 |
-
|
| 503 |
-
\[
|
| 504 |
-
K_j=\min\left(2048,\max(K_{\mathrm{base}},L_j)\right),
|
| 505 |
-
\]
|
| 506 |
-
|
| 507 |
-
which supplies decoding headroom but does not imply one token equals one
|
| 508 |
-
character. The time threshold is checked between decoding steps and
|
| 509 |
-
cannot interrupt a blocked GPU kernel immediately.
|
| 510 |
-
|
| 511 |
-
Decoding also uses a repetition penalty of 1.1 and an eight-token
|
| 512 |
-
no-repeat n-gram constraint. A text-level detector checks every eight
|
| 513 |
-
generation steps for repeated three- to six-word sequences appearing at
|
| 514 |
-
least four times in the last 100 words, or a short compact character
|
| 515 |
-
pattern repeated at least six times in the last 240 characters. These
|
| 516 |
-
heuristics can miss some loops and can flag intentional repetition.
|
| 517 |
-
|
| 518 |
-
After a generation attempt, the runner checks for repetition, empty
|
| 519 |
-
output, excessive length, and an unfinished ending. A problematic draft
|
| 520 |
-
is reduced to a complete, nonrepetitive sentence prefix within its
|
| 521 |
-
allowance. If none exists, the original chunk is retained and flagged.
|
| 522 |
-
The returned draft remains in the report's attempt record before
|
| 523 |
-
sentence salvage. However, the engine has already clipped it to the hard
|
| 524 |
-
character allowance; the report is not a lossless record of characters
|
| 525 |
-
beyond that boundary.
|
| 526 |
-
|
| 527 |
-
Sentence cleanup prevents chopped words from being joined directly to
|
| 528 |
-
the next passage, but it may omit ideas from the tail of a draft.
|
| 529 |
-
Neither punctuation recognition nor output-size compliance establishes
|
| 530 |
-
completeness of meaning.
|
| 531 |
-
|
| 532 |
-
\section{Failure handling and output
|
| 533 |
-
artifacts}\label{failure-handling-and-output-artifacts}
|
| 534 |
-
|
| 535 |
-
Each chunk receives one generation attempt at the requested activation
|
| 536 |
-
settings. A caught generation exception is recorded; the original chunk
|
| 537 |
-
remains in the assembled text and processing continues. Calibration
|
| 538 |
-
failures, invalid inputs, filesystem failures, and process termination
|
| 539 |
-
are outside this per-chunk recovery mechanism and can stop a run. A
|
| 540 |
-
persistent device failure may cause subsequent chunks to fail as well.
|
| 541 |
-
|
| 542 |
-
After each processed chunk, the runner writes:
|
| 543 |
-
|
| 544 |
-
\begin{enumerate}
|
| 545 |
-
\def\labelenumi{\arabic{enumi}.}
|
| 546 |
-
\tightlist
|
| 547 |
-
\item
|
| 548 |
-
An atomic JSON report containing the input, geometry, calibration
|
| 549 |
-
basis, runtime identity, style, sampling settings, character spans,
|
| 550 |
-
target coordinates, and per-chunk records.
|
| 551 |
-
\item
|
| 552 |
-
A matching plain-text file containing completed rewrites plus original
|
| 553 |
-
text at unprocessed or retained positions.
|
| 554 |
-
\end{enumerate}
|
| 555 |
-
|
| 556 |
-
Successful generation records include stopping reason, token count,
|
| 557 |
-
elapsed time, activation-injection count, and mean displacement RMS.
|
| 558 |
-
Attempt records retain returned drafts, effective controls, detected
|
| 559 |
-
issues, and exceptions where applicable. At normal completion the report
|
| 560 |
-
adds failure and review counts. \nolinkurl{complete} means every chunk was
|
| 561 |
-
processed, not that every chunk was successfully rewritten or
|
| 562 |
-
emotionally accurate.
|
| 563 |
-
|
| 564 |
-
JSON writes use temporary-file replacement. The companion text file is
|
| 565 |
-
written normally and may be incomplete if interrupted during that write.
|
| 566 |
-
Reports are incremental records, not automatic resume checkpoints:
|
| 567 |
-
rerunning starts over and overwrites the selected output paths. Use a
|
| 568 |
-
distinct output filename for each experiment. Reports contain the input
|
| 569 |
-
text and should be treated as document-bearing artifacts.
|
| 570 |
-
|
| 571 |
-
\section{Engineering checks and
|
| 572 |
-
evidence}\label{engineering-checks-and-evidence}
|
| 573 |
-
|
| 574 |
-
Smoke mode is the default and operates on one supplied passage. It runs
|
| 575 |
-
baseline, zero-strength, positive-valence, negative-valence, and
|
| 576 |
-
restored-baseline conditions. Positive and negative conditions use
|
| 577 |
-
coefficient vectors \((0.8,0,0)\) and \((-0.8,0,0)\). The third
|
| 578 |
-
coordinate zero corresponds to intensity 0.5.
|
| 579 |
-
|
| 580 |
-
With greedy decoding, the checks require zero-strength and baseline
|
| 581 |
-
decoded text/token counts to match, nonzero injections in the positive
|
| 582 |
-
and negative cases, restored hook counts, restored baseline text/token
|
| 583 |
-
counts, and disabled backbone gradients. Positive and negative outputs
|
| 584 |
-
need not differ for these checks to pass. Settings that suppress all
|
| 585 |
-
effective intervention are unsuitable for the nonzero-injection checks.
|
| 586 |
-
|
| 587 |
-
Smoke mode defaults to the original 128-token allowance and 600-second
|
| 588 |
-
time threshold. Its original instruction permits changes in phrasing,
|
| 589 |
-
imagery, and emotional expression while preserving the passage's main
|
| 590 |
-
subject and recognizable situation. It omits the new repetition penalty,
|
| 591 |
-
n-gram guard, and document-length salvage so that existing commands
|
| 592 |
-
retain their original generation configuration and compare raw
|
| 593 |
-
generations. It saves completed conditions incrementally and marks
|
| 594 |
-
\nolinkurl{checks_complete} only after assertions pass. It does not
|
| 595 |
-
compare logits, full token sequences, parameter hashes, or independently
|
| 596 |
-
measured per-step RMS bounds. Run with ordinary Python rather than
|
| 597 |
-
assertion-disabling optimization flags.
|
| 598 |
-
|
| 599 |
-
For the November 13 revision, seven CPU policy tests passed, Python and
|
| 600 |
-
shell syntax were checked, and CLI loading was verified. Tests cover
|
| 601 |
-
such behavior as unchanged requested controls, paragraph allowance
|
| 602 |
-
accounting, draft retention, sentence cleanup, and continuing after a
|
| 603 |
-
failed chunk. They do not execute the CUDA model. The current revision
|
| 604 |
-
has not yet been run on an ARC GPU. A successful GPU run was reported
|
| 605 |
-
for an earlier revision on November 12; it is historical evidence, not
|
| 606 |
-
validation of the current code.
|
| 607 |
-
|
| 608 |
-
\section{Reproduction}\label{reproduction}
|
| 609 |
-
|
| 610 |
-
Inside a suitable ARC GPU allocation, from a fresh repository copy:
|
| 611 |
-
|
| 612 |
-
\begin{verbatim}
|
| 613 |
-
bash setup.sh
|
| 614 |
-
source "$(conda info --base)/etc/profile.d/conda.sh"
|
| 615 |
-
conda activate "$PWD/.conda"
|
| 616 |
-
python run_arc.py --mode smoke --text-file passage.txt \
|
| 617 |
-
--output runs/smoke.json
|
| 618 |
-
\end{verbatim}
|
| 619 |
-
|
| 620 |
-
Setup expects a fresh \nolinkurl{.conda} destination. A populated model
|
| 621 |
-
cache or permitted download route is required. Existing compatible
|
| 622 |
-
environments can execute the updated source directly.
|
| 623 |
-
|
| 624 |
-
To rewrite a document:
|
| 625 |
-
|
| 626 |
-
\begin{verbatim}
|
| 627 |
-
python run_arc.py --mode rewrite --text-file target.txt \
|
| 628 |
-
--geometry shape.json --style Restrained \
|
| 629 |
-
--strength 0.47 --budget 0.47 --inertia 0.2 \
|
| 630 |
-
--temperature 0 --top-p 0.95 --top-k 40 \
|
| 631 |
-
--output runs/rewrite.json
|
| 632 |
-
\end{verbatim}
|
| 633 |
-
|
| 634 |
-
These strength and budget values illustrate explicit configuration; they
|
| 635 |
-
are not an experimentally established optimum. Omitting
|
| 636 |
-
\nolinkurl{--geometry} selects the demonstration trajectory. Batch smoke
|
| 637 |
-
execution uses
|
| 638 |
-
\nolinkurl{sbatch --account=YOUR_ALLOCATION smoke.sbatch}; the
|
| 639 |
-
allocation and partition must suit the user's cluster access.
|
| 640 |
-
|
| 641 |
-
Archive the repository revision, engine manifest, resolved dependencies,
|
| 642 |
-
GPU and driver information, command-line arguments, input, geometry, and
|
| 643 |
-
report. The engine identity's \nolinkurl{source_commit} field currently
|
| 644 |
-
contains a snapshot label rather than a Git commit hash, so the
|
| 645 |
-
repository revision should be recorded separately. The default seed is
|
| 646 |
-
zero and TF32 matrix multiplication is disabled, but identical results
|
| 647 |
-
across hardware and library versions are not guaranteed.
|
| 648 |
-
|
| 649 |
-
\section{Scientific limits and evaluation
|
| 650 |
-
requirements}\label{scientific-limits-and-evaluation-requirements}
|
| 651 |
-
|
| 652 |
-
The system offers a direct, inspectable intervention, not a demonstrated
|
| 653 |
-
emotional matching algorithm. Its main limitations are the small English
|
| 654 |
-
calibration set, untested interactions between axes and layers,
|
| 655 |
-
open-loop use of absolute targets, and lack of independent output
|
| 656 |
-
assessment. The model can change subject matter or factual claims,
|
| 657 |
-
especially under Creative instructions or strong perturbations. Stronger
|
| 658 |
-
displacement can degrade fluency without improving emotional alignment.
|
| 659 |
-
|
| 660 |
-
A proper evaluation should distinguish emotional movement from target
|
| 661 |
-
accuracy. Collect independent ratings of input and output along
|
| 662 |
-
operationally defined axes, compare requested and observed trajectories,
|
| 663 |
-
and report failures and unmodified fallbacks alongside successful
|
| 664 |
-
generations. Include unsteered rewriting, prompt-only emotional
|
| 665 |
-
instructions, opposite targets, random directions of matched magnitude,
|
| 666 |
-
and layer/axis ablations. Keep decoding settings fixed for controlled
|
| 667 |
-
comparisons, and separate greedy from sampled experiments.
|
| 668 |
-
|
| 669 |
-
Semantic fidelity should be evaluated against the selected style:
|
| 670 |
-
Creative permits mutation, whereas Restrained requests factual
|
| 671 |
-
preservation. Fluency, coherence across chunks, omitted material,
|
| 672 |
-
repetition, length ratios, latency, and memory consumption are separate
|
| 673 |
-
outcomes. No automatic similarity score, feedback optimization, or
|
| 674 |
-
acceptance threshold is implemented in this runner.
|
| 675 |
-
|
| 676 |
-
Changing to a larger model requires new architecture validation, basis
|
| 677 |
-
calibration, layer selection, and operating-range experiments. A basis
|
| 678 |
-
with three rows and 1,024 columns cannot simply be reused with a
|
| 679 |
-
different hidden width or intervention site. Multilingual operation
|
| 680 |
-
likewise requires independent calibration and evaluation; same-language
|
| 681 |
-
prompt wording alone does not establish it.
|
| 682 |
-
|
| 683 |
-
\section{Implementation sources}\label{implementation-sources}
|
| 684 |
-
|
| 685 |
-
This report describes the repository's executable operations rather than
|
| 686 |
-
relying on another application's interface or documentation.
|
| 687 |
-
|
| 688 |
-
\begin{itemize}
|
| 689 |
-
\tightlist
|
| 690 |
-
\item
|
| 691 |
-
\href{https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/run_arc.py}{CUDA
|
| 692 |
-
runner and smoke protocol}
|
| 693 |
-
\item
|
| 694 |
-
\href{https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/document_run.py}{Document
|
| 695 |
-
transformation and incremental output}
|
| 696 |
-
\item
|
| 697 |
-
\href{https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/engine/steering.py}{Calibration,
|
| 698 |
-
displacement math, hooks, and decoding}
|
| 699 |
-
\item
|
| 700 |
-
\href{https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/engine/geometry.py}{Geometry
|
| 701 |
-
schema and interpolation}
|
| 702 |
-
\item
|
| 703 |
-
\href{https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/engine/documents.py}{Segmentation
|
| 704 |
-
and character allowance}
|
| 705 |
-
\item
|
| 706 |
-
\href{https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/engine/rewrite_policy.py}{Rewrite
|
| 707 |
-
system prompts}
|
| 708 |
-
\item
|
| 709 |
-
\href{https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/engine/generation.py}{Repetition
|
| 710 |
-
detection and draft salvage}
|
| 711 |
-
\item
|
| 712 |
-
\href{https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/ENGINE_MANIFEST.json}{Engine
|
| 713 |
-
source hashes}
|
| 714 |
-
\item
|
| 715 |
-
\href{https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/tests/test_generation.py}{Generation
|
| 716 |
-
policy tests} and
|
| 717 |
-
\href{https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/tests/test_document_run.py}{document-run
|
| 718 |
-
tests}
|
| 719 |
-
\end{itemize}
|
| 720 |
-
|
| 721 |
-
\section*{AI assistance disclosure}
|
| 722 |
-
This project was created with assistance from GPT-6 Astra and Codex. AI
|
| 723 |
-
tools supported software development, testing, and the drafting and
|
| 724 |
-
revision of this technical report. William Taggart is responsible for
|
| 725 |
-
the project's research decisions and the final software and
|
| 726 |
-
documentation. AI assistance does not constitute independent validation
|
| 727 |
-
of the implementation or its scientific claims; the validation evidence
|
| 728 |
-
and limitations are stated separately in this report.
|
| 729 |
-
|
| 730 |
-
\bibliographystyle{ACM-Reference-Format}
|
| 731 |
-
\bibliography{references}
|
| 732 |
-
|
| 733 |
-
\section*{Suggested citation}
|
| 734 |
-
William Taggart. 2026. AFFECTOR-ARC: Emotional Trajectory Control
|
| 735 |
-
through Transformer Activation Steering. Technical report. Modern and
|
| 736 |
-
Classical Languages and Literatures, Virginia Tech. ACM manuscript
|
| 737 |
-
edition, November 13, 2026.
|
| 738 |
-
\url{https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/TECHNICAL_REPORT.md}
|
| 739 |
-
|
| 740 |
-
|
| 741 |
-
\end{document}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
acm/LITERATURE_SOURCES.md
DELETED
|
@@ -1,100 +0,0 @@
|
|
| 1 |
-
# Literature source verification
|
| 2 |
-
|
| 3 |
-
Checked November 13, 2026. This is a focused literature selection, not an exhaustive systematic review or independent replication. Bibliographic metadata was checked on arXiv abstract records and compared with the associated HTML/PDF text. The section locations below identify support for the bounded summaries in the reports. Peer-review status is not inferred from arXiv hosting.
|
| 4 |
-
|
| 5 |
-
## R1. Activation Addition: Steering Language Models Without Optimization
|
| 6 |
-
|
| 7 |
-
Authors: Alex Turner; Lisa Thiergart; David Udell; Gavin Leech; Ulisse Mini; Monte MacDiarmid.
|
| 8 |
-
|
| 9 |
-
Record: [2308.10248v1](https://arxiv.org/abs/2308.10248v1). Paper: [version-specific text](https://arxiv.org/html/2308.10248v1). Version date: 2023-08-20.
|
| 10 |
-
|
| 11 |
-
Verification notes: Methods; natural-language control of sentiment, topic, style.
|
| 12 |
-
|
| 13 |
-
## R2. Steering Llama 2 via Contrastive Activation Addition
|
| 14 |
-
|
| 15 |
-
Authors: Nina Panickssery; Nick Gabrieli; Julian Schulz; Meg Tong; Evan Hubinger; Alexander Matt Turner.
|
| 16 |
-
|
| 17 |
-
Record: [2312.06681v4](https://arxiv.org/abs/2312.06681v4). Paper: [version-specific text](https://arxiv.org/html/2312.06681v4). Version date: 2024-07-05.
|
| 18 |
-
|
| 19 |
-
Verification notes: Section 3 and Figure 1; sections 4-7; first submitted 2023.
|
| 20 |
-
|
| 21 |
-
## R3. AI shares emotion with humans across languages and cultures
|
| 22 |
-
|
| 23 |
-
Authors: Xiuwen Wu; Hao Wang; Zhiang Yan; Xiaohan Tang; Pengfei Xu; Wai-Ting Siok; Ping Li; Jia-Hong Gao; Bingjiang Lyu; Lang Qin.
|
| 24 |
-
|
| 25 |
-
Record: [2506.13978v1](https://arxiv.org/abs/2506.13978v1). Paper: [version-specific text](https://arxiv.org/pdf/2506.13978v1). Version date: 2025-06-11.
|
| 26 |
-
|
| 27 |
-
Verification notes: PDF abstract and introduction; emotion-space alignment and steering; no arXiv HTML.
|
| 28 |
-
|
| 29 |
-
## R4. The Effectiveness of Style Vectors for Steering Large Language Models: A Human Evaluation
|
| 30 |
-
|
| 31 |
-
Authors: Diaoulé Diallo; Katharina Dworatzyk; Sophie Jentzsch; Peer Schütt; Sabine Theis; Tobias Hecking.
|
| 32 |
-
|
| 33 |
-
Record: [2601.21505v1](https://arxiv.org/abs/2601.21505v1). Paper: [version-specific text](https://arxiv.org/html/2601.21505v1). Version date: 2026-01-29.
|
| 34 |
-
|
| 35 |
-
Verification notes: Sections V-VII; arXiv record also lists IEEE Access 13 (2025), 191443-191457, DOI 10.1109/ACCESS.2025.3628500.
|
| 36 |
-
|
| 37 |
-
## R5. How Emotion Shapes the Behavior of LLMs and Agents: A Mechanistic Study
|
| 38 |
-
|
| 39 |
-
Authors: Moran Sun; Tianlin Li; Yuwei Zheng; Zhenhong Zhou; Aishan Liu; Xianglong Liu; Yang Liu.
|
| 40 |
-
|
| 41 |
-
Record: [2604.00005v1](https://arxiv.org/abs/2604.00005v1). Paper: [version-specific text](https://arxiv.org/html/2604.00005v1). Version date: 2026-03-09.
|
| 42 |
-
|
| 43 |
-
Verification notes: Sections 3-5; VAD-based E-STEER; date follows submission history rather than ID prefix.
|
| 44 |
-
|
| 45 |
-
## R6. Extracting and Steering Emotion Representations in Small Language Models: A Methodological Comparison
|
| 46 |
-
|
| 47 |
-
Authors: Jihoon Jeong.
|
| 48 |
-
|
| 49 |
-
Record: [2604.04064v1](https://arxiv.org/abs/2604.04064v1). Paper: [version-specific text](https://arxiv.org/html/2604.04064v1). Version date: 2026-04-05.
|
| 50 |
-
|
| 51 |
-
Verification notes: Sections 3 and 5-8; exploratory model-dependent regimes; no independent replication claimed.
|
| 52 |
-
|
| 53 |
-
## R7. Why Are Some Emotions Harder for LLMs? Uncovering the Causal Mechanisms of Emotion Inference via Sparse Autoencoders
|
| 54 |
-
|
| 55 |
-
Authors: Bangzhao Shu; Arinjay Singh; Mai ElSherief.
|
| 56 |
-
|
| 57 |
-
Record: [2604.25866v3](https://arxiv.org/abs/2604.25866v3). Paper: [version-specific text](https://arxiv.org/html/2604.25866v3). Version date: 2026-10-24.
|
| 58 |
-
|
| 59 |
-
Verification notes: Sections 4-6; current v3 title differs from v1 From Syntax to Emotion.
|
| 60 |
-
|
| 61 |
-
## R8. Read-Best Is Not Steer-Best: A Probing--Steering Layer Dissociation in Omni-Modal Large Language Models
|
| 62 |
-
|
| 63 |
-
Authors: Yibo Wang; Jisheng Dang; Bimei Wang; Yitao Wu; Wencan Zhang; Hong Peng; Jizhao Liu; Bin Hu; Qi Tian; Tat-Seng Chua.
|
| 64 |
-
|
| 65 |
-
Record: [2609.22135v1](https://arxiv.org/abs/2609.22135v1). Paper: [version-specific text](https://arxiv.org/html/2609.22135v1). Version date: 2026-08-24.
|
| 66 |
-
|
| 67 |
-
Verification notes: Sections III-V and VIII; date follows submission history rather than ID prefix.
|
| 68 |
-
|
| 69 |
-
## R9. Empathy Is Steerable but Multi-Axial: Mechanism Geometry and Persona Effects in LLMs
|
| 70 |
-
|
| 71 |
-
Authors: JuHeon Ha; Byounghan Lee; Yunseo Choi; Kyung-Ah Sohn.
|
| 72 |
-
|
| 73 |
-
Record: [2609.15654v1](https://arxiv.org/abs/2609.15654v1). Paper: [version-specific text](https://arxiv.org/html/2609.15654v1). Version date: 2026-09-14.
|
| 74 |
-
|
| 75 |
-
Verification notes: Sections 3-4 and 7; EPITOME proxy outcomes; arXiv comments report acceptance to EMNLP 2026 main conference.
|
| 76 |
-
|
| 77 |
-
## R10. Painless Activation Steering: An Automated, Lightweight Approach for Post-Training Large Language Models
|
| 78 |
-
|
| 79 |
-
Authors: Sasha Cui; Zhongren Chen.
|
| 80 |
-
|
| 81 |
-
Record: [2509.22739v3](https://arxiv.org/abs/2509.22739v3). Paper: [version-specific text](https://arxiv.org/html/2509.22739v3). Version date: 2026-05-15.
|
| 82 |
-
|
| 83 |
-
Verification notes: Sections 2-3 and 5; first submitted 2025; v3 checked.
|
| 84 |
-
|
| 85 |
-
## R11. Dynamically Scaled Activation Steering
|
| 86 |
-
|
| 87 |
-
Authors: Alex Ferrando; Xavier Suau; Jordi Gonzàlez; Pau Rodriguez.
|
| 88 |
-
|
| 89 |
-
Record: [2512.03661v2](https://arxiv.org/abs/2512.03661v2). Paper: [version-specific text](https://arxiv.org/html/2512.03661v2). Version date: 2026-07-30.
|
| 90 |
-
|
| 91 |
-
Verification notes: Sections 3-5; first submitted 2025; v2 checked; author names follow arXiv metadata.
|
| 92 |
-
|
| 93 |
-
## R12. Does Steering Break Your Model? A Multi-Dimensional Evaluation Suite for LLM Steering Methods
|
| 94 |
-
|
| 95 |
-
Authors: Haotian Yang; Huikang Jiang; Yucheng Wu; Wen-Jie Jiang; Chenpeng Wang; Yibin Lou; Liangming Pan.
|
| 96 |
-
|
| 97 |
-
Record: [2610.07722v1](https://arxiv.org/abs/2610.07722v1). Paper: [version-specific text](https://arxiv.org/html/2610.07722v1). Version date: 2026-10-06.
|
| 98 |
-
|
| 99 |
-
Verification notes: Sections 3-5; efficacy and side effects under matched evaluation.
|
| 100 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
acm/README.md
DELETED
|
@@ -1,21 +0,0 @@
|
|
| 1 |
-
# AFFECTOR-ARC: Emotional Trajectory Control through Transformer Activation Steering
|
| 2 |
-
|
| 3 |
-
Uses the official ACM acmart class with manuscript, screen, and nonacm options. This is an independently distributed report, not an assertion of ACM publication or acceptance. No venue, DOI, or copyright transfer is invented.
|
| 4 |
-
|
| 5 |
-
## Build
|
| 6 |
-
|
| 7 |
-
With a current TeX Live/MacTeX installation including acmart:
|
| 8 |
-
|
| 9 |
-
latexmk -pdf AFFECTOR-ARC-ACM.tex
|
| 10 |
-
|
| 11 |
-
Or Tectonic 0.17.0:
|
| 12 |
-
|
| 13 |
-
tectonic --keep-logs --keep-intermediates AFFECTOR-ARC-ACM.tex
|
| 14 |
-
|
| 15 |
-
The bibliography uses ACM-Reference-Format.bst. The generated .bbl is included; references.bib remains editable. All packages are standard TeX distribution packages. No shell escape is needed. The manuscript layout is single-column; change manuscript to sigconf for a venue requiring two columns, then recheck layout.
|
| 16 |
-
|
| 17 |
-
Includes the source Markdown snapshot and citation verification notes. Equations, tables, and citations are native LaTeX. AI disclosure appears immediately before the references.
|
| 18 |
-
|
| 19 |
-
Original report: https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/TECHNICAL_REPORT.md
|
| 20 |
-
|
| 21 |
-
Build verified with Tectonic 0.17.0 and bundled acmart v1.83 (2022/02/19). All 12 bibliography entries resolve.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
acm/references.bib
DELETED
|
@@ -1,120 +0,0 @@
|
|
| 1 |
-
@misc{turner2023actadd,
|
| 2 |
-
author = {Alex Turner and Lisa Thiergart and David Udell and Gavin Leech and Ulisse Mini and Monte MacDiarmid},
|
| 3 |
-
title = {{Activation Addition: Steering Language Models Without Optimization}},
|
| 4 |
-
year = {2023},
|
| 5 |
-
eprint = {2308.10248v1},
|
| 6 |
-
archivePrefix = {arXiv},
|
| 7 |
-
url = {https://arxiv.org/abs/2308.10248v1},
|
| 8 |
-
note = {Cited version dated 2023-08-20; metadata checked 2026-11-13}
|
| 9 |
-
}
|
| 10 |
-
|
| 11 |
-
@misc{panickssery2024caa,
|
| 12 |
-
author = {Nina Panickssery and Nick Gabrieli and Julian Schulz and Meg Tong and Evan Hubinger and Alexander Matt Turner},
|
| 13 |
-
title = {{Steering Llama 2 via Contrastive Activation Addition}},
|
| 14 |
-
year = {2024},
|
| 15 |
-
eprint = {2312.06681v4},
|
| 16 |
-
archivePrefix = {arXiv},
|
| 17 |
-
url = {https://arxiv.org/abs/2312.06681v4},
|
| 18 |
-
note = {Cited version dated 2024-07-05; metadata checked 2026-11-13}
|
| 19 |
-
}
|
| 20 |
-
|
| 21 |
-
@misc{wu2025emotion,
|
| 22 |
-
author = {Xiuwen Wu and Hao Wang and Zhiang Yan and Xiaohan Tang and Pengfei Xu and Wai-Ting Siok and Ping Li and Jia-Hong Gao and Bingjiang Lyu and Lang Qin},
|
| 23 |
-
title = {{AI shares emotion with humans across languages and cultures}},
|
| 24 |
-
year = {2025},
|
| 25 |
-
eprint = {2506.13978v1},
|
| 26 |
-
archivePrefix = {arXiv},
|
| 27 |
-
url = {https://arxiv.org/abs/2506.13978v1},
|
| 28 |
-
note = {Cited version dated 2025-06-11; metadata checked 2026-11-13}
|
| 29 |
-
}
|
| 30 |
-
|
| 31 |
-
@misc{diallo2026style,
|
| 32 |
-
author = {Diaoulé Diallo and Katharina Dworatzyk and Sophie Jentzsch and Peer Schütt and Sabine Theis and Tobias Hecking},
|
| 33 |
-
title = {{The Effectiveness of Style Vectors for Steering Large Language Models: A Human Evaluation}},
|
| 34 |
-
year = {2026},
|
| 35 |
-
eprint = {2601.21505v1},
|
| 36 |
-
archivePrefix = {arXiv},
|
| 37 |
-
url = {https://arxiv.org/abs/2601.21505v1},
|
| 38 |
-
note = {Cited version dated 2026-01-29; metadata checked 2026-11-13}
|
| 39 |
-
}
|
| 40 |
-
|
| 41 |
-
@misc{sun2026emotion,
|
| 42 |
-
author = {Moran Sun and Tianlin Li and Yuwei Zheng and Zhenhong Zhou and Aishan Liu and Xianglong Liu and Yang Liu},
|
| 43 |
-
title = {{How Emotion Shapes the Behavior of LLMs and Agents: A Mechanistic Study}},
|
| 44 |
-
year = {2026},
|
| 45 |
-
eprint = {2604.00005v1},
|
| 46 |
-
archivePrefix = {arXiv},
|
| 47 |
-
url = {https://arxiv.org/abs/2604.00005v1},
|
| 48 |
-
note = {Cited version dated 2026-03-09; metadata checked 2026-11-13}
|
| 49 |
-
}
|
| 50 |
-
|
| 51 |
-
@misc{jeong2026emotion,
|
| 52 |
-
author = {Jihoon Jeong},
|
| 53 |
-
title = {{Extracting and Steering Emotion Representations in Small Language Models: A Methodological Comparison}},
|
| 54 |
-
year = {2026},
|
| 55 |
-
eprint = {2604.04064v1},
|
| 56 |
-
archivePrefix = {arXiv},
|
| 57 |
-
url = {https://arxiv.org/abs/2604.04064v1},
|
| 58 |
-
note = {Cited version dated 2026-04-05; metadata checked 2026-11-13}
|
| 59 |
-
}
|
| 60 |
-
|
| 61 |
-
@misc{shu2026emotion,
|
| 62 |
-
author = {Bangzhao Shu and Arinjay Singh and Mai ElSherief},
|
| 63 |
-
title = {{Why Are Some Emotions Harder for LLMs? Uncovering the Causal Mechanisms of Emotion Inference via Sparse Autoencoders}},
|
| 64 |
-
year = {2026},
|
| 65 |
-
eprint = {2604.25866v3},
|
| 66 |
-
archivePrefix = {arXiv},
|
| 67 |
-
url = {https://arxiv.org/abs/2604.25866v3},
|
| 68 |
-
note = {Cited version dated 2026-10-24; metadata checked 2026-11-13}
|
| 69 |
-
}
|
| 70 |
-
|
| 71 |
-
@misc{wang2026readbest,
|
| 72 |
-
author = {Yibo Wang and Jisheng Dang and Bimei Wang and Yitao Wu and Wencan Zhang and Hong Peng and Jizhao Liu and Bin Hu and Qi Tian and Tat-Seng Chua},
|
| 73 |
-
title = {{Read-Best Is Not Steer-Best: A Probing--Steering Layer Dissociation in Omni-Modal Large Language Models}},
|
| 74 |
-
year = {2026},
|
| 75 |
-
eprint = {2609.22135v1},
|
| 76 |
-
archivePrefix = {arXiv},
|
| 77 |
-
url = {https://arxiv.org/abs/2609.22135v1},
|
| 78 |
-
note = {Cited version dated 2026-08-24; metadata checked 2026-11-13}
|
| 79 |
-
}
|
| 80 |
-
|
| 81 |
-
@misc{ha2026empathy,
|
| 82 |
-
author = {JuHeon Ha and Byounghan Lee and Yunseo Choi and Kyung-Ah Sohn},
|
| 83 |
-
title = {{Empathy Is Steerable but Multi-Axial: Mechanism Geometry and Persona Effects in LLMs}},
|
| 84 |
-
year = {2026},
|
| 85 |
-
eprint = {2609.15654v1},
|
| 86 |
-
archivePrefix = {arXiv},
|
| 87 |
-
url = {https://arxiv.org/abs/2609.15654v1},
|
| 88 |
-
note = {Cited version dated 2026-09-14; metadata checked 2026-11-13}
|
| 89 |
-
}
|
| 90 |
-
|
| 91 |
-
@misc{cui2025pas,
|
| 92 |
-
author = {Sasha Cui and Zhongren Chen},
|
| 93 |
-
title = {{Painless Activation Steering: An Automated, Lightweight Approach for Post-Training Large Language Models}},
|
| 94 |
-
year = {2025},
|
| 95 |
-
eprint = {2509.22739v3},
|
| 96 |
-
archivePrefix = {arXiv},
|
| 97 |
-
url = {https://arxiv.org/abs/2509.22739v3},
|
| 98 |
-
note = {Cited version dated 2026-05-15; metadata checked 2026-11-13}
|
| 99 |
-
}
|
| 100 |
-
|
| 101 |
-
@misc{ferrando2025dsas,
|
| 102 |
-
author = {Alex Ferrando and Xavier Suau and Jordi Gonzàlez and Pau Rodriguez},
|
| 103 |
-
title = {{Dynamically Scaled Activation Steering}},
|
| 104 |
-
year = {2025},
|
| 105 |
-
eprint = {2512.03661v2},
|
| 106 |
-
archivePrefix = {arXiv},
|
| 107 |
-
url = {https://arxiv.org/abs/2512.03661v2},
|
| 108 |
-
note = {Cited version dated 2026-07-30; metadata checked 2026-11-13}
|
| 109 |
-
}
|
| 110 |
-
|
| 111 |
-
@misc{yang2026steerscope,
|
| 112 |
-
author = {Haotian Yang and Huikang Jiang and Yucheng Wu and Wen-Jie Jiang and Chenpeng Wang and Yibin Lou and Liangming Pan},
|
| 113 |
-
title = {{Does Steering Break Your Model? A Multi-Dimensional Evaluation Suite for LLM Steering Methods}},
|
| 114 |
-
year = {2026},
|
| 115 |
-
eprint = {2610.07722v1},
|
| 116 |
-
archivePrefix = {arXiv},
|
| 117 |
-
url = {https://arxiv.org/abs/2610.07722v1},
|
| 118 |
-
note = {Cited version dated 2026-10-06; metadata checked 2026-11-13}
|
| 119 |
-
}
|
| 120 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
acm/source.md
DELETED
|
@@ -1,357 +0,0 @@
|
|
| 1 |
-
# AFFECTOR-ARC: Emotional Trajectory Control through Transformer Activation Steering
|
| 2 |
-
|
| 3 |
-
**William Taggart**
|
| 4 |
-
Modern and Classical Languages and Literatures, Virginia Tech
|
| 5 |
-
Email: wtaggart@vt.edu
|
| 6 |
-
**Technical report · November 13, 2026 · Revision 0.2**
|
| 7 |
-
|
| 8 |
-
## Abstract
|
| 9 |
-
|
| 10 |
-
AFFECTOR-ARC is an experimental command-line system for rewriting text under a user-defined emotional trajectory. It runs a frozen Qwen3.5-0.8B model on an NVIDIA GPU and changes selected internal activations during generation. A trajectory specifies valence, inward/outward emotional orientation, and intensity across normalized document position. Small sets of contrasting English passages establish three activation directions at each selected transformer layer. At inference time, the requested coordinates determine a weighted displacement, scaled relative to the current hidden-state magnitude, smoothed across decoding steps, and constrained by an RMS budget. Paired hooks apply this displacement to both the feed-forward input and its residual path. Document rewriting combines these interventions with four editing styles, sentence-aware segmentation, bounded generation, and incremental reporting. This report derives the mechanism from its implemented operations and distinguishes numerical controls from emotional outcomes. CPU policy tests pass; the current revision still requires CUDA validation. No measured claim of emotional accuracy, semantic preservation, or multilingual effectiveness is made.
|
| 11 |
-
|
| 12 |
-
## Literature review: activation steering and emotion
|
| 13 |
-
|
| 14 |
-
This focused review covers twelve papers, emphasizing 2025-2026 research and retaining two methodological foundations. Titles, author lists, version histories, and the claims summarized here were checked against arXiv records and the corresponding paper text on November 13, 2026. The cited versions are fixed below; availability on arXiv alone does not establish peer review. The implications for this project are research motivations, not evidence that its implementation reproduces these results.
|
| 15 |
-
|
| 16 |
-
**From activation differences to behavioral control.** Activation steering changes internal model states during inference while leaving the backbone weights fixed. Turner et al. derive intervention vectors from contrasting prompts; Panickssery et al. average differences across positive and negative behavioral examples. These provide the methodological basis for contrastive calibration, but do not validate a particular emotional coordinate system or insertion site. [Turner et al., 2023 (R1)](https://arxiv.org/abs/2308.10248v1); [Panickssery et al., 2024 (R2)](https://arxiv.org/abs/2312.06681v4).
|
| 17 |
-
|
| 18 |
-
**Emotional expression and human judgment.** Wu et al. relate model emotion spaces to human valence/arousal judgments and report concept-based steering across linguistic-cultural settings. Diallo et al. evaluate perceived emotional intensity and text quality with human raters, finding that effects depend on emotion and steering strength. Together they motivate separate measures of emotional movement and readability. Their axes and numerical strengths cannot be assumed equivalent to this project's inward/outward direction or RMS-scaled controls. [Wu et al., 2025 (R3)](https://arxiv.org/abs/2506.13978v1); [Diallo et al., 2026 arXiv version (R4)](https://arxiv.org/abs/2601.21505v1).
|
| 19 |
-
|
| 20 |
-
**Emotion can affect more than tone.** Sun et al.'s E-STEER uses valence-arousal-dominance interventions to study reasoning, generation, safety, and agent behavior, reporting non-monotonic relationships. Jeong's small-model comparison reports both coherent emotional changes and degeneration, including repetition, depending on extraction method and architecture. These findings motivate reporting failed generations alongside successes and testing strength sweeps rather than assuming that larger perturbations improve emotional fit. Neither study establishes an operating range for this implementation. [Sun et al., 2026 (R5)](https://arxiv.org/abs/2604.00005v1); [Jeong, 2026 (R6)](https://arxiv.org/abs/2604.04064v1).
|
| 21 |
-
|
| 22 |
-
**Reading an emotion is different from controlling it.** Shu et al.'s revised study identifies uneven causal organization of sparse features across emotion categories and tests interventions for emotion recognition. Wang et al. show, in omni-modal models, that layers with strong emotion-probing accuracy need not be the best intervention layers. Recognition results therefore inform evaluator design, while layer selection for rewriting still requires causal tests on generated text. Neither finding licenses importing layer indices across architectures. [Shu et al., 2026, v3 (R7)](https://arxiv.org/abs/2604.25866v3); [Wang et al., 2026 (R8)](https://arxiv.org/abs/2609.22135v1).
|
| 23 |
-
|
| 24 |
-
**Multiple axes and adaptive control.** Ha et al. find that supportive-empathy directions are only partially separable: intervening on one can shift other EPITOME proxy scores. Cui and Chen automate vector extraction from labeled data, with task-dependent benefits. Ferrando et al. adapt intervention strength to context, studying the balance between toxicity mitigation and retained utility. These approaches motivate broader calibration, cross-axis tests, and future adaptive control. The present coordinate mixture is not an implementation of their learned selectors or context-dependent gates. [Ha et al., 2026 (R9)](https://arxiv.org/abs/2609.15654v1); [Cui and Chen, 2025, revised 2026 (R10)](https://arxiv.org/abs/2509.22739v3); [Ferrando et al., 2025, revised 2026 (R11)](https://arxiv.org/abs/2512.03661v2).
|
| 25 |
-
|
| 26 |
-
**Evaluation must include costs as well as target effects.** Yang et al.'s SteerScope evaluates steering efficacy jointly with side effects, generalization, and data dependence. In its tested settings, activation methods do not dominate prompt steering on the efficacy/side-effect trade-off. For this project, the resulting evaluation priorities are prompt-only and unsteered baselines, blinded emotional and quality ratings, content-change assessment appropriate to the rewrite style, and complete accounting of repetition, truncation, and original-text fallbacks. This is an evaluation agenda, not a completed benchmark. [Yang et al., 2026 (R12)](https://arxiv.org/abs/2610.07722v1).
|
| 27 |
-
|
| 28 |
-
## 1. Problem and operating principle
|
| 29 |
-
|
| 30 |
-
A language model generates text by repeatedly estimating a distribution over the next token. Its intermediate hidden states are numerical vectors that contribute to those estimates. Changing a hidden state can change the continuation even when the input text and the model's stored parameters remain fixed.
|
| 31 |
-
|
| 32 |
-
AFFECTOR-ARC uses this property to influence the emotional expression of a rewrite. The user supplies an input document and a sequence of emotional coordinates. The software maps positions in the input to positions on that sequence, converts the coordinates into activation displacements, and applies the displacements while generating each rewritten passage.
|
| 33 |
-
|
| 34 |
-
The term **geometry** means an ordered path through a three-dimensional coordinate space, together with layer settings and optional calibration matrices. It does not mean that the software reconstructs a solid surface or applies geometric constraints directly to words. A text's emotional interpretation, a numerical target, and a model's hidden states are distinct objects. The calibration is an experimental mapping between them.
|
| 35 |
-
|
| 36 |
-
Two execution modes are available:
|
| 37 |
-
|
| 38 |
-
- **Rewrite:** process an entire UTF-8 text document in chunks, write the transformed text, and record attempts and failures.
|
| 39 |
-
- **Smoke:** run five controlled generation conditions to check basic intervention and cleanup behavior.
|
| 40 |
-
|
| 41 |
-
The interface is a command-line runner for a CUDA allocation. It does not provide a desktop interface, a hosted API service, automatic emotional scoring, or conversational history.
|
| 42 |
-
|
| 43 |
-
## 2. Runtime and data flow
|
| 44 |
-
|
| 45 |
-
The runner loads `Qwen/Qwen3.5-0.8B` at revision `2fc06364715b967f1860aea9cf38778875588b17`. The implementation uses `Qwen3_5ForConditionalGeneration`, its text decoder layers, float32 computation, eager attention, and the first process-visible CUDA device. It checks for 24 decoder layers; the geometry and calibration code assume hidden width 1,024. The backbone is in evaluation mode, its parameters have gradients disabled, and calibration and generation run without gradient tracking.
|
| 46 |
-
|
| 47 |
-
The execution sequence is:
|
| 48 |
-
|
| 49 |
-
```text
|
| 50 |
-
Read text and geometry settings
|
| 51 |
-
→ validate controls
|
| 52 |
-
→ load the pinned model on CUDA
|
| 53 |
-
→ calibrate the selected layers
|
| 54 |
-
→ select rewrite or smoke mode
|
| 55 |
-
→ generate with temporary activation hooks
|
| 56 |
-
→ remove hooks and save results
|
| 57 |
-
```
|
| 58 |
-
|
| 59 |
-
Source files are distributed with the repository. `ENGINE_MANIFEST.json` records hashes for the bundled engine snapshot. Model weights are downloaded separately. The setup script creates a Python 3.12 environment, installs PyTorch from the CUDA 12.6 wheel index, pins Transformers to 5.22.2, runs the CPU policy tests, and records installed packages in `environment-resolved.txt`. PyTorch and several support packages are resolved during setup rather than fully locked in advance.
|
| 60 |
-
|
| 61 |
-
The example Slurm script requests one GPU, eight CPU cores, 64 GB of host memory, and one hour. These are scheduling requests, not measured minimum requirements. Users must supply an allocation and a suitable model cache. The runner is single-process and single-GPU; it is not a concurrent inference server.
|
| 62 |
-
|
| 63 |
-
## 3. Emotional coordinates and trajectory interpolation
|
| 64 |
-
|
| 65 |
-
A trajectory point is
|
| 66 |
-
|
| 67 |
-
$$
|
| 68 |
-
p_j=(t_j,v_j,d_j,i_j),
|
| 69 |
-
$$
|
| 70 |
-
|
| 71 |
-
where positions $t_j$ increase strictly within $[0,1]$. Valence $v_j$ ranges from negative to positive in $[-1,1]$. Direction $d_j$ ranges from inward-oriented to outward-oriented emotion in $[-1,1]$. Intensity $i_j$ ranges from low to high in $[0,1]$. Direction is an operational contrast concerning emotional orientation; it is not dominance, speaker identification, or positive versus negative sentiment.
|
| 72 |
-
|
| 73 |
-
Between adjacent points, the software linearly interpolates each emotional coordinate. Before the first point and after the last, it uses the endpoint values. The coefficient vector passed to the activation module is
|
| 74 |
-
|
| 75 |
-
$$
|
| 76 |
-
c(t)=\bigl(v(t),d(t),2i(t)-1\bigr).
|
| 77 |
-
$$
|
| 78 |
-
|
| 79 |
-
Consequently, intensity 0.5 contributes a zero intensity coefficient; intensity zero contributes a negative coefficient. These are control conventions, not empirically established psychological units.
|
| 80 |
-
|
| 81 |
-
For a chunk occupying character offsets $[a,b)$ in an input of length $N$, its target is evaluated at
|
| 82 |
-
|
| 83 |
-
$$
|
| 84 |
-
t=\frac{a+b}{2N}.
|
| 85 |
-
$$
|
| 86 |
-
|
| 87 |
-
That target remains constant throughout generation of the chunk. A long trajectory can therefore guide a short document without pairing source and target paragraphs one to one. Only the positions sampled by the target chunks are used; narrow changes between those positions may be missed. The mapping uses original input positions, not positions in the expanding or contracting output. Adjacent chunks receive separate generation calls without prior rewritten chunks as conversational context.
|
| 88 |
-
|
| 89 |
-
The runner accepts a native geometry JSON file and supported analysis JSON structures containing emotional coordinates. It recalibrates the basis on the current CUDA runtime even when the imported geometry includes one. With no geometry argument, it uses a demonstration path with three points; this path is not inferred from the input document.
|
| 90 |
-
|
| 91 |
-
## 4. Estimating activation directions
|
| 92 |
-
|
| 93 |
-
A hidden state at a selected layer is a vector in $\mathbb{R}^{1024}$. To estimate a direction associated with one emotional contrast, the system compares the model's states for paired passages that differ in the desired property.
|
| 94 |
-
|
| 95 |
-
There are four hand-authored English pairs for each of three axes. For layer $\ell$, axis $j$, and pair $k$, let $h^+_{\ell,j,k}$ and $h^-_{\ell,j,k}$ denote the captured states for the two members. The mean difference is
|
| 96 |
-
|
| 97 |
-
$$
|
| 98 |
-
u_{\ell,j}=\frac14\sum_{k=1}^{4}
|
| 99 |
-
\left(h^+_{\ell,j,k}-h^-_{\ell,j,k}\right).
|
| 100 |
-
$$
|
| 101 |
-
|
| 102 |
-
For a vector of dimension $D$, define root-mean-square magnitude as
|
| 103 |
-
|
| 104 |
-
$$
|
| 105 |
-
\operatorname{RMS}(x)=\sqrt{\frac1D\sum_{r=1}^{D}x_r^2}.
|
| 106 |
-
$$
|
| 107 |
-
|
| 108 |
-
The normalized direction is
|
| 109 |
-
|
| 110 |
-
$$
|
| 111 |
-
b_{\ell,j}=\frac{u_{\ell,j}}
|
| 112 |
-
{\max(\operatorname{RMS}(u_{\ell,j}),10^{-8})}.
|
| 113 |
-
$$
|
| 114 |
-
|
| 115 |
-
The three directions form the rows of a matrix $B_\ell\in\mathbb{R}^{3\times1024}$. Calibration captures the final chat-formatted prompt position immediately before `post_attention_layernorm`. It does not average all token positions. All selected layers are captured during the same 24 forward passes: three axes, four pairs, and two members per pair.
|
| 116 |
-
|
| 117 |
-
Default layers are 8, 16, and 23, using zero-based indexing, with weights 1, 1, and 0.5. This is subtraction, averaging, and normalization; there is no training optimizer, backbone fine-tuning, orthogonalization, or outcome-based fitting. The small calibration set may encode vocabulary, topic, or perspective along with emotion. Normalizing the vectors does not establish that the axes are independent or valid across languages.
|
| 118 |
-
|
| 119 |
-
## 5. From coordinates to bounded displacements
|
| 120 |
-
|
| 121 |
-
### 5.1 Selecting and weighting axes
|
| 122 |
-
|
| 123 |
-
Let $T$ be axis temperature. Each coordinate first receives magnitude
|
| 124 |
-
|
| 125 |
-
$$
|
| 126 |
-
q_j=|c_j|^{1/T}.
|
| 127 |
-
$$
|
| 128 |
-
|
| 129 |
-
Axes are sorted by this magnitude. The algorithm retains at most `axis_top_k` axes and stops adding axes after their accumulated magnitude reaches `axis_mass` times the total magnitude. Selection includes the axis that crosses the threshold. The retained coefficients are
|
| 130 |
-
|
| 131 |
-
$$
|
| 132 |
-
a_j=\operatorname{sign}(c_j)q_jm_j,
|
| 133 |
-
$$
|
| 134 |
-
|
| 135 |
-
where $m_j$ is one for a retained axis and zero otherwise. Coefficients are not renormalized after selection. For coordinate magnitudes below one, $T<1$ reduces their magnitudes and emphasizes relative differences; $T>1$ increases them and makes those differences less pronounced. These operations affect three activation coefficients, not token probabilities.
|
| 136 |
-
|
| 137 |
-
### 5.2 Strength, inertia, and budget
|
| 138 |
-
|
| 139 |
-
For the current final-token state $h_{\ell,n}$, strength $s$, and layer weight $w_\ell$, the raw displacement is
|
| 140 |
-
|
| 141 |
-
$$
|
| 142 |
-
r_{\ell,n}=s\,w_\ell\operatorname{RMS}(h_{\ell,n})(aB_\ell).
|
| 143 |
-
$$
|
| 144 |
-
|
| 145 |
-
Multiplication by the current state's RMS expresses the intervention relative to the layer's numerical scale. A negative layer weight reverses the mixed direction at that layer.
|
| 146 |
-
|
| 147 |
-
On the first decoding step, the smoothed displacement equals $r_{\ell,n}$. On later steps, inertia $\rho$ combines the previous applied displacement with the new raw displacement:
|
| 148 |
-
|
| 149 |
-
$$
|
| 150 |
-
\widetilde\delta_{\ell,n}=\rho\delta_{\ell,n-1}+(1-\rho)r_{\ell,n}.
|
| 151 |
-
$$
|
| 152 |
-
|
| 153 |
-
Budget $\beta$ then limits the RMS ratio:
|
| 154 |
-
|
| 155 |
-
$$
|
| 156 |
-
\delta_{\ell,n}=\widetilde\delta_{\ell,n}
|
| 157 |
-
\min\left(1,
|
| 158 |
-
\frac{\beta\operatorname{RMS}(h_{\ell,n})}
|
| 159 |
-
{\max(\operatorname{RMS}(\widetilde\delta_{\ell,n}),10^{-12})}
|
| 160 |
-
\right).
|
| 161 |
-
$$
|
| 162 |
-
|
| 163 |
-
Strength determines the proposed displacement; budget supplies its ceiling. Raising the budget has no effect when the proposed displacement already fits below it. Budget 1 permits a displacement as large in RMS as the hidden state itself. It is not a token allowance, a semantic-change quota, or a guarantee of stronger emotional accuracy. Inertia uses the previous already-capped displacement and resets with each new generation call.
|
| 164 |
-
|
| 165 |
-
### 5.3 Intervention site
|
| 166 |
-
|
| 167 |
-
Let $h$ denote the state entering the feed-forward portion of a decoder block. Without intervention, that portion computes
|
| 168 |
-
|
| 169 |
-
$$
|
| 170 |
-
y=h+\operatorname{FFN}(\operatorname{Norm}(h)).
|
| 171 |
-
$$
|
| 172 |
-
|
| 173 |
-
The implemented intervention produces
|
| 174 |
-
|
| 175 |
-
$$
|
| 176 |
-
y=(h+\delta)+\operatorname{FFN}(\operatorname{Norm}(h+\delta)).
|
| 177 |
-
$$
|
| 178 |
-
|
| 179 |
-
A pre-hook adds $\delta$ to the normalization input; a block-output hook adds the same displacement to the residual result. Adding a vector only after an unchanged feed-forward computation would have a different effect. Only the final prompt position is modified during prefill; cached decoding modifies the current generated position. The module does not wait for specific words or phrases. Generation hooks are removed in a `finally` block.
|
| 180 |
-
|
| 181 |
-
This is an open-loop intervention. Coefficients come from the requested absolute coordinates, not the difference between a measured output emotion and the target. A zero coefficient adds no intervention on that axis; it does not actively neutralize emotion already expressed by the model.
|
| 182 |
-
|
| 183 |
-
## 6. User controls and rewrite instructions
|
| 184 |
-
|
| 185 |
-
| Control | Default without an imported override | Function |
|
| 186 |
-
|---|---:|---|
|
| 187 |
-
| Strength | 0.12 | Scale the proposed activation displacement |
|
| 188 |
-
| Budget | 0.20 | Cap displacement RMS relative to hidden-state RMS |
|
| 189 |
-
| Inertia | 0.20 | Weight the preceding applied displacement |
|
| 190 |
-
| Axis top-k | 3 | Maximum number of retained emotional axes |
|
| 191 |
-
| Axis mass | 1.0 | Cumulative magnitude threshold for axis selection |
|
| 192 |
-
| Axis temperature | 1.0 | Exponent control for emotional-axis magnitudes |
|
| 193 |
-
| Temperature | 0 | Select greedy decoding or token sampling |
|
| 194 |
-
| Top-p | 0.95 | Probability-mass cutoff when sampling |
|
| 195 |
-
| Top-k | 40 | Token candidate count when sampling |
|
| 196 |
-
| Base output tokens | 512 | Initial generation allowance, expanded in rewrite mode |
|
| 197 |
-
| Time limit | 120 seconds | Per-generation stopping threshold |
|
| 198 |
-
|
| 199 |
-
The CLI overrides only the activation settings explicitly supplied; other settings come from the imported geometry or defaults. Validation permits strength 0–2, budget 0–1, inertia 0–0.99, axis top-k 1–3, axis mass 0.01–1, and axis temperature 0.1–3. These accepted ranges are not validated operating recommendations. The terminal displays the warning: **Extreme values for strength, budget, and inertia may cause generation failures.**
|
| 200 |
-
|
| 201 |
-
At temperature zero, decoding is greedy and top-p/top-k are inactive. At positive temperature, they affect token selection after the model computes its scores. They do not replace or modify the three-axis activation selection mechanism.
|
| 202 |
-
|
| 203 |
-
Four system-prompt styles provide separate editing constraints:
|
| 204 |
-
|
| 205 |
-
- **Minimal:** change a few words or phrases while preserving nearly all wording and sentence order.
|
| 206 |
-
- **Restrained:** adjust tone through wording, rhythm, and emphasis while preserving central meaning, facts, terminology, and structure; invent no scenes or metaphors.
|
| 207 |
-
- **Balanced:** allow a clearer emotional shift and modest figurative language while retaining central meaning, facts, people, and events.
|
| 208 |
-
- **Creative:** permit changes to meaning, imagery, and events, while requesting concise output in the same language.
|
| 209 |
-
|
| 210 |
-
Restrained is the default in rewrite mode. Smoke mode retains its original general rewriting instruction unless a style is explicitly selected. Each prompt requests complete sentences and treats supplied text as material rather than instructions. A per-chunk suffix specifies the original character count and hard character allowance. Numerical emotional coordinates are not inserted into these prompts; the coordinates act through hidden states. Prompt instructions influence generation but are not formal semantic guarantees. The runner has no semantic-equivalence rejection filter and does not lower steering settings automatically.
|
| 211 |
-
|
| 212 |
-
## 7. Segmentation, length control, and repetition
|
| 213 |
-
|
| 214 |
-
The runner reads and trims the outer whitespace of a UTF-8 text file. Blank lines define paragraphs. Long paragraphs are split using a 700-character ceiling, preferring sentence punctuation when a suitable boundary exists, then whitespace, and finally a hard split. This is a punctuation heuristic, not a linguistic sentence parser. Original whitespace between chunks is preserved during output assembly.
|
| 215 |
-
|
| 216 |
-
Within each original paragraph, the character ceiling is 125% of the original span processed so far. If $s$ is the first chunk's start, $b_j$ the current chunk's end, and $U_j$ the output characters and intervening whitespace already used, the current allowance is
|
| 217 |
-
|
| 218 |
-
$$
|
| 219 |
-
L_j=\max\left(0,\left\lfloor1.25(b_j-s)\right\rfloor-U_j\right).
|
| 220 |
-
$$
|
| 221 |
-
|
| 222 |
-
Unused allowance carries forward within that paragraph. It cannot be borrowed from future chunks or transferred across a blank-line paragraph boundary. Character counts are Python string lengths, not word counts, encoded byte counts, or model-token counts.
|
| 223 |
-
|
| 224 |
-
Generation aims for the original length. Starting at 85% of the current input chunk's characters, a recognized sentence ending can stop generation. A separate hard character threshold prevents excessive expansion. The token allowance is
|
| 225 |
-
|
| 226 |
-
$$
|
| 227 |
-
K_j=\min\left(2048,\max(K_{\mathrm{base}},L_j)\right),
|
| 228 |
-
$$
|
| 229 |
-
|
| 230 |
-
which supplies decoding headroom but does not imply one token equals one character. The time threshold is checked between decoding steps and cannot interrupt a blocked GPU kernel immediately.
|
| 231 |
-
|
| 232 |
-
Decoding also uses a repetition penalty of 1.1 and an eight-token no-repeat n-gram constraint. A text-level detector checks every eight generation steps for repeated three- to six-word sequences appearing at least four times in the last 100 words, or a short compact character pattern repeated at least six times in the last 240 characters. These heuristics can miss some loops and can flag intentional repetition.
|
| 233 |
-
|
| 234 |
-
After a generation attempt, the runner checks for repetition, empty output, excessive length, and an unfinished ending. A problematic draft is reduced to a complete, nonrepetitive sentence prefix within its allowance. If none exists, the original chunk is retained and flagged. The returned draft remains in the report's attempt record before sentence salvage. However, the engine has already clipped it to the hard character allowance; the report is not a lossless record of characters beyond that boundary.
|
| 235 |
-
|
| 236 |
-
Sentence cleanup prevents chopped words from being joined directly to the next passage, but it may omit ideas from the tail of a draft. Neither punctuation recognition nor output-size compliance establishes completeness of meaning.
|
| 237 |
-
|
| 238 |
-
## 8. Failure handling and output artifacts
|
| 239 |
-
|
| 240 |
-
Each chunk receives one generation attempt at the requested activation settings. A caught generation exception is recorded; the original chunk remains in the assembled text and processing continues. Calibration failures, invalid inputs, filesystem failures, and process termination are outside this per-chunk recovery mechanism and can stop a run. A persistent device failure may cause subsequent chunks to fail as well.
|
| 241 |
-
|
| 242 |
-
After each processed chunk, the runner writes:
|
| 243 |
-
|
| 244 |
-
1. An atomic JSON report containing the input, geometry, calibration basis, runtime identity, style, sampling settings, character spans, target coordinates, and per-chunk records.
|
| 245 |
-
2. A matching plain-text file containing completed rewrites plus original text at unprocessed or retained positions.
|
| 246 |
-
|
| 247 |
-
Successful generation records include stopping reason, token count, elapsed time, activation-injection count, and mean displacement RMS. Attempt records retain returned drafts, effective controls, detected issues, and exceptions where applicable. At normal completion the report adds failure and review counts. `complete` means every chunk was processed, not that every chunk was successfully rewritten or emotionally accurate.
|
| 248 |
-
|
| 249 |
-
JSON writes use temporary-file replacement. The companion text file is written normally and may be incomplete if interrupted during that write. Reports are incremental records, not automatic resume checkpoints: rerunning starts over and overwrites the selected output paths. Use a distinct output filename for each experiment. Reports contain the input text and should be treated as document-bearing artifacts.
|
| 250 |
-
|
| 251 |
-
## 9. Engineering checks and evidence
|
| 252 |
-
|
| 253 |
-
Smoke mode is the default and operates on one supplied passage. It runs baseline, zero-strength, positive-valence, negative-valence, and restored-baseline conditions. Positive and negative conditions use coefficient vectors $(0.8,0,0)$ and $(-0.8,0,0)$. The third coordinate zero corresponds to intensity 0.5.
|
| 254 |
-
|
| 255 |
-
With greedy decoding, the checks require zero-strength and baseline decoded text/token counts to match, nonzero injections in the positive and negative cases, restored hook counts, restored baseline text/token counts, and disabled backbone gradients. Positive and negative outputs need not differ for these checks to pass. Settings that suppress all effective intervention are unsuitable for the nonzero-injection checks.
|
| 256 |
-
|
| 257 |
-
Smoke mode defaults to the original 128-token allowance and 600-second time threshold. Its original instruction permits changes in phrasing, imagery, and emotional expression while preserving the passage’s main subject and recognizable situation. It omits the new repetition penalty, n-gram guard, and document-length salvage so that existing commands retain their original generation configuration and compare raw generations. It saves completed conditions incrementally and marks `checks_complete` only after assertions pass. It does not compare logits, full token sequences, parameter hashes, or independently measured per-step RMS bounds. Run with ordinary Python rather than assertion-disabling optimization flags.
|
| 258 |
-
|
| 259 |
-
For the November 13 revision, seven CPU policy tests passed, Python and shell syntax were checked, and CLI loading was verified. Tests cover such behavior as unchanged requested controls, paragraph allowance accounting, draft retention, sentence cleanup, and continuing after a failed chunk. They do not execute the CUDA model. The current revision has not yet been run on an ARC GPU. A successful GPU run was reported for an earlier revision on November 12; it is historical evidence, not validation of the current code.
|
| 260 |
-
|
| 261 |
-
## 10. Reproduction
|
| 262 |
-
|
| 263 |
-
Inside a suitable ARC GPU allocation, from a fresh repository copy:
|
| 264 |
-
|
| 265 |
-
```bash
|
| 266 |
-
bash setup.sh
|
| 267 |
-
source "$(conda info --base)/etc/profile.d/conda.sh"
|
| 268 |
-
conda activate "$PWD/.conda"
|
| 269 |
-
python run_arc.py --mode smoke --text-file passage.txt \
|
| 270 |
-
--output runs/smoke.json
|
| 271 |
-
```
|
| 272 |
-
|
| 273 |
-
Setup expects a fresh `.conda` destination. A populated model cache or permitted download route is required. Existing compatible environments can execute the updated source directly.
|
| 274 |
-
|
| 275 |
-
To rewrite a document:
|
| 276 |
-
|
| 277 |
-
```bash
|
| 278 |
-
python run_arc.py --mode rewrite --text-file target.txt \
|
| 279 |
-
--geometry shape.json --style Restrained \
|
| 280 |
-
--strength 0.47 --budget 0.47 --inertia 0.2 \
|
| 281 |
-
--temperature 0 --top-p 0.95 --top-k 40 \
|
| 282 |
-
--output runs/rewrite.json
|
| 283 |
-
```
|
| 284 |
-
|
| 285 |
-
These strength and budget values illustrate explicit configuration; they are not an experimentally established optimum. Omitting `--geometry` selects the demonstration trajectory. Batch smoke execution uses `sbatch --account=YOUR_ALLOCATION smoke.sbatch`; the allocation and partition must suit the user's cluster access.
|
| 286 |
-
|
| 287 |
-
Archive the repository revision, engine manifest, resolved dependencies, GPU and driver information, command-line arguments, input, geometry, and report. The engine identity's `source_commit` field currently contains a snapshot label rather than a Git commit hash, so the repository revision should be recorded separately. The default seed is zero and TF32 matrix multiplication is disabled, but identical results across hardware and library versions are not guaranteed.
|
| 288 |
-
|
| 289 |
-
## 11. Scientific limits and evaluation requirements
|
| 290 |
-
|
| 291 |
-
The system offers a direct, inspectable intervention, not a demonstrated emotional matching algorithm. Its main limitations are the small English calibration set, untested interactions between axes and layers, open-loop use of absolute targets, and lack of independent output assessment. The model can change subject matter or factual claims, especially under Creative instructions or strong perturbations. Stronger displacement can degrade fluency without improving emotional alignment.
|
| 292 |
-
|
| 293 |
-
A proper evaluation should distinguish emotional movement from target accuracy. Collect independent ratings of input and output along operationally defined axes, compare requested and observed trajectories, and report failures and unmodified fallbacks alongside successful generations. Include unsteered rewriting, prompt-only emotional instructions, opposite targets, random directions of matched magnitude, and layer/axis ablations. Keep decoding settings fixed for controlled comparisons, and separate greedy from sampled experiments.
|
| 294 |
-
|
| 295 |
-
Semantic fidelity should be evaluated against the selected style: Creative permits mutation, whereas Restrained requests factual preservation. Fluency, coherence across chunks, omitted material, repetition, length ratios, latency, and memory consumption are separate outcomes. No automatic similarity score, feedback optimization, or acceptance threshold is implemented in this runner.
|
| 296 |
-
|
| 297 |
-
Changing to a larger model requires new architecture validation, basis calibration, layer selection, and operating-range experiments. A basis with three rows and 1,024 columns cannot simply be reused with a different hidden width or intervention site. Multilingual operation likewise requires independent calibration and evaluation; same-language prompt wording alone does not establish it.
|
| 298 |
-
|
| 299 |
-
## Implementation sources
|
| 300 |
-
|
| 301 |
-
This report describes the repository's executable operations rather than relying on another application's interface or documentation.
|
| 302 |
-
|
| 303 |
-
- [CUDA runner and smoke protocol](run_arc.py)
|
| 304 |
-
- [Document transformation and incremental output](document_run.py)
|
| 305 |
-
- [Calibration, displacement math, hooks, and decoding](engine/steering.py)
|
| 306 |
-
- [Geometry schema and interpolation](engine/geometry.py)
|
| 307 |
-
- [Segmentation and character allowance](engine/documents.py)
|
| 308 |
-
- [Rewrite system prompts](engine/rewrite_policy.py)
|
| 309 |
-
- [Repetition detection and draft salvage](engine/generation.py)
|
| 310 |
-
- [Engine source hashes](ENGINE_MANIFEST.json)
|
| 311 |
-
- [Generation policy tests](tests/test_generation.py) and [document-run tests](tests/test_document_run.py)
|
| 312 |
-
|
| 313 |
-
## AI assistance disclosure
|
| 314 |
-
|
| 315 |
-
This project was created with assistance from GPT-6 Astra and Codex. AI tools supported software development, testing, and the drafting and revision of this technical report. William Taggart is responsible for the project's research decisions and the final software and documentation. AI assistance does not constitute independent validation of the implementation or its scientific claims; the validation evidence and limitations are stated separately in this report.
|
| 316 |
-
|
| 317 |
-
## Research references
|
| 318 |
-
|
| 319 |
-
Version-specific arXiv records are linked below. Years distinguish original release from later revision where applicable. These research references supplement the implementation and infrastructure sources elsewhere in this report. Reusable citations: [BibTeX](references.bib). Verification details: [source-check notes](LITERATURE_SOURCES.md).
|
| 320 |
-
|
| 321 |
-
**R1.** Alex Turner; Lisa Thiergart; David Udell; Gavin Leech; Ulisse Mini; Monte MacDiarmid. 2023. Activation Addition: Steering Language Models Without Optimization. [arXiv:2308.10248v1](https://arxiv.org/abs/2308.10248v1). Cited version dated 2023-08-20.
|
| 322 |
-
|
| 323 |
-
**R2.** Nina Panickssery; Nick Gabrieli; Julian Schulz; Meg Tong; Evan Hubinger; Alexander Matt Turner. 2024. Steering Llama 2 via Contrastive Activation Addition. [arXiv:2312.06681v4](https://arxiv.org/abs/2312.06681v4). Cited version dated 2024-07-05.
|
| 324 |
-
|
| 325 |
-
**R3.** Xiuwen Wu; Hao Wang; Zhiang Yan; Xiaohan Tang; Pengfei Xu; Wai-Ting Siok; Ping Li; Jia-Hong Gao; Bingjiang Lyu; Lang Qin. 2025. AI shares emotion with humans across languages and cultures. [arXiv:2506.13978v1](https://arxiv.org/abs/2506.13978v1). Cited version dated 2025-06-11.
|
| 326 |
-
|
| 327 |
-
**R4.** Diaoulé Diallo; Katharina Dworatzyk; Sophie Jentzsch; Peer Schütt; Sabine Theis; Tobias Hecking. 2026. The Effectiveness of Style Vectors for Steering Large Language Models: A Human Evaluation. [arXiv:2601.21505v1](https://arxiv.org/abs/2601.21505v1). Cited version dated 2026-01-29. ArXiv record lists IEEE Access 13 (2025), 191443-191457; DOI: 10.1109/ACCESS.2025.3628500.
|
| 328 |
-
|
| 329 |
-
**R5.** Moran Sun; Tianlin Li; Yuwei Zheng; Zhenhong Zhou; Aishan Liu; Xianglong Liu; Yang Liu. 2026. How Emotion Shapes the Behavior of LLMs and Agents: A Mechanistic Study. [arXiv:2604.00005v1](https://arxiv.org/abs/2604.00005v1). Cited version dated 2026-03-09.
|
| 330 |
-
|
| 331 |
-
**R6.** Jihoon Jeong. 2026. Extracting and Steering Emotion Representations in Small Language Models: A Methodological Comparison. [arXiv:2604.04064v1](https://arxiv.org/abs/2604.04064v1). Cited version dated 2026-04-05.
|
| 332 |
-
|
| 333 |
-
**R7.** Bangzhao Shu; Arinjay Singh; Mai ElSherief. 2026. Why Are Some Emotions Harder for LLMs? Uncovering the Causal Mechanisms of Emotion Inference via Sparse Autoencoders. [arXiv:2604.25866v3](https://arxiv.org/abs/2604.25866v3). Cited version dated 2026-10-24.
|
| 334 |
-
|
| 335 |
-
**R8.** Yibo Wang; Jisheng Dang; Bimei Wang; Yitao Wu; Wencan Zhang; Hong Peng; Jizhao Liu; Bin Hu; Qi Tian; Tat-Seng Chua. 2026. Read-Best Is Not Steer-Best: A Probing--Steering Layer Dissociation in Omni-Modal Large Language Models. [arXiv:2609.22135v1](https://arxiv.org/abs/2609.22135v1). Cited version dated 2026-08-24.
|
| 336 |
-
|
| 337 |
-
**R9.** JuHeon Ha; Byounghan Lee; Yunseo Choi; Kyung-Ah Sohn. 2026. Empathy Is Steerable but Multi-Axial: Mechanism Geometry and Persona Effects in LLMs. [arXiv:2609.15654v1](https://arxiv.org/abs/2609.15654v1). Cited version dated 2026-09-14. ArXiv comments report acceptance to the EMNLP 2026 main conference.
|
| 338 |
-
|
| 339 |
-
**R10.** Sasha Cui; Zhongren Chen. 2025. Painless Activation Steering: An Automated, Lightweight Approach for Post-Training Large Language Models. [arXiv:2509.22739v3](https://arxiv.org/abs/2509.22739v3). Cited version dated 2026-05-15.
|
| 340 |
-
|
| 341 |
-
**R11.** Alex Ferrando; Xavier Suau; Jordi Gonzàlez; Pau Rodriguez. 2025. Dynamically Scaled Activation Steering. [arXiv:2512.03661v2](https://arxiv.org/abs/2512.03661v2). Cited version dated 2026-07-30.
|
| 342 |
-
|
| 343 |
-
**R12.** Haotian Yang; Huikang Jiang; Yucheng Wu; Wen-Jie Jiang; Chenpeng Wang; Yibin Lou; Liangming Pan. 2026. Does Steering Break Your Model? A Multi-Dimensional Evaluation Suite for LLM Steering Methods. [arXiv:2610.07722v1](https://arxiv.org/abs/2610.07722v1). Cited version dated 2026-10-06.
|
| 344 |
-
|
| 345 |
-
### Suggested citation
|
| 346 |
-
|
| 347 |
-
```bibtex
|
| 348 |
-
@techreport{taggart2026affectorarc,
|
| 349 |
-
author = {Taggart, William},
|
| 350 |
-
title = {{AFFECTOR-ARC}: Emotional Trajectory Control through Transformer Activation Steering},
|
| 351 |
-
institution = {Modern and Classical Languages and Literatures, Virginia Tech},
|
| 352 |
-
year = {2026},
|
| 353 |
-
month = nov,
|
| 354 |
-
note = {Technical report, revision 0.2; current CUDA and emotional-effectiveness validation pending},
|
| 355 |
-
url = {https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/TECHNICAL_REPORT.md}
|
| 356 |
-
}
|
| 357 |
-
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|