NoteLLM: 大语言模型在小红书推荐系统的落地应用

华为 | 大模型在推荐系统中的探索与应用 根据前面的介绍,我们可以了解到当前的推荐系统,特别是在电影或电商等领域,往往是一个相对封闭的系统。利用大模型的广泛知识和强大逻辑推理能力,推荐系统将向生成式方向发展,不仅生成推荐结果,还涉及中间态的行为,如特征生成、推理过程及新流程的拆解,为用户提供更加个性化和全面的推荐体验。来自华为诺亚方舟实验室的王奕超老师今天给我们带来了关于大语言模型在推荐系统中的探索与应用的分享,将从数据、模型和流程三个层面展开,介绍华为在推荐系统领域的两个重要项目,并回答关于用户推理知识构造、特征交叉和在线服务流程的具体问题。 阅读详情
AI摘要

本文介绍了一种名为NoteLLM的方法,该方法利用大语言模型生成更高质量的文本embedding,以解决推荐系统中的物品冷启动问题。通过生成式对比学习和协同监督微调两个预训练任务,NoteLLM在离线和在线实验中均取得了显著的效果提升。

今天分享一篇小红书今年3月的论文,介绍了大语言模型在小红书笔记推荐场景下的落地应用,主要是围绕如何利用LLM的表征能力来生成更适用于i2i召回的文本embedding,思路简单,落地也容易,个人觉得实践价值非常高,值得学习。

图片

  • NoteLLM: A Retrievable Large Language Model for Note Recommendation
  • https://arxiv.org/abs/2403.01744

背景

为了解决推荐中的物品冷启动问题,在召回阶段中往往会增加一路使用 内容多模态表征的i2i召回 ,这路召回由于只使用了纯内容的特征,和老物品便可以公平比较,不会产生因为新物品后验行为少而导致无法被召回的问题。

现有的多模态i2i召回方法在文本侧一般都是用一个BERT经过预训练后生成embedding然后基于embedding的相似度来进行召回,但是这样可能也会存在一些问题:

  1. BERT表征能力不足 。相较于BERT,使用参数量更大的LLM来生成embedding可能可以学习到一些更为长尾的信息,同时仅使用Bert生成的embedding只能代表文本的语义信息,和下游推荐任务的目标存在一定的不一致;
  2. 标签类别信息利用不够充分 。一篇图文笔记的标签和类别往往代表他的中心思想,对于确定两个笔记是否相关至关重要,但现有的Bert方法只是将标签和类别视为内容的一个组成部分(实际上BERT做预训练时除了MLM任务应该也会有标题预测标签/类别这种任务,这个论述感觉站不住脚)。而文章发现,使用笔记内容生成标签和类别的过程和生成笔记的embedding十分类似,都是讲笔记的关键信息压缩成有限的内容,因此引入一个生成标签和类别的任务可能会提升最终embedding的质量。

因此,文章提出了一种多任务学习的方法,称为 NoteLLM, 使用Llama 2作为backbone,旨在生成更适用于推荐任务的文本embedding 。

具体来说,首先为每个样本构造一个统一的笔记压缩Prompt,然后使用两个预训练任务来生成更好的文本embedding。

  • 一个任务称为 生成式对比学习 (Generative-Contrastive Learning),该任务会将笔记的内容压缩到一个特殊的token中,使用该token生成的向量便可以作为笔记的文本表征。这个任务使用了推荐中的协同过滤信号作为标签来进行对比学习,首先会统计所有笔记对的共现分数,然后使用共现分数高的笔记对视为相关性高的笔记,作为正样本,batch内负样本,用对比学习的方式进行训练,由于引入了协同过滤的信号,所以最终生成的embedding可以更适用于下游推荐任务。
  • 另外一个任务是用笔记标题和内容来生成笔记的标签和类别,称为 协同监督微调 (Generative-Contrastive Learning),这个任务不仅可以生成标签和类别,同时,由于它和生成embedding的过程类似,都是可以提取笔记文本中的关键信息,因此,引入该任务也可以增强第一个任务生成的笔记embedding。

方法介绍

方法分为三个部分,一个输入的prompt构建和训练时用到的两个预训练任务:

  • 笔记压缩prompt构建
  • 生成式对比学习(Generative-Contrastive Learning)
  • 协同监督微调(Collaborative Supervised Fine-Tuning)

笔记压缩prompt构建用来定义模型在训练时的输入,生成式对比学习和协同监督微调分别对应两个预训练任务,前者引入了推荐中的协同过滤信号作为标签进行对比学习来训练更好的文本表征,后者其实就是根据笔记内容来生成对应的标签和类别。

具体流程如下,首先在离线训练阶段,首先根据用户行为构建出很多的相关笔记对,作为训练样本,然后使用LLaMA 2作为backbone进行训练,在训练时一方面使用相关笔记对进行对比学习,另一方面还加入了一个标题和标签生成任务来提高前者embedding生成的质量,而在线则使用模型生成的笔记embedding做ANN召回相关的笔记,同时也可以生成笔记的标签和类别来辅助其他任务。

图片

笔记压缩prompt

这里在构建prompt的时候同时考虑到了两个预训练任务,一方面为了能够借助将笔记的文本内容压缩到一个token中,再使用这个token映射的向量来进行生成式对比学习,也作为最终输出的文本表征,另一方面也想通过标签和类别生成任务,用来加强前者文本表征的能力,具体的prompt模板如下:

Prompt: [BOS] The compression word is:“[EMB]”. [EOS]

[BOS]代表句子开头,[EOS]代表句子结尾,[EMB]则代表最终要输出文本表征所对应的那个token,最终会将这个token对应的隐向量经过一个全连接层映射后得到最终的表征向量。

同时,针对类别生成和标签生成使用了不同的prompt,但是模板都是同一个,具体来说,如果是做类别生成,那么prompt就是这样的:

: Extract the note information in json format, compress it into one word for recommendation, and generate the category of the note. : {’title’: , ’topic’: , ’content’: }. : The category is: :

如果是用来做标签生成,那么prompt就是这样的:

: Extract the note information in json format, compress it into one word for recommendation, and generate topics of the note. : {’title’: , ’content’: }. : The topics are: : topics from

由于标签有很多,大模型可以不断生成,所以这里从原始标签里随机采样j个标签作为生成的内容,并且在prompt里规定了只能生成j个标签。

在prompt构建输入完成后,便可以把[EMB]这个特殊token最终输出的隐向量当成笔记的文本表征,同时也能够根据笔记的内容生成对应的标签和类别。

生成式对比学习(Generative-Contrastive Learning)

虽然大模型通过SFT和RLHF预训练之后能够表征的语义信息是非常丰富的,但是直接用在下游推荐任务中却不一定好,主要是因为大模型的预训练任务是为了获取语义信息,而下游推荐的目标却是为了点击率,两个目标存在差距,所以这个生成式对比学习就是为了在大模型的预训练中引入推荐的协同过滤信号,从而使得生成的embedding更适用于下游的推荐任务。

具体来说,首先统计一周时间窗口内每个用户点击笔记A后再点击笔记B的次数,然后算出一个共现分数,作为协同过滤的信号,计算两篇笔记共现分数的公式如下:

这里 U 是用户的个数, 代表用户的点击次数,实际上就是对活跃用户进行了降权,防止某些高活用户什么笔记都点导致计算的共现分数不准确。

在计算得到所有笔记两两之间的共现分后,然后再卡阈值,将低于或高于某个阈值的笔记进行过滤,最后对于每个笔记,都会得到和其相关的笔记集合,再两两构建笔记对作为输入的正样本。

进一步,对于每个笔记,都使用这个特殊token的隐向量经过全连接层映射得到的向量作为文本表征向量 ,便可以采用对比学习的方式来进行学习,正样本就是构建好的相关笔记对,对应向量记作 ,负样本采用batch内负采样,对应向量记作 ,损失函数使用对比学习的Info-NCE:

相似度计算采用余弦相似度, sim(a,b)=a^\top b/(|a||b|)

通过这种方式进行训练,便可以使得LLM学到一些用户行为相关的信息,从而生成更好的文本表征服务于下游推荐任务。

顺便说一下,这个思路其实和小红书之前发的另一篇论文提到的CB2CF其实是一脉相承的,只不过另外一篇同时用了文本和图像特征,损失函数用的交叉熵。

图片

协同监督微调(Collaborative Supervised Fine-Tuning)

这个任务实际上就是一个做标签/类别生成任务的SFT,加了协同两个字可能是因为要跟前面引入了协同过滤信号的GCL对应起来,为什么要加这样一个任务呢? 文章提到了两个原因:

  1. 只用LLM生成句子embedding有点像大炮打蚊子的感觉,没有充分发挥LLM强大的生成能力。这边猜测应该是因为生成的标签和类别还可以用于一些其他场景,比如当一些笔记缺乏标签,或者类别不正确是可以使用LLM为其补充信息。
  2. 可以提高上一步生成式对比学习生成的embedding的质量。这是由于生成标签/类别和生成笔记embedding一样,都是旨在总结整个笔记内容。所以加了这个预训练任务可能可以提高生成最终生成的embedding的质量

具体来说,在CSFT里面要同时做类别和标签预测,文章提到为了提高训练效率并防止遗忘问题,会从每个批次中选择 r 个笔记用于标签生成任务,而剩余的笔记则分配用于类别生成任务。CSFT的损失函数如下,其实就是把输出部分的token计算下loss:

图片

最终模型的loss由两项加起来,并且用 作为超参控制两个loss的权重:

实验结果

离线实验

离线实验主要是和线上的SentenceBERT基线以及其他几种用大模型生成文本嵌入的方法对比,用recall@k做评价指标,效果都要更好,结论就是:NoteLLM>=其他方法微调的LLM>>BERT微调>>LLM zero-shot

图片

同时,通过对不同曝光水平的笔记对指标进行了拆分,发现NoteLLM在不同曝光水平的笔记上提升都较为一致,另外可以发现各个方法在低曝光笔记上的召回率都要远高于高曝光的,说明基于内容embedding的方法能够更有效地召回冷启动物品。

图片

消融实验

文章这边也做了消融实验,分别把CSFT任务以及GCL任务去掉,以及在GCL内部对标签类别生成取不同的数据比例,结果发现就是两部分缺一不可,这里可以发现起到最关键作用的是GCL任务,类别预测和标签生成的任务好像对整体效果是可有可无的感觉,看起来只用协同过滤的目标来做对比学习也能效果很好。

图片

在线实验

文章说做了一周的ab实验,跟之前的SentenceBERT基线相比,NoteLLM的点击率提高了16.20%,评论数量增加了1.10%,平均每周发布者数量(WAP)增加了0.41%。结果表明将LLM引入i2i推荐任务可以提高推荐性能和用户体验。此外,还观察到单日对新笔记的评论数量显着增加了3.58%。这表明LLM的引入有利于冷启动。NoteLLM最终推全上线。

总结

尽管现在LLM用来做推荐的论文层出不穷,但是真正能够落地的工作能有几个呢?目前大模型在像搜索推荐这种业务算法中最好落地的还是用来打标以及为下游任务生成可用的embedding或者其他特征,这篇文章就为后者提供了一个非常好的值得参考的范例,不仅能够生成更好的文本表征服务于下游推荐任务,也可以生成一些标签和类别可以用来辅助一些其他场景的任务,整体落地还是非常简单的

如何学习大模型 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%免费】
ReLLa: Retrieval-enhanced Large Language Models LLM在推荐领域中无法从长用户行为序列的文本上提取有用信息,即使文本长度远远没有达到LLM的文本长度限制。 阅读详情

相关推荐

Chat-REC、InstructRec(LLM大模型用于推荐系统)

虽然大型语言模型LLM已经证明了它们用于解决各种应用任务的巨大潜力,但它和推荐系统的结合点在哪? * 推荐系统旨在根据用户的偏好和行为向用户推荐项目。传统上,这些系统都依赖于用户数据,如点击流和购买历史等等。 * NLP在扩大推荐系统用户数据的范围方面是有价值的。比如NLP技术可以用于分析用户生成的内容,如评论和社交媒体帖子,以深入了解用户的偏好和兴趣,提高整体用户体验和参与度。

nakaizura 1万+

小红书独家:NoteLLM——智能笔记推荐与标签生成的革命性工具!

随着社交媒体平台如小红书和 Lemon8(字节) 的流行,用户生成内容(UGC)中的 Note 分享变得越来越普遍。这些平台鼓励用户分享产品评价、旅行博客和生活经历等,Note 推荐因此成为提升用户参与度的关键部分。现有的 Online 方法仅将 Note 输入基于 BERT 的模型以生成 Note Embedding 来评估相似性。然而,这些方法可能未能充分利用一些重要线索,例如话题标签(Hashtag)或类别(Category)。

2401_84204413的博客 2618

LLM应用实践: NoteBookLM初次使用

本文主要介绍了NoteBookLM的初次使用,对于提高学习效率,有质的飞升,而且目前处于试用阶段,请各位看官速速试用。

MENGERN的专栏 2728

小红书的AI推荐引擎进化论:从RAG到Graph RAG的技术与产品思考 | 附AI大模型常用和核心专业术语表(吐血整理!)

RAG 是基础框架,DeepSeek-OCR 加强输入端,Graph RAG 加强检索端。从产品经理的角度,这三种技术解决的问题是层级递进的:技术解决的问题优先级部署难度RAG如何快速找到相似内容🔴 必须⭐ 简单如何高效处理多模态内容🟡 重要⭐⭐ 中等Graph RAG如何理解内容的深层关系🟢 优化⭐⭐⭐ 复杂。

Python_0011的博客 1372

[EDA系列]二、Altium Designer异形封装实战:从CAD导入到PCB布局

本文详细介绍了在Altium Designer中实现异形封装的实战流程。通过五步核心操作,将CAD软件中的复杂二维轮廓精准导入并转换为可直接用于PCB布局的智能封装,解决了不规则形状铺铜的难题,特别适用于射频天线、传感器外壳等对机械尺寸有严苛要求的设计场景。

weixin_29194817的博客 144

RDMA学习笔记-IB五层网络协议和报文结构

Reference InfiniBand Architecture Specification Volume 1, Release 1.3 文章目录IBA 网络协议分层1.链路层1.1 LRH1.2 ICRC1.3 VCRC2.网络层(GRH)3.传输层3.1 BTH3.2 extended transport header4. 报文结构4.1 send request4.2 RDMA Write request4.3 RDMA Read request4.4 ACK4.5 Atomic operatio

u014114310的博客 9468

LEARN: LLM在快手电商广告推荐场景的应用

作者|Lukan整理|NewBeeNLP今天继续分享一篇大模型在推荐系统中的落地应用工作,是快手今年5月份发表的论文《Knowledge Adaptation from Large Language Model to Recommendation for Practical Industrial Application》。太长不看版这篇文章主要做了两个工作:工作1:使用冻结的LLM提取...

Kaiyuan_sjtu的博客 1889

智能体评测技术与实践:从评估维度到DeepEval实战指南

智能体评测技术与实践:从评估维度到DeepEval实战指南 本文系统探讨了AI智能体的评测体系与实践方法。首先从四个关键维度构建评估框架:基础能力(意图理解、知识完整性)、复杂任务(多轮对话、动态工作流)、可靠性(幻觉抑制、安全合规)以及工具效率(参数填充、多工具协同)。其次分析了主流评测工具,包括xBench的动态双轨评估、DeepEval的全链路监控等解决方案。最后详细介绍了DeepEval的实战应用,涵盖环境配置、测试用例构建、指标配置及CI/CD集成,展示了如何通过代码化评估实现智能体质量的持续提升

Linda的自动化测试之旅 3416

小红书NoteLLM-2 : 多模态大模型表征赋能推荐

现阶段, 大语言模型(LLM)由于其在自然语言理解上的突出表现&优势, 在文本表征任务上有很多应用, 但鲜有工作能利用LLM来辅助提升多模态表征任务。比如小红书的多模态I2I推荐召回场景就是一个多模态表征任务场景。将LLM应用于多模态I2I可以大致分成两种:一种最直接的方式是预训练多模态大语言模型(MLLMs)表征, 对应图中灰色箭头的流程, 但这需要依赖高质量&大规模的训练数据, 训练过程及训练成本都非常高, 业务上可能难以接受。

m0_59164304的博客 2706

Sparse4Dv3 代码复现

打包数据集的元信息和标签,并生成所需的.pkl文件。最后还输出了很多跟踪相关的东西...然后通过K-means生成锚点。编译可变形聚合CUDA算子。安装motmetrics。

m0_60857098的博客 4487

LLM 大模型学习必知必会系列(十一):大模型自动评估理论和实战以及大模型评估框架详解

LLM 大模型学习必知必会系列(十一):大模型自动评估理论和实战以及大模型评估框架详解

丨汀、的博客 3216

NoteLLM-2来袭:用LLM重塑推荐系统,比多模态大模型更高效!

小红书团队最新提出NoteLLM-2多模态推荐模型,突破传统推荐系统局限。该模型创新性地结合大语言模型和视觉编码器,采用"多模态上下文学习+延迟融合"机制,有效解决图像信息衰减问题。实验表明,该模型在召回率上提升2.47%,线上实测点击率增长8.08%,且训练成本更低、推理速度更快。NoteLLM-2为大模型在多模态推荐领域的应用提供了高效、低成本的解决方案,未来可扩展至视频等复杂模态场景。

2401_84204207的博客 1195

手把手教你学 MATLAB 实战训练(6.5):基础实战实例

MATLAB 是一款强大的数学软件,广泛应用于工程计算、信号处理、控制系统设计、图像处理等领域。学习 MATLAB 不仅可以提高你的编程技能,还能帮助你解决实际的数学和工程问题。下面我将通过几个实战训练实例来教你如何使用 MATLAB。

xiaoheshang_123的博客 366

推荐大模型系列-NoteLLM: A Retrievable Large Language Model for Note Recommendation(三)

本文提出NoteLLM,一个基于大语言模型的可检索笔记推荐系统。研究在小红书商品数据集上验证了模型有效性,采用MetaLLaMA2作为基础模型,通过笔记压缩提示、生成式对比学习(GCL)和协同监督微调(CSFT)三个核心组件实现I2I推荐和标签/类别生成任务。实验表明,NoteLLM在召回率指标上优于现有方法,对高低曝光笔记均有效,在线实验点击率提升16.2%。消融研究证实CSFT模块的关键作用,同时发现标签与类别生成任务存在权衡关系。模型已部署于小红书平台,有效提升推荐效果和用户体验。

flying_1314的博客 1201

COMSOL有限元仿真深度指南:连接薄结构与实体结构(I)

COMSOL有限元仿真深度指南:如何在结构力学仿真中连接薄结构与实体结构?

忘了面孔的Batou 1万+

6、云计算中的多核技术:架构、并行性与局限性

本博文深入探讨了云计算中多核技术的架构、并行性及其局限性。文章详细介绍了多核处理器的基础概念、并行硬件和软件的设计原理,并对硬件和软件并行性进行了分类和分析。同时,文章讨论了多核架构在实际应用中面临的挑战,如功率墙、内存墙和ILP墙等问题,并提出了应对策略。此外,还总结了多核技术在高性能计算、实时处理和云计算等领域的应用机遇。文章旨在帮助读者更好地理解多核技术的关键问题,并为未来的技术探索提供方向。

java5的博客 122

推荐大模型系列-NoteLLM: A Retrievable Large Language Model for Note Recommendation(二)

本文提出NoteLLM框架,用于同时处理图像推荐和标签/分类生成任务。该框架包含三个核心组件:1)笔记压缩提示构建,将笔记内容压缩为特殊标记;2)生成式对比学习(GCL),通过对比学习捕获笔记间的协同信号;3)协同监督微调(CSFT),结合语义和协同信息生成标签/分类。GCL利用用户行为数据构建相关笔记对,CSFT则联合优化标签生成和分类任务。实验表明,NoteLLM能有效整合语义和协同信息,在推荐和生成任务中表现优异。

flying_1314的博客 946

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

论文速读|NoteLLM: A Retrievable Large Language Model for Note Recommendation.WWW24

人们喜欢在在线社区中分享“笔记”,包括他们的经验。因此,推荐符合用户兴趣的笔记已成为一项至关重要的任务。现有的在线方法仅将笔记输入到基于BERT的模型中,以生成用于评估相似性的笔记嵌入。然而,它们可能没有充分利用一些重要的线索,例如主题标签或类别,它们代表了笔记的关键概念。事实上,学习生成主题标签/类别可以潜在地增强笔记嵌入,这两种方法都将关键笔记信息压缩到有限的内容中。此外,大型语言模型(LLM)在理解自然语言方面明显优于BERT。将LLM引入笔记推荐很有希望。

科研笔记 1966

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

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

当推荐系统遇见大模型

推荐系统的本质是在用户需求不明确的情况下,通过拟合历史用户行为数据,来预测未来用户的感兴趣信息的技术手段。

m0_59164520的博客 3531

深度学习工具包 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")

当"狂飙"的大模型撞上推荐系统

后台留言『交流』,加入NewBee讨论组导读随着以 ChatGPT 为代表的大模型技术的迅速发展,推荐系统正经历着一场革命性的变革。传统的推荐系统主要基于用户和物品的历史行为数据进行预测,大模型技术的出现,为推荐系统带来了更强的泛化能力和更高的效率,解决了传统推荐系统中的一些难题,如用户和物品数量的巨大规模、不可观测因素对推荐的影响等。同时,大模型推荐技术也带来了新的挑战,如模型的可解释性和隐私...

Kaiyuan_sjtu的博客 300

推荐大模型系列-NoteLLM: A Retrievable Large Language Model for Note Recommendation(一)

摘要: 本文提出NoteLLM框架,创新性地利用大语言模型(LLMs)解决社交媒体笔记推荐(I2I)问题。针对现有基于BERT的方法仅将标签/分类作为内容组成部分的局限,该框架通过多任务学习同时优化笔记推荐和标签/分类生成任务。核心创新包括:1)设计笔记压缩提示生成特殊标记作为嵌入;2)采用生成-对比学习识别相关笔记;3)通过协同监督微调生成标签/分类以增强嵌入质量。实验表明,该方案在小红书平台显著优于基线方法,为LLMs在I2I推荐中的应用提供了新思路。

flying_1314的博客 1293
上一篇: 如何实现大模型推理加速优化?路径有哪些?
下一篇: Transformer 能代替图神经网络吗?
AI大模型_学习君
博客等级 码龄3年 6137粉丝 551原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值