ko-anti-cliche-gemma4-26b-a4b
A LoRA adapter for google/gemma-4-26B-A4B-it that suppresses the translationese typical of LLM-generated Korean โ phrasings such as ๋จ์ํ ~๊ฐ ์๋๋ผ ("not just X, but Y"), ํต์ฌ์ ~์ ์๋ค ("the key lies in X"), and ๋ฐ๋ง ๋ง๋ค ("that's only half true") โ and rewrites them into natural Korean.
What it suppresses
๋จ์ํ ~๊ฐ ์๋ B โ a manufactured contrast (English "not just X, but Y")
An English-style construction that props up a foil A โ set up only to be knocked down โ so that B sounds bigger.
๋จ์ํ ํต์ ๊ฐ ์๋ ๋น์ ์ด๋ค โ ๋น์ ์ ์ ์ํ๋ ๋ฅ๋ ฅ์ด๋ค
Genuine factual distinctions like GPU ๋ฌธ์ ๊ฐ ์๋๋ผ ๋๋ผ์ด๋ฒ ๋ฌธ์ ๋ค ("it's a driver issue, not a GPU issue") are natural in Korean and are left untouched.
ํต์ฌ์ ~์ ์๋ค โ a "lies in" calque (English "the key lies in X")
A literal rendering of "the key lies in"; the ~์ ์๋ค tail is the tell.
ํ์ ์ ํต์ฌ์ ์ ๋ขฐ์ ์๋ค โ ํ์ ์ ํต์ฌ์ ์ ๋ขฐ๋ค
๋ฐ๋ง ๋ง๋ค โ an "only half true" calque (English "that's only half true")
Common in answers that judge whether a claim holds.
Training
| Base | google/gemma-4-26B-A4B-it (MoE) |
| Adapter | LoRA, r=16, ฮฑ=32, dropout=0.05, target q,k,v,o (language tower) |
| Objective | 1.0ยทlocalized-DPO + 0.3ยทclean-anchor-CE + 0.7ยทtoken-unlikelihood |
| Data | 428 preference pairs (nabb 311 / ultimately 85 / half_right 32) |
| Schedule | ฮฒ=0.3, lr 2e-5, 2 epochs |
The preference signal is localized to the scaffold span/sentence rather than the full response (full-response DPO dilutes the gradient across hundreds of tokens). Token-level unlikelihood directly lowers the probability of the scaffold tokens (excluded on factual-correction rows), and a small CE anchor on the clean continuation preserves fluency. This recipe was chosen after plain weighted-SFT and full-response DPO both underperformed.
Self-evaluation
Protocol. 1,375 synthetic "definition" prompts were generated (275 abstract nouns ร 5 templates); the 1,167 on which the base model actually emitted a not-A-but-B scaffold were retained. Base and adapter were decoded through the same inference stack (HuggingFace, greedy) โ vLLM cannot serve LoRA on this MoE architecture. Rows whose output appears truncated were dropped, leaving N = 1,162. Pattern detection is a regex proxy (not audit-grade); rates are reported with 95% Wilson confidence intervals.
Table 1 โ Conditional removal rate (denominator = prompts where the base emits the target)
| Target pattern | n | Removed | 95% CI |
|---|---|---|---|
โ ๋จ์ํ/๋จ์ํ forced contrast |
1,063 | 86.6% | 84.5 โ 88.6 |
โก ~์ ์๋ค lies-in calque |
13 | 100.0% | 77.2 โ 100 |
Table 2 โ Auxiliary measures (N = 1,162)
| Measure | Base | Adapter |
|---|---|---|
๊ฒฐ๊ตญ frequency (token count) |
222 | 17 |
| Degenerate outputs (loop / breakage) | โ | 0 (0.0%) |
| Length ratio, adapter รท base (median) | โ | 0.93 |
| New scaffold family introduced (base-positive) | โ | 0 / 1,091 |
Limitations
English and Korean differ in how paragraphs and arguments are organized (point-first vs. point-last, etc.), and a LoRA does not change that discourse structure. It does, however, reduce the most visible translationese so individual sentences read less awkwardly.
Usage
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base = AutoModelForCausalLM.from_pretrained(
"google/gemma-4-26B-A4B-it", torch_dtype="bfloat16", device_map="auto")
tok = AutoTokenizer.from_pretrained("google/gemma-4-26B-A4B-it")
model = PeftModel.from_pretrained(base, "sdgb-ai/ko-anti-cliche-gemma4-26b-a4b")
ํ๊ตญ์ด
๋ณธ LoRA๋ Gemma๊ฐ ํ๊ตญ์ด๋ฅผ ์์ฑํ ๋ ๋ํ๋๋ "๋จ์ํ ~๊ฐ ์๋๋ผ", "ํต์ฌ์ ~์ ์๋ค", "๋ฐ๋ง ๋ง๋ค" ๊ฐ์ LLM ํน์ ์ ๋ฒ์ญํฌ๋ฅผ ์ต์ ํ๊ณ , ์์ฐ์ค๋ฌ์ด ํ๊ตญ์ด๋ก ๊ต์ ํ๋ค.
์ต์ ๋์
"๋จ์ํ ~๊ฐ ์๋ B" โ B๋ฅผ ๊ฐ์กฐํ๊ธฐ ์ํด ๊น์๋ด๋ฆด A๋ฅผ ์ธ์์ ์ผ๋ก ๋ง๋ค์ด ๋ด์ธ์ฐ๋ ์์ด์ ๊ตฌ๋ฌธ.
๋จ์ํ ํต์ ๊ฐ ์๋ ๋น์ ์ด๋ค โ ๋น์ ์ ์ ์ํ๋ ๋ฅ๋ ฅ์ด๋ค ๋ค๋ง "GPU ๋ฌธ์ ๊ฐ ์๋๋ผ ๋๋ผ์ด๋ฒ ๋ฌธ์ ๋ค"์ฒ๋ผ ์ค์ ์ฌ์ค์ ๊ตฌ๋ถํ๋ ํํ์ ํ๊ตญ์ด์์๋ ์์ฐ์ค๋ฌ์ฐ๋ฏ๋ก ์ต์ ํ์ง ์์.
"ํต์ฌ์ ~์ ์๋ค" โ ์์ด "the key lies in"์ ์ง์ญ. "~์ ์๋ค" ๊ผฌ๋ฆฌ.
ํ์ ์ ํต์ฌ์ ์ ๋ขฐ์ ์๋ค โ ํ์ ์ ํต์ฌ์ ์ ๋ขฐ๋ค
"๋ฐ๋ง ๋ง๋ค" โ "that's only half true"์ ์ง์ญ์ผ๋ก, ์ฃผ์ฅ์ ํ๊ฐํ๋ ๋ต๋ณ์์ ์์ฃผ ๋ํ๋จ.
ํ์ต ๋ฐฉ๋ฒ
| ๋ฒ ์ด์ค | google/gemma-4-26B-A4B-it (MoE) |
| ์ด๋ํฐ | LoRA, r=16, ฮฑ=32, dropout=0.05, target q,k,v,o (language tower) |
| ๋ชฉ์ ํจ์ | 1.0ยทlocalized-DPO + 0.3ยทclean-anchor-CE + 0.7ยทtoken-unlikelihood |
| ๋ฐ์ดํฐ | ์ ํธ์ 428๊ฐ (nabb 311 / ultimately 85 / half_right 32) |
| ์ค์ผ์ค | ฮฒ=0.3, lr 2e-5, 2 epoch |
์ ํธ ์ ํธ๋ฅผ ์๋ต ์ ์ฒด๊ฐ ์๋๋ผ ์ค์บํด๋ ๊ตฌ๊ฐ(๋ฌธ์ฅ/์คํฌ)์ ๊ตญ์ํํจ(์ ์ฒด ์๋ต DPO๋ ์๋ฐฑ ํ ํฐ์ ์ ํธ๊ฐ ํฌ์๋จ). token-level unlikelihood๋ก ์ค์บํด๋ ํ ํฐ ํ๋ฅ ์ ์ง์ ํํฅ(์ฌ์ค ๊ต์ ํ์ ์ ์ธ), ์์ CE ์ต์ปค๋ก ์ ์ฐฝ์ฑ์ ์ ์งํจ. weighted-SFT, full-response DPO๊ฐ ๋ถ์งํด ์ด ๋ ์ํผ๋ก ์ ํํจ.
์์ฒด ํ๊ฐ
๋ฐฉ๋ฒ. synthetic ์ ์ํ ํ๋กฌํํธ 1,375๊ฐ(์ถ์๋ช ์ฌ 275 ร ํ ํ๋ฆฟ 5) ์ค base๊ฐ not-A-but-B๋ฅผ ์ค์ ๋ก ์์ฑํ 1,167๊ฐ๋ฅผ ์ถ๋ฆผ. base์ adapter๋ฅผ ๋์ผ ์ถ๋ก ์คํ(HF greedy) ์ผ๋ก ๋์ฝ๋ฉ(vLLM์ ์ด MoE์ LoRA ๋ฏธ์ง์). ์๋ฆฐ ์ถ๋ ฅ ์ ์ธ โ N = 1,162. ํ์ง๋ ์ ๊ท์ proxy, 95% Wilson ์ ๋ขฐ๊ตฌ๊ฐ.
ํ 1 โ ์กฐ๊ฑด๋ถ ์ ๊ฑฐ์จ (๋ถ๋ชจ = base๊ฐ ํด๋น ํจํด์ ์์ฑํ ํ๋กฌํํธ)
| ํ์ ํจํด | n | ์ ๊ฑฐ | 95% CI |
|---|---|---|---|
โ ๋จ์ํ/๋จ์ํ ๊ฐ์ ๋์กฐ |
1,063 | 86.6% | 84.5 โ 88.6 |
โก ~์ ์๋ค lies-in ์ง์ญํฌ |
13 | 100.0% | 77.2 โ 100 |
ํ 2 โ ๋ณด์กฐ ์งํ (N = 1,162)
| ์งํ | base | adapter |
|---|---|---|
๊ฒฐ๊ตญ ๋น๋ (ํ ํฐ ์) |
222 | 17 |
| degenerate ์ถ๋ ฅ (๋ฐ๋ณต/๊นจ์ง) | โ | 0 (0.0%) |
| ๊ธธ์ด๋น adapter รท base (์ค์๊ฐ) | โ | 0.93 |
| ์ ๊ณจ๊ฒฉ family ๋์ (base-positive) | โ | 0 / 1,091 |
ํ๊ณ
์์ด์ ํ๊ตญ์ด๋ ๋ฌธ๋จ ๊ตฌ์ฑยท๋ ผ๋ฆฌ ์ ๊ฐ ๋ฐฉ์ ์์ฒด๊ฐ ๋ค๋ฅด์ง๋ง(๋๊ด์ vs ๋ฏธ๊ด์ ๋ฑ), ์ด ์ด๋ํฐ๊ฐ ๊ทธ ๋ดํ ๊ตฌ์กฐ๊น์ง ๋ฐ๊พธ์ง๋ ๋ชปํจ. ๋ค๋ง ๋์ ๋๋ ๋ฒ์ญํฌ๋ฅผ ์ค์ฌ ๋ฌธ์ฅ ๋จ์์ ์ด์ํจ์ ์ํํ๋ ์์ค์ผ๋ก ์ฌ์ฉํ ์ ์์.
LoRA r=16, q/k/v/o (language tower), 44MB. base google/gemma-4-26B-A4B-it (gemma license). Sibling adapters: ko-anti-cliche-gemma4-12b, ko-anti-cliche-gemma4-31b (planned), ko-anti-cliche-qwen3 (planned).