File size: 21,581 Bytes
5fb1c68
4ac6bcc
 
5fb1c68
 
 
 
 
2fe499f
 
 
 
 
5fb1c68
 
2fe499f
5fb1c68
df323e9
 
9eafb6a
2fe499f
9eafb6a
5fb1c68
9eafb6a
 
 
 
 
 
 
 
111fab0
5fb1c68
 
 
 
 
2fe499f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5fb1c68
 
2fe499f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5fb1c68
 
 
 
 
3db8939
111fab0
 
 
ec9e5b0
 
 
111fab0
 
 
 
5fb1c68
111fab0
5fb1c68
41584eb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5fb1c68
41584eb
 
5fb1c68
41584eb
 
5e2e6a2
41584eb
 
 
 
 
 
 
 
ee40e76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
743a35b
 
c511cee
 
743a35b
 
c511cee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
743a35b
41584eb
 
ee40e76
41584eb
 
5e2e6a2
 
 
 
 
 
 
 
 
 
 
 
 
41584eb
5e2e6a2
 
 
 
 
 
 
 
 
 
 
 
 
 
41584eb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5e2e6a2
41584eb
 
 
 
 
 
5e2e6a2
41584eb
5e2e6a2
41584eb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5e2e6a2
5fb1c68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
---
datasets:
- mrzjy/creative-ad-prompts-zh
library_name: transformers
tags:
- generated_from_trainer
- open-r1
licence: license
license: mit
language:
- zh
base_model:
- Qwen/Qwen2.5-1.5B-Instruct
---

# Model Card

[Github](https://github.com/mrzjy/CreativeTinyZero) repo here.

Unlike the impressive DeepSeek-R1(-Zero), this project focuses on a pure reinforcement learning (RL) experiment applied to an open-domain task: creative advertisement generation.

**Objective:**

- To investigate the feasibility of applying R1-like methods to an open-domain task without a verifiable ground-truth reward, while at least demonstrating its potential.
- To explore whether `<think>` and `<answer>` rewards can be explicitly designed to provide strong guidance through RL based on human prior knowledge.

**Note**:

- Our goal is **not** to induce self-reflective thinking, but to align with human thought processes purely through RL, without any supervised fine-tuning (SFT) on any constructed dataset.

Despite its small size, the resulting 1.5B-GRPO model demonstrates intriguing generative capabilities—though it's still **far from perfect**.

## Quick start

```python
from transformers import pipeline

system_prompt = """你是一位创意广告设计师,负责为用户量身定制独特的广告文案。在开始创作之前,请先深入思考整个创意过程,并将你的思考逻辑清晰地呈现出来。具体步骤如下:

1. **思考过程**:首先,分析用户的需求、品牌定位、目标受众以及广告的核心信息。考虑如何通过创意表达将这些元素有机结合,形成具有吸引力的广告文案。将这一思考过程详细记录在 `<think>` 标签内

2. **最终答案**:在完成思考后,根据你的分析结果,撰写最终的创意广告文案。将文案内容放置在 `<answer>` 标签内

输出格式:
<think>这里写下你的思考过程</think><answer>这里写下你的广告文案</answer>"""

user_prompt_template = "请为{entity}设计一段创意广告文案"

entity = "吮指原味鸡"

messages = [
  {"role": "system", "content": system_prompt},
  {"role": "user", "content": user_prompt_template.format(entity=entity)},
]

generator = pipeline("text-generation", model="mrzjy/Qwen2.5-1.5B-GRPO-Creative-Ad-Generation", device="cuda")
output = generator(messages, max_new_tokens=512, return_full_text=False)[0]
print(output["generated_text"])
```
- Here's a sampled output:

```
<think>
1. 首先,我需要深入了解用户的饮食习惯和口味偏好。
2. 接着,我会明确品牌的定位,是更注重健康还是强调风味。
3. 然后,我需要确定目标受众是谁,他们的年龄层、兴趣爱好等。
4. 在此基础上,我将构思如何用吸睛的视觉元素和引人入胜的故事线来吸引他们。
5. 最后,我会整合以上所有信息,进行多次的草稿修改和测试,以确保文案既能触动人心又能达到预期的效果。
</think><answer>
在这个充满诱惑的世界里,吮指原味鸡不仅仅是一顿美食,它是对童年的温柔呼唤,是对家的味道永恒的守护。

想象一下,当夜幕降临,一家三口围坐在餐桌前,你递上一个包裹着金色酥皮的小盘子,轻轻揭开那层薄如蝉翼的面纱,映入眼帘的是那一抹鲜红与金黄交织的诱人色彩。每一块鸡肉都像是被精心雕琢的艺术品,每一根羽毛仿佛都在诉说着久远的回忆。

我们邀请你走进这个故事,让舌尖上的幸福重新唤醒你心中的那份纯真。吮指原味鸡,不仅仅是食物,它是一种情感的连接,一种文化的传承。在这里,每一次咀嚼都是对美好时光的致敬,每一次回味都充满了爱的味道。

因为你知道,无论岁月如何流转,这份来自心底最原始的渴望永远不会改变。让我们一起,在这温馨的夜晚,共享这份属于我们的独家美味,让它成为记忆中最温暖的一页。</answer>
```

## Training procedure

[<img src="https://raw.githubusercontent.com/wandb/assets/main/wandb-github-badge-28.svg" alt="Visualize in Weights & Biases" width="150" height="24"/>](https://wandb.ai/zhangjiayi/huggingface/runs/ukmal5l5) 

This model was trained based on [Qwen2.5-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct) using GRPO with rule-based RM and LLM-based RM ([Qwen2.5-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct)) and was prompted to answer a series of specific, instruction-related yes/no questions to assess the quality of rollouts.

Specifically, there are reward functions:

- **Format Reward**: Force a `think` and `answer` sections in the output just like DeepSeek-R1.
- **Think Reward**: Check if the `think` section includes the required Ad design analysis.
- **Answer Reward**: Check if the `answer` section seems to be a "good" Ad.

The latter two rewards are both calculated as follows:

![reward](image/reward.png)

where the indicator function is obtained by the "yes/no" answer by the LLM (hence LLM-based RM) to the following questions:

```python
answer_metric_questions = {
    "fluency": {"type": "must-have", "question": "该创意文案是否通顺?"},
    "is_ad": {"type": "must-have", "question": "该内容是否是一则广告标语?"},
    "relevancy": {"type": "must-have", "question": "该创意文案是否与\"{entity}\"相关?"},
    "humor": {"type": "plausible", "question": "该创意文案是否有趣幽默?"},
    "detail": {"type": "plausible", "question": "该创意文案作为广告词是否有足够细节内容?"},
    "creativity": {"type": "plausible", "question": "该创意文案是否极具新意、令人意想不到,而不是平平无奇老生常谈?"},
}

think_metric_questions = {
    "is_think": {"type": "must-have", "question": "这段文字是否明显是一段有实质内容的思考过程?"},
    "fluency": {"type": "must-have", "question": "这段文字是否通顺?"},
    "user_must": {"type": "plausible", "question": "这段文字是否包含了用户的需求分析?"},
    "product_must": {"type": "plausible", "question": "这段文字是否包含了\"{entity}\"广告品牌定位分析?"},
    "think_only_must": {"type": "plausible", "question": "这段文字是否不包含最终答案或最终文案?"},
    "target_user_must": {"type": "plausible", "question": "这段文字是否包含\"{entity}\"目标受众以及广告的核心信息的分析?"},
    "1st-person": {"type": "plausible", "question": "这段文字是否以第一人称我来自称?"},
    "product": {"type": "plausible", "question": "这段文字是否详细描述了广告品牌定位分析?"},
    "user": {"type": "plausible", "question": "这段文字是否详细描述了用户的需求分析?"},
    "target_user": {"type": "plausible", "question": "这段文字是否详细描述了分析目标受众以及广告的核心信息?"},
    "attract": {"type": "plausible", "question": "这段文字是否详细描述了如何通过创意表达将不同元素有机结合,形成具有吸引力的广告文案?"},
    "depth": {"type": "plausible", "question": "这段文字是否体现了广告文案设计的思考深度?而非泛泛而谈?"},
    "creativity": {"type": "plausible", "question": "这段文字是否提出了新奇的广告文案设计理念,能够从普通广告中脱颖而出?"},
    "reflection": {"type": "plausible", "question": "这段文字是否在思考过程中包含反思与修正?"}
}

eval_prompt_answer = """你是一位非常严格的广告创意审核大师。以下是一段关于{entity}的创意广告文案:
{completion}

请回答问题:{question}
只需回答“是”或“否”即可。"""


eval_prompt_think = """你是一位非常严格的广告创意审核大师。以下是一段关于{entity}的相关内容:
{completion}

请回答问题:{question}
只需回答“是”或“否”即可。"""
```

### Training Data

**RL requires only prompts, so we use GPT models to:**  
1. Generate diverse entities across various domains.
2. Apply the following prompt template:

```
from transformers import pipeline

system_prompt = """你是一位创意广告设计师,负责为用户量身定制独特的广告文案。在开始创作之前,请先深入思考整个创意过程,并将你的思考逻辑清晰地呈现出来。具体步骤如下:

1. **思考过程**:首先,分析用户的需求、品牌定位、目标受众以及广告的核心信息。考虑如何通过创意表达将这些元素有机结合,形成具有吸引力的广告文案。将这一思考过程详细记录在 `<think>` 标签内

2. **最终答案**:在完成思考后,根据你的分析结果,撰写最终的创意广告文案。将文案内容放置在 `<answer>` 标签内

输出格式:
<think>这里写下你的思考过程</think><answer>这里写下你的广告文案</answer>"""

user_prompt_template = "请为{entity}设计一段创意广告文案"
```

There are ~1k training prompts.

### Training Curves

(There's an additional 0.5B model for comparison)

| Curves 1 | Curves 2 |
| -- | -- |
| ![curve1](image/curve1.png) | ![curve2](image/curve2.png) |

### Performance

Here's a RM score performance (calculated by Qwen2.5-7B-Instruct) for models on a 50-sample test set:

| Model Score | Format Score | Think Score | Answer Score |
| -- | -- | -- | -- |
| Qwen2.5-0.5B-Instruct | 0.41 | 0.11 | 0.16 |
| Qwen2.5-1.5B-Instruct | 0.72 | 0.57 | 0.23 |
| Qwen2.5-7B-Instruct | 0.98 | 0.76 | 0.34 |
| Qwen2.5-32B-Instruct | 0.89 | 0.70 | 0.22 |
| Qwen2.5-0.5B-GRPO | 0.97 | 0.88 | 0.42 |
| Qwen2.5-1.5B-GRPO | **0.99** | **0.91** | **0.70** |

How to interpret:

- **The RL process is generally successful:**  
  - We optimize based on what the 7B-RM deems best according to predefined metrics, and the results align with expectations.  
  - However, these predefined metrics are susceptible to **reward hacking**—refer to the case study for a deeper understanding of the flaws.  

- **RL appears more efficient than SFT:**  
  - **RL:** Requires only prompts and RM design—no need to generate full outputs. And the RL model get higher scores than 7B LLM judging the outputs by itself.
  - **SFT:** Involves larger models to generate sample outputs, followed by distillation. However, **7B_distill < 7B**, necessitating agentic workflows or rejection sampling for iterative data refinement—a significantly more labor-intensive process.  

- **Reward Hacking Concerns:**  
  - A 7B LLM judge paired with simple limited yes/no metrics inevitably leads to reward hacking, resulting in imperfect outputs receiving high scores.
  - Potential mitigations include:
    - **Scaling**: Larger models generally exhibit better judgment.
    - **Reward Function Refinement**: Moving toward open-ended, context-aware reward functions without any pre-definitions seems promising.  


### Case Study

#### Entity: 雅诗兰黛小棕瓶精华

- Before RL

```
<think>
首先,我们需要深入了解雅诗兰黛小棕瓶精华的特点和目标受众。雅诗兰黛小棕瓶精华是一款被誉为“小棕瓶”的抗衰老精华,具有修复、抗氧化和抗衰老的多重功效。它的目标受众主要是那些追求年轻肌肤、希望通过自然和科学手段延缓衰老的中老年人。此外,小棕瓶精华还被广泛应用于美容护肤的高端品牌中,因此,它的品牌定位是高价值、高品质和高知名度的。
</think><answer>
我们的广告文案将聚焦于雅诗兰黛小棕瓶精华的抗衰老和修复功能,通过展现其在肌肤保养中的卓越效果,吸引那些追求年轻肌肤、希望通过科学手段对抗衰老的中老年人群体。同时,我们也将强调小棕瓶精华的自然成分和高质量,让受众在享受护肤的同时,也能感受到品牌的高端定位。以下是一段可能的广告文案:

美丽的道路,始于选择。在肌肤的旅程中,选择雅诗兰黛小棕瓶精华,与自然和谐共舞,让肌肤重获新生。这款精华,蕴含多项科学研究,能够深入肌肤底层,有效对抗自由基,提供持久的抗衰老效果。无论是在抗皱、紧致还是提亮肤色方面,小棕瓶精华都能为你带来显著的改善。选择雅诗兰黛小棕瓶精华,让肌肤在这一刻焕发新生,迎接更加美好的未来。

通过这段文案,我们不仅突出了雅诗兰黛小棕瓶精华的抗衰老和修复功能,还强调了其在肌肤保养中的卓越效果和品牌的高端定位,从而吸引目标受众的注意。
</answer>
```

- After RL

```
<think>
首先,我需要深入了解雅诗兰黛小棕瓶精华的目标受众、品牌定位以及品牌的核心价值。接着,我将分析小棕瓶精华的产品特性,比如它的成分、使用效果和品牌故事。然后,我将构思一个能够结合这些元素,同时吸引目标受众的创意故事或场景。最后,我将提炼出一个简洁有力的广告口号,确保文案能够传达品牌的核心信息,并且激发目标受众的情感共鸣。
</think><answer>
在这个清晨,当第一缕阳光温柔地穿透窗帘,你是否渴望唤醒肌肤的自然光泽,让每一寸肌肤都散发出最真实的光芒?雅诗兰黛小棕瓶精华,不是简单的护肤品,而是时间的朋友,为你的肌肤注入不凡的能量。

想象这样的情景:你站在一片繁星的夜空下,每一颗星星都像是你的肌肤在诉说着岁月的故事。小棕瓶精华,就像是一位温柔的守护者,轻轻地抚摸每一寸肌肤,唤醒它沉睡的光芒。它不仅仅是护肤,更是时间的馈赠,让肌肤在每一刻,都绽放出独一无二的光彩。

每一次使用,都是与时间的对话,与肌肤的灵魂对话。雅诗兰黛小棕瓶精华,不仅仅是一款护肤品,它是对你肌肤的承诺,也是你生活中的小确幸。让小棕瓶精华,成为你每天早晨的第一道光,照亮你每一天的奇迹。

小棕瓶精华,不只是一个小瓶,它是时间的礼物,是肌肤的魔法。让你的肌肤,从内到外,都闪耀着自然的光芒。</answer>
```

#### Entity: 罐头午餐肉

- Before RL

```
<think>
首先,我们需要了解罐头午餐肉的目标受众是谁,他们可能对价格敏感,但对健康和营养成分有较高的关注。品牌定位应该突出其健康和营养的特点。同时,受众可能对罐头食品的包装和便利性也有一定的要求。因此,广告文案应该强调产品的便捷性、健康性和营养性,同时要吸引人的视觉效果和趣味性。
</think>
<answer>
"午餐肉不仅美味,更健康!
轻松便捷的午餐肉,营养美味,让你享受生活的每一刻。
健康午餐肉,营养美味,选择我们的罐头午餐肉,让每一天都充满活力!
营养美味的午餐肉,轻松便捷的午餐,让你的生活更健康!"
</answer>
```

- After RL

```
<think>
首先,我需要深入了解用户的需求,包括他们对罐头午餐肉的偏好、品牌定位的核心价值以及目标受众的年龄、性别和兴趣点。然后,我需要分析午餐肉的成分、口味和健康特性,以及这些元素如何与品牌故事或价值观相呼应。接下来,我会构思一个引人入胜的故事情节或视觉元素,以吸引目标受众。最后,我会将这些元素融合在一起,创造出一个既独特又吸引人的广告文案。
</think>
<answer>
在这个快节奏的世界里,午餐肉不仅仅是填饱肚子的选择,它们是故事的开始,是与家人共享的时刻。想象一下,你站在海边,海风轻拂,夕阳将你的身影拉长。午餐肉,不仅是你的午餐,更是它们在你生命中的故事——一个关于勇气、坚持和成长的故事。

我们不是在推销午餐肉,而是在讲述一个关于你和你的家庭共同创造的美好回忆。每一片午餐肉,都承载着我们共同的记忆,每一次咬下,都是对家庭的温暖。

所以,别让忙碌遮住你与家人的相聚时光。选择我们的罐头午餐肉,让我们一起创造那些只属于你和家人的美好瞬间。因为午餐肉不仅仅是食物,它们是爱的传递,是回忆的见证。
</answer>
```

#### Entity: 椰子水

- Before RL

```
<think>
首先,我要深入思考椰子水的品牌定位和目标受众。椰子水作为健康的天然饮料,适合追求健康生活方式的年轻人。品牌定位倾向于强调产品的新鲜度、健康功效和天然成分。目标受众是追求健康、注重生活质量的20-35岁人群。在广告创意上,我可以突出椰子水的天然健康属性,强调其作为日常饮品的便捷性和美容养颜的功效。
</think>

<answer>
椰子水,天然好水,清新每一刻。天然椰子水,来自海南,每一滴都蕴含着大自然的精华。无论是运动后补充电解质,还是日常补水,椰子水都是您的最佳选择。天然椰子水,让您的身体活力满满,让每一寸肌肤都焕发青春光彩。每天一杯椰子水,让您健康,让生活更美好!
</answer>
```

- After RL

```
<think>
1. 首先,我需要确定椰子水的核心信息,比如它有哪些独特的健康益处,如补水、提神解渴等。
2. 接下来,我会考虑目标受众的特点,比如年轻人、运动爱好者还是办公室一族,不同群体的偏好可能会影响广告的风格。
3. 我还需要思考如何将椰子水与品牌形象相融合,比如是否可以强调品牌故事中的环保理念,或者与运动相关的口号。
4. 在撰写文案时,我会确保信息简洁明了,同时激发目标受众的情感共鸣,比如轻松、健康、活力。
5. 最终的创意广告文案应具备创意性,能够吸引眼球,同时传递品牌的核心价值。
</think><answer>
在炎炎夏日,椰子水不仅是解渴的良药,更是活力的源泉。每一滴椰子水,都蕴含着大自然的馈赠,它不仅能迅速提神,恢复你的活力,还能帮助身体有效补水,让你在烈日下也能保持清醒。想象一下,清晨的第一缕阳光,伴随着椰子水的清凉,你漫步在绿意盎然的森林中,与大自然共舞,感受每一刻的清新与活力。

椰子水,不仅仅是一种饮料,它是你心中那份对健康、自然的追求,是夏日里的一抹清凉,是每一次挑战后的最佳伙伴。让我们一起,用椰子水的清凉,唤醒每一个渴望活力的时刻。选择椰子水,选择一种生活态度,让每一天都充满生机与活力。
</answer>
```

#### Entity: 小米12

- Before RL (lack of `answer` tag)

```
<think>
在撰写广告文案之前,我需要了解以下信息:
1. 小米12的卖点:例如,处理器、电池、相机、设计、操作系统等。
2. 目标受众:年龄、性别、职业等。
3. 品牌定位:高端、时尚、科技、性价比等。
4. 产品核心信息:比如“5G”、“超长续航”、“高清摄像头”、“设计精美”等。
5. 广告类型和风格:是文字广告、视频广告还是图片广告,是清晰、幽默还是具有争议性等。

假设小米12是一款高端科技产品,目标受众是年龄在25-45岁之间,喜欢科技产品的专业人士和生活爱好者,品牌定位是高端,产品核心卖点是5G处理器、超长续航、高清摄像头和精美设计。

根据以上信息,我将会设计一段创意广告文案。
</think>
```

- After RL

```
<think>
首先,我需要深入了解小米12的特性、目标受众、品牌故事以及竞争对手的策略。然后,我将分析这些元素如何共同作用,以创造一个引人入胜的广告故事。最后,我将构思一个能够突出这些元素,同时激发用户情感共鸣的文案框架。
</think><answer>
在万物互联的未来,每一台手机都不仅仅是连接,它是心灵的桥梁。小米12,不仅是性能的代号,更是你我之间连接的钥匙。想象这样一幅画面:在夜幕低垂,城市灯火如星,你我漫步街头,手机作为第一眼的伙伴,将你我紧紧相连。每一次轻触,都是心灵深处的呼唤,每一刻安静,都是心灵深处的共鸣。小米12,不只是移动的屏幕,它是连接你我,连接未来,连接每一个瞬间的灵魂。在这个充满未知的夜晚,让我们一起,用小米12,点亮心中那片未曾照亮的角落,让连接,成为永恒。</answer>
```

## Citations

Cite GRPO as:

```bibtex
@article{zhihong2024deepseekmath,
    title        = {{DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models}},
    author       = {Zhihong Shao and Peiyi Wang and Qihao Zhu and Runxin Xu and Junxiao Song and Mingchuan Zhang and Y. K. Li and Y. Wu and Daya Guo},
    year         = 2024,
    eprint       = {arXiv:2402.03300},
}

```

Cite TRL as:
    
```bibtex
@misc{vonwerra2022trl,
	title        = {{TRL: Transformer Reinforcement Learning}},
	author       = {Leandro von Werra and Younes Belkada and Lewis Tunstall and Edward Beeching and Tristan Thrush and Nathan Lambert and Shengyi Huang and Kashif Rasul and Quentin Gallouédec},
	year         = 2020,
	journal      = {GitHub repository},
	publisher    = {GitHub},
	howpublished = {\url{https://github.com/huggingface/trl}}
}
```