元学习系列(一):Siamese Network(孪生网络)

2023-05-16

目前有一种说法认为,深度学习模型在数据量较大的情况下才能取得较好的效果,当数据量较少,更偏向于使用传统的机器学习模型。想办法从深度学习的方向构建模型,使得模型在数据量较小的情况下也能取得较好效果,就是meta learning的目标。

那么如何才能实现这个目标呢,从人类学习分类物体的角度来说,人类认识新的物体并不需要太多的样本,这是因为人类拥有更多的先验知识,比如现在叫一个没见过碟子的人,从一堆文具数据中区分出唯一一个碟子,他可能很容易做到,因为他已经在脑海中抽象出文具的概念,即使可能难以描述文具和碟子具体的定义是什么,仍然可以找出那个不属于文具的碟子,这就是人类强大的能力。但是现在的机器做不到,如果想要解决这个问题,模型就需要大量的文具和碟子数据,学习文具和碟子的抽象概念,再进行对比分类。

所以问题可以更具体地表示为,在碟子数据较少的情况下,如何充分利用其他数据作为先验知识构建网络,使得网络能较好地对碟子进行分类,这就是目前主要研究的问题。这里先来介绍一个模型,Siamese Networks孪生网络。

在这里插入图片描述

我们可以看看模型的结构,其实思路很简单,就是输入两个样本到两个同样的网络(参数结构相同),最后计算两个网络输出的距离,如果距离较近就认为是同一类,较远就认为是不同的类别,在这里,我们可以使用两个同样参数的CNN,利用CNN从图像中提取特征。注意这里必须是同样的CNN,不然两个不同的CNN,即使输入相同,输出也可能认为两者不同。

现在我们来分析一下孪生网络为什么可以有效地区分碟子,即使数据集中只有一个碟子样本。比如我们有99个文具样本和1个碟子样本,在训练的时候,最多可以用1个碟子和99个文具进行99次训练,这样即使模型依然无法抽象出碟子的概念,但是起码它也可以知道,碟子和文具之间的区别是什么,只要在测试的时候不要加入新的数据(比如突然加入一个杯子,模型就有可能认为他是碟子了,毕竟它都完全没见过杯子),那么模型就很大概率能成功进行分类。顺带一提,模型的测试可以理解成对比测试数据和训练数据中的哪个样本最接近,就认为测试数据是什么类别。

深度学习模型参数一般比较多,而样本数量不足必然就会导致过拟合,而上述的孪生网络,通过对比两个输入进行分类,大量增加了模型的训练数据,这样就相对缓解了模型过拟合的问题。

除此之外,其实也可以看出,对孪生网络来说,先验知识就是训练集的数据,在测试的过程中,把测试数据和训练数据进行一一对比,就是一个利用先验知识的过程,虽然这个过程效率比较低下,所以才有了后续的改进模型。

在github写的自然语言处理入门教程,持续更新:NLPBeginner

在github写的机器学习入门教程,持续更新:MachineLearningModels

想浏览更多关于数学、机器学习、深度学习的内容,可浏览本人博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

元学习系列(一):Siamese Network(孪生网络) 的相关文章

  • 解决IntelliJ IDEA各种中文乱码问题

    1 修改文件编码方式 打开IntelliJ IDEA gt File gt Setting gt Editor gt File Encodings xff0c 将Global Encoding Project Encoding Defaul
  • 解析IDEA中的Artifacts配置

    1 Artifact 2 Artifact名称 3 Artifact类型 4 输出路径 xff08 也就是Deployment root部署根目录 xff09 xff0c 项目运行后的输出根目录 5 输出根目录 xff0c 即4指定的地址
  • IDEA代码以及注释格式化,行宽设置,以及自动换行

    一 设置代码最大行宽 xff0c 以及自动换行 勾选wrap on typing xff0c 即在编码时 xff0c 超出最大行宽 xff0c 则自动换行 xff0c 或者采用下面这种方式 xff0c 在手动格式化的时候 xff0c 进行自
  • IDEA设置代码规范,代码格式化设置,以及ALIBABA编码规约

    阿里巴巴格式化模板文件下载地址 https github com alibaba p3c 第一个文件是 代码格式化时用的模板 第二个文件是 注释模板 一 eclipse 格式化设置 格式化模板导入 依次点击 xff1a Window gt
  • 数组的初始化 array initializer is not allowed here

    此处不允许使用数组初始值设定项 array initializer is not allowed here 数组的使用分声明和初始化两部分 xff0c 两者可同时进行 xff0c 也可分开进行 int array 声明 array 61 n
  • Maven打包所有依赖到一个可执行jar中,将外部依赖加入到classPath中

    首先说一下比较常用的两种打包方式 xff1a 前提 xff1a maven构建可执行jar包时 xff0c 如果项目依赖了pom中定义的dependency之外的外部jar包 xff0c maven jar plugin默认是不会把这 些额
  • postgresql数据库|数据库实操----表复制详解

    前言 xff1a 通常情况下 xff0c 我们对数据库的增删改查的时候 xff0c 为了确保数据的安全 xff0c 需要备份表 xff0c 那么 xff0c 一种方法是通过pg dump 这个工具做SQL转储操作 xff0c 此方法比较复杂
  • Centos7 配置防火墙 firewall

    一 firewall 1 从CentOS7开始 xff0c 默认使用firewall来配置防火墙 xff0c 没有安装iptables xff08 旧版默认安装 xff09 2 firewall的配置文件是以xml的格式 xff0c 存储在
  • Windows多媒体开发框架介绍

    Windows 多媒体开发框架介绍 欢迎来到 Windows 的多媒体开发世界2D 绘图 API1 GDI2 GDI 43 3 Direct2D 音频 API1 MME2 DirectSound3 Windows Core AudioCor
  • 【Ubuntu】在QT运行程序后无结果显示,只有终端运行的解决办法

    转自 http stackoverflow com questions 3255035 qt creator run in terminal https bugs launchpad net ubuntu 43 source qtcreat
  • 【蓝桥杯嵌入式】关于CT117E下载程序出问题解决方案(含keil mdk4和keil mdk5移植)

    废话 万事开头难 xff0c 然后中间难 xff0c 最后难 寒假刚开始 xff0c 我看到了蓝桥杯嵌入式 很快啊 xff01 报名 买板一气呵成 没想到这块CT117E板子它不讲武德 xff0c 来骗 xff0c 来偷袭我这个二十岁的小伙
  • c语言冒泡排序详解(分析每一步,附代码)

    冒泡排序 xff08 Bubble Sort xff09 xff0c 是一种计算机科学领域的较简单的排序算法 它重复地走访过要排序的元素列 xff0c 依次比较两个相邻的元素 xff0c 如果顺序 xff08 如从大到小 首字母从Z到A x
  • 解决maven update project 后项目jdk变成1.5

    一 问题描述 在Eclipse中新建了一个Maven工程 然后更改JDK版本为1 7 结果每次使用Maven gt Update project的时候JDK版本都恢复成1 5 二 原因分析 Maven官方文档有如下描述 xff1a 编译器插
  • C语言——整型和浮点型混合运算

    1 int和double混合运算 C语言int和double混合运算时 xff0c 会自动将int类型的数据转换为double类型的数据 xff0c 最后得到的结果也是double类型 如下例 xff1a double a 61 4 0 9
  • C语言——函数指针

    目录 1 函数指针概念 1 1 函数指针的声明 1 2 函数指针的定义 1 3 使用typedef定义函数指针的别名 1 4 将常数转换为函数指针 1 5 函数指针的调用 1 6 将函数指针作为函数的传入参数 2 简单的例子 1 函数指针概
  • C语言——多线程基础(pthread)

    目录 1 线程的定义以及线程的创建 1 1 线程和进程的概念 1 2 使用pthread create 函数创建进程 2 使用pthread join 等待线程结束 2 1 使用pthread join 等待线程结束 2 1 使用pthre
  • C++——双端队列(deque)

    1 双端队列 xff08 deque xff09 双端队列 xff08 deque xff09 是队列的一种变形 xff0c 一般队列只能在队尾添加元素 xff08 push xff09 xff0c 在队首删除元素 xff08 pop xf
  • Linux|集群初始化脚本--osiniit.sh简介

    前言 xff1a 不管是什么部署 xff0c 前期的准备工作通常都是比较繁琐的 xff0c 但同时这些工作又具有程式化的特征 xff0c 也就是说都是有一定的流程的 xff0c 固定的步骤的 OK xff0c shell脚本处理这样的程式问
  • C++——优先级队列(priority_queue)

    目录 1 优先级队列 xff08 priority queue xff09 1 1 基本概念 1 2 优先级队列的定义 1 3 通过重写仿函数来支持自定义数据类型 1 4 通过运算符重载来支持自定义比较函数 1 5 优先级队列的基本操作 2
  • 操作系统——进程状态

    进程从创建到执行 xff0c 再到执行完毕销毁的过程中 xff0c 经历了不同的进程状态 xff0c 进程状态部分取决于进程当前的活动 xff0c 可以将进程状态分为 xff08 1 xff09 三状态模型 xff1b xff08 2 xf

随机推荐

  • 操作系统——进程调度

    目录 1 基本概念 1 1 CPU I O执行周期 1 2 CPU调度程序 xff08 CPU scheduler xff09 1 3 进程状态模型 1 4 抢占调度 1 5 调度程序 xff08 dispatcher xff09 1 6
  • C++实现优先级队列模板类

    1 优先级队列 1 1 基本原理 仿照C 43 43 STL 中的优先级队列priority queue xff0c 主要实现以下功能 xff1a 向队列中添加元素后 xff0c 队列自动调整 xff0c 保证队列中优先级最高的元素在队列头
  • C++通过WMI获取计算机电池电压的程序以及我出现的问题解决

    C 43 43 通过WMI获取计算机电池电压的程序以及我出现的问题解决 ConsoleApplication1 cpp 定义控制台应用程序的入口点 include stdafx h include DXGI h include vector
  • 深度学习——批量归一化(笔记)

    主流的卷积网络基本都设计批量归一化这个层 1 为什么要批量归一化 xff1f 网络层很深 xff0c 数据在底层 xff0c 损失函数在最顶层 反向传播后 xff0c 顶层的梯度大 xff0c 所以顶层训练的较快 数据在底层 xff0c 底
  • Mininet连接ONOS的一些问题

    Mininet连接ONOS的一些问题 一 启动ONOS二 简单小问题1 Mininet创建最简拓扑后连接不上远程控制器2 Mininet创建最简拓扑后主机之间ping不通3 不启动fwd应用自己通过REST API下发流表发现两台主机间pi
  • 关于codeblocks找不到路径从而无法编译的解决方法

    下载完codeblocks后 xff0c 可能会出现像下面的情况 解决方法是 xff1a 点击codeblocks里的settings的Compiler xff08 1 xff09 可能是中间箭头蓝色的那里出错 xff0c 有些人可能会在安
  • 如何获取维普免费账号--在校外下载维普万方等全文

    如何获取维普免费账号 在校外下载维普万方等全文 如何获取维普免费账号 在校外下载维普万方等全文 1 马上就要工作了 xff0c 觉得学校里面图书馆资料很多 xff0c 并且很有用 xff0c 都可以在CNKI 万方维普等中文数据库 xff0
  • 京东网络开放之路——自研交换机探索与实践

    相比传统商业交换机 xff0c 白盒交换机具有更好的开放性和灵活性 xff0c 解决了运维管理方面的诸多痛点 xff0c 随着SONiC的不断完善和白盒交换机市场的成熟 xff0c 京东基于SONiC研发了自己的白盒交换机 xff0c 更加
  • Linux|sed命令花式批量修改文件

    前言 xff1a sed命令 xff0c 流式修改文本文件的强大工具 xff0c 比如 xff0c 最常用的关闭selinux时通常采用sed命令快速修改 OK xff0c 其实sed命令虽然强大 xff0c 但它修改文件的方式是非常多的
  • Python列表详解_List()

    Python列表 一 了解列表二 列表的创建三 访问列表中的值四 对列表进行更新五 删除列表元素 一 了解列表 什么是列表 xff1f 列表能干什么 xff1f 今天我们几分钟统统解决他 xff01 1 首先我们先来了解一下列表 列表是Py
  • Linux(Deepin、Ubuntu)安装Citrix receiver教程

    Deepin20 6安装Citrix receiver教程 安装的deepin20 6想要安装Citrix receiver xff0c 发现要么装不上 xff0c 要么装上了不能用 xff0c 找了好多资料 xff0c 最终找到可以使用的
  • 服务器(一):VNC view 无法打开终端问题

    1 VNC view 无法打开终端问题 参考链接 xff1a Ubuntu 的终端打不开 xff0c gnome terminal没反应 ubuntu 打开不了gnome terminal 显示错误提示exited status 8 Ubu
  • Hadoop 从零开始学习系列-wordCount

    学习基于hadoop2 5 2版本 WordCount做为hadoop的hello world程序 xff0c 今天花了半天时间 xff0c 终于跑出了结果 xff0c 以下记录过程 1 建立maven工程 xff0c 加载hadoop相关
  • 图像处理 - GLCM灰度共生矩阵如何计算

    因为最近要在OpenCV上试试各种图像分割算法的效果 xff0c 其中灰度共生算法没有办法直接调用库函数实现 xff0c 看了很多文章 xff0c 其中有一篇博文讲的很清楚 博主有提供原理和源码 xff0c 大家可以直接看原博 原文地址 x
  • SUSE12 Remote side unexpectedly closed network connection ,Connection reset by peer原因之一

    用工具新开ssh远程报错如下 xff1a 已连接的ssh中 xff0c telnet报错如下 同网段机器ssh命令报错如下 xff1a 在对比了同操作系统同文件的配置后 xff0c 排除了 etc hosts deny跟 etc hosts
  • xterm连接虚拟机里的ubuntu

    mobaxterm连接在虚拟机的abuntu 1 在Ubuntu上打开SSH服务 安装 openssh client 和 openssh server sudo apt get install openssh client sudo apt
  • 图解Linux命令之--fdisk命令

    fdisk命令 gt 磁盘分区管理工具 添加分区的流程 fdisk dev sda 选择要分区的硬盘 p 列出当前分区表 n 添加新分区 回车 选择开始的块地址 直接回车默认就可以了 43 2G 输入要添加分区的大小 43 200M xff
  • 安装docker-compose报ERROR: Cannot uninstall ‘PyYAML‘. It is a distutils installed project and thus we c

    在CentOS7中 xff0c 如果python版本为3 x xff0c 在安装docker compose时会报错 xff1a ERROR Cannot uninstall PyYAML It is a distutils install
  • PostgreSql | 数据库 |自定义函数的设计和实现

    前言 xff1a 数据库中的函数概念 和开发语言 xff0c Java xff0c PHP xff0c Python等等类似 xff0c 关系型数据库也是有函数的 xff0c 函数指的是动态的封装一部分特定功能的集合 例如 xff0c 查询
  • 元学习系列(一):Siamese Network(孪生网络)

    目前有一种说法认为 xff0c 深度学习模型在数据量较大的情况下才能取得较好的效果 xff0c 当数据量较少 xff0c 更偏向于使用传统的机器学习模型 想办法从深度学习的方向构建模型 xff0c 使得模型在数据量较小的情况下也能取得较好效