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:

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 |
| -- | -- |
|  |  |
### 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}}
}
``` |