第一天:Python元学习——通用人工智能的实现

news2024/11/16 3:25:51

文章目录

  • 0 封面
  • 1 第一章:元学习简介
    • 1.1 元学习与少样本学习
    • 1.2 元学习的类型——学习度量空间
    • 1.3 学习初始化
    • 1.4 学习优化器
    • 1.5 通过梯度下降来学习如何通过梯度下降来学习
  • 2 第二章:使用孪生网络进行人脸识别与音频视频
    • 2.1 什么是孪生神经网络
      • 孪生神经网络的架构图
      • 2.1.1 孪生网络的架构
    • 2.2 使用孪生网络进行人脸识别
      • 数据集建立
      • 构建孪生网络
        • 首先定义基网络:用于提取特征的卷积网络
        • 其次定义能量函数,计算距离
        • 选择优化函数,并定义模型
        • 选择损失函数,并编译模型
        • 定义一个函数来计算准确率
    • 2.3 使用孪生网络进行音频识别
      • 构建基网络
      • 使用欧式距离作为能量函数
      • 确定优化函数
      • 确定损失函数

学习前两章内容,主要是围绕孪生网络展开

0 封面

在这里插入图片描述

1 第一章:元学习简介

在这里插入图片描述

  1. 随着生成对抗网络和胶囊网络等优秀算法的出现,深度学习得到了快速的发展。
  2. 但是使用深度学习网络解决A任务时,假设A任务和B任务接近,但是深度神经网络也是要从头开始训练B任务的。
  3. 元学习的目的是:“让机器学会学习”。也就是对于一个新任务,元学习模型可以利用之前从相关任务中获得的知识,也就是说无需从零开始训练。

1.1 元学习与少样本学习

在这里插入图片描述

  1. 少样本学习(few-shot learning)或k 样本学习(k-shot learning)指的是利用较少的数据点进行学习,其中k 表示数据集各个类别中数据点的数量。
  2. 单样本学习:一张猫,一张狗
  3. 10样本学习:十张猫,十张狗

1.2 元学习的类型——学习度量空间

  1. 在基于度量的元学习场景中,学习合适的度量空间。
  2. 基于度量的场景中,使用一个简单的神经网络从两幅图像中提取特征(第一步),并通过计算两幅图像特征之间的距离找到相似性。
  3. 这种方法被广泛应用于数据点较少的少样本学习中。

1.3 学习初始化

  • 一般的:我们首先初始化随机权重,计算损失,并通过梯度下降来最小化损失。因此,我们将通过梯度下降找到最优权重,使损失最小。
  • 元学习:不随机初试化权重,而是使用最优值或者接近最优质的值来初试化权重,那么就可以更快的收敛,并快速学习。

1.4 学习优化器

  • 一般如何优化神经网络呢?——通过基于大数据集的训练来优化升级网络,并使用梯度下降来最小化损失。
  • 在少样本的学习场景中:梯度下降失效了,由于数据集小。所以我们学习优化器本身。

A:试图学习的基网络
B:优化基网络的元网络

1.5 通过梯度下降来学习如何通过梯度下降来学习

  1. 基础知识:元学习是让机器学会学习。
  2. 一般的,我们都是通过梯度下降来计算损失和最小化损失,以训练神经网络。所以是使用梯度下降来优化模型。
  3. 在元学习中,梯度下降失效了,我们能自动学习这个过程吗?

用递归神经网络(RNN)来代替传统的梯度下降优化器。

中心思想:用RNN 代替梯度下降法。
那么如何优化RNN呢?——用梯度下降法。

也就是说,元学习模型用RNN来优化模型,其中RNN的优化需要依靠梯度下降法。
也就解释了通过梯度下降(训练RNN)来学习如何通过梯度下降来学习

称RNN为优化器,基网络为优化对象。


2 第二章:使用孪生网络进行人脸识别与音频视频

在这里插入图片描述

孪生神经网络:基于度量的单样本学习算法,如何从很少数据点中学习,以及如何来解决低数据问题。

2.1 什么是孪生神经网络

  1. 孪生神经网络主要用于各类别数据点较少的应用中。

  2. 孪生神经网络大致上由两个对称的神经网络组成,它们具有相同的权重和架构,最后由能量函数 E E E 连接在一起。

  3. 孪生神经网络的目标是——了解两个输入值是否相似。

孪生神经网络的架构图

  • 网络A 和网络B 具有相同的权重和架构,作用是为输入数据生成嵌入(embedding),即特征向量(feature vector)。因此可以使用任意产生嵌入的网络。【也就是说要提取特征】

  • 能量函数会输出这两个输入的相似程度,可以使用任意相似性度量,如欧式距离或余弦相似度。

在这里插入图片描述

总的来说,孪生网络不仅用于人脸识别,还 广泛用于数据点较少的应用以及需要学习两个输入之间相似性的任务中。

2.1.1 孪生网络的架构

在这里插入图片描述

从上图可以看出,能量函数选择的是欧式距离

欧式距离对应l2范数。
在这里插入图片描述

如何训练孪生神经网络呢?
数据如何组织呢?
特征和标签是什么呢?
我们的目标函数是什么呢?

在这里插入图片描述
在这里插入图片描述

我们的损失函数是什么呢?
由于孪生网络的目标不是执行分类任务,而是理解两个输入值之间的相似性,因此我们使用了对比损失函数。

在这里插入图片描述

2.2 使用孪生网络进行人脸识别

孪生网络的目的是了解两张脸相似与否。

数据集建立

数据格式:输入值成对,并且带有标签

在这里插入图片描述


有了成对的数据以及标签,就可以训练孪生网络了。

  • 第一步:我们将图像对中的一个图像输入网络A,另一个图像输人网络B。这两个网络的作用只是提取特征向量。

  • 第二步:我们使用带有整流线性单元 ( rectified linear unit, ReLU ) 激活函数的两个卷积层提取特征。

  • 第三步:把两个网络输出的特征向量输入能量函数,用于测量相似度(用欧氏距离作为能量函数)。

因此,我们通过输入图像对来训练网络,以学习它们之间的语义相似度。

在这里插入图片描述

至此,训练集和测试集已经成功生成。

构建孪生网络

首先定义基网络:用于提取特征的卷积网络

我们建立两个均带有ReLU 激活函数和最大池化(max pooling)的卷积层与一个扁平化层(flat layer):

def build_base_network(input_shape):
	seq = Sequential()  # 线性层
	nb_filter = [6, 12]
	kernel_size = 3
	#卷积层1
	seq.add(Convolution2D(nb_filter[0], kernel_size, kernel_size,input_shape=input_shape,border_mode='valid', dim_ordering='th'))  # 2维卷积,过滤器是6*3*3
	seq.add(Activation('relu'))  # relu激活
	seq.add(MaxPooling2D(pool_size=(2, 2)))  # 最大池化
	seq.add(Dropout(.25)) # dropout层
	
	#卷积层2
	seq.add(Convolution2D(nb_filter[1], kernel_size,kernel_size,border_mode='valid', dim_ordering='th'))  # 2维卷积,过滤器是12*3*3
	seq.add(Activation('relu'))
	seq.add(MaxPooling2D(pool_size=(2, 2),dim_ordering='th'))
	seq.add(Dropout(.25))
	
	#扁平化层
	seq.add(Flatten())
	seq.add(Dense(128, activation='relu'))
	seq.add(Dropout(0.1))
	seq.add(Dense(50, activation='relu'))
	return seq

把图像输入基网络,基网络返回嵌入,即特征向量。

其次定义能量函数,计算距离

这里选取欧式距离作为能量函数:

def euclidean_distance(vects):
	x, y = vects
	return K.sqrt(K.sum(K.square(x - y), axis=1, keepdims=True))

选择优化函数,并定义模型

epochs = 13
rms = RMSprop()
model = Model(input=[input_a, input_b], output=distance)

选择损失函数,并编译模型

def contrastive_loss(y_true, y_pred):
	margin = 1
	return K.mean(y_true * K.square(y_pred) + (1 - y_true) *  K.square(K.maximum(margin - y_pred, 0)))
	
model.compile(loss=contrastive_loss, optimizer=rms)

在这里插入图片描述

定义一个函数来计算准确率

def compute_accuracy(predictions, labels):
	return labels[predictions.ravel() < 0.5].mean()

2.3 使用孪生网络进行音频识别

在这里插入图片描述
在这里插入图片描述

那么如何将这些原始音频输入网络中呢?
如何从原始音频中提取有意义的特征呢?

众所周知,神经网络只接受向量化的输入,因此需要将音频转换为数组输入,再转化为特征向量。

在这里插入图片描述
然后就是打标签的过程了,省略。

注意:由于不同音频的音频嵌入长度各不相同,假设最大程度为400,小于400则使用0来填充。

构建基网络

使用3个dense层,中间有一个dropout层。

def build_base_network(input_shape):
	input = Input(shape=input_shape)
	x = Flatten()(input)
	x = Dense(128, activation='relu')(x)
	x = Dropout(0.1)(x)
	x = Dense(128, activation='relu')(x)
	x = Dropout(0.1)(x)
	x = Dense(128, activation='relu')(x)
	return Model(input, x)

使用欧式距离作为能量函数

def euclidean_distance(vects):
	x, y = vects
	return K.sqrt(K.sum(K.square(x - y), axis=1, keepdims=True))

确定优化函数

epochs = 13
rms = RMSprop()
model = Model(input=[audio_a, audio_b], output=distance)

确定损失函数

def contrastive_loss(y_true, y_pred):
	margin = 1
	return K.mean(y_true * K.square(y_pred) + (1 - y_true) * K.square(K.maximum(margin - y_pred, 0)))

model.compile(loss=contrastive_loss, optimizer=rms)

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

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

相关文章

机器学习与数据挖掘——数据预处理

如果有兴趣了解更多相关内容&#xff0c;欢迎来我的个人网站看看&#xff1a;瞳孔空间 一&#xff1a;关于数据预处理 在工程实践中&#xff0c;我们得到的数据会存在有缺失值、重复值等&#xff0c;在使用之前需要进行数据预处理。数据预处理没有标准的流程&#xff0c;通常…

Kaldi的简单介绍和基本使用说明

Kaldi的简单介绍和基本使用说明前言一、ASR简介1.语音识别系统特征提取&#xff1a;声学模型发音词典语言模型语音解码2. ASR项目二、Kaldi简介三、Kaldi项目的结构四、Kaldi的安装1. 安装依赖的几个系统开发库2. 安装依赖的第三方工具库3. 编译Kaldi代码配置Kaldi编译Kaldi五、…

Python-进程和线程

张钊*&#xff0c;沈啸彬*, 王旭* 李月&#xff0c;曹海艳&#xff0c; (淮北师范大学计算机科学与技术学院&#xff0c;淮北师范大学经济与管理学院&#xff0c;安徽 淮北) *These authors contributed to the work equllly and should be regarded as co-first authors. &a…

智能电网中需求响应研究(Matlab代码实现)

目录 1 概述 2 运行结果 ​编辑 ​编辑 3 参考文献 4 Matlab代码实现 1 概述 智能电网需求响应可以降低电网高峰用电需求、提高电网运行稳定性和可靠性&#xff0c;尤其是通过需求响应实现电网接纳间歇性可再生能源发电的能力。 需求响应的全球进展及产生的效益等情况在…

SDUT—Python程序设计实验1011(面向对象)

7-1 sdut-oop-2 Shift Dot(类和对象&#xff09; 给出平面直角坐标系中的一点&#xff0c;并顺序给出n个向量&#xff0c;求该点根据给定的n个向量位移后的位置。 设计点类Point&#xff0c;内含&#xff1a; &#xff08;1&#xff09;整型属性x和y&#xff0c;表示点的横坐标…

数据可视化之交通可视化

一 前言 智慧城市的概念自 2008年提出以来&#xff0c;在国际上引起广泛关注&#xff0c;并持续引发了全球智慧城市的发展热潮。智慧城市已经成为推进全球城镇化、提升城市治理水平、破解大城市病、提高公共服务质量、发展数字经济的战略选择。近年来&#xff0c;我国智慧城市…

rxjs pipeable operators(上)

rxjs pipeable operators&#xff08;上&#xff09; A Pipeable Operator is a function that takes an Observable as its input and returns another Observable. It is a pure operation: the previous Observable stays unmodified. 一个 Pipeable Operator 是一个接受一个…

Ubuntu空间不足,如何扩容

目录 1、硬盘操作步骤 2、Ubuntu命令操作&#xff1a;安装分区管理工具 3、分区结果展示 1、硬盘操作步骤 最近发现Ubuntu空间不足&#xff0c;怎么去扩容呢&#xff1f;第一步&#xff1a;点击【硬盘】 第二步&#xff1a;点击【扩展】 第三步&#xff1a;修改【最大磁盘…

创新洞察丨消费品牌D2C生存发展的3大差异化策略

在过去六年中&#xff0c;DTC 品牌的销售额增长了两倍&#xff0c;但另一个事实是&#xff0c;他们花费了数十亿美元于营销投入&#xff0c;品牌知名度却不见增长。Lego 创意总监James Gregson认为&#xff0c;在同质化的DTC品牌崛起之下&#xff0c;打造品牌差异成为生存的关键…

Jsp 学习笔记

代码可参考: Demo地址 1 入门 1.1 环境搭建 创建moven项目目录结构如下 1.2 依赖配置 <!-- 依赖 --> <dependencies><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>…

PyQt5可视化编程-图形界面开发工具QtDesigner和PyUIC

一、概述 Qt库是跨平台的 C库的集合&#xff0c;是最强大的 GUI库之一&#xff0c;可以实现高级 API来访问桌面和移动系统的各种服务。PyQt5是一套 Python绑定 Digia QT5应用的框架。PyQt5实现了一个 Python模块集&#xff0c;有 620个类&#xff0c;6000个函数和方法。PyQt5的…

【Oracle篇】Oracle集群-rac模式

Oracle rac模式 RAC(real application clusters) 整个集群系统又分为 oracle Clusterware (集群就绪软件)和 Real Application(RA) 两大部分组成。 基本架构 rac 是 Oracle 数据库的高可用集群。传统数据库一个实例一个数据库&#xff0c; RAC 是多个实例&#xff0c;一个数…

四、值类型 和 引用类型

文章目录1、值类型 和 引用类型2、栈 和 堆3、特殊的引用类型 string4、通过 Debug调试 验证 string 的特殊1、值类型 和 引用类型 引用类型&#xff1a;string、数组、类 - 堆 值类型&#xff1a;其他的都是值类型 - 栈 2、栈 和 堆 栈空间&#xff1a;系统分配&#xff0…

Bootstrap5 教程

Bootstrap5 教程 Bootstrap 是全球最受欢迎的前端组件库&#xff0c;用于开发响应式布局、移动设备优先的 WEB 项目。 Bootstrap5 目前是 Bootstrap 的最新版本&#xff0c;是一套用于 HTML、CSS 和 JS 开发的开源工具集。它支持 Sass 变量和 mixins、响应式网格系统、大量的预…

HTML+CSS+JS鲜花商城网页设计期末课程大作业 web前端开发技术 web课程设计 网页规划与设计

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Java项目:ssm开发的Java快递代拿系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 使用技术 采用 Spring SpringMVC MyBatisPlus&#xff0c;连接池采用 Druid&#xff0c;安全框架使用 Shiro&#xff0c;前端采用 Bootstrap layer 实…

浅谈推荐系统之内容推荐

推荐系统概念相关 维基百科定义&#xff1a; 推荐系统是一种信息过滤系统&#xff0c;用于预测用户对物品的“评分”或“偏好”。 推荐系统近年来非常流行&#xff0c;应用于各行各业。推荐的对象包括&#xff1a;电影、音乐、新闻、书籍、学术论文、搜索查询、分众分类、以及…

vmware: 磁盘加载问题导致,emergency mode: login incorrect 滚动打印

文章目录问题调试&解释异常日志为什么进入Emergency shell 呢为什么local-fs.target 失败为什么storage.mount 超时服务单元的依赖关系那最后进入emergency mode 为什么会滚Login Incorrect 日志呢plymouthsystemd-sulogin-shellsulogin解决问题 VM虚拟机启动不正常。正常…

[附源码]计算机毕业设计作业查重系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计疫情管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…