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

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

文章目录

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


数据增强 Data Augmentation

手写识别

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

语音识别

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

数据合成

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

迁移原理

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

原理

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

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

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

相关文章

Dockerfile(6) - EXPOSE 指令详解

EXPOSE 通知 Docker 容器在运行时监听指定的网络端口 EXPOSE 端口号 EXPOSE 端口号/协议 默认协议是 TCP 同时在 TCP、UDP 上暴露端口 EXPOSE 80/tcp EXPOSE 80/udp EXPOSE 原理 个人理解:EXPOSE 暴露的端口更像是指明了该容器提供的服务需要用到的端口EXPOSE…

蓝桥杯2017年第八届真题-分巧克力

目录 题目描述 输入格式 输出格式 样例输入 样例输出 原题链接 代码实现 题目描述 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需…

元素之间的空白问题

1. 元素之间的空白问题 产生的原因: 行内元素、行内块元素,彼此之间的换行会被浏览器解析为一个空白字符。 解决方案: 方案一: 去掉换行和空格(不推荐)。方案二: 给父元素设置 font-size:0,再给…

如何加速访问NexusMods网站

下载Steam(Watt Toolkit) 到steam官网下载https://steampp.net/ 使用Steam加速Nexus 打开Steam点击网络加速,点击平台加速,勾选Nexus Mods,以及下面的所有子项,如何点击一键加速。 注意事项 如果加速效果不好可以尝试切换加…

大数据和机器学习在气象预报中的应用-张平文院士

报告链接:张平文院士 -- 大数据和机器学习在气象预报中的应用_哔哩哔哩_bilibili

Ansible 基础入门

2)Ansible 介绍 Ansible 基本概念 Ansible 是一种自动化运维工具,基于 Paramiko 开发的,并且基于模块化工作,Ansible 是一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,它是基于 Python 语言&#xf…

CXYGZL实现钉钉、飞书和微信全面覆盖!!!

非常欣慰能在这里与大家分享,CXYGZL已圆满实现多端互通的目标!!! 无论您是在手机、电脑还是平板上使用钉钉、企微还是飞书,只需将CXYGZL轻松集成到您的办公软件中,即可实现无缝审批处理各项任务&#xff0c…

【性能优化】前端实际项目中的缓存应用

缓存是什么? 缓存是一种保存资源副本的技术,这样当用户再次访问网站时,可以直接从缓存中获取资源,而不是从服务器重新下载。这就像是我们看过的电影,如果记得剧情就不用再看一遍一样。 基本的缓存类型 浏览器缓存&a…

Polar 写shell

Polar 写shell 直接给了源码 还是没啥好说的&#xff0c;考点是die()死亡函数绕过之不同变量 **绕过原理&#xff1a; **通过base64解密或rot13解密使"<?php exit();"变为乱码&#xff0c;而传入的$content为base64编码&#xff0c;解码后为正常shell语句。通过…

自封装 bind 方法(一)

因为 bind 的使用方法是 某函数.bind(某对象&#xff0c;...剩余参数) 所以需要在 Function.prototype 上进行编程将传递的参数中的某对象和剩余参数使用 apply 的方式在一个回调函数中执行即可要在第一层获取到被绑定函数的 this&#xff0c;因为要拿到那个函数用 apply /***…

Java面试篇【并发编程】常见面试题(2024最新)

Java并发编程常见面试题 1.什么是线程和进程&#xff1f; 进程是操作系统分配资源的最小单位&#xff0c;各个进程之间占据独立的寻址空间&#xff0c;运行也是独立运行&#xff0c;进程间通信需要一些机制。进程间切换需要的开销较大。 线程是程序执行的基本单位&#xff0c…

聊一聊ThreadLocal的原理?

1.ThreadLocal创建方式 ThreadLocal<String> threadlocal1 new ThreadLocal(); ThreadLocal<String> threadlocal2 new ThreadLocal(); ThreadLocal<String> threadlocal3 new ThreadLocal(); 2.首先介绍一下&#xff0c;ThreadLocal的原理&#xff1a; 如…

使用Python监测网络连接和网速

大家好&#xff0c;网络连接和网速在工作中非常重要&#xff0c;本文将介绍如何使用Python程序来监测互联网连接的速度和中断情况。 1.导入所需库文件 首先&#xff0c;需要导入以下库&#xff1a; import speedtest import time from datetime import datetime这里选择了第…

关于 node 权限问题

执行npm install 命令错误-ERRNO-4080_npm err! if you believe this might be a permission-CSDN博客

JavaScript常见的DOM操作

文档对象模型 (DOM) 是 HTML 和 XML 文档的编程接口 常见的操作分为 创建节点 查询节点 更新节点 添加节点 删除节点 创建节点 createElement 创建新元素&#xff0c;接受一个元素&#xff0c;即要创建元素的标签名 createTextNode 创建一个文本节点 获取节点 qu…

Qt+Opencv实现视频二维码检测

编译器&#xff1a;Qt 5.12.2Visual Studio 2015 视觉库&#xff1a;OpenCV 4.5.5 能够加载MP4格式视频、读取、定位二维码并输出与反馈信息的软件 需要演示Demo可私信

《幸运的基督徒》Python

题目描述 有15个基督徒和15个非基督徒在海上遇险&#xff0c; 为了能让一部分人活下来不得不将其中15个人扔到海里面去&#xff0c; 有个人想了个办法就是大家围成一个圈&#xff0c;由某个人开始从1报数&#xff0c; 报到9的人就扔到海里面&#xff0c;他后面的人接着从1开始报…

软件测试相关概念和bug的相关总结

文章目录 什么是测试什么是需求测试用例(CASE)什么是BUG软件的生命周期开发模型瀑布模型螺旋模型增量模型和迭代模型 敏捷测试模型v模型W模型(双V模型) 软件测试的生命周期如何描述一个bugbug的级别bug的生命周期.产生争执怎么办 什么是测试 测试是测试人员用来检验软件的实际运…

Redis基本概念

什么是Redis 官方文档 Redis(Remote Dictionary Server) Redis 是一个开源的使用 ANSIC 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库&#xff0c;并提供多种语言的 API 的非关系型数据库。 传统数据库遵循 ACID 规则。而 Nosql&…

最长异或路径 ---- (字典树求异或最大)

目录 最长异或路径&#xff1a; 题目大意&#xff1a; 思路解析&#xff1a; 代码实现&#xff1a; 最长异或路径&#xff1a; 题目大意&#xff1a; 思路解析&#xff1a; 现在假设有一棵这样的树&#xff0c;我们并不关心每条边的路径权值为多少&#xff0c;假设划红线的…