DeViSE:A Deep Visual-Semantic Embedding Model

2023-10-19 15:40

本文主要是介绍DeViSE:A Deep Visual-Semantic Embedding Model,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这篇是2013年文章提出的 D e V i S E DeViSE DeViSE,主要是综合了传统视觉识别的神经网络和词向量处理 w o r d 2 v e c word2vec word2vec中的 S k i p − g r a m Skip-gram Skipgram模型,实现了一个视觉和语义兼顾的 Z S L ZSL ZSL模型,取得了 较好的效果,时至今日,准确率仍然可以排在前面。

背景

Skip-gram

S k i p − g r a m Skip-gram Skipgram是word2vec模型中的一种,给定一个input word来预测上下文,训练之后的模型的目的并不是用这个模型来预测,而是为了得到这些模型隐层中学得得权重参数

  • 首先,我们构建一个完整得神经网络:包括:输入层、输出层、隐层
  • 例如,对于一个句子I want to eat an apple,选取一个词作为输入,这里选择eat,在定义一个参数 S k i p − w i n d o w Skip-window Skipwindow,其代表 着我们从当前的input word的一侧(左边或右边)选取词的数量,如果我们设置 S k i p − w i n d o w = 2 Skip-window = 2 Skipwindow=2,就代表选取输入词左边两个和右边两个单词进入窗口 [ “ w a n t ” , “ t o ” , “ a n ” , “ a p p l e ” ] [“want”,“to”,“an”,“apple”] [want,to,an,apple],
  • 另外一个参数 n u m − s k i p s num-skips numskips代表我们从窗口中选取多少个不同的词,作为我们的ouput,
  • 当skip-window = 1时,Skip-num = 2时,我们将会得到两组(input word,output word)的形式训练数据,即 (“eat”, “to”),(“eat”, “I”).
  • 神经网络基于这些训练数据将会输出一个概率分布,这个概率代表我们词典中的每个词是output word可能性 例如,上面我们得到两组数据,我们先用一组数据来训练神经网络,那么模型通过前面学习这个训练样本,会告诉我们词汇表中的其他词的概率大小和eat的概率大小
  • 具体而言,因为神经网络的输入必须为数值,所以我们会首先将词汇表中的单词进行one-hot编码,隐层不在使用任何激活函数 ,但是输出层是 s o f r m a x sofrmax sofrmax
  • 算法

  • 算法思路

  • 分别预训练一个视觉网络和一个词向量 S k i p − g r a m Skip-gram Skipgram网络,在结合两个网络进行训练。
  • 原理

  • 预训练一个视觉模型如下图:
  • 在这里插入图片描述
  • 和一个skip-gram模型如下:
  • 在这里插入图片描述
  • 将两个模型整合为:
  • 在这里插入图片描述

具体而言

  • 语义模型
    • 通过Skip-gram对模型进行训练,Skip-gram通过单词来预测单词的上下文,训练模型最后得到一个权重矩阵,该矩阵即为需要的 E m b e d d i n g Embedding Embedding矩阵。
    • 视觉模型
      • 采用了1,000-class ImageNet Large Scale Visual Recognition Challenge (ILSVRC) 2012 这篇文章提出的模型,并将结果作为benchmark
    • Deep Visual Semantic Embedding Model
      • 即本文提出的模型,输出层去掉了之前的softmax, 换成了一个将3096维向量(图像)映射到500维或1000维(词向量)的线性映射,transformation.
      • 损失函数:使用点积相似性( d o t − p r o d u c t s i m i l a r i t y dot-product similarity dotproductsimilarity)和铰链损失函数( h i n g e r a n k l o s s hinge rank loss hingerankloss)结合来作为该模型的损失函数.这可以使得在图像模型的输出和该图像对应的正确标签的向量表示之间的点积相似性。要比不正确的其他标签的向量与该图像的相似性高
      • 在这里插入图片描述
        在这里插入图片描述

这篇关于DeViSE:A Deep Visual-Semantic Embedding Model的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/240764

相关文章

Pydantic中model_validator的实现

《Pydantic中model_validator的实现》本文主要介绍了Pydantic中model_validator的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录引言基础知识创建 Pydantic 模型使用 model_validator 装饰器高级用法mo

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

1、MVC MVC(Model-View-Controller) 是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。以下是 MVC 各组件与常见设计模式的关系和作用: 1. Model(模型)

【Visual Studio 报错】未加载 wntdll.pdb(一种可行的解决办法)

调试程序时,会出现下面这个报错 分析原因: 出现未加载 wntdll.pdb 报错大概率是你的指针使用错误 ,比如使用野指针、越界访问、或者堆区空间释放方式错误等。 这里以 堆区空间释放方式错误 为例子 1、堆区开辟的数组空间使用 delete 释放 // 堆区开辟的数组空间使用 delete 释放int* p = new int[10];delete p; 正

查看Excel 中的 Visual Basic 代码,要先设置excel选项

1. excel VB的简单介绍 百度安全验证 2.excel选项设置 excel表格中在选项->自定义功能区域,选择开发工具,visual baisc/查看代码,即可看到代码。 3.excel已经设置,可以直接查看

Deep Ocr

1.圈出内容,文本那里要有内容.然后你保存,并'导出数据集'. 2.找出deep_ocr_recognition_training_workflow.hdev 文件.修改“DatasetFilename := 'Test.hdict'” 310行 write_deep_ocr (DeepOcrHandle, BestModelDeepOCRFilename) 3.推理test.hdev

[VC] Visual Studio中读写权限冲突

前置场景: 编译没有报错,但是运行提示 内存异常: 情景1: 如下代码运行异常,提示引发了异常:写入权限冲突。*** 是 0xFFFFF..... char* str = (char*)malloc(10);str[0] = 0x30;  解决方案:要包含头文件<stdlib.h>  情景2: 在FileA文件调用FileB文件的函数,但是在FileA中却没有声明该B函数的原型