---
# System prepended metadata

title: 7/16進度紀錄
tags: [進度紀錄]

---

# 7/16進度紀錄

## 簡筠方

### Watermark 統整介紹

論文：[A Survey of Text Watermarking in the Era of Large Language Models](https://arxiv.org/pdf/2312.07913)

翻譯：https://hackmd.io/@IizmYTUETE2C0DpZ8K_zUw/HyFeSfSIgg

就很多種 watermark 的類型、評估方式

### CEFW

論文：[CEFW: A Comprehensive Evaluation Framework
for Watermark in Large Language Models](https://arxiv.org/pdf/2503.20802)

github：https://github.com/DrankXs/BalancedWatermark

翻譯：https://hackmd.io/@IizmYTUETE2C0DpZ8K_zUw/HkNW4_Nwxl

#### CEFW 框架

提出了 CEFW（Comprehensive Evaluation Framework for Watermark），這是一套統一的評估框架，能從以下五大面向全面性地評估浮水印方法：

* **易檢測性（Ease of Detection）**：水印是否容易被成功識別
* **文本品質保真度（Fidelity of Text Quality）**：水印不應降低語句的自然度或可讀性
* **嵌入成本最小化（Minimal Embedding Cost）**：嵌入水印不應顯著增加生成成本或模型負擔
* **對抗攻擊的魯棒性（Robustness to Adversarial Attacks）**：水印能否抵抗如改寫、翻譯等攻擊
* **不可察覺性（Imperceptibility）**：難以被人類或模型察覺，有助於防止仿冒或反向提取

#### Balanced Watermark（BW）

* 我們觀察到 KGW 過於動態（over-dynamic）、UNIW 過於靜態（over-static）
* BW 是在這兩者之間的**平衡策略**
* 在浮水印加入的方式上取得穩定性與隱蔽性的雙重優勢

### Black-Box Watermarking

論文：[Watermarking Text Generated by Black-Box Language Models](https://arxiv.org/pdf/2305.08883)

github：https://github.com/Kiode/Text_Watermark

翻譯：https://hackmd.io/@IizmYTUETE2C0DpZ8K_zUw/B1rqNbCUex

屬於 **後處理語意水印（post-hoc semantic watermarking）**，黑箱模型，有做中文與英文

![image](https://hackmd.io/_uploads/SkMjsBRUxe.png)




#### 1. ⚡ 快速檢測（Fast Detection）

* 步驟：
  1. 從文本第二個詞開始，依序處理每個詞。
  2. 若詞通過 POS 篩選，則計算其對應的二元位元（bit-0 或 bit-1）：
     $$
     b_i = \text{RandomBinary}(h(w_i) \oplus h(w_{i-1}))
     $$
  3. 重複至最後一詞。
  4. 統計所有位元中的 bit-1 比例 $\hat{p}$，代入 z-score 檢定。
* 優點：快速、計算量低。
* 缺點：可能包含沒有可替代同義詞的詞 → 降低檢測準確率（因為這些通常是 bit-0）。



#### 2. 🎯 精確檢測（Precise Detection）

* 根據加水印邏輯進行更精緻的篩選：
  1. 每個詞仍需通過 POS 篩選。
  2. 接著根據嵌入水印的方式生成候選同義詞集 $C'$。
     * 若 $C'$ 為空，代表該詞可能無法被替換，跳過。
     * 若 $C'$ 不為空，才計算其二元位元。
  3. 累積符合條件詞的位元後，計算 $\hat{p}$、執行 z-score 檢定。
* 優點：只檢測可能真的有被替換的詞，**提升檢測準確度**。
* 缺點：需生成同義詞候選，**計算量較大**。

![螢幕擷取畫面 2025-07-23 194125](https://hackmd.io/_uploads/BkrVH8RLxx.png)



#### 內建的demo


**嵌入水印**

![image](https://hackmd.io/_uploads/BkEwlwkvll.png)

**檢測水印 (無水印文字)**

Confidence : 50%

![image](https://hackmd.io/_uploads/HkZ6WDywle.png)


**檢測水印 (含水印文字)**

Confidence : 99.95%

![image](https://hackmd.io/_uploads/rJHwWDkDgg.png)



## 廖奕皓

測試KTH Watermark(token changed):
https://github.com/jthickstun/watermark

**方向**
後處理水印：拿AI生成文章重新生成，上水印
生成式水印：生成時就上水印，而不是生成後再上

**測試過程**
1. 程式碼理解: 
* 主要是運行generate來生成具有水印的文章，並用detect來檢測是否含有水印。
* generate是使用一key(亂碼種子碼)，逐字改變生成token的文字機率，以達到加入水印的效果。
* generate可控參數：

    * model: HuggingFace 的 causal language model。

    * prompt: prompt。

    * vocab_size: 詞彙大小（token 數量）。

    * n: 水印序列長度。

    * m: 要生成文字的長度（token 數）。

    * key: 用來產生水印亂數序列的種子，由mersenne_rng轉成亂碼。
* generate內的主要function
    * generate_shift: 產生帶水印的文字 token 序列
    * exp_sampling: 依據模型給的機率分布 probs，用亂數 u 決定下一個 token。
    * main: 使用上兩 functions 來生成水印文章
* 使用 **梅森旋轉演算法** 將種子碼轉成亂碼
特色：
| 📏 **超長週期**   | $2^{19937} - 1$，約等於 $10^{6000}$，極難重複                    |
| 📊 **統計品質極高** | 通過幾乎所有統計亂數測試（Diehard、TestU01）                           |
| 🚀 **速度快**    | 雖然不如最輕量的 PRNG，但仍能快速生成大量高品質亂數                            |
| 🧠 **可重現性**   | 給定相同種子，生成序列完全一致（這對水印技術很重要）                              |
| 🧩 **多功能**    | 可產生亂數、浮點數、洗牌（`randperm()`）等用途                           |
| 🌍 **廣泛使用**   | 幾乎所有語言的標準函式庫都有 Mersenne Twister（例：Python、C++ STL、NumPy） |

如果要做水印專題，可以找不同亂碼演算法生成器來改變機率，只改亂碼生成器的話detect核心邏輯不變。

2. 檢測detect方法
    1. 計算真實水印檢測分數(分數越低代表越像有水印（因為使用的是 Levenshtein 距離）)
    2. 隨機生成許多假的 xi 來當作「虛無水印（null hypothesis）」
    3. 看有多少次 null_result <= test_result
    4. 最後計算 p_value = (p_val + 1) / (n_runs + 1)


3. 這個水印論文有提供experiment實驗方法和資料集:
    | 實驗編號               | 實驗重點                                        |
| ------------------ | ------------------------------------------- |
| **Experiment 1-6** | 用 C4 資料集（模擬新聞文章）進行水印測試                      |
| **Experiment 7**   | 用 Alpaca 指令集（類似 ChatGPT 任務）進行水印測試           |
| **Experiment 3**   | 變化 `m` 值（greenlist 大小）對水印偵測影響               |
| **Experiment 6**   | 用翻譯當作破壞攻擊手段（roundtrip translation）看水印還能否被偵測 |
| **Experiment 9a**  | 測試不同語言的 roundtrip（像是法文）對水印的影響               |

4. 自己測試的結果: 
    本機跑出來的文章丟到他的瀏覽器detector結果出來沒有水印，而且他給的detect程式碼我跑不了，所以不知道問題在哪?可能是複製或者我有加prompt的問題
![螢幕擷取畫面 2025-07-23 184930](https://hackmd.io/_uploads/HyFpRFPvge.png)

(0.01才是有水印)






## 游婷安
1. 改成用T5-base模型來測試， 結果也是跟之前一樣:
![image](https://hackmd.io/_uploads/S1CV9U0Ilx.png)
![image](https://hackmd.io/_uploads/H1hScLCIgl.png)


CodeCarbon結果:
|  name   |   emissions (kg CO2 eq) |  cpu_power(W)  | gpu_power(W) | ram_power(W) | energy_consumed(kWh)|
| --- | --- | --- | -------- | -------- | -------- |
| T5-base training    |  0.0956689245496744   | 1.1384    |    0.7966      |  6.0        |   0.1489293290705385       |
| T5-base testing    |  0.056718018558231005   |  0.9388   | 0.5829  | 6.0     | 0.08829383720835864     |

(Emissions (kg CO2eq)=Energy Consumed (kWh)×Carbon Intensity (kg CO2eq/kWh))

![image](https://hackmd.io/_uploads/BJa_q8CLel.png)
![image](https://hackmd.io/_uploads/H1XccI0Ugg.png)

2. 順便用 LED(Longformer Encoder Decoder) 但還沒跑完

3. 關於Claude code:
[記憶系統與上下文壓縮機制](https://hackmd.io/@jv-jFHFbR1eTuJRaMFL-yA/HJw4fYsUll)
[整體系統架構(我沒看)](https://hackmd.io/@jv-jFHFbR1eTuJRaMFL-yA/rkSRZGTIgx)

## 陳芊羽
1. 調整 week1 的程式
   - 嘗試改成兩層生成式摘要
   ![image](https://hackmd.io/_uploads/BybZ6YPvlg.png)
   分數變非常差
   - 調整 prompt
   改成先以第一篇生成 summary，之後給 llama3 下把其他篇文章的不同內容加進去的 prompt
   ![image](https://hackmd.io/_uploads/ryHuTYPwlx.png)
   分數沒變多少
2. 下載 PRIMERA
   卡很久才發現沒切到 kernel
   現在在看他 github 中的範例程式碼(剛好就是 multi-news XDD)