ChatGPT-RetrievalQA数据集解析:用合成数据训练检索模型的实践指南

news2026/5/10 6:14:02
1. 项目概述与核心问题最近在信息检索和自然语言处理社区里一个话题讨论得挺热既然像ChatGPT这样的大语言模型已经能生成相当不错的答案我们为什么还需要传统的检索模型更进一步ChatGPT生成的这些答案它们本身的质量和特性能不能反过来帮助我们训练更好的检索模型这听起来有点“用魔法打败魔法”或者“用AI训练AI”的味道。今天要聊的这个“ChatGPT-RetrievalQA-CIKM2023”项目就是阿姆斯特丹大学信息检索实验室IRLabUvA的团队针对这个问题交出的一份扎实的答卷。他们不是空谈理论而是实实在在地构建了一个大规模数据集并进行了系统的实验分析。简单来说这个项目的核心是构建并开源了一个专门用于问答检索模型训练和评估的数据集。这个数据集的独特之处在于它包含了同一批问题下由ChatGPT生成的答案和由真实人类专家撰写的答案。这使得研究者可以清晰地对比两种答案在信息检索任务中的表现差异并深入探究一个关键问题用ChatGPT生成的合成数据去训练检索模型其效果能否媲美甚至超越用人类标注数据训练出的模型这背后其实触及了当前AI应用的两个深层痛点。第一是可信度与可追溯性。ChatGPT虽然强大但它存在“幻觉”问题可能生成看似合理实则错误或没有依据的信息。在法律、医疗、科研等严肃领域一个无法追溯来源的答案是不可接受的。检索模型的优势在于它返回的是来自可信文档库的原文片段天然带有出处信息。第二是数据稀缺与成本。高质量、大规模的人工标注数据获取成本极高限制了检索模型的性能上限。如果ChatGPT生成的、成本相对低廉的合成数据能被有效用于训练无疑将极大推动检索技术的发展。这个项目将学术论文中的构想落地为可用的资源为社区提供了宝贵的实验平台。接下来我会带你深入拆解这个数据集的构成、设计思路并分享如何利用它进行实际的模型训练与评估其中会穿插很多从实践角度出发的细节和注意事项。2. 数据集深度解析结构与设计逻辑这个数据集的设计非常考究并非简单地将ChatGPT和人类的答案堆在一起。它严格遵循了信息检索领域特别是像MS MARCO这样的经典检索数据集的格式规范目的是让研究者能够无缝复用现有的工具链和训练脚本。理解它的结构是有效使用它的第一步。2.1 核心文件构成与关系数据集主要分为两大部分答案检索数据集和答案重排序数据集。我们先看核心的答案检索部分它由几个关键文件组成它们之间的关系可以用一个简单的信息流来理解问题Queries-检索系统- 从文档集合Collection中返回候选答案 - 通过相关性标注Qrels评估效果 - 利用训练三元组Triples训练模型。queries.tsv(查询/问题集)这是所有实验的起点。文件包含了24,322个唯一的问题Query每个问题有一个qid。这些问题来源于HC3数据集涵盖了多个领域。collection_h.tsv与collection_c.tsv(文档集合)这是两个独立的“答案库”。collection_h.tsv人类答案集合。包含58,546条答案每条答案有一个pid和对应的文本内容。注意问题数量24k少于答案数量58k这是因为很多问题有多个高质量的人类回答。collection_c.tsvChatGPT答案集合。包含26,882条答案。通常每个问题对应1-2条ChatGPT生成的答案。设计逻辑将两者分离是为了进行控制变量实验。你可以训练一个模型专门检索人类答案另一个专门检索ChatGPT答案或者进行跨集合的评估例如用ChatGPT数据训练的模型去检索人类答案从而精确衡量数据源的影响。qrels_*.tsv(相关性标注文件)这是评估检索效果的“标准答案”。文件指明了对于某个qid问题哪些pid答案是相关的通常标注为1。数据集细心地为人类H和ChatGPTC的答案集合分别提供了训练Train、验证Valid、测试Test集的Qrels文件。实操注意在评估时你必须使用与当前测试集合匹配的Qrels文件。例如如果你想评估模型在“人类答案测试集”上的表现就应该加载qrels_h_test.tsv。train_*_triples.tsv与valid_*_triples.tsv(训练三元组)这是用于训练排序模型如Cross-Encoder双塔模型的核心数据。格式是(查询, 正例答案, 负例答案)。对于每一个(查询, 正例答案)对项目作者随机采样了1000个负例答案。关键细节负例是随机采样的这意味着它属于“Easy Negative”。在实际研究中为了提升模型区分困难样本的能力我们通常会引入“Hard Negative”即与查询相关但不如正例相关的答案。这个数据集提供了基础负例你可以在此基础上进一步挖掘Hard Negative。文件变体除了包含原始文本的三元组文件体积巨大如train_h_triples.tsv达58GB还提供了*_qidpidtriples.tsv文件只包含(qid, 正例pid, 负例pid)。这种格式更节省空间但在训练时需要根据qid和pid去collection文件中查找对应的文本。2.2 答案重排序数据集解析重排序是检索系统中的一个关键阶段。通常第一阶段的检索器如BM25、DPR会召回上千篇相关文档然后由一个更精细但更耗时的重排序模型如BERT Cross-Encoder对这些文档进行精排。这个项目提供了top_1000_*.run文件它们正是第一阶段的检索结果。作者使用Elasticsearch的BM25算法对每个问题分别从人类答案集和ChatGPT答案集中检索出Top-1000的候选答案对于某些查询匹配到的文档可能不足1000个。文件的格式是标准的TREC run格式通常包含qidQ0pidrankscorerun_id。这个设计的高明之处在于它直接为研究者提供了重排序任务的“起跑线”。你不需要自己再去搭建检索系统获取初步结果可以直接在这些BM25的检索结果上应用你训练的BERT等重排序模型评估其将真正相关答案排到前列的能力。这极大地降低了实验的复杂度和复现门槛。2.3 数据集划分的科学性数据集被划分为训练集Train、验证集Validation和测试集Test。这种划分确保了模型评估的公正性训练集用于模型参数学习。验证集用于在训练过程中监控模型表现进行超参数调优和早停防止过拟合。测试集在模型最终确定后用于报告最终的、无偏的性能指标。测试集在训练和调参过程中是绝对不可见的。项目为ChatGPT和人类答案分别提供了独立的划分使得跨域评估Train on C, Test on H变得清晰可行。这是探究“合成数据训练有效性”这一核心问题的实验基础。3. 实操指南如何利用该数据集训练你的第一个检索模型理论讲得再多不如动手跑一遍。这里我将以训练一个基于Sentence-BERT的双塔检索模型为例展示如何使用这个数据集。我们选择在ChatGPT答案上训练然后在人类答案上测试直接验证项目的核心假设。3.1 环境准备与数据下载首先确保你的环境有足够的磁盘空间因为原始的三元组文件很大。我建议优先使用*_qidpidtriples.tsv这类文件以节省空间。# 创建一个新的conda环境可选 conda create -n retrievalqa python3.8 conda activate retrievalqa # 安装核心库 pip install torch transformers sentence-transformers pip install pandas tqdm接下来下载必要的最小数据集文件。我们以“训练用ChatGPT数据测试用人类数据”这个实验设置为例queries.tsv所有问题。collection_c.tsvChatGPT答案库用于训练。collection_h.tsv人类答案库用于测试。train_c_qidpidtriples.tsvChatGPT训练三元组qid, pid格式。qrels_h_test.tsv人类答案测试集标注用于最终评估。3.2 数据加载与预处理我们需要编写一个数据加载器将qid和pid映射回实际的文本。import pandas as pd import torch from torch.utils.data import Dataset, DataLoader class QADataset(Dataset): def __init__(self, queries_path, collection_path, triples_path): # 加载数据 self.queries pd.read_csv(queries_path, sep\t, headerNone, names[qid, query]) self.collection pd.read_csv(collection_path, sep\t, headerNone, names[pid, passage]) self.triples pd.read_csv(triples_path, sep\t, headerNone, names[qid, pos_pid, neg_pid]) # 建立快速查找字典 self.qid_to_query dict(zip(self.queries[qid], self.queries[query])) self.pid_to_passage dict(zip(self.collection[pid], self.collection[passage])) # 确保所有id都能找到对应文本可选清理步骤 self.triples self.triples[ self.triples[qid].isin(self.qid_to_query) self.triples[pos_pid].isin(self.pid_to_passage) self.triples[neg_pid].isin(self.pid_to_passage) ].reset_index(dropTrue) def __len__(self): return len(self.triples) def __getitem__(self, idx): row self.triples.iloc[idx] qid, pos_pid, neg_pid row[qid], row[pos_pid], row[neg_pid] query_text self.qid_to_query[qid] pos_text self.pid_to_passage[pos_pid] neg_text self.pid_to_passage[neg_pid] return query_text, pos_text, neg_text # 初始化数据集 train_dataset QADataset( queries_path./data/queries.tsv, collection_path./data/collection_c.tsv, # 使用ChatGPT集合 triples_path./data/train_c_qidpidtriples.tsv )注意原始三元组文件包含数千万条数据直接全部加载训练可能内存/显存不足。在实际操作中我们通常有两种策略一是对三元组进行下采样例如随机抽取5%或10%进行初步实验二是实现一个流式读取的数据加载器分批从磁盘读取。这里为了演示假设我们处理的是一个小样本。3.3 使用Sentence-BERT进行双塔模型训练Sentence-BERTSBERT是构建双塔检索模型的利器。它通过孪生网络结构分别编码查询和文档然后计算余弦相似度。from sentence_transformers import SentenceTransformer, losses, models from sentence_transformers.readers import InputExample from torch.utils.data import DataLoader # 1. 定义模型。这里使用预训练的BERT并在其上添加一个池化层。 word_embedding_model models.Transformer(bert-base-uncased) pooling_model models.Pooling(word_embedding_model.get_word_embedding_dimension()) model SentenceTransformer(modules[word_embedding_model, pooling_model]) # 2. 将数据集转换为SBERT需要的InputExample格式 train_examples [] for query, pos, neg in train_dataset: # 这里假设train_dataset是上面定义的实例 train_examples.append(InputExample(texts[query, pos, neg])) # 3. 定义数据加载器和损失函数 # MultipleNegativesRankingLoss 是训练双塔模型常用的损失它鼓励正例对的相似度高于同一批内所有负例对的相似度。 train_dataloader DataLoader(train_examples, shuffleTrue, batch_size16) train_loss losses.MultipleNegativesRankingLoss(model) # 4. 配置训练器并开始训练 # 通常我们会在验证集上评估模型这里省略了验证集的构建步骤。 model.fit( train_objectives[(train_dataloader, train_loss)], epochs1, # 对于完整数据可能需要3-5个epoch warmup_steps100, output_path./output/sbert_model_chatgpt_trained, show_progress_barTrue )3.4 模型评估与核心指标解读模型训练完成后我们需要在人类答案的测试集上评估其检索效果。这需要两步首先用模型为所有人类答案生成向量并建立索引通常使用FAISS然后对每个测试问题计算其查询向量与所有答案向量的相似度并进行排序。from sentence_transformers import util import numpy as np # 1. 加载测试集的人类答案库和问题 collection_h pd.read_csv(./data/collection_h.tsv, sep\t, headerNone, names[pid, passage]) queries pd.read_csv(./data/queries.tsv, sep\t, headerNone, names[qid, query]) qrels_test pd.read_csv(./data/qrels_h_test.tsv, sep\t, headerNone, names[qid, Q0, pid, relevance]) # 2. 为所有人类答案生成嵌入向量 corpus_embeddings model.encode(collection_h[passage].tolist(), convert_to_tensorTrue, show_progress_barTrue) # 3. 对每个测试集问题进行检索并计算指标 from trectools import TrecRun, TrecQrel, TrecEval # 首先我们需要构建一个TREC格式的run文件 run_data [] test_qids qrels_test[qid].unique() # 获取测试集所有问题ID for qid in test_qids[:100]: # 演示先评估前100个问题 query_text queries.loc[queries[qid]qid, query].iloc[0] query_embedding model.encode(query_text, convert_to_tensorTrue) # 计算相似度并排序 cos_scores util.cos_sim(query_embedding, corpus_embeddings)[0] top_results torch.topk(cos_scores, k1000) # 取Top-1000 for rank, (score, idx) in enumerate(zip(top_results.values, top_results.indices)): pid collection_h.iloc[idx.item()][pid] run_data.append(f{qid} Q0 {pid} {rank1} {score.item()} my_run) # 将结果写入文件 with open(./results/my_sbert.run, w) as f: f.write(\n.join(run_data)) # 4. 使用trectools或ir-measures库进行官方评估 # 这里需要加载 qrels_h_test.tsv 作为标准答案 # 计算 Recall10, Recall100, NDCG10, MAP 等指标核心指标解读Recallk在前k个返回结果中成功找到的相关答案占所有相关答案的比例。这衡量了检索的“查全”能力。例如Recall1000.8意味着80%的相关答案都在前100名内。NDCGk不仅考虑是否检索到还考虑相关答案的排序位置。越相关的答案排得越靠前得分越高。这是衡量排序质量的核心指标。MAP (Mean Average Precision)对所有查询的平均精度AP求平均综合反映了系统在不同召回率水平下的精度。在项目的初步分析中BM25在ChatGPT答案集上的各项指标如Recall1000接近0.9远高于在人类答案集上约0.52。这初步表明ChatGPT生成的答案在语言风格、词汇选择上可能更一致、更“规范”使得基于词频统计的BM25算法更容易匹配。而人类答案则更加多样、灵活有时甚至包含口语化或非直接相关的信息增加了检索难度。这也引出了下一个核心问题在这种“简单”的ChatGPT数据上训练的模型能否很好地泛化到“困难”的人类数据上4. 实验设计思路与避坑指南直接跑通代码只是第一步要做出有价值的研究关键在于实验设计。基于这个数据集你可以探索多个有趣的方向。4.1 核心实验范式域内评估Train on C, Test on C在ChatGPT答案上训练并在ChatGPT答案上测试。这是基线用于检验模型学习合成数据模式的能力。Train on H, Test on H在人类答案上训练和测试。这代表了传统使用人工标注数据的上限。跨域评估核心Train on C, Test on H这是本项目要回答的核心问题。如果模型表现接近甚至超过“Train on H, Test on H”则强有力地证明了合成数据的训练有效性。Train on H, Test on C反向实验检验在“困难”数据上训练的模型在“简单”数据上的表现。通常预期结果会很好这从侧面印证了数据分布的难度差异。混合数据训练Train on CH, Test on H将ChatGPT数据和人类数据混合后训练观察是否能有性能提升。这能验证合成数据是否能作为真实数据的有效补充进行数据增强。4.2 模型选择与训练技巧模型架构双塔模型如SBERT、DPR推理速度快适合大规模召回。适合在本数据集提供的海量三元组上进行训练。交叉编码器Cross-Encoder如BERT将查询和文档同时输入模型进行交互计算精度通常更高但速度慢适合在BM25召回的前100或1000个结果上进行重排序。本项目提供的top_1000_*.run文件正是为此场景准备。负例采样策略数据集提供的是随机负例Easy Negative。在训练后期引入Hard Negative能大幅提升模型区分细微差别的能力。你可以使用第一轮训练好的模型对每个正例从BM25或初始模型召回的非相关结果中选择分数最高的那些作为Hard Negative加入训练。领域适应如果你关注特定领域如医学、法律可以在本数据集预训练的基础上使用该领域的小规模高质量数据继续进行微调这往往比从头训练效果更好。4.3 常见问题与排查问题训练时Loss不下降或波动很大。排查首先检查数据加载是否正确确保(query, positive)对确实是相关的。其次检查学习率是否设置过高可以尝试使用更小的学习率如2e-5并配合warmup。对于SBERT的MultipleNegativesRankingLoss适当增大batch_size有助于提供更多的“in-batch negatives”提升训练稳定性。问题模型在测试集上表现远低于预期。排查第一确认评估时使用的答案库Collection和相关性标注Qrels是否匹配即用H集合测试就要用H的Qrels。第二检查是否存在数据泄露例如测试集的问题或答案意外出现在了训练集中。第三评估代码的逻辑是否正确特别是相似度计算和排序部分。问题训练过程非常缓慢且显存占用高。排查双塔模型编码时可以分别缓存所有文档和查询的向量避免每次重复计算。对于交叉编码器由于需要两两配对无法缓存只能通过减小batch_size或使用梯度累积来降低显存。考虑使用混合精度训练fp16来加速并节省显存。问题如何复现论文中的BM25基线结果提示项目作者使用了Elasticsearch的BM25。你可以使用pyserini或rank_bm25这类Python库来复现。关键是要使用与作者相同的分词器通常为标准英文分词和相同的参数k1和b默认值通常为1.2和0.75。用提供的top_1000_*.run文件作为基准进行对比。5. 项目延伸思考与未来方向这个数据集打开了一扇门让我们能更系统地研究大语言模型与信息检索的交叉领域。除了已经讨论的还有几个值得深入的方向1. 合成数据的质量与多样性分析ChatGPT生成的数据并非完美。我们需要更细粒度地分析哪些类型的问答对生成的答案质量高更适合用于训练答案的长度、复杂性、事实准确性如何影响检索模型的学习是否可以设计过滤器自动筛选出高质量的合成数据进一步提升训练效率2. 提示工程对合成数据的影响生成这些答案所用的ChatGPT提示词Prompt是什么不同的提示词例如“请用专业、简洁的语言回答” vs. “请详细解释”会导致生成答案的风格和结构发生巨大变化。研究提示词如何影响合成数据的“可检索性”以及训练出的模型特性是一个极具实用价值的课题。3. 超越BM25和BERT更先进的检索模型可以在此数据集上测试当前最先进的检索模型如稠密检索器ANCE RocketQA Condenser等。多向量表示模型ColBERT它允许查询和文档的token级交互兼具效率和效果。大语言模型即检索器直接使用GPT-4等模型的嵌入能力或者探索像DSIDifferentiable Search Index这样将索引和检索统一在同一个模型内的新范式。4. 误差分析与可解释性当模型在“Train on C, Test on H”上失败时具体失败在哪些案例上是人类答案中包含的隐喻、反讽让模型无法理解还是领域专业知识不足进行详细的误差分析不仅能帮助我们改进模型也能加深对两种数据分布差异的理解。在我自己的实验过程中一个深刻的体会是数据是燃料但引擎的设计和调校同样重要。这个数据集提供了高质量、结构清晰的燃料让研究者可以专注于优化引擎模型算法。它清晰地展示了合成数据的潜力但也揭示了其与真实数据之间的差距。如何弥合这一差距或许正是下一代检索模型需要攻克的关键。无论是将它用作快速验证想法的沙盒还是进行深入比较研究的平台ChatGPT-RetrievalQA数据集都无疑是一个宝贵的资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2599829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…