- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
>关注公众号**回复1** > >获取**一线、总监、高管《管理秘籍》** 。
之前大家都认为中美在AI领域的差距很大,谁曾想春节期间**DeepSeek横空出世**,直接给OpenAI干懵了,也把很多国内从业人员干懵了! 。
对于AI爱好者来说,我十分好奇的是:**DeepSeek怎么做到的?** 。
于是春节期间查找了很多资料,**稍微有点收获**,今天我们就来探索其实现侧的奥秘.
## “抄作业”,抄成年级第二 。
首先,DeepSeek的成功是站在了巨人的肩膀上,他有两个老师: 1. 第一个是**OpenAI**,虽然OpenAI没公布模型实现细节,但他发布了大量模型研究论文,包括博客和API,使大家更为了解大模型的基本工作原理; 1. 第二个是**模型开源社群**,无论是GPT-2、BERT还是性能强大的LLama,都提供了可以参考的代码和实现,其中还包括一些工具和数据集; 。
我们确实要感叹于DeepSeek的快速进步,但没有上述两者的贡献,DeepSeek很难成功的;而后DeepSeek也回馈了开源,最终整个AI领域都向前跨域了一大步.
## 对大模型原理粗浅的解释 。
为方便各位理解,这里先**非常粗浅**的解释下大模型的工作原理,想象一下,你在玩成语接龙游戏.
每一个成语都是一个**“高维向量”**,它的意义就像是一个词的向量,而成语之间的连接就是模型的推理过程.
游戏的规则要求你从前一个成语的最后一个字开始接下一个成语,而这些成语的组合会逐步引导你达到一个完整的逻辑链条:
其中**标记数据**就像你提前知道了每个成语的正确搭配,帮助你快速接上一个正确的成语.
它直接告诉你**“接下来的成语是什么”**,这样你就能更精确地完成接龙,像是玩得很有方向感.
这就像是模型在训练时,通过标记数据学习到如何正确地推理出某个任务的结果(比如判断罪名或判决结果).
**非标记数据**则像是在你接龙过程中不需要提示,依靠自己的直觉和经验去推测下一个合适的成语.
通过接触大量成语,你能感觉到哪些成语在意思上比较接近,哪些成语在某些语境下会更搭配,这样你能更灵活地接出合适的成语.
这就像是模型通过非标记数据自我学习,不仅知道某些成语的意思,还能通过不断的接龙调整自己的理解,使得模型在面对新的任务时,也能合理推理和应对.
**最终**,标记数据通过监督学习帮助模型精确建立任务特定的推理规则,优化模型在特定任务上的准确性.
非标记数据则通过自监督学习或无监督学习,帮助模型在高维向量空间中发现潜在的语义结构,提升其泛化能力和推理灵活性.
结合两者,模型不仅能准确执行任务,还能有效应对新的复杂挑战.
### 举个例子 。
**标记数据**能通过监督学习帮助模型建立任务特定的推理规则,这是因为标记数据包含了**输入与对应的正确输出(标签)。** 。
通过这些标记数据,模型能够学习到如何从输入数据中推理出正确的结果。也就是说,**标记数据提供了模型学习的“标准答案”**,让模型能够优化其推理能力,从而准确完成特定任务.
举个例子,假设你在训练一个法律判决预测模型.
你有很多法律判决书作为输入数据,每一篇判决书都已经标注了正确的罪名(比如“盗窃罪”)和判决结果(比如“有期徒刑三年”)。这些标注数据就是标记数据.
模型通过学习这些标记数据,从判决书中识别出案件的关键词(例如“盗窃”)和判决结果(例如“有期徒刑”)。在训练过程中,模型根据输入的判决书和正确的标签,逐渐调整自己的参数,使其能够准确推理出案件的罪名和判决结果.
最终,**模型就能通过标记数据学到如何根据判决书内容推理出正确的罪名和判决结果,**从而在未来遇到类似的未见数据时,也能做出正确的判断.
以上是,**在有监督微调的情况下,模型通过大量标注数据进行训练。** 。
模型学习到输入数据(判决书)的关键词(如“盗窃”)和相关的判决结果(如“有期徒刑三年”),并通过调整参数,逐步优化推理过程。经过训练,模型能够从新的判决书中推理出准确的罪名和判决结果.
**如果没有使用监督微调情况就会往无序方向发展?** 。
在没有监督微调的情况下,预训练模型会得到**大量关于语言的通用知识**,比如**语法、词汇之间的关系**等,但它并没有学习**如何将这些知识应用于法律判决的推理任务(没有目的)。** 。
模型可能会理解判决书中的基本结构,但它不会知道哪些细节(比如案件的具体事实、相关法律条文)是判断罪名和判决结果的关键.
例如,它可能识别到“盗窃”这个词,但却无法将其与盗窃罪这个法律概念正确关联.
最后,因为模型没有在**有标注数据的监督指导下进行微调**,它可能会忽略判决书中某些关键的法律细节,导致预测的罪名或判决结果**错误或不完整。** 。
比如,模型可能从判决书中识别到“偷窃”一词,但如果它没有经过充分的监督微调,它可能将其错误分类为普通的“偷窃行为”而不是法律上的“盗窃罪”,从而影响判决结果.
### 总结一下 。
**预训练**让模型通过大规模未标注数据(如文本、书籍)学习语言的基本规律,包括语法结构、语义理解和上下文推理.
模型在此阶段建立了通用的语言理解能力,通过调整底层向量空间,使得模型能够识别词汇关系、推测上下文含义,具备广泛的推理能力,但并未专注于特定任务.
**微调**是在预训练基础上,利用少量带标签的领域数据(如法律判决书、医学报告)进行强化训练,目标是**让模型专注于特定任务或领域的推理能力。** 。
例如,在法律领域,微调让模型学会如何根据判决书推理罪名和判决结果.
预训练通过调整模型的底层向量结构,提供通用的语言理解框架;微调则优化模型在特定任务上的推理能力,增强模型的准确性与适应能力。这两者共同作用,帮助模型高效处理复杂任务.
在理解大模型最基本工作原理情况下,我们接着探讨.
>>科普:未标注数据指**没有明确标签或分类的原始数据** >> >>比如:第 231 条 盗窃罪:盗窃公私财物,数额较大,依法处罚.
>>科普:标注数据指**指数据集中的每一项数据都有明确的标签或分类** >> >>标注数据就是对一段文字的解释或附加说明,它帮助模型理解和学习文本中的关键部分和信息,进而能够在未标注的数据中做出合理的预测或分类。 >> >>原文:根据《中华人民共和国刑法》第 234 条,盗窃罪属于刑事犯罪,涉及财产损失应依法追究刑事责任。 >> >>标注数据:法律条文(《中华人民共和国刑法》第234条),罪名(盗窃罪).
## DeepSeek在训练方式的创新 。
### 1、传统训练方式 如前所述,传统的模型训练通常基于**监督学习和微调**,训练主要包括两个步骤:
- **第一,预训练** 。
通过大量数据集(例如书籍、文章、研究报告等),训练一个通用模型.
比如,GPT、BERT 等模型的预训练步骤,使用海量未标注的数据,目标是让模型学习到基本的语言规律.
- **第二,监督微调** 。
在预训练的基座模型上,基于任务要求,使用少量标注数据对预训练模型进行微调,确保模型能够在特定任务上(如文本分类、问答系统等)表现出更高的准确性和精度.
这一过程叫做**监督微调**,即使用有标签的数据对模型进行优化,以使其在特定任务上更精确.
传统方法通常用于**需要大量标注数据的任务**,如情感分析、机器翻译等。通过标注数据来进行精细化调整,使得模型在这些任务上表现得非常优秀.
虽然能够得到高精度的结果,但**需要大量的标注数据和计算资源,这往往导致训练成本较高。** 。
所以,我们再来看看DeepSeek这里有何不同?
### 2、DeepSeek的训练方式 。
DeepSeek提出的训练方法是**基于强化学习的增强训练范式**,其核心在于将**强化学习(Reinforcement Learning)技术与模型训练结合,增强了模型的推理能力。** 。
DeepSeek R1 的训练过程更侧重于以下几个方面:
- **第1、预训练** 。
和传统方法类似,DeepSeek 也使用了基座模型(如 DeepSeek V3)进行预训练,学习基本的语言或图像特征.
然而,DeepSeek 强调在此基础上通过 **强化学习** 来提升模型的决策和推理能力.
强化学习的核心是**通过与环境互动来学习并获得奖励或惩罚,模型通过反馈来优化自身行为。** 。
- **第2、基于规则的强化学习** 。
为了应对大规模训练和推理任务,DeepSeek 采用了**基于规则的方法**,这使得强化学习可以在大规模模型上进行有效的扩展(Scaling).
规则帮助系统设计合理的奖励机制,从而引导模型优化推理能力,**而不完全依赖于传统的标注数据。** 。
- **第3、DeepSeek-R1-Zero** 。
这一创新模型的关键在于,DeepSeek R1 通过强化学习“自我学习”增强推理能力,而非单纯依赖传统的标注数据.
**这种方法能够减少对标注数据的依赖,并在较少人工干预的情况下逐步提升推理能力。** 。
这里我们来详细探讨下.
## 强化学习与奖励机制 。
在DeepSeek中,强化学习与奖励机制结合的具体实现方式是其创新训练方法的核心之一,这里先简单介绍下强化学习:
### 强化学习 。
强化学习是一种机器学习的范式,它与传统的监督学习有所不同.
在监督学习中,模型从一组已标注的输入-输出对中学习,通过输入数据和相应的标签进行训练; 。
而在强化学习中,模型通过与环境的互动来学习。通过这种互动,模型根据执行的动作获得奖励或惩罚,然后调整自己的行为来最大化未来的奖励.
实际上,强化学习与传统的监督学习(包括微调)的核心原理有很多相似之处,尤其是它们都**通过反馈来调整模型的行为。** 。
这些反馈通常会通过更新模型的参数(例如权重和偏置)来优化模型的表现,从这个角度看,**强化学习和微调的本质确实都是通过更改模型的结构(向量或参数)来优化输出。** 。
强化学习与微调最大的不同点在于**训练的目标和反馈的方式**.
微调是依赖于标注数据来通过一次性优化解决特定任务,而强化学习通过持续的环境交互、奖励反馈机制来优化行为,使得模型能够长期适应动态任务和变化的环境.
因此,强化学习在处理需要**长期决策和自我调整**的任务时,表现得更加灵活和有效.
**** 。
最后,传统的训练方式面临着一个巨大的挑战:**高成本**,这些成本不仅仅体现在**数据收集和标注**上,还包括训练过程中的计算资源消耗.
DeepSeek的出现,它通过一系列创新的策略,显著优化了训练成本,尤其是通过强化学习、模型蒸馏和反馈机制的巧妙结合:
### 模型蒸馏 。
模型蒸馏是一种通过将一个大模型(教师模型)中学习到的知识转移给一个较小的模型(学生模型)的技术.
在模型蒸馏的初步阶段,**教师模型(如GPT等大型预训练模型)通常会生成大量高质量的数据。** 。
这些数据不仅包括传统的“硬标签”(即正确的答案),还包括“软标签”(即模型的输出概率分布或中间表示)。这些软标签可以包含比硬标签更多的信息,比如不同候选答案之间的相对概率、模型推理的信心等.
教师模型通过生成**问答对**或者**处理一组输入数据并产生输出**,提供给学生模型作为“学习目标”.
这个过程通过蒸馏来传递教师模型的知识,但目标不再是让学生模型直接模仿硬标签,而是模仿教师模型的推理过程、行为或输出分布.
在得到教师模型生成的问答对和软标签后,**学生模型(如DeepSeek)**将这些高质量数据作为“训练数据”来进行**微调**。在这个阶段,学生模型的目标是: 1. **尽可能模仿教师模型的行为和输出。**具体来说,学生模型会通过与教师模型输出的对比来调整自己的参数,使得其输出接近教师模型。 1. 学生模型会通过**微调**过程,调整自己的参数和结构,使得其推理过程、决策路径和教师模型更为接近.
这个微调过程通常是通过**优化损失函数**实现的,损失函数会衡量学生模型输出与教师模型输出之间的差距(通常使用KL散度等衡量概率分布差异的度量方法).
这种方式的优势是,学生模型不需要拥有像教师模型那样庞大的计算和存储需求,就能拥有类似的推理能力,从而在计算资源上实现显著的节省.
只不过这里要注意的是,就算要使用模型蒸馏,也要**学生模型**本身具有一定水准,这里开源模型会帮上不少忙.
### 强化学习优化与对话过程 。
在完成初步的蒸馏和微调后,为了进一步优化,尤其是在涉及动态交互或复杂推理任务的场景中,学生模型可能会进入一个“对话”的阶段,与教师模型不断交互和调整.
在这个阶段,强化学习开始发挥作用:学生模型与教师模型之间的“对话”不仅仅是通过一个静态的微调过程,而是通过持续的互动,**通过奖励和惩罚机制来优化学生模型的行为。** 。
模型每进行一次“交互”时,学生模型根据反馈(奖励或惩罚)调整其策略: 1. **奖励机制:**每次学生模型的输出接近教师模型的行为时,它将获得奖励。比如,如果学生模型能够生成一个与教师模型相似的高质量输出,它将获得奖励信号;如果偏离教师模型的输出,则会受到惩罚。 1. **强化学习的目标:**通过这种奖励机制,学生模型可以根据与教师模型的交互过程,不断优化其行为策略,使其推理和决策能力不断接近教师模型。 1. **持续调整权重:**学生模型的权重会在这个“对话”过程中不断调整。通过强化学习,学生模型通过与教师模型的对话和反馈,不断优化决策过程,使其在更复杂的任务中表现得更加灵活和精确.
## 成本优势 。
综上,DeepSeek之所以能够实现**低成本、高效率**,其核心优势在于如何高效地结合了**强化学习、模型蒸馏和自我学习**等创新训练方法.
这极大地降低了传统方法的计算资源需求,并提升了模型在动态和复杂任务中的推理能力.
>只不过一定要注意:这种低成本、高效率必须感谢GPT以及高质量的基座模型 。
### 1、强化学习的应用 。
DeepSeek通过强化学习与环境的持续交互进行训练,避免了对大量标注数据的强依赖,模型通过实时反馈(奖励或惩罚)调整行为,逐步改进决策策略.
这种训练方式渐进式地优化模型,减少了传统训练方法中需要大量标注数据的要求,同时提升了任务适应性和效率.
### 2、模型蒸馏 。
DeepSeek使用模型蒸馏技术,将强化学习优化后的大型教师模型的知识传递给较小的学生模型.
这样,学生模型在推理时保有较高的能力,但不需要像教师模型那样庞大的计算资源,显著降低了训练成本和计算资源的消耗.
### 3、基于规则的强化学习 。
DeepSeek的训练方法采用了基于规则的强化学习,这种方式通过规则设计合理的奖励机制,帮助模型优化推理过程,而不完全依赖标注数据.
规则指导模型在复杂任务中保持稳定表现,减少了大量标注数据收集的成本,提高了大规模任务处理的扩展性.
### 4、减少人工干预 DeepSeek通过自我学习和强化学习的反馈机制优化模型的推理能力.
通过与环境或其他模型的互动,模型通过奖励和惩罚自我调整,无需频繁的人工干预或数据清理.
通过与教师模型的对练和反馈机制,DeepSeek能够在较少人工干预下持续提升推理能力,从而降低了人工调整和标注数据的成本.
### 5、低成本创新系统 DeepSeek结合强化学习、模型蒸馏和自我学习,形成了一个高效的训练系统.
在这个系统中,模型通过自我优化减少了对标注数据和高计算资源的需求,并在较少计算资源下保持高效推理.
这种系统化的创新提升了训练速度,同时在处理复杂任务时仍能保持高效性,显著降低了训练成本.
## 结语 。
在前面的讨论中,我们详细分析了DeepSeek模型的创新之处,尤其是其通过强化学习、模型蒸馏和自我学习的结合,显著降低了训练成本并提高了效率.
而现实中已经**有很多大神成功完成了DeepSeek复刻**。比如,**Datawhale 骆师傅**.
其中**互联网悦读笔记**的文章是比较易读的,而且我与他的观点非常类似:**模型训练,数据为王**.
这么多人都可以完成模型复刻,这说明了一个问题:**模型训练门槛不高,后续由于工具平台的发展会变得更低,但如何用工程手法准备优质的数据,是最大的问题**.
至此,本篇文章也就结束了,要强调的是:**这篇文章是我对100多篇文章的吸收解读,其中包括这2年的很多实践经验,其中肯定存在不少错漏,这里请大家指正**.
最后补一句:**AI产品开发其核心还是行业KnowHow下的工程实践,其中如何循环产生优质数据形成飞轮系统是关键**,所以今天的内容,对于工程应用来说,其实是可有可无的,我们完全可以将模型当做一个黑盒使用,只不过了解得多没什么坏处.
 。
.
最后此篇关于百思不得其解,DeepSeek怎么突然就比肩GPT了?的文章就讲到这里了,如果你想了解更多关于百思不得其解,DeepSeek怎么突然就比肩GPT了?的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
无论我在做什么,我都会得到这个输出,但模拟器不会启动,新创建的模拟器也不会启动。我在 Windows 下: 警告:./android/base/files/IniFile.cpp:155:无法处理 .
我用 package.json NPM 脚本中像这样的变量: // package.json { "version": "0.12.1", "scripts": { "get-vers
几天前,Facebook 与我们网站的连接突然停止工作,代码没有任何更改??? Facebook 做了一些改变??? http://www.presbium.sk/vstup-pre-uchadzac
我习惯于 grunt build 任务成功完成,但由于我将我的项目编辑与其他开发人员同事合并,它突然失败并出现我以前从未见过的错误: grunt build Loading "imagemin.js"
我不明白这个。突然之间,我无法使用 iOS 9.0 中引入的 UIUserNotificationActionResponseTypedTextKey 标识符来访问通知中的文本输入消息。 Xcode
在我调用某个 Google 的 Youtube 库后,我的应用程序在其回调之一后突然变得完全没有响应。 无响应意味着无法点击所有 UI 组件。 在 iOS 中是否有这样的东西可以禁用整个屏幕完全不响应
bool queueIsFull(int rearPointer) { if(rearPointer==9) return 1; else return
我正在使用 PHP、Apache 和 MySQL 开发 Web 应用程序。在过去的一年中,此应用程序的响应时间一直不错。昨天,应用程序在 Firefox 上突然变得非常慢(完整的页面加载,包括 CSS
几个小时后,从控制台发出的 PHP 命令不再接受本地路径。例如在 laravel 中我总是给出命令 php artisan 但从今晚开始我收到了以下回复 Status: 404 Not Found C
我有一个 session WCF 服务,它生成一个进程并在调用 IsInitiating 操作时打开一个到该进程的命名管道。当调用 IsTerminating 操作时,服务会沿着管道发送一条消息,通知
类似的问题已经回答了好几次,我确实检查了其中的许多问题。这是不同的,请继续阅读。 我在 strings.xml 中定义了大量(大量)字符串,并带有多个格式参数。例如: %s and also %s 这
我有一个简单的消息机器人,它是根据 Messenger 平台指南设置的。在过去的几个月里,它一直运行良好,每天发送大约六条消息。我根本没有碰它,但是突然,发送消息,即调用 https://graph.
我正在使用 Unity 开发一款简单的 3D 手机游戏。我的目标是在没有垂直同步的情况下达到 30 FPS。我的游戏在所有 iOS 设备上运行良好,没有发热和节流,但有奇怪的 FPS 下降。 FPS
我们有一个自定义小部件,多年来一直运行良好,直到上周。 看来 Json 回调现在仅适用于播放列表,不适用于轨道。 播放列表 /**/jQuery31108094578850496614_1482167
-bash:/Users/winchenzo/git-completion.bash: 没有那个文件或目录 -bash:/Users/winchenzo/git-prompt.sh: 没有那个文件或目
编辑:重启解决了问题。我仍然想知道最初是什么原因造成的,因为这种情况以前发生过一次,但我不记得当时我做了什么来修复它(当时重新启动并没有解决问题)。 我 cd 到包含我要编辑的文件的文件夹,然后从命令
我刚刚注册是因为我突然遇到了一个问题,目前为止运行良好的代码我之前在这里找到了一些非常好的答案。希望你们能再次帮助我,这次甚至是投票;) $sql='SELECT projektKurz, proje
我制作了一个小程序,它在 tcp 套接字上监听和发送线路,并将接收到的信息附加到 JTextArea。我用它在 Minecraft 服务器上聊天,而无需打开游戏。 我昨晚工作得很好,但当我起床时却不工
感谢您在这里查看我的问题。 我正在使用 Glide 从 Firebase 存储中获取图像,基本上我是在使用 url 从存储中获取图像。第一天它工作正常但突然停止获取图像。我没有碰代码。我检查了很多答案
FCM 通知已到达所有 iOS 设备。但通知在大约 1 年前注册的某些设备上不起作用。 FCM token 和 APNs token 似乎没有变化。为什么没有到达通知? FCM token 是否必须过
Tôi là một lập trình viên xuất sắc, rất giỏi!