1. 从“新冠白痴”到AI诗人一次技术慰藉的探索最近这段时间我彻底成了一个“新冠白痴”。自从疫情爆发我已经在家困了一个半月。身体活动几乎为零甚至创下了成年后最长时间不穿内裤的纪录。生活慢得像只乌龟大脑偶尔也会“死机”。不过写作的冲动倒是比以往更强烈了。我写非虚构的水平也就那样偶尔写点不痛不痒的半吊子小说极少数时候会憋出几行蹩脚的诗句但这些诗句总会在我的梦里膨胀得比“灭霸”还大把我自己都吓醒。我记得很清楚曾经在一个诗歌平台上我因为发表了一首充满暴力意象的诗收获了51个“踩”。是的51个那个冰冷的数字至今记忆犹新。我早就认清现实了——我成不了诗人所以早就不往那方面使劲了。既然此路不通那就试试别的。如今人工智能的应用无处不在每天都有新的用例冒出来。前几天我读到一篇关于“Deep-speare”AI的新闻。这个模型本质上是一个融合了诗歌语言、韵律和押韵的联合神经网络。它能写出莎士比亚风格的十四行诗大多数读者根本无法将其与人类原作区分开来。这无疑是AI领域一项了不起的成就。可惜Deep-speare的研究模型目前并未对公众开放至少我没找到。但这难不倒我我找到了其他一些AI工具打算给我这颗闲得发慌的大脑来点“快乐水”。2. AI诗歌生成器的初体验从词到肖像的诗意映射我尝试的第一个工具是“POEMPORTRAITS”。这是一个在线实验性网站它的玩法很有趣你捐赠一个自己选择的词并上传一张自拍肖像。整个过程非常流畅。他们的AI算法会以你捐赠的词为种子生成一行原创的诗句。这个算法的训练数据是数百万字的19世纪诗歌。听起来是不是挺有意思我立刻动手试了试。我决定刁难一下它输入了一个比较抽象的词“Convergence”融合、汇聚。点击生成后我得到了一张独特的“诗歌肖像”——我的脸被AI生成的诗句照亮了。视觉效果很酷纯粹是好玩。这个AI模型显然在不断进化努力让自己变得更完美。这种将个人词汇与视觉形象结合瞬间生成一句带有古典韵味的诗虽然简短却有一种奇妙的互动感和仪式感。它更像是一个精致的数字艺术玩具让你瞬间感受到技术与古典文艺碰撞出的火花。3. 挑战高阶创作让AI撰写一首完整的十四行诗如果一句诗不过瘾那么让AI写一整首呢我找到的第二个站点是“Poem-generator”。顾名思义它能利用AI生成完整的诗歌。你需要提供一些关键词作为输入并选择诗歌的基调情绪。我想给它一个高难度的挑战写一首十四行诗。这种诗体不仅有14行的固定长度还有其经典的两段式“起承转合”结构对AI来说应该是个不小的考验。我选择了“爱情”主题。以下是我的输入关键词girl, love, gaze, winter, heart。然后我满怀期待地点击了生成。片刻之后一首题为《Ode to the Girl – A Sonnet by paragism》的诗呈现在我眼前My caring girl, you inspire me to write. How I love the way you gaze, walk and sleep, Invading my mind day and through the night, Always dreaming about the darling gaze.Let me compare you to a long ember? You are more blazing, glorious and round Stark frost nips the robins of December. And wintertime has the darling compound.How do I love you? Let me count the ways. I love your amazing cheek, hair and eyes. Thinking of your daring hair fills my days. My love for you is the aesthetic fries.Now I must away with a staring heart, Remember my round words whilst were apart.平心而论这首诗确实抓住了十四行诗的一些形式精髓前八行Octave提出了一个类比将女孩比作余烬后六行Sestet则转向直接的抒情和告别。它甚至戏仿了伊丽莎白·巴雷特·勃朗宁名句“How do I love thee? Let me count the ways”的结构。当然瑕疵也很明显“aesthetic fries”美学的薯条这种搭配令人摸不着头脑“round words”圆润的话语也显得生硬。但有趣的是网站允许我手动替换这些奇怪的词。我没有这么做因为我想保留AI输出的原貌。总体来看考虑到这是完全由机器生成的文本它能做到结构完整、基本押韵ABAB CDCD EFEF GG的莎士比亚体格式大致符合并且没有出现严重的语法错误我已经可以给它打个“良好”的分数了。对于一个只想获得些许灵感或纯粹找乐子的用户来说这绝对是一个好玩的工具。3.1 剖析AI诗歌的生成逻辑与局限性这次实验让我不禁思考背后的原理。这类生成器通常基于循环神经网络或Transformer模型如GPT的早期变体。它们通过在海量诗歌文本上进行训练学习词汇之间的统计关联、句法结构以及韵律模式如抑扬格五音步。当你输入关键词和情绪时模型其实是在计算在给定的“爱情”语境下与“girl”、“gaze”等词最可能共现的词汇序列是什么并尽力使其符合十四行诗的格式约束。它的局限性也正源于此缺乏真正的意图与情感AI不懂“爱”为何物它只是在模仿人类表达爱意时常用的词汇组合。逻辑断裂与“幻觉”为了押韵或凑足音节模型可能会生成“美学的薯条”这种毫无逻辑的搭配这在NLP中常被称为“幻觉”。风格的拼贴感由于训练数据来源广泛生成的诗歌常常是不同诗人风格的混合体容易产生似曾相识却又不够原创的拼贴感。注意使用AI诗歌生成器时最佳策略是将其视为“灵感加速器”或“创意碰撞器”。不要期待它直接产出完美的作品而是从它生成的奇特比喻、非常规搭配中寻找火花然后由你来进行筛选、修改和润色注入真正的人类情感与逻辑。4. 历史的回响程序员诗人的先驱与启示在惊叹现代AI的同时我的思绪飘向了更远的过去。你们听说过J.M.库切吗这位南非出生的作家是2003年诺贝尔文学奖得主。鲜为人知的是他职业生涯的起点是IBM的程序员。更令人惊讶的是在1960年代他就在英国原子能研究机构的Atlas 2超级计算机上捣鼓事情了。库切在2002年出版的自传体小说《青春》中借主人公约翰之口写道“尽管Atlas不是一台为处理文本材料而建造的机器他还是利用深夜的闲暇时间让它以巴勃罗·聂鲁达的风格打印出数千行诗句使用的词库是《马丘比丘之巅》中最有力的词汇列表。” 在现实世界中库切确实为那台英国超级计算机编写了特定的代码来生成诗歌——那可是在1960年代他后来还对其中一些诗作进行了修改并发表。库切的实验在当时并未引起太大关注因为程序员对诗歌不感兴趣而诗人对编程一无所知。但他无疑是历史上第一位“程序员诗人”。库切在编程与诗歌之间搭建起了一座在当时看来绝无可能的桥梁。今天我们所谈论的AI诗歌或文学创作不过是这座桥梁在新时代的延伸。技术的历史总是充满这种奇妙的巧合与先见之明。4.1 从规则到统计AI诗歌创作的技术演进库切的时代所谓的“计算机诗歌”更多是基于规则的系统。他需要手动定义词汇库、语法模板和替换规则本质上是一种高度结构化的文字游戏。而今天的AI诗歌则进入了统计模型和神经网络的时代。它不再依赖人类预设的明确规则而是通过从数据中学习概率分布来“创作”。这是一个从“精确控制”到“概率生成”的范式转变。规则系统1960s-1990s特点是由程序员明确设定所有诗歌生成的逻辑如“第几行必须押什么韵”、“名词后必须接动词”。优点是可控性强缺点是非常僵硬创造力有限且无法处理复杂多变的自然语言。统计语言模型2000s-2010s基于N-gram等模型通过计算词汇序列的联合概率来生成文本。比规则系统更灵活能生成更通顺的句子但依然缺乏对长距离上下文和深层语义的理解。神经网络时代2010s-至今以RNN、LSTM尤其是Transformer架构如GPT系列为代表。模型能够捕捉文本中极其复杂的长期依赖关系和层次化特征生成的诗歌在连贯性、风格模仿上达到了前所未有的高度但也带来了“黑箱”和“幻觉”问题。5. 深度实践搭建一个简易的本地AI诗歌生成环境仅仅在线玩玩不过瘾作为一名技术爱好者我决定在本地环境进行更深入的探索。我们不需要从头训练一个模型那需要巨大的算力和数据但可以利用现有的预训练模型进行微调或直接进行文本生成。这里我将演示如何使用Hugging Face的Transformers库配合一个轻量级的诗歌文本数据集来创建一个能够生成中文古典诗歌的简易流程。5.1 环境准备与工具选型首先我们需要一个合适的模型。对于中文诗歌生成GPT-2的中文变体如uer/gpt2-chinese-poem或专门为诗歌微调过的T5模型是不错的起点。这里我选择使用GPT-2因为其生成文本的连贯性和创造性在社区中备受认可。核心工具栈Python 3.8编程语言基础。PyTorch / TensorFlow深度学习框架。Transformers库对两者都支持我选择PyTorch因其在研究和原型开发中更灵活。Hugging Face Transformers提供了数千个预训练模型是NLP任务的“瑞士军刀”。Datasets可选用于加载和处理数据集。Jupyter Notebook / VS Code开发环境。安装命令pip install torch transformers # 如果需要进行数据处理可以安装datasets pip install datasets5.2 数据准备寻找诗歌的“灵魂食粮”模型需要数据来学习诗歌的“灵魂”。我们可以从开源数据集中获取。例如GitHub上可能有整理好的《全唐诗》或《宋词》的文本文件。数据格式通常是一行一首诗或每句为一行。假设我们有一个名为poems.txt的文本文件内容格式如下春眠不觉晓处处闻啼鸟。夜来风雨声花落知多少。 床前明月光疑是地上霜。举头望明月低头思故乡。 ...数据预处理步骤读取与清洗加载文本去除空白行、非中文字符等噪音。格式化为了训练生成模型我们需要将每首诗构造成一个连续的文本序列。通常会在诗的开头加上一个特殊标记如[CLS]或|startoftext|在结尾加上结束标记如[SEP]或|endoftext|。分词使用模型对应的分词器Tokenizer将诗句转换成模型能理解的数字IDToken IDs。GPT-2中文模型有对应的分词器。from transformers import GPT2Tokenizer tokenizer GPT2Tokenizer.from_pretrained(uer/gpt2-chinese-poem) # 假设 poems 是一个包含所有诗歌字符串的列表 tokenized_datasets [] for poem in poems: # 添加特殊标记并分词 encoded tokenizer.encode_plus( f|startoftext|{poem}|endoftext|, truncationTrue, max_length128, # 根据诗歌最大长度设定 paddingmax_length ) tokenized_datasets.append(encoded[input_ids])5.3 模型加载与文本生成实践我们不需要从头训练而是直接使用预训练模型进行文本生成。这是体验AI创作最快捷的方式。from transformers import GPT2LMHeadModel, pipeline # 1. 加载预训练模型和分词器 model_name uer/gpt2-chinese-poem # 这是一个社区微调过的模型更擅长诗歌 tokenizer GPT2Tokenizer.from_pretrained(model_name) model GPT2LMHeadModel.from_pretrained(model_name) # 2. 使用pipeline简化生成过程 poem_generator pipeline(text-generation, modelmodel, tokenizertokenizer) # 3. 提供提示词Prompt进行生成 prompt |startoftext|春江潮水连海平 # 生成参数设置 generated_poems poem_generator( prompt, max_length100, # 生成文本的最大长度 num_return_sequences3, # 生成3个不同的版本 temperature0.9, # 控制随机性越高越随机越低越确定 top_p0.95, # 核采样nucleus sampling参数保留概率质量最高的部分词汇 repetition_penalty1.2, # 重复惩罚避免重复用词 do_sampleTrue # 使用采样而非贪婪解码 ) # 4. 输出结果 for i, poem in enumerate(generated_poems): print(f版本 {i1}:) # 清理输出移除特殊标记和提示词 text poem[generated_text].replace(prompt, ).replace(|startoftext|, ).replace(|endoftext|, ).strip() print(text) print(- * 40)关键参数解析temperature这是最重要的参数之一。设为较低值如0.3模型会更倾向于选择概率最高的词输出更保守、通顺但可能乏味设为较高值如1.2则会增加随机性输出更出人意料、有创意但也可能不合逻辑。对于诗歌创作我建议在0.7到1.1之间尝试。top_p(核采样)与Temperature配合使用。它动态地设定一个概率阈值只从累积概率超过该阈值的最小词汇集合中采样。这能有效避免生成低概率的怪异词汇同时保持多样性。repetition_penalty对于诗歌这种讲究凝练的文体避免词语重复很重要。将此参数设为大于1的值如1.2可以降低已出现词汇的概率。5.4 从生成到迭代人类与AI的协作工作流直接生成的文本往往只是“毛坯”。一个更有效的工作流是“AI生成人类编辑”。批量生成与筛选运行上述代码多次每次调整temperature和prompt如“秋夜”、“明月”、“孤舟”等不同意象生成数十个候选片段。快速浏览与标注快速浏览所有生成结果用简单的标记如“√”有潜力“×”无意义“”存疑进行初筛。深度编辑与重构对有潜力的片段进行编辑。这可能包括修正逻辑替换掉像“美学的薯条”这样不合逻辑的搭配。强化意象将模糊的表述具体化。例如将“美丽的花”改为“带露的蔷薇”。调整韵律虽然模型学习了韵律但生成的不一定完美。你可以手动调整个别字词使其更符合平仄或押韵。注入情感这是人类作者的专属领域。根据你想表达的情感忧伤、豪迈、宁静调整整体的词汇色彩和句式节奏。组合与再创作有时AI生成的几个不完整的佳句可能来自不同的输出。你可以像玩拼图一样将这些散落的“珍珠”重新组合、串联形成一首全新的、逻辑连贯的诗。实操心得不要试图让AI一次性生成一首完美的诗。把它当作一个拥有庞大诗词数据库和超强联想能力的“实习生”。你的角色是“主编”负责提出创意方向Prompt、从海量草稿中甄选亮点、并进行最终的润色和定稿。这种协作模式往往能产生超出预期的结果。6. 常见问题、排查技巧与伦理思考在本地实验过程中你可能会遇到以下问题问题1生成的诗句不通顺或胡言乱语。可能原因temperature参数设置过高模型本身在诗歌数据上训练不足提示词Prompt过于模糊或与模型训练数据风格不符。解决方案首先降低temperature例如调到0.7和top_p例如0.9让输出更稳定。尝试更具体、更具诗歌意象的Prompt如“寒山寺的钟声”比“声音”要好得多。考虑更换或微调模型。社区可能有在更大规模、更高质量诗歌集上微调的模型。问题2生成结果总是重复开头几句或陷入循环。可能原因repetition_penalty设置过低模型在训练数据中遇到了大量重复模式生成长度max_length设置过长模型在后半段“力竭”。解决方案显著提高repetition_penalty尝试1.5甚至2.0。在Prompt后加入更多样化的引导例如在提示词中包含转折词“忽见”、“却道”。适当减少max_length先生成一个精彩的片段再以此为新Prompt继续生成。问题3本地运行模型时显存GPU Memory不足。可能原因模型太大如完整的GPT-2批次batch设置过大。解决方案使用模型量化如model.half()转为半精度浮点数或使用device_mapauto让Transformers库自动分配至CPU/GPU。在加载模型时使用from_pretrained(..., low_cpu_mem_usageTrue)。绝对不要尝试在无GPU或内存小于8GB的机器上运行大型模型。可以考虑使用Google Colab的免费GPU资源。问题4生成的诗歌缺乏“新意”总是像在模仿古人。根本原因这是当前基于统计学习模型的本质局限。它们学习的是训练数据中的分布因此擅长模仿而非从零创造。进阶思路这引向了更前沿的探索。你可以尝试风格迁移使用在混合风格数据如古诗现代诗外国诗歌译本上训练的模型。可控生成利用ControlNet在图像生成中流行的思想但应用于文本。例如除了主题词额外输入“情感强度”、“意象密度”等条件引导生成过程。这需要更复杂的模型架构和训练技巧。人类反馈强化学习这是让AI创作更符合人类偏好的高级方法。简单来说就是让AI生成多首诗歌由人类进行评分好/中/差然后利用这些评分数据去调整模型使其未来更倾向于生成人类喜欢的风格。但这需要大量的数据和计算资源。6.1 伦理与创作的边界AI诗歌是艺术吗最后我们无法回避一个根本性问题AI生成的诗歌算艺术吗我的实验和思考带来了几点看法工具论在现阶段我更倾向于将AI视为一种强大的创意辅助工具如同画家手中的新型颜料或作曲家使用的电子合成器。它拓展了创作的可能性边界但作品的最终灵魂和意图仍然来自于使用工具的人。作者身份的模糊当一首诗由AI生成初稿再经人类深度编辑而成作者是谁这或许会催生新的合作署名方式如“人类作者 with AI”。版权归属也将成为新的法律议题。“灵感”的再定义AI的“灵感”源于数据中的统计规律人类的灵感源于生命体验、情感波动和哲学思考。两者截然不同。AI或许能写出格式工整、意象优美的句子但它无法体会“却道天凉好个秋”背后的沧桑也无法理解“十年生死两茫茫”中的刻骨悲痛。这种情感的深度与真实性是当前AI无法逾越的鸿沟。对诗歌教育的冲击与启发对于诗歌学习者AI可以是一个不知疲倦的“对练伙伴”。你可以给它一个主题看看机器如何组织意象和语言从中反观自己的创作习惯打破思维定式。同时这也促使我们更深入地思考究竟什么是诗歌中不可被算法替代的核心价值是独特的情感体验是深邃的思想洞察还是语言本身在极限处的舞蹈我的实验始于疫情中的无聊与好奇最终却走向了对技术、历史和艺术本质的交叉思考。库切在1960年代用代码叩问诗歌今天的我们拥有了强大得多的工具。与其争论AI能否取代诗人不如像那位程序员诗人一样亲自拿起工具参与到这场人机协作的创造性实验中来。你会发现最重要的或许不是机器产出的最终文本而是在这个过程中你对自己创作逻辑的反思以及对“何为诗意”的不断追问。这趟旅程本身就是一首未完成的诗。