File size: 1,772 Bytes
0238aba
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"""Figure 2: strategic deception + concealment backfire (from v13)."""
import json
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt

with open("logs/rift_v13_results.json") as f:
    v13 = json.load(f)

fig, ax = plt.subplots(1, 2, figsize=(10, 4))
rng = np.random.default_rng(1)

for j, (key, title) in enumerate([("qwen7b", "Qwen2.5-7B"), ("phi3", "Phi-3-mini")]):
    d = v13[key]
    T = np.array(d["rankT_list"]); L = np.array(d["rankL_list"]); C = np.array(d["rankC_list"])
    groups = [("truth", T, "#2c7fb8"), ("strategic\nlie", L, "#d7301f"),
              ("lie +\nconceal", C, "#7a0177")]
    for i, (name, vals, col) in enumerate(groups):
        if len(vals) == 0:
            continue
        x = np.full_like(vals, i, dtype=float) + rng.normal(0, 0.05, size=len(vals))
        ax[j].scatter(x, vals, s=20, color=col, alpha=0.8, edgecolor="k", linewidth=0.3)
        ax[j].hlines(vals.mean(), i - 0.25, i + 0.25, color="k", lw=2)
    ax[j].set_xticks(range(3))
    ax[j].set_xticklabels([g[0] for g in groups])
    ax[j].set_ylabel("mean residual rank")
    ax[j].set_title(f"{title}: self-constructed lie detected (AUC 1.0);\n"
                    f"concealment does not reduce it")
    ax[j].grid(axis="y", alpha=0.3)

plt.tight_layout()
plt.savefig("paper/fig_strategic.pdf", bbox_inches="tight")
plt.savefig("paper/fig_strategic.png", dpi=150, bbox_inches="tight")
print("saved paper/fig_strategic.pdf/.png")
for key in ["qwen7b", "phi3"]:
    d = v13[key]
    T = np.array(d["rankT_list"]); L = np.array(d["rankL_list"]); C = np.array(d["rankC_list"])
    print(f"{key}: truth={T.mean():.3f} lie={L.mean():.3f} conceal={C.mean():.3f} "
          f"| conceal>lie>truth monotonic: {C.mean()>L.mean()>T.mean()}")