网站新闻公告表怎么做网站下载
2026/5/21 9:42:18 网站建设 项目流程
网站新闻公告表怎么做,网站下载,百度域名收录提交入口,虚拟空间是什么意思原文#xff1a;towardsdatascience.com/how-to-create-powerful-embeddings-from-your-data-to-feed-into-your-ai-995d834479bb 从你的数据中创建高质量的嵌入对于你的 AI 系统的有效性至关重要。本文将展示你可以使用的不同方法#xff0c;将你的数据从图像、文本和音频等…原文towardsdatascience.com/how-to-create-powerful-embeddings-from-your-data-to-feed-into-your-ai-995d834479bb从你的数据中创建高质量的嵌入对于你的 AI 系统的有效性至关重要。本文将展示你可以使用的不同方法将你的数据从图像、文本和音频等格式转换为强大的嵌入这些嵌入可以用于你的机器学习任务。你创建高性能嵌入的能力将对你的 AI 系统的性能产生重大影响因此学习和理解如何制作高质量的嵌入是至关重要的。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5eb5be26a13ebb6649fa7a9a35103f5b.png从照片中创建嵌入。图像由 ChatGPT 制作。制作一个 AI 从照片中创建嵌入的图像提示。ChatGPT4OpenAI2024 年 2 月 18 日。chat.openai.com.引言本文的动机在于从你的数据中创建好的嵌入对于大多数 AI 系统至关重要因此这是你经常需要做的事情创建更好的嵌入是提高你所有未来 AI 系统的好方法。创建嵌入的使用案例包括聚类、相似性搜索和异常检测等任务所有这些都可以从更好的嵌入中获得巨大好处。本文将探讨计算嵌入的两种主要方法使用在线模型或训练你自己的模型这两者都将在本文的后续部分中讨论。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/57be9c0737b44357ae18ed38ec8dc80a.png创建嵌入的流程。首先检索你的数据例如可以是图像、文本或音频数据。将数据输入到嵌入模型中该模型输出生成的嵌入。图像由作者使用Whimsical.com制作。目录· 引言 · 目录 · 动机和用例 · 使用 PyTorch 模型创建嵌入 · 使用 HuggingFace 模型创建嵌入 ∘ 方法 1 ∘ 方法 2 · 使用 GitHub 创建嵌入 · 使用付费模型创建嵌入 · 创建你自己的嵌入 ∘ 自编码器 ∘ 在下游任务上训练你自己的模型 · 创建嵌入时的典型错误 ∘ 忘记使用预训练模型 ∘ 许可 · 结论使用 PyTorch 模型创建嵌入创建嵌入的一个更简单的方法是利用PyTorch 模型库中的嵌入模型。这个库为你提供了访问一系列预训练模型的便捷途径这些模型可以直接使用。这意味着你可以在自己的数据上使用这些模型而无需对模型进行训练。如果你想要为你的图像获取嵌入例如可以使用 2015 年引入的ResNet 模型。确保你已经安装了 PyTorch你可以在PyTorch 网站上这样做然后你可以运行以下代码部分来自PyTorch 模型库教程。fromtorchvision.modelsimportresnet50,ResNet50_WeightsfromPILimportImageasPILImage# Initialize the Weight Transformsresnet50(weightsResNet50_Weights.DEFAULT)imgPILImage.open(image1.jpg)# Initialize the Weight TransformsweightsResNet50_Weights.DEFAULT preprocessweights.transforms()# Apply it to the input imageimg_transformedpreprocess(img)# Initialize modelweightsResNet50_Weights.DEFAULT modelresnet50(weightsweights)# Set model to eval modemodel.eval()model(img_transformed.unsqueeze(0)).detach().numpy()其中 image1.jpg 可以是任何你想要的图像。我使用了这个 Unsplash 上的图像作为输入到我的模型中的图像这就是你下面看到的图像。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/19ae70c790bb84fa73743450e024e7a0.pngJames Harrison在Unsplash上的照片运行代码后的结果是形状为(1,1000)的张量看起来像这样https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/51e07edd63585da6ad899898f6010a45.png使用 ResNet 50 模型对上述图像进行编码的嵌入输出。假设你使用了相同的模型你可以期待看到类似的结果。图片由作者提供。你可以在 PyTorch 的模型库网站上找到其他模型那里你可以找到图像分类、目标检测和视频分类等下游任务上的模型。PyTorch 模型库的优势在于其易用性。假设你已经使用了 PyTorch 框架许多强大的模型只需一行代码即可供你使用。尽管预训练模型不一定能生成最佳嵌入但它们仍然能够在许多机器学习任务上实现高性能我也有过使用像 ResNet 这样的旧模型在创建图像嵌入等简单任务上仍然表现良好的经验。因此我建议不要低估这些模型的力量。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/384a460da51063d2e882521a82e87772.pngResNet 18 模型架构。图片由作者提供。使用 HuggingFace 模型创建嵌入如果你想查看更高级和最新的模型我推荐你访问HuggingFace 网站。HuggingFace 是一个网站许多最新的机器学习模型都上传在这里供大家使用。在 HuggingFace 上你可以获取用于各种下游任务的不同模型。你可以从 HuggingFace 获取的主要模型类型包括多模态模型计算机视觉自然语言处理音频表格强化学习模型类型来自HuggingFace 模型网站在那里你还可以查看每种模型类型的进一步下游任务。要从 HuggingFace 模型中提取嵌入你应该知道模型通常是如何上传的。作者通常上传两种类型的模型。基础模型。这些是嵌入模型没有训练最终层以执行下游任务如句子分类。基础模型通常在标题模型下。所以如果你想找到 RoBERTa 基础模型你会在RobertaModel中查找。下面图片左侧展示了基础模型的示例。微调模型。这些是基础模型加上一些训练用于执行下游任务的最终层。如果你想从这些模型中提取嵌入你必须从模型的隐藏状态中提取嵌入忽略模型的最终层。通常有几个微调模型它们以.命名。例如如果你想为序列分类下游任务找到 RoBERTa你会在RobertaForSequenceClassification中查找。下面图片右侧展示了微调模型的示例。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a0341f9a70d674fa3262cb0f9676d8ac.png展示基础模型左侧和针对下游任务微调模型右侧之间差异的图示。基础模型是一个嵌入模型输出一个一维嵌入在这种情况下是一个表示图像的 784 个元素的数组。微调模型输出最终预测在这种情况下可能是预测图像是一只猫的模型。如果你想使用微调模型来创建嵌入你只需要使用模型右侧的前两层因此输出是一个一维向量。图片由作者使用Whimsical.com和Draw.io制作。在我使用 HuggingFace 模型的经历中两种类型的模型都可以工作因此我建议测试两种模型。如果你只想要嵌入Base 模型可能是最终的正确选择但有时在最终层进行微调后嵌入可能会变得更好特别是如果微调任务与你使用嵌入的目的相关。因此建议测试两种类型的模型考虑到 HuggingFace 模型的易用性这通常不是一个需要大量努力的任务。因此花额外的时间测试两种模型可以是一个有价值的时间利用方式。例如如果我想获取文本嵌入我会这样做方法 1前往HuggingFace Transformers 网站在左侧如果需要滚动找到文本模型并按下其中一个模型在你按下所选的下游任务后我会按右上角的最多下载或趋势排序这将为你提供所选模型的全面概述。你还可以在下面的其他方法中找到一些模型但请注意你通常会对每个模型看到更少的信息并且你会看到更多来自社区成员不一定是最初的模型作者的模型方法 2前往HuggingFace 模型网站在左侧找到文本模型如果需要滚动并按下适合的下游任务。例如对于文本嵌入我会尝试文本分类和句子相似度任务在你按下所选的下游任务后我会按右上角的最多下载或趋势排序例如你可以使用以下代码使用基础 Roberta 模型创建文本嵌入用于句子使用 Roberta 模型进行嵌入# embedding with base roberta modelfromtransformersimportAutoTokenizer,RobertaModelimporttorch sentenceEmbedding using the Roberta modeltokenizerAutoTokenizer.from_pretrained(roberta-base)modelRobertaModel.from_pretrained(roberta-base,add_pooling_layerTrue)inputstokenizer(sentence,return_tensorspt)outputsmodel(**inputs)embeddingoutputs.pooler_output这将输出一个形状为1×768的张量如果你想要使用针对序列分类微调的 Roberta 模型创建文本嵌入可以使用以下代码# embedding from fine-tuned roberta model for sequence classificationimporttorchfromtransformersimportAutoTokenizer,RobertaForSequenceClassification sentenceEmbedding using the Roberta modeltokenizerAutoTokenizer.from_pretrained(cardiffnlp/twitter-roberta-base-emotion)modelRobertaForSequenceClassification.from_pretrained(cardiffnlp/twitter-roberta-base-emotion,output_hidden_statesTrue)inputstokenizer(sentence,return_tensorspt)withtorch.no_grad():outputsmodel(**inputs)embeddingtorch.mean(outputs[hidden_states][-1],dim1)#grabbing the last hidden layer, and applying mean pooling to get embedding这也将输出一个形状为1×768的张量。你可以在HuggingFace 网站上了解更多关于 Roberta 模型的信息。HuggingFace 是一个有用的网站因为研究论文的作者通常会将其模型发布在 HuggingFace 上这对于进一步的研究非常重要既可以验证论文中取得的结果也可以允许在现有研究的基础上进行进一步的研究。因此HuggingFace 是 AI 研究发展的主要贡献者并且是一个你可以利用来查找最新公共可用模型的网站。HuggingFace 的另一个有用特性是它能够及时更新最新的模型。这是我注意到 PyTorch 模型库和 HuggingFace 模型之间最大的区别。这是因为 HuggingFace 更频繁地更新最新的公开可用机器学习模型。使用 GitHub 创建嵌入另一种寻找可以为您的 AI 系统创建良好嵌入的模型的方法是使用 GitHub。许多作者会上传训练模型所需的代码以及 GitHub 上下载模型权重的链接。如果 GitHub 上有模型权重它们通常也会在 HuggingFace 上在这种情况下您可以自然地使用上述方法但有时这不幸地并不总是如此。使用 GitHub 上的模型通常比使用 HuggingFace 上的模型需要更多的努力但如果您在 GitHub 上找到一个特别有用的模型这可能值得投入时间。在 GitHub 上找到好模型可能会有困难。一种常见的寻找模型的方法是简单地通过 Google 搜索您要查找的任务一个 GitHub 仓库可能会出现在搜索结果中。另一种方法是搜索科学文章数据库如Google Scholar或ArchiveX以找到包含良好模型的科学论文。这些论文通常会包括包含代码和模型权重的 GitHub 仓库。然而在 GitHub 上找到好模型的最佳方式是使用 Meta 的[PapersWithCode](https://paperswithcode.com/)网站。PapersWithCode 突出了包含代码的发表科学文章的不同科学研究。因此在 PapersWithCode 上您可以找到适合您特定用例的好模型然后找到该模型的代码。我还建议选择浏览最新技术标签以查看当前选择任务的最佳模型。使用这种方法您可以找到一些特别好的模型您可以使用这些模型为您的数据集创建嵌入。我会使用的创建嵌入的模型流程是https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/98bb5b25600c2c0ccafb5dff7afce154.png从 PapersWithCode 寻找最佳嵌入模型的流程图。图片由作者使用Whimsical.com制作使用付费模型创建嵌入如果您想要最佳的嵌入效果通常使用付费在线 API 是最佳选择。多家公司提供此类 API例如Microsoft Azure、Google Cloud或OpenAI。这些嵌入的成本自然会根据您使用的模型以及您想要嵌入的数据量而有所不同。如果您只是在从事一个爱好项目并确保您不会过度使用嵌入 API我认为成本可以相当合理。例如OpenAI 提供了一种带有text-embedding-3-small模型的文本嵌入 API每美元可以提供大约 3750 万个单词这是根据OpenAI 网站上的定价计算的每美元 62500 页假设每页 800 个标记即 8000.75每页 600 个单词因此 62500600每美元 3750 万个单词。除非您要嵌入大量文本否则这相当便宜。使用付费 API 嵌入服务有几个优点这些嵌入模型的使用非常简单。您需要获取一个 API 密钥然后可以使用您选择的公司网站上的示例代码这样您就有了嵌入。这些嵌入模型是专门训练以提供有意义的嵌入的。与许多其他训练用于执行下游任务的模型相比这通常会产生更高质量的嵌入。您将能够访问最先进的状态模型这些模型通常在 HuggingFace 等网站上无法免费获得。这意味着付费 API 生成的嵌入质量通常可以达到最佳水平。在这里我想在使用付费 API 时提醒大家。首先很容易失去对 API 使用的跟踪如果不加以控制可能会产生高昂的费用。因此我强烈建议您在使用 API 时保持高度警觉因为每次使用都会产生费用。此外完全理解定价模型可能很困难。例如您通常不知道确切发送给 API 的单词数量这可能导致 API 的费用与您预期的不同。因此我建议提前计算 API 使用产生的费用以确保您不会遇到任何意外费用。最后您还必须始终确保您的 API 密钥安全并确保它不会落入错误的手中这可能会产生高昂的费用。创建您自己的嵌入我将要讨论的最后一个创建嵌入的方法是从零开始创建自己的嵌入。使用这种方法可能会有难度并且你很可能无法复制先前方法的嵌入质量因为创建一个好的嵌入模型需要大量的计算能力。然而制作自己的嵌入可以是一个重要的学习经验以全面理解嵌入是如何工作的以及它们可以用于什么这就是为什么我也推荐这种方法。下面我将展示两种创建自己嵌入的方法。自动编码器自动编码器是接受输入例如图像将其缩小到较低维度然后尝试从较低维度重新创建输入数据的模型。GeeksForGeeks已经创建了一篇关于它是如何工作以及如何创建自己的自动编码器的优质文章我推荐阅读。作为一个训练自己的自动编码器的例子你需要掌握大量的图像例如 MNIST 数据集你可以从这里下载。然后你可以通过使用线性层编码器将每个图像缩小到较低维度并使用另一组线性层解码器重新创建相同的图像来训练模型。训练完成后你只能使用缩小线性层编码器作为你图像的嵌入。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/f67224dcd41d4416780b0c3dc7534d92.png一个自动编码器架构。前两层是编码器后两层是解码器。图片由作者提供。在下游任务上训练自己的模型创建自己嵌入的另一种方法是训练一个模型例如图像分类。同样你可以下载MNIST 数据集并创建一个图像分类网络你可以在这个 PyTorch 教程中了解它。训练完成后你可以忽略图像分类模型中的最终分类层以获得嵌入。为了更好地理解这一点我将通过 Python 代码示例来展示。首先定义一个模型架构如下例所示我接受一个(28×28)的图像并输出 10 个类中的一个预测类似于 MNIST 问题。importtorchimporttorch.nnasnnimporttorch.nn.functionalasFclassSimpleCNN(nn.Module):def__init__(self):super(SimpleCNN,self).__init__()self.conv1nn.Conv2d(1,32,kernel_size3,padding1)self.conv2nn.Conv2d(32,64,kernel_size3,padding1)self.poolnn.MaxPool2d(2,2)self.fc1nn.Linear(64*7*7,128)self.fc2nn.Linear(128,10)defforward(self,x):xF.relu(self.conv1(x))xself.pool(x)xF.relu(self.conv2(x))xself.pool(x)xx.view(-1,64*7*7)xF.relu(self.fc1(x))xself.fc2(x)returnxdefpredict(self,x):#return class that is predictedreturntorch.argmax(self.forward(x),dim1)defget_embedding(self,x):withtorch.no_grad():#we dont need gradients for the embeddingxF.relu(self.conv1(x))xself.pool(x)xF.relu(self.conv2(x))xself.pool(x)xx.view(-1,64*7*7)xF.relu(self.fc1(x))returnx在这里你可以看到如何使用微调模型来检索嵌入。要为模型获取类别预测你会使用predict方法该方法输出一个介于 0–9 之间的数字。然而如果你只想获取图像的嵌入你可以使用 _getembedding方法该方法类似于forward方法用于训练模型使用了大量的模型层但 _getembedding方法忽略了最终的完全连接层self.fc2因此而不是输出一个介于 0–9 之间的数字_getembedding方法输出一个形状为 (1×128) 的向量这可以作为输入图像的嵌入使用。因此要使用上面定义的模型你需要训练模型例如使用 这个 PyTorch 教程通过前向函数进行训练。训练后你可以使用 get_embedding 函数为图像获取有意义的嵌入。创建嵌入时的典型错误我还想提到一些在创建嵌入时可能会犯的典型错误。这些是在我为我的数据集创建嵌入时犯过的错误。忘记使用预训练模型这一点可能听起来很明显但例如当使用 PyTorch 或 HuggingFace 模型时可能会犯错误即检索到一个非预训练模型这本质上只是一个具有一组随机初始化权重的模型架构。因此每次你获取一个模型时请确保它是该模型的预训练版本许可证如果你使用模型进行非商业用途这通常不是问题公开可用的模型大多数情况下至少会有一个个人或学术许可。然而如果你在公司工作或想将嵌入用于商业用途你必须了解你使用的模型的许可。具有非商业许可的模型不能以任何方式用于商业目的因此在使用模型之前你应该小心检查其许可。寻找允许商业使用的许可如 MIT 许可证 或 Apache 2.0 许可证。结论在这篇文章中你了解到了你可以使用不同的方法来获取数据的嵌入。嵌入对于你将使用的任何 AI 模型都很有用并且可以从所有数据类型如图像、文本和音频中创建嵌入。我提到的用于计算嵌入的不同方法包括PyTorch 模型HuggingFace 模型GitHub 模型支付的 API如 Google、Microsoft 或 OpenAI创建自己的嵌入这些方法中的任何一种都可以用来将你的数据转换为嵌入然后可以用于诸如聚类、相似性搜索或分类等任务。如果你想继续学习更多关于嵌入的内容你可以阅读我关于理解嵌入和图质量的 Towards Data Science 文章通过理解嵌入质量来提高 AI 性能的方法如何测试图质量以提高图机器学习性能你也可以阅读我在WordPress上的文章。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询