Dark Knowledge by Hinton

视频:https://www.youtube.com/watch?v=EK61htlw8hY

PPT: http://www.ttic.edu/dl/dark14.pdf

分析材料:http://deepdish.io/2014/10/28/hintons-dark-knowledge/ 

                http://fastml.com/geoff-hintons-dark-knowledge/


Dark Knowledge。。当我看到这个题目的时候,感觉有点被吓到了的感觉。。

这几天真正静下心来看懂了整个思想。。。感觉是很接地气的一个东东。。


dark knownledge,可以看作是softmax function 之后的probability,这些probability包含着类别之间的相关性。

比如,猫和狗的相似性,要远远大于猫和船的相似性。。。

而这种相似性,会在probability中有所体现。。。

而这部分信息一致没有被很好的利用,所以称之为dark knowledge。。


dark knowledge主要利用在两个方面:

一是:模型压缩。  这个思想,早在2006 caruana提出过。在很多竞赛时,会利用不同的网络架构,不同的初始化或者不同的训练数据等,来学习到很多网络模型,然后combine                               多个model来提高performance。  如何训练一个模型,达到这个combine model的效果呢?  减小测试时间复杂度。

二是:特殊网络的学习。 类似于一种subcategory的思想,用kmean把容易混淆的一些类聚合在一起,然后针对某些易混淆的类别,进行特殊网络的学习。。当然要解决的问题便是overfitting策略,在hinton的ppt里面有讲到。


无论是模型压缩,还是在特殊网络学习,都提到了基于soft targethard target两种目标函数。 也是整个ppt的中心吧。

一是hard target就是label信息,0 1 0 0

二是soft target是由已经训练好的model的出来的各个类别的probability信息。  比如:0.1 0.7 0.2 0.001。

       其中在soft target时,用到了raise the temperature策略,来提高soft target对应的cross entropy。


在进行模型压缩的时候,我们利用hard target 和soft target的loss function sum,来训练单一模型,努力达到很多模型combine的结果。

在进行特殊网路训练的时候,利用hard target loss来优化易混淆的某一子类,用soft target loss来优化其他所有类。


大致整理了一个简单的ppt,贴出来共享一下:




  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
深度学习算法中的自动编码器是一种无监督学习方法,其主要用途是降低数据维度或提取有用的特征表示。而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年发表的论文中提出了更深层的深度信任网络,并使用贪婪逐层训练的方法来初始化网络权重。要实现这些更高级的方法,需要更复杂的代码和算法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值