Machine learning 实值数据的受限玻尔兹曼机-高斯线性单位(glu)-

Machine learning 实值数据的受限玻尔兹曼机-高斯线性单位(glu)-,machine-learning,unsupervised-learning,rbm,Machine Learning,Unsupervised Learning,Rbm,我希望我的受限Boltzmann机器学习实值数据的新表示形式(请参阅)。我正在努力实现高斯线性单位 在可见层中使用高斯线性单位时,能量变化为E(v,h)=∑ (v-a)²/2σ-∑ bh-∑v/σh w。现在我不知道如何改变对比发散学习算法。可见单位将不再采样,因为它们是线性的。我使用期望值(平均活化)p(v_I=1 | h)=a+∑hw+N(0,1)作为其状态。关联保持不变(位置:data*p(h=1 | v)neg:p(v=1 | h)*p(h=1 | v))。但这只会在我想要重建数据时导致

我希望我的受限Boltzmann机器学习实值数据的新表示形式(请参阅)。我正在努力实现高斯线性单位

在可见层中使用高斯线性单位时,能量变化为
E(v,h)=∑ (v-a)²/2σ-∑ bh-∑v/σh w
。现在我不知道如何改变对比发散学习算法。可见单位将不再采样,因为它们是线性的。我使用期望值(平均活化)
p(v_I=1 | h)=a+∑hw+N(0,1)
作为其状态。关联保持不变(位置:
data*p(h=1 | v)
neg:
p(v=1 | h)*p(h=1 | v)
)。但这只会在我想要重建数据时导致随机噪声。错误率将在50%左右停止改善


最后,我想在两层中使用高斯线性单位。我怎样才能得到隐藏单位的状态呢?我建议使用平均场激活
p(h_I=1 | v)=b+∑vw+N(0,1)
但我不确定

你可以看看Hinton自己提供的高斯RBM 请在这里找到。

< P>我一直在使用C++和Matlab MySuffic实现RBM。 我从Hinton教授(在matlab中)的实现中发现,可见单元的二进制激活使用simoid函数。 ie:vs=sigmoid(bsxfun(@plus,hs*obj.W2',obj.b)); 但是,在实现高斯可见单位RBM时,您只需在不使用simoid的情况下对可见单位进行采样。 ie:vs=bsxfun(@plus,h0*obj.W2',obj.b);
或者最好看看Hinton教授的实现(请参阅:)

注意,这些都是不鼓励的,因此答案应该是搜索解决方案的终点(而不是参考文献的另一个中途停留,随着时间的推移,这些参考文献往往会变得陈旧)。请考虑在这里添加一个独立的概要,将链接作为参考。这与OP想要的略有不同——隐藏层是线性高斯,可见层是伯努利,西格玛没有学习。