>关注公众号**回复1**
>
>获取**一线、总监、高管《管理秘籍》**

之前大家都认为中美在AI领域的差距很大,谁曾想春节期间**DeepSeek横空出世**,直接给OpenAI干懵了,也把很多国内从业人员干懵了!

对于AI爱好者来说,我十分好奇的是:**DeepSeek怎么做到的?**

于是春节期间查找了很多资料,**稍微有点收获**,今天我们就来探索其实现侧的奥秘。

## “抄作业”,抄成年级第二

首先,DeepSeek的成功是站在了巨人的肩膀上,他有两个老师:
1. 第一个是**OpenAI**,虽然OpenAI没公布模型实现细节,但他发布了大量模型研究论文,包括博客和API,使大家更为了解大模型的基本工作原理;
1. 第二个是**模型开源社群**,无论是GPT-2、BERT还是性能强大的LLama,都提供了可以参考的代码和实现,其中还包括一些工具和数据集;

我们确实要感叹于DeepSeek的快速进步,但没有上述两者的贡献,DeepSeek很难成功的;而后DeepSeek也回馈了开源,最终整个AI领域都向前跨域了一大步。

## 对大模型原理粗浅的解释

为方便各位理解,这里先**非常粗浅**的解释下大模型的工作原理,想象一下,你在玩成语接龙游戏。

每一个成语都是一个**“高维向量”**,它的意义就像是一个词的向量,而成语之间的连接就是模型的推理过程。

游戏的规则要求你从前一个成语的最后一个字开始接下一个成语,而这些成语的组合会逐步引导你达到一个完整的逻辑链条:

其中**标记数据**就像你提前知道了每个成语的正确搭配,帮助你快速接上一个正确的成语。

它直接告诉你**“接下来的成语是什么”**,这样你就能更精确地完成接龙,像是玩得很有方向感。

这就像是模型在训练时,通过标记数据学习到如何正确地推理出某个任务的结果(比如判断罪名或判决结果)。

**非标记数据**则像是在你接龙过程中不需要提示,依靠自己的直觉和经验去推测下一个合适的成语。

通过接触大量成语,你能感觉到哪些成语在意思上比较接近,哪些成语在某些语境下会更搭配,这样你能更灵活地接出合适的成语。

这就像是模型通过非标记数据自我学习,不仅知道某些成语的意思,还能通过不断的接龙调整自己的理解,使得模型在面对新的任务时,也能合理推理和应对。

**最终**,标记数据通过监督学习帮助模型精确建立任务特定的推理规则,优化模型在特定任务上的准确性。

非标记数据则通过自监督学习或无监督学习,帮助模型在高维向量空间中发现潜在的语义结构,提升其泛化能力和推理灵活性。

结合两者,模型不仅能准确执行任务,还能有效应对新的复杂挑战。

### 举个例子

**标记数据**能通过监督学习帮助模型建立任务特定的推理规则,这是因为标记数据包含了**输入与对应的正确输出(标签)。**

通过这些标记数据,模型能够学习到如何从输入数据中推理出正确的结果。也就是说,**标记数据提供了模型学习的“标准答案”**,让模型能够优化其推理能力,从而准确完成特定任务。

举个例子,假设你在训练一个法律判决预测模型。

你有很多法律判决书作为输入数据,每一篇判决书都已经标注了正确的罪名(比如“盗窃罪”)和判决结果(比如“有期徒刑三年”)。这些标注数据就是标记数据。

模型通过学习这些标记数据,从判决书中识别出案件的关键词(例如“盗窃”)和判决结果(例如“有期徒刑”)。在训练过程中,模型根据输入的判决书和正确的标签,逐渐调整自己的参数,使其能够准确推理出案件的罪名和判决结果。

最终,**模型就能通过标记数据学到如何根据判决书内容推理出正确的罪名和判决结果,**从而在未来遇到类似的未见数据时,也能做出正确的判断。

以上是,**在有监督微调的情况下,模型通过大量标注数据进行训练。**

模型学习到输入数据(判决书)的关键词(如“盗窃”)和相关的判决结果(如“有期徒刑三年”),并通过调整参数,逐步优化推理过程。经过训练,模型能够从新的判决书中推理出准确的罪名和判决结果。

**如果没有使用监督微调情况就会往无序方向发展?**

在没有监督微调的情况下,预训练模型会得到**大量关于语言的通用知识**,比如**语法、词汇之间的关系**等,但它并没有学习**如何将这些知识应用于法律判决的推理任务(没有目的)。**

模型可能会理解判决书中的基本结构,但它不会知道哪些细节(比如案件的具体事实、相关法律条文)是判断罪名和判决结果的关键。

例如,它可能识别到“盗窃”这个词,但却无法将其与盗窃罪这个法律概念正确关联。

最后,因为模型没有在**有标注数据的监督指导下进行微调**,它可能会忽略判决书中某些关键的法律细节,导致预测的罪名或判决结果**错误或不完整。**

比如,模型可能从判决书中识别到“偷窃”一词,但如果它没有经过充分的监督微调,它可能将其错误分类为普通的“偷窃行为”而不是法律上的“盗窃罪”,从而影响判决结果。

### 总结一下

**预训练**让模型通过大规模未标注数据(如文本、书籍)学习语言的基本规律,包括语法结构、语义理解和上下文推理。

模型在此阶段建立了通用的语言理解能力,通过调整底层向量空间,使得模型能够识别词汇关系、推测上下文含义,具备广泛的推理能力,但并未专注于特定任务。

**微调**是在预训练基础上,利用少量带标签的领域数据(如法律判决书、医学报告)进行强化训练,目标是**让模型专注于特定任务或领域的推理能力。**

例如,在法律领域,微调让模型学会如何根据判决书推理罪名和判决结果。

预训练通过调整模型的底层向量结构,提供通用的语言理解框架;微调则优化模型在特定任务上的推理能力,增强模型的准确性与适应能力。这两者共同作用,帮助模型高效处理复杂任务。

在理解大模型最基本工作原理情况下,我们接着探讨。

>>科普:未标注数据指**没有明确标签或分类的原始数据**
>>
>>比如:第 231 条 盗窃罪:盗窃公私财物,数额较大,依法处罚。

>>科普:标注数据指**指数据集中的每一项数据都有明确的标签或分类**
>>
>>标注数据就是对一段文字的解释或附加说明,它帮助模型理解和学习文本中的关键部分和信息,进而能够在未标注的数据中做出合理的预测或分类。
>>
>>原文:根据《中华人民共和国刑法》第 234 条,盗窃罪属于刑事犯罪,涉及财产损失应依法追究刑事责任。
>>
>>标注数据:法律条文(《中华人民共和国刑法》第234条),罪名(盗窃罪)。

## DeepSeek在训练方式的创新

### 一、传统训练方式
如前所述,传统的模型训练通常基于**监督学习和微调**,训练主要包括两个步骤:

- **第一,预训练**

通过大量数据集(例如书籍、文章、研究报告等),训练一个通用模型。

比如,GPT、BERT 等模型的预训练步骤,使用海量未标注的数据,目标是让模型学习到基本的语言规律。

- **第二,监督微调**

在预训练的基座模型上,基于任务要求,使用少量标注数据对预训练模型进行微调,确保模型能够在特定任务上(如文本分类、问答系统等)表现出更高的准确性和精度。

这一过程叫做**监督微调**,即使用有标签的数据对模型进行优化,以使其在特定任务上更精确。

传统方法通常用于**需要大量标注数据的任务**,如情感分析、机器翻译等。通过标注数据来进行精细化调整,使得模型在这些任务上表现得非常优秀。

虽然能够得到高精度的结果,但**需要大量的标注数据和计算资源,这往往导致训练成本较高。**

所以,我们再来看看DeepSeek这里有何不同?

### 二、DeepSeek的训练方式

DeepSeek提出的训练方法是**基于强化学习的增强训练范式**,其核心在于将**强化学习(Reinforcement Learning)技术与模型训练结合,增强了模型的推理能力。**

DeepSeek R1 的训练过程更侧重于以下几个方面:

- **第一、预训练**

和传统方法类似,DeepSeek 也使用了基座模型(如 DeepSeek V3)进行预训练,学习基本的语言或图像特征。

然而,DeepSeek 强调在此基础上通过 **强化学习** 来提升模型的决策和推理能力。

强化学习的核心是**通过与环境互动来学习并获得奖励或惩罚,模型通过反馈来优化自身行为。**

- **第二、基于规则的强化学习**

为了应对大规模训练和推理任务,DeepSeek 采用了**基于规则的方法**,这使得强化学习可以在大规模模型上进行有效的扩展(Scaling)。

规则帮助系统设计合理的奖励机制,从而引导模型优化推理能力,**而不完全依赖于传统的标注数据。**

- **第三、DeepSeek-R1-Zero**

这一创新模型的关键在于,DeepSeek R1 通过强化学习“自我学习”增强推理能力,而非单纯依赖传统的标注数据。

**这种方法能够减少对标注数据的依赖,并在较少人工干预的情况下逐步提升推理能力。**

这里我们来详细探讨下。

## 强化学习与奖励机制

在DeepSeek中,强化学习与奖励机制结合的具体实现方式是其创新训练方法的核心之一,这里先简单介绍下强化学习:

### 强化学习

强化学习是一种机器学习的范式,它与传统的监督学习有所不同。

在监督学习中,模型从一组已标注的输入-输出对中学习,通过输入数据和相应的标签进行训练;

而在强化学习中,模型通过与环境的互动来学习。通过这种互动,模型根据执行的动作获得奖励或惩罚,然后调整自己的行为来最大化未来的奖励。

实际上,强化学习与传统的监督学习(包括微调)的核心原理有很多相似之处,尤其是它们都**通过反馈来调整模型的行为。**

这些反馈通常会通过更新模型的参数(例如权重和偏置)来优化模型的表现,从这个角度看,**强化学习和微调的本质确实都是通过更改模型的结构(向量或参数)来优化输出。**

强化学习与微调最大的不同点在于**训练的目标和反馈的方式**。

微调是依赖于标注数据来通过一次性优化解决特定任务,而强化学习通过持续的环境交互、奖励反馈机制来优化行为,使得模型能够长期适应动态任务和变化的环境。

因此,强化学习在处理需要**长期决策和自我调整**的任务时,表现得更加灵活和有效。

****

最后,传统的训练方式面临着一个巨大的挑战:**高成本**,这些成本不仅仅体现在**数据收集和标注**上,还包括训练过程中的计算资源消耗。

DeepSeek的出现,它通过一系列创新的策略,显著优化了训练成本,尤其是通过强化学习、模型蒸馏和反馈机制的巧妙结合:

### 模型蒸馏

模型蒸馏是一种通过将一个大模型(教师模型)中学习到的知识转移给一个较小的模型(学生模型)的技术。

在模型蒸馏的初步阶段,**教师模型(如GPT等大型预训练模型)通常会生成大量高质量的数据。**

这些数据不仅包括传统的“硬标签”(即正确的答案),还包括“软标签”(即模型的输出概率分布或中间表示)。这些软标签可以包含比硬标签更多的信息,比如不同候选答案之间的相对概率、模型推理的信心等。

教师模型通过生成**问答对**或者**处理一组输入数据并产生输出**,提供给学生模型作为“学习目标”。

这个过程通过蒸馏来传递教师模型的知识,但目标不再是让学生模型直接模仿硬标签,而是模仿教师模型的推理过程、行为或输出分布。

在得到教师模型生成的问答对和软标签后,**学生模型(如DeepSeek)**将这些高质量数据作为“训练数据”来进行**微调**。在这个阶段,学生模型的目标是:
1. **尽可能模仿教师模型的行为和输出。**具体来说,学生模型会通过与教师模型输出的对比来调整自己的参数,使得其输出接近教师模型。
1. 学生模型会通过**微调**过程,调整自己的参数和结构,使得其推理过程、决策路径和教师模型更为接近。

这个微调过程通常是通过**优化损失函数**实现的,损失函数会衡量学生模型输出与教师模型输出之间的差距(通常使用KL散度等衡量概率分布差异的度量方法)。

这种方式的优势是,学生模型不需要拥有像教师模型那样庞大的计算和存储需求,就能拥有类似的推理能力,从而在计算资源上实现显著的节省。

只不过这里要注意的是,就算要使用模型蒸馏,也要**学生模型**本身具有一定水准,这里开源模型会帮上不少忙。

### 强化学习优化与对话过程

在完成初步的蒸馏和微调后,为了进一步优化,尤其是在涉及动态交互或复杂推理任务的场景中,学生模型可能会进入一个“对话”的阶段,与教师模型不断交互和调整。

在这个阶段,强化学习开始发挥作用:学生模型与教师模型之间的“对话”不仅仅是通过一个静态的微调过程,而是通过持续的互动,**通过奖励和惩罚机制来优化学生模型的行为。**

模型每进行一次“交互”时,学生模型根据反馈(奖励或惩罚)调整其策略:
1. **奖励机制:**每次学生模型的输出接近教师模型的行为时,它将获得奖励。比如,如果学生模型能够生成一个与教师模型相似的高质量输出,它将获得奖励信号;如果偏离教师模型的输出,则会受到惩罚。
1. **强化学习的目标:**通过这种奖励机制,学生模型可以根据与教师模型的交互过程,不断优化其行为策略,使其推理和决策能力不断接近教师模型。
1. **持续调整权重:**学生模型的权重会在这个“对话”过程中不断调整。通过强化学习,学生模型通过与教师模型的对话和反馈,不断优化决策过程,使其在更复杂的任务中表现得更加灵活和精确。

## 成本优势

综上,DeepSeek之所以能够实现**低成本、高效率**,其核心优势在于如何高效地结合了**强化学习、模型蒸馏和自我学习**等创新训练方法。

这极大地降低了传统方法的计算资源需求,并提升了模型在动态和复杂任务中的推理能力。

>只不过一定要注意:这种低成本、高效率必须感谢GPT以及高质量的基座模型

### 一、强化学习的应用

DeepSeek通过强化学习与环境的持续交互进行训练,避免了对大量标注数据的强依赖,模型通过实时反馈(奖励或惩罚)调整行为,逐步改进决策策略。

这种训练方式渐进式地优化模型,减少了传统训练方法中需要大量标注数据的要求,同时提升了任务适应性和效率。

### 二、模型蒸馏

DeepSeek使用模型蒸馏技术,将强化学习优化后的大型教师模型的知识传递给较小的学生模型。

这样,学生模型在推理时保有较高的能力,但不需要像教师模型那样庞大的计算资源,显著降低了训练成本和计算资源的消耗。

### 三、基于规则的强化学习

DeepSeek的训练方法采用了基于规则的强化学习,这种方式通过规则设计合理的奖励机制,帮助模型优化推理过程,而不完全依赖标注数据。

规则指导模型在复杂任务中保持稳定表现,减少了大量标注数据收集的成本,提高了大规模任务处理的扩展性。

### 四、减少人工干预
DeepSeek通过自我学习和强化学习的反馈机制优化模型的推理能力。

通过与环境或其他模型的互动,模型通过奖励和惩罚自我调整,无需频繁的人工干预或数据清理。

通过与教师模型的对练和反馈机制,DeepSeek能够在较少人工干预下持续提升推理能力,从而降低了人工调整和标注数据的成本。

### 五、低成本创新系统
DeepSeek结合强化学习、模型蒸馏和自我学习,形成了一个高效的训练系统。

在这个系统中,模型通过自我优化减少了对标注数据和高计算资源的需求,并在较少计算资源下保持高效推理。

这种系统化的创新提升了训练速度,同时在处理复杂任务时仍能保持高效性,显著降低了训练成本。

## 结语

在前面的讨论中,我们详细分析了DeepSeek模型的创新之处,尤其是其通过强化学习、模型蒸馏和自我学习的结合,显著降低了训练成本并提高了效率。

而现实中已经**有很多大神成功完成了DeepSeek复刻**。比如,**Datawhale 骆师傅**。

其中**互联网悦读笔记**的文章是比较易读的,而且我与他的观点非常类似:**模型训练,数据为王**。

这么多人都可以完成模型复刻,这说明了一个问题:**模型训练门槛不高,后续由于工具平台的发展会变得更低,但如何用工程手法准备优质的数据,是最大的问题**。

至此,本篇文章也就结束了,要强调的是:**这篇文章是我对100多篇文章的吸收解读,其中包括这2年的很多实践经验,其中肯定存在不少错漏,这里请大家指正**。

最后补一句:**AI产品开发其核心还是行业KnowHow下的工程实践,其中如何循环产生优质数据形成飞轮系统是关键**,所以今天的内容,对于工程应用来说,其实是可有可无的,我们完全可以将模型当做一个黑盒使用,只不过了解得多没什么坏处。

![](https://files.mdnice.com/user/25507/dfbdbae0-7236-421c-bbb0-badae3db3d76.png)

百思不得其解,DeepSeek怎么突然就比肩GPT了?的更多相关文章

  1. 百思不得其解—这些年做Web开发遇到的坑?

     请教一个问题:Bootstrap 模态框modal里面的嵌入 iframe ,然后iframe 里面载入的是优酷的视频 ,现在的问题是:这个模态框在谷歌浏览器上面可以播放出视频,而在ff浏览器里面无 ...

  2. 批处理学习:for语句详解【经典】

    大纲 一 前言 二 for语句的基本用法 三 for /f (delims.tokens.skip.eol.userbackq.变量延迟) 四 for /r (递归遍历) 五 for /d (遍历目录 ...

  3. css3 calc()方法详解

    calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢?这一点也让我百思不得其解,今天有一同事告诉我,说CSS3中有一个属性 ...

  4. VC中预处理指令与宏定义详解

    刚接触到MFC编程的人往往会被MFC 向导生成的各种宏定义和预处理指令所吓倒,但是预处理和宏定义又是C语言的一个强大工具.使用它们可以进行简单的源代码控制,版本控制,预警或者完成一些特殊的功能. 一个 ...

  5. php自定义函数call_user_func和call_user_func_array详解

    看UCenter的时候有一个函数call_user_func,百思不得其解,因为我以为是自己定义的函数,结果到处都找不到,后来百度了一下才知道call_user_func是内置函 call_user_ ...

  6. 谷歌浏览器chrome与firefox的冲突(未解之谜)

    那年,公司开发了一套在线制作电子书的系统 e-textbook. 我负责小学电脑科教材在线题目的制作. 利用 ps制作剪裁好图片,导入系统,制作题目,并通知同事添加代码. 检测时,却发现有一道图片拖放 ...

  7. bat命令之for命令详解

    ______________版主提醒____________________________ 为了避免影响技术讨论.提高看帖的舒适性,请大家不要在此帖下跟无实质内容的口水帖,特别是纯顶.纯支持.纯感谢 ...

  8. C++ Namespace 详解

    命名空间的定义格式为:(取自C++标准文档) named-namespace-definition: namespace identifier { namespace-body } unnamed-n ...

  9. Array.prototype.map()详解

    今天在地铁上看到这样一个小例子: ["1","2","3"].map(parseInt); 相信很多人和我一样,觉得输出的结果是[1,2,3 ...

  10. Git详解之六 Git工具(转)

    Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力. 接下来你 ...

随机推荐

  1. Java日志手机号脱敏工具类

    背景 在开发过程中,很容易将用户敏感信息,例如手机号码.身份证等,打印在日志平台.为了保护用户数据,又不影响日志的打印,需要将日志中的敏感信息进行脱敏. 效果 没看明白,强烈建议 pull项目,执行一 ...

  2. 人工智能大语言模型起源篇(二),从通用语言微调到驾驭LLM

    上一篇:<人工智能大语言模型起源篇(一),从哪里开始> (5)Howard 和 Ruder 于2018年发表的<Universal Language Model Fine-tunin ...

  3. npm install报错的解决方法

    解决方法 node版本不对,问问前端开发,node版本是什么版本,用nvm install,并切换到正常的node版本: git代码有时候会有冲突,把前端项目中的依赖包node_modules 和 p ...

  4. R数据分析:冲击流图与热图的做法以及多图布局

    今天看了一篇新冠肺炎相关后遗症的文章,主要探讨新冠住院病人一年后的后遗症情况,文章的统计分析很简单,不过结果展示中的两个图我觉的大家可以学一学,原文如下 Rivera-Izquierdo, M., L ...

  5. Excel VLOOKUP 函数入门教程

    一.引言 在日常工作中,Excel 是处理数据的强大工具之一,而 VLOOKUP 函数作为 Excel 中最常用的查找函数之一,能够帮助用户在表格或数值数组中快速定位并返回所需的数据.它的工作原理是在 ...

  6. web应用模式、API接口、接口测试工具postman、restful规范

    目录 一.web 应用模式 二.API接口 API概念 三.接口测试工具postman postman介绍 postman下载与使用 四.如何在浏览器中测试 五.restful规范(重要,不难) 概念 ...

  7. mysql命令行创建数据库并设置字符集

    CREATE DATABASE test1 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

  8. Spring RestTemplete支持Https安全请求

    实现步骤 Step1: 自定义ClientHttpRequestFactory package com.example.demo.https; import org.springframework.h ...

  9. 关于TB交易开拓者的KDJ指标与经典KDJ指标计算方法不同的分析

    我之前在群里咨询的问题, TB官方的技术大佬,给出详细的分析 原链接:https://www.kdocs.cn/l/cgF3sA7ypa99 在这,我只复制最核心的内容,如果需要深入研究, 请联系我, ...

  10. Qt设置运行时动态库路径的几点说明

    随着需求的不断增加,程序不断变大,用到的动态库也越来越多,到了发布程序的时候你会发现和可执行文件同一目录下文件数量真多(比如著名的金融软件 https://www.webull.com/ 哎呀我去,目 ...