简介:针对文生图模型生成汉字时“轮廓像、细节崩”的通病,本文剖析了传统以OCR为裁判的强化学习评价体系为何失效:OCR将汉字视为不可拆分的黑箱,只能给出0/1的粗暴判定,无法区分错一笔与错半边的程度差异。文章提出以汉字构型(偏旁部首及其空间组合关系)为中间表示的细粒度评价思路,并讨论可落地的分层打分机制与训练流程,帮助读者理解如何让模型“知道错在哪、往哪改”。
让文生图模型生成一张带中文字的海报,几乎每次都会遇到同一种尴尬:远看像模像样,放大细看却发现某个字多了一撇、某个偏旁被挤压变形、左右结构比例失调。整体轮廓是对的,局部细节全线崩溃。这不是某一家的个别缺陷,而是当前文生图模型在面对笔画复杂、结构嵌套的汉字时的普遍现象。
多数人的第一反应是“模型见过的汉字太少”,于是尝试增加中文语料、加大训练规模。但真正的问题并不只在于数据量,而在于训练信号的质量——模型在后期强化学习阶段依赖一个“裁判”来打分,而这个裁判看汉字的方式,从一开始就存在结构性缺陷。
本文围绕这一核心问题展开:先说明传统评价方式为何失效,再引入“汉字构型”这一中间表示,最后给出一套可落地的细粒度评价与训练思路。
要让生成模型越画越准,常见做法是在监督微调之后引入强化学习:模型生成一批图像,裁判对每张图打分,模型根据分数调整参数。这个裁判通常由OCR(光学字符识别)模型担任——把生成图中文字区域截取出来,识别成文本,再与目标文本比对。
其打分逻辑可以粗略写成:
def ocr_reward(generated_image, target_text):recognized = ocr(generated_image) # 识别图中文字return 1.0 if recognized == target_text else 0.0
这个函数看起来很合理,但它隐含了一个极强的假设:汉字是一个不可拆分的原子单位。
英文字母是最小书写单位,26个字母线性排列构成单词,识别的最小粒度与语义单位基本一致。汉字则不同,它是一种二维的积木结构:
这种由偏旁部首按照左右、上下、包围、半包围等空间关系组合而成的结构,就是汉字的构型。一个字是否“写对”,本质上是问:构件对不对、数量对不对、相对位置对不对、比例是否合理。
OCR的识别过程却把整个字当作一个整体模式来匹配。当结构出现偏差时,OCR的典型行为是:
两种行为对应同一个结果:分数为0。
这种0/1打分带来的问题可以归纳为三点:
而汉字的错误本来就有程度之分:偏旁缺失、笔画多余、位置颠倒、比例失调,严重程度差异巨大。评价体系若无法表达这种程度,训练就难以精细化。
解决思路的核心是引入一个介于“像素”与“整字”之间的表示层:构型表示。一个字可以被分解为:
整字 → 构件序列(偏旁/部首)+ 空间关系(左右/上下/包围)+ 相对比例
例如“想”可表示为 [相, 心] : 上下 ,“尬”可表示为 [九', 龙'] : 左右。基于这一表示,评价不再只问“认不认识”,而是逐层追问:
据此可以设计一个分层的奖励函数,把单一0/1信号拆成可加权的多项:
def structure_reward(generated_image, target_char):score = 0.0# 第一层:整体可识别性(粗粒度门槛)if not is_recognizable(generated_image):return 0.0score += 0.3# 第二层:构件完整性score += 0.3 * component_completeness(generated_image, target_char)# 第三层:空间关系正确性score += 0.2 * spatial_relation_accuracy(generated_image, target_char)# 第四层:笔画级细节score += 0.2 * stroke_level_similarity(generated_image, target_char)return score
这样,写错一笔只扣细节分,写错半边则大幅拉低构件分,模型能获得有区分度的梯度。需要强调的是,构件的检测与空间关系的判定可以借助通用的视觉骨干网络与结构标注数据实现,业界已有较成熟的部件级标注与检测方法可供参考,并非需要某种专有接口才能完成。
分层打分还有一个附带好处:它降低了对“语言先验猜字”的依赖。当评价关注构件是否齐全、位置是否正确时,即使裁判模型语言能力很强,也无法仅凭上下文把结构错误的字判为正确。必要时可在评价链路中加入独立的字形校验分支,与语义识别分支解耦,避免单一模型的脑补影响打分。
将上述思路落到训练流程,大致可分四步:
工程上还需注意两点:一是评价器的推理开销要与训练吞吐匹配,构件级评价通常比整字OCR更重,可通过采样评价或缓存机制缓解;二是奖励权重不宜一次调死,建议先用小规模实验校准各层分值的量纲,再放大训练规模。
文生图模型写不对中文字,表面上是生成能力问题,实质上是评价体系没有教会它“汉字是可以拆的”。把汉字从黑箱还原为构件与空间关系的组合,让裁判从“对/错”升级为“错在哪一层、错到什么程度”,模型才具备精细优化的方向。这条思路并不依赖某个特定产品,而是一种面向二维书写系统的通用方法论——对于任何需要生成结构化符号的系统,细粒度的中间表示与分层评价,都是比单点判别更可靠的训练基础设施。