吴恩达deeplearning.ai:数据增强数据合成迁移学习

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏
让我们看看为你的程序添加数据的技巧。在构建神经网络的时候,我们总是想要更多的数据,但是获取更多的数据往往是十分昂贵又缓慢的。相反地,添加数据的另一种方法是专注于添加有帮助的数据。
在上一篇博客之中,我们提到了垃圾邮件识别器,其中解决提高系统性能的方法之一就是添加专门的某种类型数据,从而增强神经网络的性能。如今,研究人员如果发现神经网络在某种特定的数据上表现特别差,有一种方法能够做到只添加一点点数据,就可以大幅增强神经网络的表现,这叫做数据增强

文章目录

  • 数据增强 Data Augmentation
    • 手写识别
    • 语音识别
  • 数据合成
  • 迁移原理
    • 原理


数据增强 Data Augmentation

手写识别

例如,如果你在做一个字母识别的神经网络,希望神经网络能够更好地识别字母A,那么你除了传入一张字母A作为数据,还可以将这张图片旋转一定角度,从而产生一个新的示例;或者将图片放大或者缩小一点;或者改变图片的对比度;如果不是对称图形,你也可以添加它的镜像等等。
在这里插入图片描述
另外一种常用的方法是,将图像放在网格之上,之后随机扭曲图像:
在这里插入图片描述

语音识别

数据增强也适用于语音识别之中。
你可以给原始语音添加噪音、汽车声、不同的背景音乐:
在这里插入图片描述
数据增强的一个技巧是,对数据做的更改或扭曲应该代表训练集中的噪声或扭曲。
如果你对示例的更改在测试集不常遇到,那么其实对数据的帮助是有限的。因此,考虑数据增强的一种方法是思考如何在扭曲、更改或在数据中增加更多的噪音,即让你的训练集能够和测试集更加相似。其中有一种技术叫做数据合成(data synthesis),让你可以从头开始构建新的示例。

数据合成

让我们以照片OCR为例,它的作用是自动读取图片并且能够读取出其中的文字。
在这里插入图片描述
以上是OCR中的一个真实数据,我们该怎么做呢?
任务的一个关键人物就是能从图中读出各个字母的小图像并识别出图中的字母:
在这里插入图片描述
因此你创建人工数据的方法就是利用计算机中自带的文本编辑器,然后交给神经网络去学习,从而你可以合成类似下图的字母,看起来和上图真的很类似:
在这里插入图片描述
通过合成数据生成,能够为神经网络提供大量数据,从而很快地提高应用性能。
过去几十年之中,大部分研究人员的注意力都集中在传统的以模型为中心的基础上,因此对于数据都会下载固定的数据集,从而专注于改进算法或者模型,但其实专注于数据的处理也是一条很有前景的道路。
在这里插入图片描述
对于没有那么多数据的程序,使用迁移学习从而使用其它不同任务的数据是个很好的方法。以下是迁移学习的工作原理。

迁移原理

假设你想要做一个手写字识别的项目,但是你没有那么多的标记数据。而假设你找到了个非常大的数据集,其中包含一百万张猫,狗,人,汽车的照片等一千个类别。然后,你可以在这个数据集上,让你的神经网络训练这1000个物品的任意一个,你将获得一系列的w,b参数。之后你要做的,是将这些参数直接插入你手写识别的神经网络之中,只是输出层的参数不能使用,因为你的分类从1000变成了手写识别的十个,之后,再重新训练网络。
在这里插入图片描述
之后,你就有两种选择,第一种,只重新训练输出层的参数,这适用于你的神经网络参数真的很小的情况下,第二种,是在前四层不懂的基础上再往后面训练一个神经网络,这适用于神经网络还是有一定量的数据集的情况下。这种方法就叫做迁移学习,即将神经网络的的早期层学习一些合理的参数集,然后将这些参数转移到新的神经网络之中,这样我们就可以进一步学习一点点,最后被优化为一个非常好的模型。
其中,这在其它神经网络上获得参数的过程叫做监督预训练;第二步叫做微调,即优化获得的参数从而使得其能够变为专门应用于手写数字识别的应用。
另一个好处是,你也许不需要亲自进行预训练。因为网上有很多研究者已经训练好的神经网络,你可以直接使用,然后将输出层替换为自己需要的就行了。

原理

为什么识别猫猫狗狗的深度学习网络最后可以识别手写数字呢?这与算法背后的直觉有关。
在这里插入图片描述
以上是一些原因,由于神经网络的早期层基本上都是进行一些边,角落还有基本图形的处理。因此在不同的数据集上其实是有共通性的。
但是迁移学习的一个限制是图像类型x必须于你预训练的图片类型相同,即图片尺寸相同。例如如果你要构建一个语音识别系统,那么以上数据集的参数可能就没什么帮助了。
当你预训练的数据集很大,而自己的数据集较小时,效果往往会更好
在这里插入图片描述
为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android耗电分析之Battery Historian工具使用

Battery-Historian是谷歌推出的一款专门分析Bugreport的工具,是谷歌在2015年I/O大会上推出的一款检测运行在android5.0(Lollipop)及以后版本的设备上电池的相关信息和事件的工具,是一款对于分析手机状态,历史运行情况很好的可视化分析工具。 …

Flink实时数仓之用户埋点系统(一)

需求分析及框架选型 需求分析数据采集用户行为采集业务数据采集 行为日志分析用户行为日志页面日志启动日志APP在线日志 业务数据分析用户Insert数据用户Update数据 技术选型Nginx配置Flume配置MaxWellHadoopFlink架构图 需求分析 数据采集 用户行为采集 行为数据&#xff1…

IR 召回测试数据集——MS MARCO

如何评估召回系统的好坏?如何评估检索系统是否有提升?在任何人面前,空口无凭。 我们需要一把尺子来衡量。我们需要一个高质量的测试数据集合。每次都在相同的测试数据集上,进行评测。本篇文章介绍一个高质量的应为的测试数据集——…

蓝桥杯集训·每日一题2024 (差分)

前言&#xff1a; 差分笔记以前就做了&#xff0c;在这我就不再写一遍了&#xff0c;直接上例题。 例题&#xff1a; #include<bits/stdc.h> using namespace std; int a[10009],b[100009]; int main(){int n,ans10,ans20;cin>>n;for(int i1;i<n;i){cin>>…

C++复习笔记——泛型编程模板

01 模板 模板就是建立通用的模具&#xff0c;大大提高复用性&#xff1b; 02 函数模板 C另一种编程思想称为 泛型编程 &#xff0c;主要利用的技术就是模板 C 提供两种模板机制:函数模板和类模板 函数模板语法 函数模板作用&#xff1a; 建立一个通用函数&#xff0c;其函…

透视和仿射变换的区别

仿射变换矩阵通常是2x3的矩阵。 三个特点&#xff1a; 直线依然是直线平行线依然平行 [ x ′ y ′ 1 ] [ a 11 a 12 b 1 a 21 a 22 b 2 0 0 1 ] [ x y 1 ] x ′ a 11 ∗ x a 12 ∗ y b 1 y ′ a 21 ∗ x a 22 ∗ y b 2 \begin{gathered} \begin{bmatrix}x\\y\\1\end{b…

Linux Ubuntu系统安装MySQL并实现公网连接本地数据库【内网穿透】

文章目录 前言1 .安装Docker2. 使用Docker拉取MySQL镜像3. 创建并启动MySQL容器4. 本地连接测试4.1 安装MySQL图形化界面工具4.2 使用MySQL Workbench连接测试 5. 公网远程访问本地MySQL5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 前言 本文主…

LeetCode每日一题 二叉树的最大深度(二叉树)

题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;root [1,nul…

【异常处理】Vue报错 Component template should contain exactly one root element.

问题描述 启动VUE项目后控制台报错&#xff1a; Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.翻译为&#xff1a;组件模板应该只包含一个根元素 查看vue代码&#xff0…

spring-jpa

一、介绍 1.1ORM 1.2 Java Persistence API 放在javaee版本 优点 支持持久化复杂的Java对象&#xff0c;简化Java应用的对象持久化开发支持使用JPQL语言进行复杂的数据查询使用简单&#xff0c;支持使用注解定义对象关系表之间的映射规范标准化&#xff0c;由Java官 方统一规…

nmaptocsv.py脚本无法处理结果的备用工具

python nmaptocsv.py -i test.nmap -f ip-fqdn-port-protocol-service-version。 一: 使用背景&#xff1a; 使用一些其他的端口扫描软件&#xff0c;指纹识别可能有些端口 如一次&#xff1a;11011端口是mysql数据库但是别的软件扫不出来是mysql&#xff0c;借助nmap对1101…

火爆全网,软件测试数据库常用 SQL 语句总结,你要的我都有......

前言 直接上干货 数据定义语言(DDL) 主要负责数据库、数据表、视图、键、索引等结构化的操作 常用的语句有&#xff1a;CREATE DATABASE、CREATE TABLE、ALTER TABLE等 字段的常用约束有&#xff1a;PRIMARY KEY、FOREIGN KEY、NOT NULL、UNIQUE、AUTO_INCREMENT、DEFAULT 常…

应用案例 | Softing echocollect e网关助力汽车零部件制造商构建企业数据库,提升生产效率和质量

为了提高生产质量和效率&#xff0c;某知名汽车零部件制造商采用了Softing echocollect e多协议数据采集网关——从机器和设备中获取相关数据&#xff0c;并直接将数据存储在中央SQL数据库系统中用于分析处理&#xff0c;从而实现了持续监控和生产过程的改进。 一 背景 该企业…

Vue开发实例(四)Element-UI部分组件使用方法

Element-UI的使用 一、Icon图标的使用1、用 i 标签使用图标 二、用 el-button 使用图标1、使用type定义样式2、使用plain定义样式3、使用round定义样式4、使用circle定义样式5、带图标和文字的按钮6、按钮禁用7、文字按钮8、按钮组9、加载中 三、Link 文字链接1、基础用法2、禁…

springboot245科研项目验收管理系统

科研项目验收管理系统 摘 要 使用旧方法对科研项目信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在科研项目信息的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。这次…

FreeROTS day2

总结DMA空闲中断接收数据的使用方法 首先要要选择串口然后配置串口的参数&#xff0c;配置MDA通道选择接受数据&#xff0c;配置空闲中断&#xff0c;定义一个数据接收的容器&#xff0c;启动MDA传输当串口收到数据时MDA将数据传输到容器中,MDA会一直检测是否有数据当有数据并…

数据结构界的终极幻神----树

目录 一.数的概念和分类 种类 二.重点概念 哈希树: 二叉树的线索化 什么是线索化 为什么要线索化 特殊的查找树 完全二叉树 三.手撕完全二叉树(堆) 重点讲解 向上搜索算法 向下搜索算法 一.数的概念和分类 树&#xff08;tree&#xff09;是包含 n(n≥0) [2] 个节…

使用lnmp环境部署laravel框架需要注意的点

1&#xff0c;上传项目文件后&#xff0c;需要chmod -R 777 storage授予文件权限&#xff0c;不然会报错file_put_contents(/): failed to open stream: Permission denied。 如果后面还是报错没有权限的话&#xff0c;就执行ps -ef |grep php查询php运行用户。然后执行chown …

express基础

express express介绍 官网传送门基于 Node.js 平台&#xff0c;快速、开放、极简的 Web 开发框架express特点 Web 应用 Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架&#xff0c;它提供一系列强大的特性&#xff0c;帮助你创建各种 Web 和移动设备应用。…

Mac 以SH脚本安装Arthas

SH脚本安装Aethas curl -L https://alibaba.github.io/arthas/install.sh | sh安装脚本说明 示例源文件&#xff1a; #! /bin/bash# temp file of as.sh TEMP_ARTHAS_FILE"./as.sh.$$"# target file of as.sh TARGET_ARTHAS_FILE"./as.sh"# update timeo…