- 博客(112)
- 资源 (3)
- 收藏
- 关注

原创 【RAG】基于 RAG 的知识库问答系统设计与实现
基于 Retrieval-Augmented Generation (RAG) 的知识库问答系统通过结合信息检索与生成式模型,为知识库问答提供了一种高效且智能的解决方案。传统问答系统在面对动态知识更新和复杂问题时,往往存在响应不准确、更新不及时等问题,而 RAG 系统通过将知识检索与自然语言生成相结合,显著提升了回答的精准性和上下文相关性。为此,本文设计了一种基于 RAG 的知识库问答系统 Demo,采用前后端分离的架构设计,
2024-11-27 09:00:00
5327
15

原创 【深度学习】Focal Loss 损失函数
1. Focal Loss 介绍Focal Loss 是一种专门设计用于处理类别不平衡问题的损失函数,特别是在目标检测任务中表现出色。它最早由 Facebook AI Research (FAIR) 提出的,在物体检测中,如 RetinaNet,解决了正负样本严重不平衡的问题。论文链接:Focal Loss for Dense Object Detection2. 背景在许多实际应用中,如目标检测,类别不平衡是一个常见问题。例如,在一个图像中,背景(负样本)通常占据大多数,而目标物体(正样本)很少
2024-08-21 18:05:55
8869

原创 【深度学习】注意力机制
注意力机制(Attention Mechanism)是一种在计算机科学和机器学习中常用的技术,可以使模型在处理序列数据时更加准确和有效。在传统的神经网络中,每个神经元的输出只依赖于前一层的所有神经元的输出,而在注意力机制中,每个神经元的输出不仅仅取决于前一层的所有神经元的输出,还可以根据输入数据的不同部分进行加权,即对不同部分赋予不同的权重。这样可以使模型更加关注输入序列中的关键信息,从而提高模型的精度和效率。
2023-05-02 20:29:57
41178
7
原创 【论文阅读】Proximal Policy Optimization Algorithms
作者提出了一类新的策略梯度方法用于强化学习,这类方法通过在环境交互中采样数据与使用随机梯度上升优化“代理”目标函数之间交替进行。标准的策略梯度方法在每个数据样本上进行一次梯度更新,而作者提出了一种新的目标函数,使得能够在每个小批量更新中进行多次迭代。作者将这种新方法称为近端策略优化(PPO),具有信任域策略优化(TRPO)的一些优点,但它们更易于实现,更具通用性,并且在样本复杂度上(根据经验)表现更好。作者的实验在一系列基准任务上测试了PPO,包括模拟机器人运动和Atari游戏玩法。作者展示了PPO优于其他
2025-02-24 22:01:56
1082
1
原创 【深度学习】预训练和微调概述
预训练和微调是现代深度学习模型训练中的两个关键步骤,它们通常是一个 预训练-微调 (Pretrain-Finetune) 流程的不同阶段。两者相辅相成,共同帮助模型从通用的知识到特定任务的适应。
2025-02-18 11:15:12
1540
原创 【论文阅读】DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
作者介绍了第一代推理模型,即DeepSeek-R1-Zero 和 DeepSeek-R1。DeepSeek-R1-Zero是一个通过大规模强化学习(RL)训练而成的模型,它没有经过监督微调(SFT)作为初始步骤,展示了优秀的推理能力。通过RL,DeepSeek-R1-Zero自然地涌现出许多强大且有趣的推理行为。然而,它也面临一些挑战,例如可读性差和语言混杂。为了解决这些问题并进一步提升推理性能,作者引入了DeepSeek-R1,它在 RL 之前加入了多阶段训练和冷启动数据。DeepSeek-R1 在推理任
2025-02-12 15:25:12
1102
1
原创 【论文阅读】Efficient Memory Management for Large Language Model Serving with PagedAttention
大语言模型(LLMs)的高吞吐量服务需要一次批处理足够多的请求。然而,现有的系统面临挑战,因为每个请求的键值缓存(KV cache)占用内存非常庞大,并且会动态增长和缩小。当管理效率低下时,这部分内存会因碎片化和冗余重复被明显浪费,从而限制了批处理的大小。为了解决这个问题,作者提出了PagedAttention,一种受操作系统中经典虚拟内存和分页技术启发的注意力算法。在此基础上,作者构建了vLLM,一个能够实现以下目标的 LLM 服务系统。
2025-02-08 22:49:22
1003
1
原创 【RAG】RAG概述
在现代自然语言处理(NLP)和生成式 AI 的应用中,检索增强生成(Retrieval-Augmented Generation,RAG)是一种结合检索系统与生成模型的技术,主要用于处理需要大规模知识和高准确性的任务。传统的生成模型在生成回答时只能依赖自身的训练数据,并不能动态访问最新的信息。而 RAG 通过引入检索机制,弥补了生成模型在知识广度和及时性方面的不足,因此在各种需要复杂知识的场景中表现较好。
2024-10-28 09:37:50
1371
1
原创 【论文阅读】jina-embeddings-v3: Multilingual Embeddings With Task LoRA
作者介绍了 jina-embeddings-v3,这是一种具有 5.7 亿个参数的新文本嵌入模型,在多语言数据和长上下文检索任务上实现了最先进的性能,支持高达 8192 个 token 的上下文长度。该模型包括一组任务特定的低秩适应 (LoRA) 适配器,能够生成用于查询-文档检索、聚类、分类和文本匹配的高质量嵌入。在 MTEB 基准测试中的评估表明,jina-embeddings-v3 在英语任务上优于 OpenAI 和 Cohere 的最新专有嵌入,同时在所有多语言任务上相较 multilingual-
2024-10-24 23:41:47
1409
1
原创 【论文阅读】BGE M3-Embedding:通过自知识蒸馏实现多语言、多功能、多粒度的文本嵌入
在本文中,作者介绍了一种称为 M3-Embedding 的新嵌入模型,该模型因其在多语言、多功能 和 多粒度上的通用性而与众不同。它为 100 多种工作语言的语义检索提供统一支持。它可以同时完成三种常见的检索功能:密集检索、多向量检索和稀疏检索。此外,它还能够处理不同粒度的输入,从短句子到最多 8192 个token的长文档。 M3-Embedding 的有效训练呈现出一系列技术贡献。尤其,作者提出了一种新的自知识蒸馏方法,其中来自不同检索功能的相关性分数可以整合为teacher信号,以提升训练质量。作者还
2024-09-19 14:11:24
2067
1
原创 【论文阅读】Late Chunking:Contextual Chunk Embeddings Using Long-Context Embedding Models
许多应用场景需要检索较小的文本片段,而基于密集向量的检索系统在处理较短文本片段时通常表现更好,因为语义在嵌入中不容易被 “过度压缩” 。因此,开发者通常会将文本文档分割成更小的块,并分别进行编码。然而,这种方式创建的块嵌入可能会丢失周围块的上下文信息,从而导致表示效果不理想。在本文中,作者提出了一种称为 “late分块” 的新方法,该方法利用长上下文嵌入模型首先嵌入长文本的所有token,然后在 Transformer 模型之后、均值池化之前进行分块。这样得到的块嵌入能够捕捉完整的上下文信息,从而在各种检
2024-09-10 20:09:51
1132
2
原创 【论文阅读】ModelScope-Agent:基于开源大语言模型的可定制Agent系统
大语言模型(LLMs)最近展示出了卓越的能力,能够理解人类意图、进行推理和设计类似规划的行为。为了进一步释放 LLM 在完成复杂任务方面的潜力,越来越多的趋势是构建 agent 框架,使LLM(如ChatGPT)具备使用工具的能力,以连接大量的外部 API。在这项工作中,作者介绍了 ModelScope-Agent,一个基于开源 LLM 作为控制器,面向实际应用的通用且可定制的 agent 框架。
2024-09-09 15:36:44
2080
3
原创 【HuggingFace Transformers】OpenAIGPTModel的核心——Block源码解析
在 GPT 模型中,Block 是 Transformer 架构的核心组成部分。每个 Block 主要由三个部分构成:Attention、MLP以及两个Layer Norm。首先,Attention 层负责计算输入中各位置之间的注意力权重,并生成加权的表示。接着,将Attention 的输出与输入进行残差连接,并通过第一个Layer Norm层进行层归一化,形成中间状态。随后,MLP 层进一步处理这些中间状态,通过激活函数引入非线性变换。最后将MLP 层的输出和输入进行残差连接,并通过第二个Layer...
2024-09-05 04:00:00
1211
原创 【HuggingFace Transformers】OpenAIGPTModel源码解析
说到ChatGPT,大家可能都使用过吧。2022年,ChatGPT的推出引发了广泛的关注和讨论。这款对话生成模型不仅具备了强大的语言理解和生成能力,还能进行非常自然的对话,给用户带来了全新的互动体验。它能够处理各种问题,从日常闲聊到技术咨询,表现都相当出色。ChatGPT的成功背后离不开它的前身——GPT。GPT是一种先进的语言模型,通过在海量文本数据上进行预训练,掌握了语言的基本规律。ChatGPT则在GPT的基础上进行了针对对话的优化,使得它在生成对话时更加连贯和自然。因此,ChatGPT的火爆不仅
2024-09-04 15:08:24
825
原创 【HuggingFace Transformers】Llama Model的应用
LLama 模型采用了 Transformer 架构中的解码器结构,是一种自回归语言模型,擅长生成任务,如自然语言理解、生成、对话、以及其他与文本生成相关的任务。而 LlamaForCausalLM 是一个专门用于因果语言建模(Causal Language Modeling)的类,并基于 LLaMA 模型架构构建。这个类主要用于文本生成、对话系统、代码生成等自然语言生成任务。
2024-09-04 08:30:00
2086
原创 【HuggingFace Transformers】LlamaRotaryEmbedding源码解析
在LLaMa模型中,LlamaRotaryEmbedding类实现了Rotary Position Embedding(RoPE)的方法。RoPE的核心思想是对位置编码应用旋转变换,使得不同位置之间的相对位置关系在编码过程中得到保留。这种旋转变换不仅能捕捉到序列的绝对位置,还能捕捉到相对位置,从而更好地处理长距离依赖。
2024-09-03 14:34:29
2346
原创 【HuggingFace Transformers】LlamaRMSNorm源码解析
LlamaRMSNorm 是 LLaMA 模型中的关键归一化层,它通过均方根归一化方法,提供了一种计算效率更高的替代方案,相比传统的层归一化,它更适合在大型模型中使用。它在保证模型性能的同时,简化了计算过程,是 LLaMA 模型稳定训练的重要组成部分。
2024-09-03 09:30:00
868
原创 【HuggingFace Transformers】LlamaMLP源码解析
LlamaMLP 是 Llama 模型中的 MLP 层,主要用于对输入特征进行非线性变换。在分片预训练模式下,线性层的权重被切分,分步处理后再进行拼接和求和,而在常规模式下,直接应用线性变换和激活函数处理输入数据。其计算公式为
2024-09-02 17:05:59
1255
原创 【HuggingFace Transformers】LlamaAttention源码解析
LlamaAttention是LLaMA模型中负责实现自注意力机制的核心组件,其使用了多头自注意力(Multi-Head Self-Attention)机制,允许模型在不同的子空间中并行计算注意力,从而提高了对信息的表达能力。
2024-09-02 15:39:23
1761
原创 【HuggingFace Transformers】LlamaDecoderLayer源码解析
LlamaDecoderLayer 实现了 LLaMA 模型中的解码器层,结合了自注意力机制、全连接层和归一化处理。通过这种设计,模型可以有效捕捉序列中的复杂依赖关系,同时保持信息的连贯性和稳定性。残差连接的引入使得模型能够更好地处理深层次的网络训练问题,从而提高模型的表现。
2024-08-29 14:27:48
928
原创 【HuggingFace Transformers】LlamaModel源码解析
LlamaModel 是一个基于 Transformer 架构的解码器模型,用于自然语言处理任务。它是 Meta 的 LLaMA (Large Language Model Meta AI) 系列的一部分,设计用于生成任务和自回归文本生成。它通过解码器层、位置编码和归一化层来处理输入序列,并提供了对缓存和注意力机制的支持。它在大规模自然语言生成任务中表现出色,并能够处理复杂的序列依赖关系。
2024-08-28 20:17:27
1399
原创 【HuggingFace Transformers】Bert Model的应用
在自然语言处理领域中,BERT模型因其强大的文本理解能力被广泛应用于各种分类任务。具体而言,BERT在分类任务中可以分为两种主要应用:序列分类和标记分类。序列分类通常用于整段文本的情感分析或主题分类,而标记分类则用于更细粒度的任务,如命名实体识别和词性标注。下面将分别介绍这两种应用及其实现方式。
2024-08-28 14:18:58
1202
原创 【HuggingFace Transformers】BertIntermediate 和 BertPooler源码解析
1.1 位置与功能(1) BertIntermediate位置:位于 BertLayer 的注意力层(BertSelfAttention)和输出层(BertOutput)之间。功能:它执行一个线性变换(通过全连接层)并跟随一个激活函数(通常是 ReLU),为后续层提供更高层次的特征表示。(2) BertPooler位置:位于整个 BertModel 的最后一层之后,直接处理经过编码的序列表示。功能:从序列的第一个标记(即 [CLS] 标记)提取特征,并通过一个线性变换和 Tanh 激活函数来
2024-08-26 16:21:07
694
原创 【HuggingFace Transformers】BertSelfOutput 和 BertOutput源码解析
BertSelfOutput 和 BertOutput 是 BERT 模型中两个相关但不同的模块。它们在功能上有许多共同点,但也有一些关键的不同点。以下通过共同点和不同点来介绍它们。BertSelfOutput 和 BertOutput 都包含残差连接、层归一化、Dropout 和线性变换,并且这些操作的顺序相似。
2024-08-26 15:27:18
1073
原创 【HuggingFace Transformers】BertAttention源码解析
BertAttention类 介绍在 BERT 模型中,BertAttention 是每一个 Transformer 编码器层的核心部分。BERT 模型通常由多个编码器层叠加而成,每个编码器层都包含一个 BertAttention 层,用于捕获输入序列中各个位置之间的依赖关系。
2024-08-25 23:33:24
914
原创 【HuggingFace Transformers】BertSdpaSelfAttention源码解析
BertSdpaSelfAttention类是 BERT 模型自注意力层的实现,继承 BertSelfAttention 类。BertSdpaSelfAttention 模块是在 Hugging Face 的 transformers 库的 4.31.0 版本后引入的。这一模块是为了增强 BERT 模型中自注意力机制的效率和性能,利用了 PyTorch 中的 scaled_dot_product_attention 函数。
2024-08-25 21:53:14
556
原创 【HuggingFace Transformers】BertSelfAttention源码解析
BertSelfAttention 类是 BERT 模型的核心组件之一,主要负责实现多头自注意力机制。通过注意力机制,模型可以捕捉到输入序列中各个位置之间的依赖关系。以下是对 BertSelfAttention 类的详细介绍:
2024-08-23 23:41:47
1744
原创 【深度学习】爱因斯坦求和约定
1. 介绍爱因斯坦求和约定(Einstein summation convention)是爱因斯坦提出的一种简化数学表达的记号方法,尤其在张量运算中非常常见。这种约定可以让复杂的线性代数运算变得更加简洁明了。1.1 基本概念在传统的数学表达式中,当我们进行张量运算(例如矩阵乘法、内积等)时,通常会明确地写出求和符号(∑∑)。而在爱因斯坦求和约定中,省略了显式的求和符号,约定对于那些在表达式中重复出现的下标,会自动进行求和。爱因斯坦求和约定的核心是:当一个表达式中同一个指标(下标或上标)在同一
2024-08-23 17:32:10
1647
原创 【HuggingFace Transformers】BertLayer源码解析
BertLayer 类是 BERT 模型的基本构建块之一。它实现了 Transformer 架构中的一个层级结构,在输入的序列上执行自注意力、前馈神经网络等操作,并在必要时结合交叉注意力机制(在解码器中)。其核心功能为:自注意力机制:在 BERT 模型中,自注意力是核心组件,用于计算序列中各个位置之间的相关性。交叉注意力机制:在编码器-解码器架构中(如在 is_decoder=True 的情况下),交叉注意力用于处理解码器的隐藏状态与编码器的隐藏状态之间的相关性。前馈神经网络:经过自注意力和交叉注意
2024-08-22 15:31:25
570
原创 【HuggingFace Transformers】BertEncoder源码解析
BertEncoder 类用于实现 BERT 模型的编码器部分。这个编码器由多个堆叠的 BertLayer 组成,用于处理输入的隐藏状态并生成新的隐藏状态。核心功能为:BertLayer 堆叠:编码器的核心是 BertLayer 的堆叠,每一层都处理输入的隐藏状态并生成新的隐藏状态。梯度检查点:这一功能主要用于减少内存消耗,但需要注意它与缓存功能不兼容。多种输出选择:可以选择是否输出所有隐藏状态、注意力权重,以及以何种形式返回结果(字典或元组)。兼容性检查:代码中对梯度检查点与缓存的兼容性进行了检
2024-08-22 11:31:22
564
原创 【HuggingFace Transformers】BertModel源码解析
BertModel是transformers 库中的核心模型之一,它实现了BERT模型的架构。BERT是基于Transformer 编码器的堆叠模块来构建的。以下是 BertModel 内部包含的主要模块和组件的详细介绍
2024-08-20 11:43:56
1419
原创 【HuggingFace Transformers】BertEmbeddings源码解析
BertEmbeddings 类是 BERT 模型的一个重要组成部分。这个类将词嵌入(Token Embeddings) 、位置嵌入(Position Embeddings) 和 标记类型嵌入(Segment Embeddings) 组合起来,为每个输入token生成最终的嵌入表示,为后续的编码器层提供输入。
2024-07-12 17:16:19
1539
原创 【HuggingFace Transformers】input_ids与inputs_embeds的区别
在使用 BERT 模型时,input_ids 和 inputs_embeds都是用于表示输入数据的,但它们有不同的用途和数据格式。以下是它们的区别和详细解释
2024-07-11 17:01:36
2139
原创 【深度学习】SwiGLU激活函数
SwiGLU激活函数是一种变体的Gated Linear Unit(GLU)激活函数,用于深度学习中的神经网络。SwiGLU的名称源自其特性,即它是一个可调节的、灵活的GLU变体。
2024-05-16 16:26:27
1724
原创 【数据结构】链表
这是最基本的方法,逐个创建链表节点,并通过指针连接它们。这种方法可以灵活地控制每个节点的值和连接关系。:可以使用循环来简化逐个节点创建的过程,特别是在已知节点值的情况下,循环遍历值数组来创建链表节点。:头插法是一种创建链表的方法,在遍历元素的同时,将新节点插入到链表头部。:尾插法是一种创建链表的方法,在遍历元素的同时,将新节点插入到链表尾部。
2024-04-18 16:17:36
292
1
原创 【数据结构与算法笔试】途家1105秋招笔试
你作为一个数据工程师,正在为数据仓库设计一个工具,该工具的主要功能是从给定的 SQL 查询语句中解析出所涉及的所有表名。你的任务是编写一个程序,从给定的 SQL 查询语句中提取所有不同的表名,并按字母顺序返回。在真实世界的应用中,SQL解析会更复杂,涉及到子查询、内嵌的SELECT语句等,这种情况下可能需要更复杂的解析器,如ANTLR等来处理。例如,对于坐标(2,5), x 的二进制表示为010,而 y 的二进制表示为101,交替编码的结果为011001。:这是对可能存在的别名的匹配,这一部分是可选的。
2023-11-05 17:11:11
389
原创 【数据结构与算法笔试】京东0928秋招笔试
问题描述:小红拿到了一个矩阵,初始有一些格子被染成了黑色。现在小红希望把最多k个未被染成黑色的格子染成红色,具体的计分方式为是:如果一个红色格子下方相邻的格子也是红色,那么这个红色格子可以得1分。提示:单个轴对称的字母有"ilmnouvwx";一对相互轴对称的字母有"pq"、“bd”例如,bod、pwq、ovo等字符串是轴对称的,而ntn不是轴对称的字符串。问题描述:小红定义一个字符串是轴对称的,当且仅当该字符串反转后和原串相同。显然,一共有两个合法的解,你需要从小到大输出这两个解的圆的半径。
2023-10-24 23:50:59
464
原创 【数据结构与算法笔试】携程1024秋招笔试
游游拿到了一个整数。她希望截取其中的一段,使得这一段代表的整数是72的倍数。游游想知道,共有多少种不同的截取方案?已知游游准备选择其中的个方案,使得总期待值尽可能高。你能帮游游求出最大的期待值之和吗?她每年会选出 n 个备选的旅游方案,每个方案的目的地为一个城市。如果在这一年中第一次选择某城市,那么该方案的期待值会翻倍。现在给出每个方案的目的城市以及游游对该方案的期待值。截取的方案必须是一个合法的整数,即不允许出现前导零。请你输出最终生成的字符串。
2023-10-24 23:38:04
211
基于SSM架构的共享云盘系统
2022-09-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人