本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

时间:2017-08-06 04:53来源:本港台现场报码 作者:j2开奖直播 点击:
贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经网络 2017-08-05 16:43 来源:量化投资与机器学习 原标题:贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经网络 编辑部 我们会再接再厉 编辑

贝叶深度学习桥接PyMC3和Lasagne构建次神经网络

2017-08-05 16:43 来源:量化投资与机器学习

原标题:贝叶深度学习:桥接PyMC3和Lasagne构建次神经网络

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

编辑部

我们会再接再厉

编辑部翻译组

编译:西西、wally

作者:Thomas Wiecki

今天,我们将使用Lasagne构建一个更有趣的模型,这是一个灵活的Theano图书馆,用于构建各种类型的神经网络。你可能知道,PyMC3还使用了Theano,因此在Lasagne中建立了人工神经网络(ANN),将贝叶斯先验放在参数上,然后在PyMC3中使用变分推理(ADVI)来估计模型。

由于Lasagne的优秀表现,我们可以轻松地建立一个具有最大汇集层的分层贝叶斯卷积ANN,在MNIST上实现98%的准确性。

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

数据集:MNIST

我们将使用手写数字的经典MNIST数据集。 与之前的博客文章相反,MNIST是具有合理数量的维度和数据点的有实际挑战性的ML任务(当然不如像ImageNet那样有挑战性)。

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

Loading data...

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

模型说明

我想像应该可以把Lasagne和PyMC3搭在一起,因为他们都依赖于Theano。 然而,目前还不清楚它将会是多么困难。 幸运的是,第一个实验做得很好,但有一些潜在的方法可以使这更容易。 我开设了一个GitHub issue在Lasagne's的报告里,在这几天后,PR695被合并,允许他们更好的整合。

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

首先,Lasagne创建一个具有2个完全连接的隐藏层(每个具有800个神经元)的ANN,这几乎是从教程中直接采用的Lasagne代。 当使用lasagne.layers.DenseLayer创建图层时,我们可以传递一个函数init,该函数必须返回一个用作权重和偏差矩阵的Theano表达式。

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

接下来,为ANN创建权重函数。 因为PyMC3要求每个随机变量具有不同的名称,我们创建一个类并且是唯一命名的先验。

在这里,priors充当了调节者的角色,试图保持ANN small的权重。它在数学上等价于一个L2的损失项,直播,作为通常的做法是将大的权重惩罚到目标函数中。

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

下面是一些设置小批量ADVI的函数。

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

放在一起

让我们用小批量的ADVI来运行ANN:

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

确保一切聚合:

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

Accuracy on test data = 89.81%

分层神经网络:学习数据的正则化

上面我们只是固定了所有层的sd = 0.1,但是可能第一层应该有不同于第二层的值。也许开始时是0.1,要么太小或太大。在贝叶斯建模中,很常见的是在这种情况下放置hyperprior,并学习最佳正则化应用到数据中去。这节省了我们在超参数优化中对参数进行调优的时间。

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

Accuracy on test data = 92.25999999999999%

我们得到一个很小但很好的boost在准确性上。 我们来看看超参数后面的部分:

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

有趣的是,它们都是不同的,这表明改变正规化数量在网络的每一层是有意义的。

卷积神经网络

但到目前为止,在PyMC3中实现也很简单。有趣的是,我们现在可以构建更复杂的ANNs,atv直播,像卷积神经网络:

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经

Accuracy on test data = 98.03%

更高的精度。我也尝试了这个层次模型,但它实现了较低的精度(95%),我认为是由于过度拟合。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容