DL4J中文文档/模型/自编码器

什么是自编码器?

自编码器是用于无监督学习的神经网络。Eclipse DL4J支持某些自动编码器层,如变分自编码器。

受限波尔滋曼机在哪?

0.9.x版本已不再支持受限波尔滋曼机了,对于多数机器学习问题它们不再是最好的选择了。

支持的层


AutoEncoder(自编码器)

[源码]

自编码器层,添加噪声到输入并学习重建函数。

corruptionLevel

public Builder corruptionLevel(double corruptionLevel) 

image.gif

构建器 - 设置损坏级别- 0(无)到1(所有值损坏)

  • 参数 corruptionLevel 损坏级别 (0 to 1)

sparsity

public Builder sparsity(double sparsity) 

image.gif

自编码器稀疏参数

  • 参数 sparsity 稀疏性

BernoulliReconstructionDistribution(伯努利重建分布)

[源码]

变分自编码器的伯努利重构分布。

输出由伯努利分布建模——即,伯努利分布应该用于二分类数据(所有值是0或1);变分自编码器将输出的概率建模为0或1。

因此,应使用sigmoid活函数将限制激活范围为0至1。避免产生不在0至1范围内数据的激活函数(包括relu、tanh和许多其它)。

hasLossFunction

public boolean hasLossFunction() 

image.gif

用默认Sigmoid激活函数创建一个伯努利重建分布


CompositeReconstructionDistribution(组合重建分布)

[源码]

组合重建分布由其它重建分布构建而来。典型的用途是将例如连续数据和二分类数据组合在同一个模型中,或者组合连续变量的不同分布。不何哪种情况下,此类允许用户建模(例如)前10个值。

addDistribution

public Builder addDistribution(int distributionSize, ReconstructionDistribution distribution) 

image.gif

添加另一个分布到一个组合分布中。在任何先前的添加后,这将为下一个‘distributionSize’值添加分布。例如,在由指定的分布X建模时调用addDistribution(10, X)一次会导致值为0到9(包括)。在由指定的分布Y建模时调用addDistribution(10, Y)一次会导致值为10到19(包括)

  • 参数 distributionSize 使用指定分布模型的值的数目
  • 参数 distribution 模型数据分布

ExponentialReconstructionDistribution(指数重建分布)

[源码]

指数重建分布
支持数据范围 [0,无穷)

这里使用的参数化:网络模型分布参数gamma,其中gamma=log(lambda),用 gamma in (-inf, inf)

这意味着一个来自自编码器的输入gamma = 0 给出lambda = 1,这与指数均值有关。

关于激活函数的选择:上面的参数化支持gamma范围(负无穷大,无穷大),因此优先选择对称激活函数,如“identity”或“tanh”。

hasLossFunction

public boolean hasLossFunction() 

image.gif
  • 弃用

GaussianReconstructionDistribution (高斯重建分布)

[源码]

变分自编码器的高斯重建分布

输出由高斯分布建模,其中均值和方差(对角协方差矩阵)由网络正向传递确定。

具体地说,高斯重建分布模型均值和log(STDEV ^ 2)。这个参数化给出log(1)=0,并且输入可以在范围(无穷大,无穷大)内。用于方差的其他参数化当然是可能的,但是关于平均预激活函数值和激活函数范围可能是有问题的。

对于激活函数,identity和tanh可能是典型的,尽管tanh(不同于identity)意味着平均值和对数方差的最小/最大可能值。应避免不对称激活功能,如sigmoid或relu。

hasLossFunction

public boolean hasLossFunction() 

image.gif

创建具有默认identity激活函数的高斯重建分布。


LossFunctionWrapper(损失函数包装器)

[源码]

损失函数包装器允许训练具有标准(可能确定性)神经网络损失函数的VAE(分变自编码器)模型。

注意:大多数功能都被支持,但是显然在使用损失函数包装器时不能计算重建对数概率,因为ILossFunction实例既没有(a)概率解释,也没有(b)计算负对数概率的方法。


ReconstructionDistribution

[源码]

指定分布的形式 p(数据|x). 例如,真实值数据可以被建模。

VariationalAutoencoder(变分自编码器)


[源码]

变分自编码器层

查看: Kingma & Welling, 2013: 自动编码变分贝叶斯 - https://arxiv.org/abs/1312.6114

这种实现允许多个编码器和解码器层,其数量和大小可以独立设置。

关于预训练期间的分数的注释:这个实现Kingma & Welling中描述的变分下限目标的负值最小化;该文章中的数学是基于变分下限的最大化。因此,在DL4J预训练报告的分数是本文的变分下界方程的负值。反向传播和学习过程就是在那里描述的。

encoderLayerSizes

public Builder encoderLayerSizes(int... encoderLayerSizes) 

image.gif

编码器层的大小,单位。每个编码器层在功能上等同于 {- link org.deeplearning4j.nn.conf.layers.DenseLayer}。典型地,解码器层的数量和大小 (通过 {- link #decoderLayerSizes(int…)设置} )类似于编码器层。

  • 参数 encoderLayerSizes 变分编码器中每个编码器层的大小

decoderLayerSizes

public Builder decoderLayerSizes(int... decoderLayerSizes) 

image.gif

解码器层的单位大小。每个解码器层在功能上等同于 {- link org.deeplearning4j.nn.conf.layers.DenseLayer}。典型地,解码器层的数量和大小与编码器层相似。(通过 {- link #encoderLayerSizes(int…)设置}。

  • 参数 decoderLayerSizes 变分编码器中每个解码层的大小

reconstructionDistribution

public Builder reconstructionDistribution(ReconstructionDistribution distribution) 

image.gif

给定隐藏状态数据的重建分布- i.e., P(data|Z).
这应该根据建模的数据类型仔细选择。例如:

  • {- link GaussianReconstructionDistribution} + {identity 或 tanh}用于实际值(高斯)数据

  • {- link BernoulliReconstructionDistribution} + sigmoid 用于 二分类 (0 or 1) 数据

  • 参数 distribution 重建分布

lossFunction

public Builder lossFunction(IActivation outputActivationFn, LossFunctions.LossFunction lossFunction) 

image.gif

配置变分自编码器以使用指定的损失函数进行重建,而不是重建分布。注意,这不遵循标准的变分自编码器设计(根据Kingma & Welling),它假定一个概率输出,即一些p(x|z)。然而,它是一个有效的网络配置,允许优化更传统的目标,例如均方误差。

注意:显然,设置损失函数将取代任何先前设置的重建分布。

  • 参数 outputActivationFn输出/重建的激活函数
  • 参数 lossFunction 使用的损失函数

lossFunction

public Builder lossFunction(Activation outputActivationFn, LossFunctions.LossFunction lossFunction) 

image.gif

配置变分自编码器以使用指定的损失函数进行重建,而不是重建分布。注意,这不遵循标准的变分自编码器设计(根据Kingma & Welling),它假定一个概率输出,即一些p(x|z)。然而,它是一个有效的网络配置,允许优化更传统的目标,例如均方误差。

注意:显然,设置损失函数将取代任何先前设置的重建分布。

  • 参数 outputActivationFn输出/重建的激活函数
  • 参数 lossFunction 使用的损失函数

lossFunction

public Builder lossFunction(IActivation outputActivationFn, ILossFunction lossFunction) 

image.gif

配置变分自编码器以使用指定的损失函数进行重建,而不是重建分布。注意,这不遵循标准的变分自编码器设计(根据Kingma & Welling),它假定一个概率输出,即一些p(x|z)。然而,它是一个有效的网络配置,允许优化更传统的目标,例如均方误差。

注意:显然,设置损失函数将取代任何先前设置的重建分布。

  • 参数 outputActivationFn输出/重建的激活函数
  • 参数 lossFunction 使用的损失函数

pzxActivationFn

public Builder pzxActivationFn(IActivation activationFunction) 

image.gif

输入到P(z|数据)的激活函数。
应该注意这一点,某些激活函数(relu等)由于在[0,无穷大]范围内有界而不适用。

参数 activationFunction p(z|x)的激活函数

pzxActivationFunction

public Builder pzxActivationFunction(Activation activation) 

image.gif

输入到P(z|数据)的激活函数
应该注意这一点,某些激活函数(relu等)由于在[0,无穷大]范围内有界而不适用。

参数 activationFunction p(z|x)的激活函数

nOut

public Builder nOut(int nOut) 

image.gif

设置VAE(变分自编码器)状态Z的大小。这是标准正向传播期间的输出大小,以及预训练期间的分布P(Z|数据)的大小。

参数 nOut P(Z|数据) 和输出数据的大小

numSamples

public Builder numSamples(int numSamples) 

image.gif

设置每个数据点(来自VAE状态Z)在进行预训练时使用的样本数。默认值:1。

这是来自Kingma和Welling的参数L:“在我们的实验中,我们发现,只要小批量M足够大,每个数据点的样本L的数量就可以设置为1,例如M=100。”

  • 参数 numSamples 训练前每个数据点的样本数

翻译:风一样的男子

image

如果您觉得我的文章给了您帮助,请为我买一杯饮料吧!以下是我的支付宝,意思一下我将非常感激!

image
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 查看原文 1 简介 Deep Learning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身...
    JinkeyAI阅读 6,732评论 0 4
  • 有一种无趣—— 你在仰天大笑的时候, 响了一个炸雷! 得意突变失意, 悻悻无语。 想开心记住三个字: 请随意。 世...
    浅得塾心灵文画阅读 326评论 3 5
  • 我经常分不清是非,识不了人心,担不了人情,且优柔寡断、性情暴躁,只能是一个不成熟的表现。过去种下的因,得到...
    苏桦_0476阅读 291评论 0 0
  • 2016.08 突然发现,我的8月,画的都是小朋友呢~~~这真是,自己不知不觉形成了一个主题。哈哈哈~~~
    水晶雪梨阅读 389评论 0 2
  • 欲飞身已倦,欲辩已忘言。 飞鸿逐日暖,梅绽喜春寒。 英雄惜迟暮,流水妒红颜。 红炉映雪日,诗酒话流年。
    醉爱一片蓝阅读 301评论 2 8