首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NN的最后一个隐藏层中的两个隐藏神经元的输出来可视化一个4类分类任务的结果。

使用NN的最后一个隐藏层中的两个隐藏神经元的输出来可视化一个4类分类任务的结果。
EN

Data Science用户
提问于 2015-10-14 05:56:06
回答 2查看 1.2K关注 0票数 1

我正在用人工神经网络做一个4级的分类任务.我的目标是想象这4个类的分离程度,以及来自每个类的数据有多一致,以及它们之间的“距离”有多远。

我的方法是在最后一个隐层中使用两个神经元,并在一个散射图中绘制神经元的输出图。但是,我的当前输出通常如下所示,不同的颜色代表数据来自的实际类:

显然,这不是很有用。首先,我希望各点不会都是一样的,第二,我不知道这是否可以用我想要的方式来解释。

我用R中的神经网络软件包训练网络,使用线性输出。我猜想,如果这种方法能够工作,激活函数的选择将是至关重要的。

我是神经网络的新手,我不确定是否可以这样做,我希望能得到一些评论。

EN

回答 2

Data Science用户

回答已采纳

发布于 2015-12-21 21:42:06

我对这个话题也有点陌生,但我认为你要寻找的是一个自动编码器。我只在h2o深度学习包中使用过它,但它似乎运行得很好。

自动编码器背后的想法是从输入开始,编码到较少的节点(两个是视觉表示的好方法),然后再解码回原来的输出(ass尽可能准确)。

如果自动编码器可以解码回您输入的准确表示,那么在这两个节点中保留了足够的重要信息。然后,您可以绘制这两个节点在一个类似于有界PCA图的二维图中所持有的特征。

而且,自动编码器不像PCA那样被限制为线性。下面是一些代码的快速片段,希望它能有所帮助。

代码语言:javascript
复制
library(h2o)
localH2O = h2o.init(ip = "localhost", port = 54321, startH2O = TRUE, min_mem_size = "3g", max_mem_size = "4g", nthreads = -1)
dat_h2o <- as.h2o(train.df)

unsupervised <- 
  h2o.deeplearning(x = 24:356,  # column numbers to use
                   training_frame = dat_h2o, # data in H2O format
                   autoencoder = TRUE, ## unsupervised autoencoding
                   activation = "Tanh", # or 'Tanh' 'Rectifier' 'WithDropout' node activation function, Tanh seems to work best for autoencoding
                   hidden = c(5,2,5), # three layers of nodes, with 5/2/5 nodes, respectively
                   epochs = 1) # max. no. of epochs 

## layer 1 corresponds to hidden[1], so it will reduce to 5 variables
## below is roughly similar to using predict(pca.object, newdata)
training_data <- h2o.deepfeatures(unsupervised, dat_h2o, layer = 1)
testing_data <- h2o.deepfeatures(unsupervised, test_h2o, layer = 1)

## explore the second layer with 2 nodes, similar to exploring PC1 vs PC2
train_supervised_features2 = h2o.deepfeatures(unsupervised, dat_h2o, layer=2)

plotdata2 = as.data.frame(train_supervised_features2)
plotdata2$label = as.character(as.vector(dat_h2o[,364]))

## L2 corresponds to layer 2, so use L2
qplot(DF.L2.C1, DF.L2.C2, data = plotdata2, color = label, main = 'Neural network: 5-2-5')
票数 2
EN

Data Science用户

发布于 2015-12-22 01:17:41

首先,我认为这个阴谋是有用的。在那个空间里,这些类确实是可分离的。

可视化的第一个选择应该是PCA,尽管正如其他答案所指出的,它将只考虑特征的线性组合。

如果您想在分类器做得有多好的上下文中可视化类的可分性,那么您所绘制的图是一个很好的选择。它表明,虽然存在一些混淆(特别是绿色),但您可以很容易地将该图上的每个类分组。

如果您想要可视化类的自然可分性,那么PCA或低维自动编码器就是方法之一。

区别在于,如果您关心的是前者,那么优化表示以分离类是一件好事。如果你关心后者,自动编码器的无监督性质就更合适了。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/8428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档