关于深度学习,这些知识点你需要了解一下

    深度学习概述

o    受限玻尔兹曼机和深度信念网络

o    Dropout

o    处理不平衡的技巧

o    SMOTE:合成少数过采样技术

o    神经网络中对成本敏感的学习

深度学习概述

2006年之前,训练深度监督前馈神经网络总是失败的,其主要原因都是导致过度拟合,即训练错误减少,而验证错误增加。

深度网络通常意味着具有多于1个隐藏层的人工神经网络。训练深层隐藏层需要更多的计算能力,具有更深的深度似乎更好,因为直觉神经元可以使用下面图层中的神经元完成的工作,从而导致数据的分布式表示。

Bengio 认为隐藏层中的神经元可被看作是其下面的层中的神经元所学到的特征检测器(feature detector)。这个结果处于作为一个神经元子集的更好泛化(generalization)中,而这个神经元子集可从输入空间中的特定区域的数据上进行学习。

而且,由于相同功能所需的计算单元越少,效率就越高,所以更深的架构可以更高效。分布式背后的核心思想是共享统计优势,将不同架构的组件重用于不同的目的。

深度神经架构是由多个利用非线性操作的层组成的,例如在带有许多隐藏层的神经网络中。数据集中常常存在各种变化的因素,例如数据各自的性质经常可能独立地变化。

深度学习算法可以获取解释数据中的统计变化,以及它们如何相互作用以生成我们观察到的数据类型。较低层次的抽象更直接地与特定的观察联系在一起,另一方面,更高层次的更抽象,因为他们与感知数据的联系更加偏远。

深度架构学习的重点是自动发现从低级特征到更高级别概念的抽象。算法可以在不需要手动定义必要抽象的情况下启用发现这些定义。

数据集中的训练样本的多样性必须至少与测试集中的一样多,否则算法就不能一概而论。深度学习方法旨在学习特征层次结构,将更低层次的特征组合成更高层次的抽象。

具有大量参数的深度神经网络是非常强大的机器学习系统。但是,过度拟合在深度网络中是一个严重的问题。过度拟合是指当验证错误开始增加而训练错误下降时。Dropout是解决这个问题的正则化技术之一,这将在后面讨论。

今天,深度学习技术取得成功的最重要因素之一是计算能力的提高。图形处理单元(GPU)和云计算对于将深度学习应用于许多问题至关重要。

云计算允许计算机集群和按需处理,通过并行训练神经网络来帮助减少计算时间。另一方面,GPU是用于高性能数学计算的专用芯片,加速了矩阵的计算。

06-07这一年,三篇论文彻底改变了深度学习的学科。他们工作中的关键原则是每层都可以通过无监督学习进行预先训练,一次完成一层。最后,通过误差反向传播的监督训练微调所有层,使得这种通过无监督学习进行的初始化比随机初始化更好。

受限玻尔兹曼机和深度信念网络

其中有一种无监督算法是受限玻尔兹曼机(RBM),可用于预训练深层信念网络。RBM是波尔兹曼机的简化版本,它的设计灵感来自于统计力学,它可以模拟给定数据集的基本分布的基于能量的概率,从中可以得出条件分布。

玻尔兹曼机是随机处理可见单元和隐藏单元的双向连接网络。原始数据对应于'可见'神经元和样本到观察状态,而特征检测器对应'隐藏'神经元。在波尔兹曼机中,可见神经元为网络和其运行环境提供输入。训练过程中,可见神经元被钳制(设置成定义值,由训练数据确定)。另一方面,隐藏的神经元可以自由操作。

然而,玻尔兹曼机因为其连通性而非常难以训练。一个 RBM 限制了连通性从而使得学习变得简单。在组成二分图(bipartite graph)的单层中,隐藏单元没有连接。它的优势是隐藏单位可以独立更新,并且与给定的可见状态平行。

这些网络由确定隐藏/可见状态概率的能量函数控制。隐藏/可见单位的每个可能的连接结构( joint configurations )都有一个由权重和偏差决定的 Hopfield 能量。连接结构的能量由吉布斯采样优化,它可通过最小化 RBM 的最低能量函数学习参数。

ab08c4164c03db086a85e5a232593d177f8a8fae

在上图中,左层代表可见层,右层代表隐藏层。

在深度信念网络(DBN)中,RBM由输入数据进行训练,输入数据具有隐藏层中随机神经元捕获的输入数据的重要特征。在第二层中,训练特征的激活被视为输入数据。第二个RBM层的学习过程可以看作是学习特征的特征每次当一个新的层被添加到深度信念网络中时,原始训练数据的对数概率上的可变的更低的界限就会获得提升。

7ef3aa63b7f31f8d506e135ca7534d540239c54a

上图显示了RBM将其数据分布转换为隐藏单元的后验分布。

随机初始化RBM的权重,导致px)和qx)的分布差异。学习期间,迭代调整权重以最小化px)和qx)之间的误差。qx)是原始数据的近似值,px)是原始数据。

调整来自神经元和另一神经元的突触权重的规则不依赖于神经元是可见的还是隐藏的。由RBM层更新的参数被用作DBN中的初始化,通过反向传播的监督训练来微调所有层。

对于KDD Cup 1999IDS数据,使用多模态(Bernoulli-GaussianRBM是不错的选择,因为KDD Cup 1999由混合数据类型组成,特别是连续和分类。在多模RBM中是使用两个不同的通道输入层,一个是用于连续特征的高斯输入单元,另一个是使用二进制特征的伯努利输入单元层。今天我们就不进行详细讲解。

Dropout

最近的发展是想深度网络引入强大的正规化矩阵来减少过度拟合。在机器学习中,正则化是附加信息,通常是一种惩罚机制被引入,以惩罚导致过度拟合的模型的复杂性。

Dropout是由Hinton引入的深度神经网络的正则化技术,其包括通过在每一个训练迭代上随机关掉一部分神经元,而是在测试时间使用整个网络(权重按比例缩小),从而防止特征检测器的共适应。

Dropout 通过等同于训练一个共享权重的指数模型减少过拟合。对于给定的训练迭代,存在不同 dropout 配置的不同指数,所以几乎可以肯定每次训练出的模型都不一样。在测试阶段,使用了所有模型的平均值,作为强大的总体方法。

6dc5624d35c5daf4d133c0ab97a5a437bf835056

在上图中,dropout随机舍弃神经网络层之间的连接

497e4edb278675d4410ab42701bbca8f0e7c75ba

在上图中,连接被丢弃的概率,同时在训练时间中权重按比例缩小到pw

在机器学习竞赛中,平均很多模型通常是许多机器学习竞赛获胜者的关键,使用许多不同类型的模型,然后在测试时间将其结合起来进行预测。

随机森林是一个非常强大的bagging算法,它是通过对许多决策树进行平均而创建的,给它们提供了不同的训练样本集和替换。众所周知,决策树很容易适应数据并且在测试时间快速,因此通过给予不同的训练集合来平均不同的单独树木是可以承受的。

然而,对深度神经网络使用相同的方法,在计算上是非常昂贵。训练单独的深度神经网络和训练多个深度神经网络计算成本已经很高了,然后平均似乎是不切实际的。此外,我们需要的是在测试有效的单个网络,而不是有大量的大型神经网络。

Dropout是平均许多大型神经网络的有效方法。每次训练模型时,隐藏单元都可以省略。因此,在测试时我们应该使用权重减半的“平均网络”模型。平均网络等同于将​​所有可能网络预测的标签上概率分布的几何平均值与单个隐藏的单位层和softmax输出层。

另一种看待Dropout的方法是,它能够防止特征检测器之间的共适应(co-adaption)。特征检测器的共适应意味着如果隐藏单元知道存在哪些其他隐藏单元,则可以在训练数据上与它们进行协调。但是,在测试数据集上,复合协调很可能无法一概而论。

Dropout也可以以一种较低的概率在输入层中使用,通常为20%的概率。这里的概念和降噪自动编码器发展出的概念相同。在此方法中,一些输入会被遗漏。这会对准确性造成伤害,但也能改善泛化能力,其方式类似于在训练时将噪声添加到数据集中。

2013年出现了Dropout的一种变体,称为Drop connect。它不再是以特定的概率权重舍弃隐藏单位,而是以一定的概率随机舍弃。实验结果已经表明,在MNIST数据集上Drop connect网络比的dropout网络表现的更好。

处理类别失衡的技巧

当一个类别(少数类)相比于其他类别(多数类)明显代表性不足的时候就会产生类别失衡问题。这个难题有着现实意义,会对误分类少数类造成极高的代价,比如检测欺诈或入侵这样的异常活动。这里有多种技术可以处理类别失衡难题,如下面解释的这一种:

SMOTE:合成少数过采样技术

解决类失衡问题的一种广泛使用的方法是对数据集进行重采样。抽样方法涉及通过调整少数群体和多数群体的先验分布来预处理和平衡训练数据集。SMOTE是一种过抽样的方法,其中通过创建“合成”示例而不是通过对替换进过行采样来对少数类别进行过采样。

已经有人提出说通过替换进行的少数类过采样不能显著改进结果,不如说它趋于过拟合少数类的分类。相反,SMOTE算法在“特征空间”而不是“数据空间”中运行。它通过对少数类别进行过度抽样来创建合成样本,从而更好地推广。

这个想法的灵感来自于通过对真实数据进行操作来创建额外的训练数据,以便有更多数据有助于推广预测。

在此算法中第一个最近邻(neighbours)是为了少数类计算的。然后,就可以以下列方式计算少数类的合成特征:选择最邻近的一个随机数字,然后使用这一数字与原始少数类数据点的距离。

该距离乘以01之间的随机数,并将结果作为附加样本添加到原始少数类数据的特征向量,从而创建合成的少数类样本。

神经网络中成本敏感的学习

成本敏感性学习似乎是解决分类问题的类不均衡问题的一种非常有效的方法。接下来我们描述特定于神经网络的三种成本敏感的方法。

在测试未见过的示例时,将该类的先验概率合并到神经网络的输出层中:

3903cba03b2dd24778d9996a44a5202493c9d7f6

根据成本调整学习率。应将更高的学习率分配给具有高误分类成本的样本,从而对这些例子的权重变化产生更大的影响:

6d568308c91fd50efffc6e07a42eff8d741bbe41

修改均方误差函数。结果是,反向传播进行的学习将最小化误分类成本。新的误差函数是:

4f8ad0ae68d566d6f4fbfbc1a2fece4840b96f8b

其成本因子是K[ij]

这个新的误差函数产生一个新的增量规则,用于更新网络的权重:

12781f1c355117075372f763c2c1bea4c9c0ad82

其中第一个方程表示输出神经元的误差函数,第二个方程表示隐层神经元的误差函数。

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

本文由@阿里云云栖社区组织翻译。

文章原标题《demystifying-generative-adversarial-networks》,

译者:虎说八道,审校:袁虎。

文章为简译,更为详细的内容,请查看原文 

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

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

相关文章

git add * 提示warning: LF will be replaced by CRLF in 解决办法

在使用git的时候,每次执行 $ git add * 都会提示这样一个警告消息: 虽然说没有什么影响吧。 不过就是觉得太碍眼了, 按照这样设置就没有问题了: git config core.autocrlf false 这样设置git的配置后在执行add操作就没有问题了。 奋斗的年纪你…

Dispatch Queue 之 Invoke 当前队列

 转载于:https://www.cnblogs.com/huahuahu/p/dispatch-queue-zhi-invoke-dang-qian-dui-lie.html

Teams数据统计 - 用户在线离线状态

前几天我在wechat的moments里看到以为朋友发了腾迅会议的对用户个人的年度数据统计,看上去很有大数据感。 实际上 Teams 也具备的类似的能力,只是它把这个能力开放给了开发人员,我们可以通过强大的 Graph API,获取大量的数据信息&…

我们是如何通过全球第一免费开源ERP Odoo做到项目100%交付

传统友商ERP的交付过程 一、先初步需求调研,后选型功能模块 传统友商ERP第一件事情先对客户方进行初步的调研,客户方无论说什么,友商听过算过,只关心你人数多少,有哪些人涉及到哪些模块,接着对模块进行所谓…

Teams数据统计 - 通话记录

上篇文章介绍了如何获取用户的在线状态,这篇文章我们记录介绍如何统计用户通话记录。 首先,Teams为了安全,它要求 app 要有 CallRecords.Read.All 权限。然后就可以通过这个api来获取 call record。 GET /communications/callRecords/{id}这…

解决JS浮点数(小数)计算加减乘除的BUG

2019独角兽企业重金招聘Python工程师标准>>> //浮点数减法运算function FloatSub(arg1,arg2){var r1,r2,m,n;try{r1arg1.toString().split(".")[1].length}catch(e){r10}try{r2arg2.toString().split(".")[1].length}catch(e){r20}mMath.pow(10…

Teams App 如何使用设备的能力

我们以前讲到过,Teams有很多中可以扩展的方面,其中有一种是Tab,开发者可以开发一个web page/app,然后以tab的方式嵌入到teams里面。 除了基本的功能,这种tab也可以使用teams客户端设备所带的一些能力,比如…

实验室3

实验3.1 1 #include<stdio.h>2 int main()3 { long int sum,i;4 sum0;5 for(i22;i<1003;i20){6 sumsumi;7 }8 printf("sum%ld",sum);9 return 0; 10 } 11 1 #include<stdio.h>2 int main()3 { 4 long int…

Teams App自定义

当我们开发的 app 被企业安装后&#xff0c;有些企业挺希望能做一些自定义&#xff0c;如果把app的图标改的更加符合企业风格一点&#xff0c;或者把app的名字改成让本企业员工更容易理解一些&#xff0c;或者把app界面的主题色改成个企业风格更加搭配一些&#xff0c;或者对于…

实验四:xl命令的常见子命令以及操作

实验名称&#xff1a; xl命令的常见子命令以及操作 实验环境&#xff1a; 这里我们需要正常安装一台虚拟机&#xff0c;如下图&#xff1a; 我们这里以一台busybox为例&#xff0c;来进行这些简单的常见的操作&#xff1b; 实验要求&#xff1a; 这里我们准备了5个常见操作&…

Teams App 扫描二维码

上篇文章我们讲了如何在app的manifest里设置设备的权限&#xff0c;这篇文章我们来实际操作开发一个可以扫描二维码的teams app。 首先&#xff0c;我们先到app studio里&#xff0c;创建一个teams app&#xff0c;然后创建tab&#xff0c;重要的一点是&#xff0c;我们确保ma…

关于我的知识星球服务

2019独角兽企业重金招聘Python工程师标准>>> 今天刚开通了我的知识星球-攻城师在路上&#xff0c;欢迎大家加入&#xff0c;目前前50名按最低费用收费50元一年&#xff0c;后面会根据人数情况调整。 希望通过这么一个圈子&#xff0c;让大家信息资源共享&#xff0c…

mysql8用户管理

查看当前登录用户&#xff1a; 创建用户&#xff1a; create user 用户名主机地址 identified with mysql_native_password by 密码; 修改密码&#xff1a; alter user 用户名主机地址 identified with mysql_native_password by 新密码; 原因是&#xff1a;在mysql 5.7.9版本以…

Teams App设备的地理位置能力

我们上一篇文章讲了如何在Teams app里扫描二维码&#xff0c;这篇文章我们来看一下如何获取当前设备的地理位置&#xff0c;并且在地图上显示地理位置。 首先&#xff0c;我们先到app studio里&#xff0c;创建一个teams app&#xff0c;然后创建tab&#xff0c;并且确保我们勾…

Teams App如何选择用户

当我们在开发app的时候&#xff0c;很多时候需要选择一个用户&#xff0c;比如我们开发一个审批的app&#xff0c;就要选择审批人&#xff0c;所以这个app就需要实现选择人的界面&#xff0c;而且需要获取完整的用户列表&#xff0c;但是要获取完整的用户列表又需要app拥有较高…

Python终端如何输出彩色字体

Python终端如何输出彩色字体 Python终端如何输出彩色字体 实现过程&#xff1a;终端的字符颜色是用转义序列控制的&#xff0c;是文本模式下的系统显示功能&#xff0c;和具体的语言无关。转义序列是以ESC开头,即用\033来完成&#xff08;ESC的ASCII码用十进制表示是27&#xf…

关于Elemet-ui组件Cascader中proper的配置问题

最近做一个地区的二级联动用上了Cascader组件&#xff0c;但是我的城市数据结构跟他 options的默认的结构不太一样&#xff1b; 默认的结构如下&#xff1a; 我的数据结构是&#xff1a; 先说我的解决办法&#xff1a; 一看我的数据结构跟他默认的数据结构不对劲&#xff0c;我…

将Teams app升级到net6

net6 发布已经有一个多月了&#xff0c;因为我的LuckyDraw app是使用Azure app service&#xff0c;当时我查了一下app service还没有ready&#xff0c;昨天我又查看了一下&#xff0c;发现app service已经默认装了net6。 那就是时候升级我的LuckyDraw了&#xff0c;如果大家的…

作为程序猿,一定要知道的电脑快捷键和Eclipse快捷键

2019独角兽企业重金招聘Python工程师标准>>> 转载自&#xff1a;Java资源社区 1. F2 当你选中一个文件的话&#xff0c;这意味着“重命名”2. F5 刷新3. CTRLF5 强行刷新4. F12另存为5. Alt &#xff0b;F4 关闭程序6. Home首行7. Ctrl Home游标移动到文字编辑的开…