Hinton提出泛化更优的「软决策树」:可解释DNN具体决策

近日,针对泛化能力强大的深度神经网络(DNN)无法解释其具体决策的问题,深度学习殿堂级人物 Geoffrey Hinton 等人发表 arXiv 论文提出「软决策树」(Soft Decision Tree)。相较于从训练数据中直接学习的决策树,软决策树的泛化能力更强;并且通过层级决策模型把 DNN 所习得的知识表达出来,具体决策解释容易很多。这最终缓解了泛化能力与可解释性之间的张力。


深度神经网络优秀的泛化能力依赖于其隐藏层中对分布式表征的使用 [LeCun et al., 2015],但是这些表征难以理解。对于第一个隐藏层我们明白是什么激活了单元,对于最后一个隐藏层我们也明白激活一个单元产生的影响;但是对于其他隐藏层来说,理解有意义变量(比如输入和输出变量)的特征激活的原因和影响就困难重重。由于其边际效应取决于同一层其他单元的影响,使得独立地理解任何特定的特征激活变得举步维艰。


相比之下,很容易解释决策树是如何做出特定分类的,因为它依赖于一个相对短的决策序列,直接基于输入数据做出每个决策。但是决策树并不像深度神经网络一样可以很好地泛化。与神经网络中的隐藏单元不同,决策树较低级别的典型节点仅被一小部分训练数据所使用,所以决策树的较低部分倾向于过拟合,除非相对于树的深度,训练集是指数量级的规模。


在这篇论文中,我们提出了一种新的方法,以缓解泛化能力和可解释性之间的张力。与其尝试理解深度神经网络如何决策,我们使用深度神经网络去训练一个决策树以模仿神经网络发现的「输入-输出「函数,但是是以一种完全不同的方式工作。如果存在大量的无标签数据,该神经网络可以创建一个大得多的标记数据集去训练一个决策树,从而克服决策树的统计低效问题。即使无标签数据是不可用的,或许可以使用生成式建模中的最新研究进展(Goodfellow et al., 2014, Kingma and Welling, 2013)以从一个类似于数据分布的分布中生成合成无标签数据。即使没有使用无标签数据,仍然有可能通过使用一种称为蒸馏法(distillation,Hinton et al., 2015, Buciluˇa et al., 2006)的技术和一种执行软决策的决策树,将神经网络的泛化能力迁移到决策树上。


在测试过程中,我们使用决策树作为我们的模型。该模型的性能可能会略微低于神经网络,但速度快得多,并且该模型的决策是可解释的。


为了简单起见,我们从一类特殊的决策树开始讨论,使深度神经网络的知识能更容易地被提取/蒸馏然后导入决策树中。


2 专家的层次化混合


我们使用小批量梯度下降法训练软二元决策树,其中每一个内部节点(inner node)i 有一个学习到的过滤器 w_i 和一个偏置 b_i,每一个叶节点(leaf node)l 有一个学习到的分布 Q_l。在每一个内部节点处,选择最右边的分支的概率为:


P_i(X) = σ(XW_i + b_i)


其中 x 是模型的输入,σ是 sigmoid logistic 函数。


这个模型是专家的层次化混合(hierarchical mixture of experts,Jordan and Jacobs, 1994),但每个专家实际上都是一个「偏执者(bigot)」,即在训练之后,无论输入是什么都会生成相同的分布。该模型学习到了一个过滤器的分层体系,用于为每个样本分配一个特定的专家以及相关的特定路径概率,并且每个偏执者都学习到了一个简单的、静态的关于所有可能输出类 k 的分布。

其中 Q^l. 表示在第 l 叶的概率分布,Φ^l. 是第 l 叶的学习参数。

图 1:这个示意图展示了一个有单个内部节点和两个叶节点的软二元决策树。

图 2:一个在 MNIST 上训练的 4 层软决策树的可视化。


内部节点中的图像是学习到的过滤器,叶节点中的图像是学习到的类概率分布的可视化。图中标注了每一叶的最终的最大可能分类,以及每一个边的可能分类。以最右边的内部节点为例,可以看到在决策树的当前层次下可能的分类只有 3 和 8,因此该学习到的卷积核只需要简单地学习区分这两个数字就可以了。


图 3:在 Connect4 数据集上训练的软决策树前 2 层的可视化示例。


通过检查已学习的过滤器,我们可以看到游戏可以分为两种截然不同的子类型:一种是玩家将棋子放在棋盘的边缘,另一种是玩家将棋子放在棋盘中央。


论文:Distilling a Neural Network Into a Soft Decision Tree

论文地址:https://arxiv.org/abs/1711.09784


摘要:深度神经网络已经在分类任务上证明了其有效性;当输入数据是高维度,输入与输出之间的关系很复杂,已标注的训练实例数量较大时,深度神经网络的表现更为突出。由于它们对分布式层级表征的依赖,很难解释为什么一个已学习的网络能够在特定的测试中做出特定的分类决策。如果我们能够获取神经网络习得的知识,并借助依赖于层级决策的模型表达出来,那么解释一个特定的决策将会容易很多。我们描述了一种使用已训练的神经网络创建软决策树的方法,它比直接从训练数据中学习的决策树有着更优的泛化能力。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习算法中的自动编码器是一种无监督学习方法,其主要用途是降低数据维度或提取有用的特征表示。而Hinton是深度学习的先驱之一,他在2006年提出了一种名为“深层信任网络”的自动编码器模型。 由于题目要求使用MATLAB源代码进行回答,以下是一个简单的自动编码器的MATLAB实现示例: ```MATLAB % 设置参数 inputSize = 784; % 输入层大小,MNIST数据集图像大小为28x28,即784维 hiddenSize = 100; % 隐藏层大小,可以根据需求调整 lambda = 0.0001; % 正则化参数 sparsityParam = 0.01; % 网络稀疏度参数 beta = 3; % 稀疏惩罚项权重 % 加载MNIST数据集 load('mnist_dataset.mat'); trainData = double(train_images) / 255; % 初始化权重 W1 = 0.1 * randn(hiddenSize, inputSize); W2 = 0.1 * randn(inputSize, hiddenSize); % 训练自动编码器 for i = 1:1000 % 迭代次数 % 前向传播 z2 = W1 * trainData; a2 = sigmoid(z2); z3 = W2 * a2; a3 = sigmoid(z3); % 反向传播更新权重 delta3 = -(trainData - a3) .* sigmoidGradient(z3); delta2 = (W2' * delta3 + beta .* (-(sparsityParam./mean(a2, 2)) + (1-sparsityParam)./(1-mean(a2, 2)))) .* sigmoidGradient(z2); W2grad = delta3 * a2' ./ size(trainData, 2) + lambda * W2; W1grad = delta2 * trainData' ./ size(trainData, 2) + lambda * W1; W2 = W2 - 0.1 * W2grad; % 学习率为0.1 W1 = W1 - 0.1 * W1grad; end % sigmoid函数定义 function y = sigmoid(x) y = 1.0 ./ (1.0 + exp(-x)); end % sigmoid函数导数定义 function y = sigmoidGradient(x) y = sigmoid(x) .* (1 - sigmoid(x)); end ``` 这是一个简单的自动编码器实现,具体的网络架构和参数可以根据实际需求进行调整。通过执行上述代码,可以从MNIST数据集中训练出一个具有稀疏性的自动编码器模型。这个模型可以用于特征提取、数据降维等任务,以便更好地进行后续的深度学习任务。请注意,这只是一个简单的示例代码,不是Hinton提出具体自动编码器模型的实现。实际上,Hinton等人在2006年发表的论文中提出了更深层的深度信任网络,并使用贪婪逐层训练的方法来初始化网络权重。要实现这些更高级的方法,需要更复杂的代码和算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值