木木 LV
发表于 2025-4-9 14:18:34
先说结论,提前规划肯定是必要的。大模型影响的不仅仅是NLP的从业人员,大家都在琢磨怎么应对,这是趋势。但我觉得如果题主已经在NLP领域有一定的积累,那其实现在的机会是远远大于风险的,而最大的风险就是停止不前。那么作为一名NLP工程师,该做哪些准备才能把握住机会呢?可能需要三步走:识别核心技能,构建新的技能树,以及提升产品意识。接下来让我为你一一拆解。
从NLP到大模型
NLP起步于20世纪50年代的专家系统,这个阶段的NLP主要基于规则和模式匹配,其应用范围相对有限。随着计算机性能的提高和语料库的积累,NLP开始进入基于统计的方法阶段,开始使用概率模型和统计学习方法,如隐马尔可夫模型(HMM)和条件随机场(CRF)被广泛应用于词性标注和命名实体识别等任务。
2011年,NLP开始迈向深度学习。2013年,Word2Vec模型的提出标志着词向量表示的一个重要里程碑。随后,BERT、GPT等预训练语言模型的出现,使得NLP领域进入了一个新的时代。这些模型通过在大规模无标注数据上进行预训练,学习到了丰富的语言表示,极大地推动了NLP任务的性能提升。随着模型规模的不断扩大,大模型(LLM)如GPT-3的出现,NLP领域进入了大模型时代。这些模型具有巨大的参数量,能够处理更加复杂的语言任务,并在多个任务上展现出泛化能力。
虽然不知道题主是在哪个阶段接触的NLP,但回顾它的历史也可以帮助梳理出这个领域的核心技能,那就是概率统计、深度学习以及预训练。题主要学习LLM,不需要重新种一棵树,而只需要在原有技能树的基础上做嫁接。
新的技能
当下想要用好大模型,也有三个技能是绕不过去的,那就是提示词工程、 模型微调以及构建智能体(AI Agents)。
自从chatGPT面市之后,网上出现了大量的prompts示例,很多人声称只要照搬他们的prompts就可以实现出色的效果。这当然是不可能的,但是为什么不可能,知道的人就不多了。
提示词工程(Prompt Engineering)就是研究怎样设计和优化输入到模型中的提示(prompts),以引导模型生成期望的输出。这可能是LLM领域应用最广泛的技能,但它的内核其实就是概率统计,因为transformer架构本身就是基于概率的预测。想写出优秀的prompts, 就要根据大模型的特点,不断提高生成优秀答案的概率。让我们通过一个例子了解一下。
假设你是一位市场营销经理,负责为一家专门向家具零售商销售家具的公司设计网站内容。你的任务是创建一系列有效的提示,帮助公司的大模型生成针对目标客户群(家具零售商)的营销文案。首先你要明确定义任务,比如生成营销文案,避免使用模棱两可的语言。然后你需要凭借你的领域知识给出与任务相关性强的提示词。在这个案例里,由于目标客户群是零售商而不是普通消费者,所以你可以强调技术细节和材料的重要性。例如:“请根据以下家具的技术规格和材料特性,生成一份面向家具零售商的营销文案。”。
接下来,你需要给大模型“思考的时间”,通过分步骤的提示来指导它完成任务。你可以这样提示:“首先,分析这些家具的设计特点和技术优势;然后,考虑这些特性如何满足零售商的需求;最后,创作一段文案,突出这些优势,并提供与零售商解决方案相关的案例。”
最后,你需要通过实验和迭代,不断测试和改进提示,分析大模型的响应,逐步提高文案的质量。比如使用与目标客户群相匹配的语言风格,以及确保文案中没有任何可能导致误解或偏见的语言。
在实际应用中,我们还需要考虑如何平衡Prompt的多样性和模型的特定任务对齐,以及怎样提高Prompt的泛化能力等问题。这些关于提示词工程的内容在知乎知学堂最近推出的《AI大模型进阶之旅》公开课,讲解的就很清楚:
尽管提示词工程已经很全面了,但仍然无法避免大模型的幻觉问题,比如上述例子中生成的文案可能会由于缺乏引用数据而没有说服力。目前比较常用的解决方案是先从互联网上找到相关的数据引用,再用这些信息来构建有说服力的结果。就像微软的Copilot或者国内的Kimi那样。这就不得不提大模型应用的开发框架 -- LangChain。
LangChain框架致力于辅助开发者利用语言模型打造全面的应用程序。该框架配备了多样的工具集、构建块和接口,以优化大型语言模型(LLM)及聊天模型支持的应用程序的开发流程。LangChain的核心概念包括Components and Chains、Prompt Templates and Values、Example Selectors、Output Parsers、Indexes and Retrievers、Chat Message History以及Agents and Toolkits。
在LangChain中,组件(Component)是构建应用程序的模块化部件,而链(Chain)则是将一个或多个组件组合起来以完成特定任务的序列。
Prompt Template的功能是生成PromptValue,即传递给语言模型的最终数据,这有助于将用户输入及其它变化信息格式化为模型可理解的形式。Example Selectors在需要在提示中包含变化的示例时显得尤为关键,它们根据用户输入提供一系列候选示例供提示使用。Output Parsers的任务是将语言模型的反馈转换成更加实用的格式,简化了应用程序对结果的处理过程。
另外,LangChain还装备了处理各种索引和检索工具的功能,包括向量数据库和文本分割器等,以及Chat Message History类,它记录了过往的聊天互动,有助于保持对话的连贯性并增强模型对交流的理解。
在LangChain框架中,Agent作为决策的驱动力,它具备访问多种工具的能力,并能够基于用户的输入选择适当的工具来执行任务,例如检索网络信息。
当我们使用了提示词工程,并且在一定程度上消除了大模型的幻觉之后,想要在具体业务场景中发挥出大模型的优势,还需要关键的一步:微调。
大模型微调(Fine-tuning Large Models)是指对大型预训练模型进行额外训练的过程,以使它们更好地适应特定的任务或数据集。这种微调涉及到在特定任务的数据集上继续训练已经通过大规模通用数据集预训练过的深度学习模型,如GPT-3、BERT、T5等。它们拥有大量参数,经过微调的模型能够迅速掌握新任务,并在多种应用场景中表现出卓越的性能。
这一部分可以说是NLP工程师的强项,包括根据任务的需求选择一个合适的预训练模型,
以及准备一个与任务相关的数据集。这个数据集应该包含标注好的样本,以便模型能够学习任务特定的特征,然后根据任务的类型(如分类、回归、生成等),对预训练模型的输出层或头部进行适当的修改,以适应特定的输出格式。
为了使微调后的模型在新任务上表现更好,我们可能需要调整模型的参数,并且在独立的验证集上评估模型的性能,然后迭代优化。这包括调整超参数、增加正则化、使用不同的数据增强技术等内容。这里要注意大模型可能会过拟合到特定任务的数据集上,特别是在数据量较少的情况下。
提示词工程,应用开发框架,模型微调,掌握了这些技能就可以入门LLM了,但要想做好,还需要一点技术以外的敏感和洞察。
产品意识
虽然大模型普遍对计算资源的需求很高,但中小型公司也并非完全绝缘。举个例子,最近的小米汽车搭载的模型只有1.3B的参数,可以算得上袖珍了。为什么小米会选择在它最新的产品上搭载一个这么小的模型呢?原因只有一个,“够用就好”。据说这个模型不仅能实现文生图,更可融合车的位置、方向、视觉等信息,辅助语音交互,做到“只要用手能控车的功能,语音交互就能覆盖”。这是典型的场景思维,也是产品思维。
作为刚开始接触大模型的新手,虽然拥有强大的计算资源是一个优势,但最关键的是识别和发掘那些能够充分利用LLM潜力的应用场景。这意味着,我们应该专注于那些能够通过LLM的强大处理能力来解决实际问题、提升效率或创造新机会的领域。通过这种方式,我们可以开发出具有实际应用价值的解决方案,而不是仅仅追求技术的新颖或者短期的热门研究。
为了做出真正有价值的产品,我们需要深入一些细节,比如在大模型微调过程中,如何平衡新任务数据和预训练数据之间的权重?如何选择合适的学习率和训练周期?怎样避免过拟合问题?怎样使用LangChain+LLM构建本地知识库等内容。作为一名NLP开发者,我推荐听听知乎知学堂最近推出的《AI 大模型进阶之旅》公开课。由行业顶尖的大佬解读此次AI技术革新,带你入门LLM开发,涵盖从环境搭建到应用部署的完整开发流程。我听完觉得讲的还是很透彻的,现在免费,推荐你来听听:
<a data-draft-node="block" data-draft-type="edu-card" data-edu-card-id="1765812107336167424"> |
|