大模型外挂知识库优化-大模型辅助向量召回

大模型外挂知识库优化——如何利用大模型辅助召回 大模型外挂知识库优化旨在通过利用大模型辅助召回,提高文档召回和模型回答的质量。HYDE策略通过生成假答案并结合用户问题进行向量召回,增强召回效果,但在微调过的向量化模型上效果不佳。FLARE策略提出主动多次召回,通过设计prompt让模型在需要时自动触发召回,解决了传统一次召回的不足。策略1通过增加生成主动召回标识的概率来促进召回,策略2则基于生成词的概率进行召回,提高了召回的准确性和效率。总体而言,这些策略通过优化召回过程,显著提升了大模型外挂知识库的性能和回答质量。 阅读详情

写在前面

大模型时代,通常采用向量召回的方式从文档库里召回和用户问题相关的文档片段,输入到LLM中来增强模型回答质量。

但是很多时候,用户的问题是十分口语化的,描述的也比较模糊,这样会影响向量召回的质量,进而影响模型回答效果。今天给大家带来一篇来自战士金大佬(@知乎战士金)的博文-大模型辅助向量召回。接下来分享两篇通过大模型的能力增强召回效果的文章,这两篇文章的内容都已经加入了langchain的标准组件,易用性还是比较好的,但是都有一些特定的使用场景。
在这里插入图片描述

HYDE

HYDE论文-Precise Zero-Shot Dense Retrieval without Relevance Labels,文章中强调了该文章主要适用于Zero-Shot场景。Zero-Shot指的是模型没有见过某个场景(或者某个数据集)的数据,就应用于该场景,和用数据训练模型以及在语言模型上下文中加入示例相对应。Zero-Shot体现了模型的迁移能力,我猜大部分同学都是在zero shot场景上使用向量化模型的,比如从网上下载个向量化模型权重,直接在自己的业务场景上用。其实,如果自己的业务场景有数据,微调一下向量化模型,在对应业务场景下召回率能提升不少。

既然论文题目强调了zero-shot,论文看的比较多的同学一定能马上反应过来,是不是在非zero shot(比如微调向量化模型)的场景下这方法效果就很一般呢?文章作者也给出了实验结果,该方法在结合微调过的向量化模型时,效果就没那么好了,非常依赖打辅助的LLM的能力。如果您有微调向量化模型的能力,这部分就可以跳过了。再强调一下,这篇文章是篇纯讨论召回的文章,最后的衡量指标也是nDCG和召回率这些指标,使用LLM单纯是为了提高召回效果的。

langchain链接:https://python.langchain.com/docs/use_cases/question_answering/how_to/hyde

论文思路非常简单:

  • Step1:用LLM根据用户query生成k个“假答案”。(大模型生成答案采用sample模式,保证生成的k个答案不一样,不懂LLM生成答案原理的同学可以看我这篇文章。此时的回答内容很可能是存在知识性错误,因为如果能回答正确,那就不需要召回补充额外知识了对吧。不过不要紧,我们知识想通过大模型去理解用户的问题,生成一些“看起来”还不错的假答案)
  • Step2:利用向量化模型,将生成的k的假答案和用户的query变成向量。
  • Step3:根据如下公式,将k+1个向量取平均:其中dk为第k个生成的答案,q为用户问题,f为向量化操作。图片
  • Step4:利用融合向量v从文档库中召回答案。融合向量中既有用户问题的信息,也有想要答案的模式信息,可以增强召回效果。

接下来我们从论文中挑一个比较重要的实验结果进行讨论。测试集为TREC DL19/20数据集,向量化模型使用的是Contriever模型,原始的该模型并未在TREC DL19/20数据集上训练过。模型有上标FT指的是向量化模型在TREC DL相关的数据集上微调过的。黄框标出来的是未使用hyde技术的baseline结果。绿框标出来的是未微调的向量化模型使用hyde技术的实验结果。红框标出来的是微调过的向量化模型使用hyde技术的实验结果。图片实验指标为NDCG@10,可以发现,对于没有微调过的向量户化模型(zero shot场景),hyde还是非常有用的,并且随着使用的LLM模型的增大,效果不断变好(因为LLM的回答质量提高了)。非常有意思的一点是是对于微调过的向量化模型,如果使用比较小的LLM生成假答案(小于52B参数量),hdye技术甚至会带来负面影响。

因为领域微调过的向量化模型性能已经不错了,NDCG@10指标能达到60多,LLM生成的假答案的知识性错误带来的负面影响大于回答模式信息带来的正面影响。所以向量化模型模型还是能微调就微调吧。

FLARE

和上一篇文章相比,FLARE论文比较新一点,评估的指标是直接看最后LLM的回答效果的,而非是向第一篇文章那样只讨论召回准确率。这篇文章涉及到针对同一个问题的多次召回,因此比较适合长文本回答。如果您所面对的场景大部分问题用一两句话就能回答,那收益就不是太大了。

langchain链接:https://python.langchain.com/docs/use_cases/question_answering/how_to/flare

对于大模型外挂知识库,大家通常的做法是根据用户query一次召回文档片段,让模型生成答案。只进行一次文档召回在长文本生成的场景下效果往往不好,生成的文本过长,更有可能扩展出和query相关性较弱的内容,如果模型没有这部分知识,容易产生模型幻觉问题。一种解决思路是随着文本生成,多次从向量库中召回内容。

有三种常用的多次召回策略:

  • a. 每生成固定的n个token就召回一次。
  • b. 每生成一个完整的句子就召回一次。
  • c. 将用户query一步步分解为子问题,需要解答当前子问题时候,就召回一次。

已有的多次召回方案比较被动,召回文档的目的是为了得到模型不知道的信息,a、b策略并不能保证不需要召回的时候不召回,需要召回的时候触发召回。c.方案需要设计特定的prompt工程,限制了其通用性。作者在本文里提出了两种更主动的多次召回策略,让模型自己决定啥时候触发召回操作。

策略1

通过设计prompt以及提供示例的方式,让模型知道当遇到需要查询知识的时候,提出问题,并按照格式输出,和toolformer的模式类似。提出问题的格式为[Serch(“模型自动提出的问题”)](称其为主动召回标识)。利用模型生成的问题去召回答案。召回出答案后,将答案放到用户query的前边,然后去掉主动召回标识之后,继续生成。当下一次生成主动召回标识之后,将上一次召回出来的内容从prompt中去掉。下图展示了生成拜登相关答案时,触发多次召回的例子,分别面对拜登在哪上学和获得了什么学位的知识点上进行了主动召回标识的生成。图片该方法也存在一些缺陷:

  • 1.LLM不愿意生成主动召回标识。解决方法:对"[“对应的logit乘2,增加生成”[“的概率,”["为主动召回标识的第一个字,进而促进主动召回标识的生成。
  • 2.过于频繁的主动召回可能会影响生成质量。解决方法:在刚生成一次主动召回标识、得到召回后的文档、去掉主动召回标识之后,接下来生成的几个token禁止生成"["。
  • 3.不微调该方案不太可靠,很难通过few shot的方式让模型生成这种输出模式。

策略2

策略1存在的第3点缺陷比较知名。因此作者提出了另外一个策略。该策略基于一个假设:模型生成的词对应该的概率能够表现生成内容的置信度。(传统的chatgpt接口是用不了策略2的,因为得不到生成每个词的概率。)

分为4个步骤:

  • Step0:根据用户的query,进行第一次召回,让模型生成答案。
  • Step1:之后,每生成64个token,用NLTK工具包从64个token里边找到第一个完整句子,当作“假答案”,扔掉多余的token。(和第一篇文章思想一样,利用LLM生成符合回答模式的“假答案”)
  • Step2:如果“假答案”里有任意一个token对应的概率,低于某一阈值,那么就利用这个句子进行向量召回。触发召回的“假答案”很可能包含事实性错误,降低召回准确率。设计了两种方法解决这个问题。方法1:将“假答案”中生成概率低于某一阈值的token扔掉(低概率的token很有可能存在错误信息),然后再进行向量召回。方法2:利用大模型能力,对“假答案”中置信度低的内容进行提问,生成一个问题,用生成的问题进行向量召回。
  • Step3:利用召回出来的文本,重新生成新的“真答案”,然后进行下一个句子的生成。

依然针对拜登的问题,下图给出了例子。图片接下来介绍一下实验结果。先声明一下,这篇文章用的召回器(向量化模型)是BM25,2009年被提出,基于统计学的原理,属于一种词袋模型,效果一般。笔者认为,如果用一些效果更好的基于神经网络的召回器,本文提出的方法提升就没那么大了。

召回器榜单:
中文:https://github.com/FlagOpen/FlagEmbedding/tree/master/C_MTEB
英文:MTEB Leaderboard - a Hugging Face Space by mteb

多次召回方案在更加开放的任务类型上提升比较小。如果是召回并回答一些模型不知道的垂类知识,FLARE效果提升应该是还不错的。图片作者证明了用生成”假答案“进行召回(Next)效果比用前一句进行召回效果更好(印证了HYDE观点)。图片当一个句子里生成的所有单词的概率都大于一个阈值t时,才不触发召回文档。当t=0%时,不触发召回文档;t=100%时,每次都触发召回。下图展示了不同的t的情况下LLM回答效果。可以发现t过大或者过小都不是最好的。总体上来看t=50%比较好。图片

总结

分享的这两篇文章都需要多次调用LLM,来增强召回,虽然在一些场景下比较有效,不过开销感觉有点太大了。其实最简单有效的提高召回效果的方式就是在自己业务的数据集上微调一下向量化模型。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
  • …

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】
20-大模型外挂知识库优化——负样本样本挖掘篇 负样本样本挖掘在大模型外挂知识库优化中至关重要。通过构建高质量的负例,可以显著提升检索模型的性能。本文介绍了多种负样本构建方法,包括随机采样、Top-K负例采样、困惑负样本采样、对比学习微调、基于批内负采样的对比学习、相同文章采样以及LLM辅助生成软标签及蒸馏。每种方法都有其优缺点和适用场景。通过这些方法,可以有效提高模型对负例的区分能力,从而提升整体检索效果。 阅读详情

相关推荐

大模型RAG的召回模式

模式描述特点应用场景稀疏召回关键词匹配快速、精准但语义弱传统检索稠密召回向量相似度语义强、可扩展QA/RAG混合召回稀疏+稠密提升Recall覆盖通用RAG多模态召回图文检索等支持多模态输入图文问答生成式召回LLM生成检索线索灵活、可控指令召回LLM控制检索流程可解释、复杂推理多跳QA/Agent。

JustinMars的博客 959

一文读懂大模型召回机制和chunk

本文系统介绍了大模型召回机制及相关技术要点。主要内容包括: 召回定义与应用:在RAG架构中通过向量检索从知识库获取相关文本块(chunk)以补充模型知识,应用于问答、语义搜索等场景; 关键技术要素:涵盖Embedding模型、chunk切分策略(100-500 tokens)、向量数据库(FAISS等)及评估指标(Recall@K); 上下文窗口对比:列举主流模型(如GPT-4达32K、Gemini 1.5Pro支持2M tokens)的处理能力; 优化方法:采用混合召回策略、滑动窗口切分及高质量Embed

何哥的博客 4670

大模型中的召回率是什么?

text{召回率} = \frac{\text{模型检索到的相关结果数量}}{\text{数据集中所有相关结果的总数量}}是衡量模型从候选集中找出所有相关结果能力的关键指标。在大模型(如LLM)及相关应用(如RAG、推荐系统)中,最终目标:在可接受的精确率损失下,最大化召回关键信息。

qq_36929638的博客 1741

大模型召回重排

大模型重排,简单来说,就是在初步召回结果的基础上,利用大型深度学习模型对结果进行重新排序和优化。它的目的是根据特定的评估指标,将最符合用户需求、最有可能被用户点击或选择的结果排在前面,提高结果的准确性和用户满意度。大模型召回就是利用大型深度学习模型的强大能力,通过学习和理解数据的内在规律和特征,来快速定位到相关的信息。它可以帮助我们在海量的数据中迅速找到我们需要的内容,提高召回效率和准确率。在大数据和人工智能的时代,我们有了海量的数据和信息,如何从中快速准确地找到我们想要的内容,就成了一个重要的问题。

tqs_123456的博客 2226

4. 如何减少大模型幻觉?⸺大模型外挂向量数据库的分析(知识延伸版)

语言模型(LLM)有两个突出能力:一个是自然语言的理解和生成能力🗣️,另一个是逻辑推理能力🧠。然而,大模型也存在短板,比如大模型会产生幻觉:即大模型的输出内容,与输入内容或现实不相符😵,也就是“大模型在绘声绘色地胡说八道”🎭。不同的应用场景,对大模型幻觉的容忍度不同⚖️。比如,在要求严谨和精确的领域📊,大模型幻觉就是个必解的问题❗

qq_25438419的博客 2026

双斜率积分ADC:高精度测量中的经典选择与TC530/TC534实战指南

模数转换器(ADC)是连接模拟世界与数字系统的关键桥梁,其核心任务是将连续的模拟信号转换为离散的数字量。在众多ADC类型中,双斜率积分ADC以其独特的原理脱颖而出,它通过积分与反积分的线性过程,用时间换取精度,实现了对噪声的卓越抑制和极高的线性度。这种技术价值使其在对抗工频干扰、追求长期稳定性的场景中无可替代,尤其适用于精密测量仪表和工业传感器信号采集。本文聚焦于双斜率积分ADC的经典代表TC530与TC534,深入剖析其工作原理、关键参数如积分电阻、积分电容的选择,并提供从硬件电路设计到软件驱动的完整实战

weixin_30847063的博客 359

基于开源大模型快速构建本地知识库应用

人工智能(Artificial Intelligence,AI)技术自20世纪50年代诞生以来,已经成为一门引领未来的综合性高技术学科。它在多个领域大放异彩,如大数据分析、自动驾驶、智慧金融和智能机器人等。其发展历程经历了初级期、发展期、低谷期、进步期和繁荣期。艾伦·图灵的图灵测试为人工智能的定义奠定了基础。在初级期和发展期,人工智能技术初步发展,移动机器人Shakey和聊天机器人Eliza相继诞生。在低谷期,人工智能遭遇发展瓶颈,受限于计算机的内存和处理速度,进展缓慢。

2401_85343303的博客 2400

RAG 外挂知识库

RAG介绍

sunnyrain1的博客 529

从零构建:openEuler WSL下的ARM交叉编译工具链自动化部署方案

本文详细介绍了在openEuler WSL环境下使用Ansible自动化部署ARM交叉编译工具链的方案。通过编写Ansible角色和Playbook,实现从基础环境配置到工具链安装、环境变量设置的一键部署,大幅提升嵌入式开发效率。方案支持多种ARM架构,并扩展了QEMU仿真、VS Code远程开发等实用功能,是嵌入式开发者的高效解决方案。

h3i4j的博客 382

MIMIC数据库基本信息分析

一、MIMIC数据库中26张表介绍 数据库中一共有26张表,记录患者入院的各种信息,每张表的介绍如下所示。 表格名 信息 admission 患者基本信息,比如性别、种族、语言、宗教、婚姻、入院和出院时间、死亡时间等 callout 提供病人准备从ICU转出或者已经从ICU转出时相关信息 caregivers 记录医护人员信息(ID、类型、附加...

m0_37520426的博客 1万+

基于开源大模型从零到一快速构建本地知识库应用

作为新一代人工智能产业的核心动力,AI大模型广泛应用于各行各业,打开了迈向通用人工智能的大门。本文通过大模型相关技术背景、构建需求、实现原理、模型选型及工程实践等方面介绍了如何基于开源大模型快速构建本地知识库应用。通过分析大模型应用的存在的问题,提出并详细描述了知识库构建思路及RAG技术路线应用的解决方法,最后,基于LangChain-Chatchat工程实现,为快速构建本地知识库应用提供了一种有效的解决方案。

大模型教程的博客 1507

PyBioMed学习

PyProtein。

weixin_63016274的博客 1401

本地知识库构建攻略:利用开源大模型快速实现,非常详细收藏这一篇就够了

人工智能(Artificial Intelligence,AI)技术自20世纪50年代诞生以来,已经成为一门引领未来的综合性高技术学科。它在多个领域大放异彩,如大数据分析、自动驾驶、智慧金融和智能机器人等。其发展历程经历了初级期、发展期、低谷期、进步期和繁荣期。艾伦·图灵的图灵测试为人工智能的定义奠定了基础。在初级期和发展期,人工智能技术初步发展,移动机器人Shakey和聊天机器人Eliza相继诞生。在低谷期,人工智能遭遇发展瓶颈,受限于计算机的内存和处理速度,进展缓慢。

2401_84495872的博客 2982

美团mtgsig 1.2算法分析

mtgsig1.2的一些算法总结

记录一些web逆向的过程 3502

QT+QGIS跨平台编译(基于Qt,采用一套代码、一套框架,完成QGIS第三方库、核心库、应用程序的跨平台编译)

QT+QGIS跨平台编译。 基于Qt,采用一套代码、一套框架,完成QGIS第三方库、核心库、应用程序的跨平台编译。

LuckyHanMo的博客 4378

大模型面试:LLM+向量库的文档对话系统

将用户知识库内容经过 embedding 存入向量知识库,然后用户每一次提问也会经过 embedding,利用向量相关性算法(例如余弦算法)找到最匹配的几个知识库片段,将这些知识库片段作为上下文,与用户问题一起作为 prompt 提交给 LLM 回答。: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。思路:构建几十万量级的数据,然后利用这些数据对大模型进行微调,以将额外知识注入大模型?

python12345678_的博客 1460

RandLA-Net Tensorrt 推理 c++

RandLA-Net 实现 Tensorrt 部署.

J。 1109

了解大模型 RAG :大模型外挂知识库 (检索增强技术)

了解大模型 RAG (Retrieval-Augmented Generation):大模型外挂知识库 (检索增强技术)为了弥补通用的预训练大模型在某些专业领域的短板、或者特别强化大模型在某个细分场景下的能力,我们使用 RAG 外挂知识库来增强大模型的能力检索增强生成(RAG,Retrieval-Augmented Generation)是一种新型AI模型,集检索和生成于一体。

xiangxueerfei的博客 1238

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

快速构建本地知识库:基于开源大模型的应用指南,非常详细收藏这一篇就够了!

人工智能(Artificial Intelligence,AI)技术自20世纪50年代诞生以来,已经成为一门引领未来的综合性高技术学科。它在多个领域大放异彩,如大数据分析、自动驾驶、智慧金融和智能机器人等。其发展历程经历了初级期、发展期、低谷期、进步期和繁荣期。艾伦·图灵的图灵测试为人工智能的定义奠定了基础。在初级期和发展期,人工智能技术初步发展,移动机器人Shakey和聊天机器人Eliza相继诞生。在低谷期,人工智能遭遇发展瓶颈,受限于计算机的内存和处理速度,进展缓慢。

m0_65555479的博客 1436

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

AI原生与外挂的区别:开源知识库的优势及优化方向

AI开源原生开源知识库,以AGPL‑3.0协议开源面向技术团队、产品部门、客服体系与研发社区,提供文档全生命周期管理、AI辅助创作、语义检索、智能问答及第三方系统集成能力,可快速落地为产品手册、技术文档库、内部FAQ、对外帮助中心等场景。当团队面临文档分散、检索低效、重复答疑、合规敏感等问题时,这类开源知识库系统可在可控成本下实现知识资产化、服务化、智能化,形成可量化的效能与体验收益。,同时保持开源、轻量化、私有化、易集成的工程特性,在技术文档、内部知识中台、对外帮助中心等场景具备清晰优势。

Are_You_Okkk_的博客 440
上一篇: LLMs 基础知识 | BERT 模型族
下一篇: 大模型面试:LLM+向量库的文档对话系统
AI大模型_学习君
博客等级 码龄3年 6137粉丝 551原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值