精华内容
下载资源
问答
  • matlab独立性检验代码希尔伯特-施密特独立标准(HSIC) 原始MATLAB代码的Python版本(HSIC)。 先决条件 麻木 科学的 我们在Windows上使用Python 2.7的Anaconda 4.3.0 64位对代码进行了测试。 套用您的资料 用法 ...
  • 高速芯片间HSIC简介

    2021-07-07 11:28:59
    高速芯片间(High-SpeedInter-Chip,HSIC)接口是一个双信号、源同步接口,能够以480Mbps的速率提供USB高速数据传输。数据传输使用的主机驱动程序与传统USB拓扑完全兼容。该格式不支持全速(Full-Speed,FS)和低速...
  • HSIC High-Speed Inter-Chip USB Electrical Specification 官方文档
  • HSIC_RPNet An improved RPNet for HSI classification 软件环境 本代码通过MATLAB R2018a软件编写。 使用前,必须先安装一个MATLAB降维算法工具包 文件夹介绍 存储所有的数据集文件 存储程序生成的所有的图片以及...
  • 这意味着 x,y 有比较强的相关性,而 HSIC 的结果也表明了这一点,约等于 0.096,比 0.0002 大了两个数量级以上,这表明了 HSIC 确实是有效的(注意,HSIC的输出值一般只有相对比较的意义,其绝对值没有明显含义) 。...

    640?


    作者丨苏剑林

    单位丨追一科技

    研究方向丨NLP,神经网络

    个人主页丨kexue.fm

    前段时间在机器之心看到这样的一个推送彻底解决梯度爆炸问题,新方法不用反向传播也能训练 ResNet,当然,媒体的标题党作风我们暂且无视,主要看内容即可。机器之心的这篇文章,介绍的是论文 The HSIC Bottleneck: Deep Learning without Back-Propagation 的成果,里边提出了一种通过 HSIC Bottleneck 来训练神经网络的算法。 

    640?wx_fmt=png


    论文链接:https://arxiv.org/pdf/1908.01580.pdf

    坦白说,这篇论文笔者还没有看明白,因为对笔者来说里边的新概念有点多了。不过论文中的“HSIC”这个概念引起了笔者的兴趣。经过学习,终于基本地理解了这个 HSIC 的含义和来龙去脉,于是就有了本文,试图给出 HSIC 的一个尽可能通俗(但可能不严谨)的理解。


    背景


    HSIC 全称“Hilbert-Schmidt independence criterion”,中文可以叫做“希尔伯特-施密特独立性指标”吧,跟互信息一样,它也可以用来衡量两个变量之间的独立性。 

    度量相关

    我们知道,互信息的基本形式是:

    640?wx_fmt=png

    如果 I(X,Y)=0 那么就说明 p(x,y)≡p(x)p(y),也就是两个变量是相互独立的,否则是相关的。但640?wx_fmt=png这一项意味着我们要用某种方式对概率密度进行估计。

    HSIC 的作用跟互信息类似,但是跟互信息不一样的是,它不需要估计两个变量的概率密度,而是直接转化为采样的形式。

    长期关注笔者文章的读者都知道,“互信息”是在笔者文章中经常出现的概念,我们可以用互信息做新词发现(比如《基于切分的新词发现》[1]),也可以用互信息做无监督学习(比如

    问题定义

    一般来说,我们将问题定义为: 

    有数据 (x1, y1), (x2, y2), … , (xn, yn) ∼ p(x, y) ,判断 p(x, y) 是否恒等于 p(x), p(y),即 x, y 是否独立。 

    严格来讲,如果是对于连续变量,这里的“恒等于”指的是“几乎处处等于”,但我们这里不严格声明这一点。为了描述的规范,这里设 x∈X , y∈Y ,而 f(x), g(y)∈R。注意 x, y 可能是两个含义完全不一样的变量,比如 x 可能是“星期一”, y 可能是“上班”,p(x, y) 就是“今天是星期一,且今天要上班”的概率。鉴于此, X , Y 可能是两个完全不一样的域。 

    基本的思路是去计算互信息 (1) ,但很多问题中我们都无法很好地估计概率或概率密度。一种可能的方案是转化为对偶问题,用类似对抗的思路去学习互信息(

    HSIC 就是冲着这个目标而来的。

    HSIC

    这里我们尽可能清晰地引入 HSIC 的概念。然而,“尽可能清晰”不等价于篇幅尽可能短,事实上,下面的篇幅依然会比较长,而且有不少数学公式,但是相对于标准教程里边一上来就引入希尔伯特空间、再生核、各种算子等做法,这里的介绍应该算是对很多不了解相关概念的读者来说都是友好的了。 

    基本思想

    HSIC 留意到:

    p(x,y)≡p(x)p(y) 当且仅当对于任意的 f,g,下式都等于 0:

    640?wx_fmt=png

    这个结论显然不难理解。有意思的是,等号右边是采样的形式,也就是说我们将这个指标转化为了采样的形式,避免了直接估算概率密度。

    这样一来,我们就有一个判断独立性的方法:选取“足够多”的 f,g,然后计算:

    640?wx_fmt=png

    640?wx_fmt=png与 0 的接近程度;反过来,如果在优化问题中,我们希望特征 x,y 尽可能相互独立,那么我们就可以将640?wx_fmt=png加入到损失函数中。 

    抽丝剥茧

    其实640?wx_fmt=png的形式已经很好地体现了 HSIC 的判别思想。下面我们就沿着这个思路,继续抽丝剥茧,逐步地走向 HSIC 最终的形式。

    首先我们把640?wx_fmt=png算一算:

    640?wx_fmt=png

    然后我们用一个技巧:我们知道640?wx_fmt=png,说明了这个期望值的结果跟随机变量的记号没啥关系。所以我们有:

    640?wx_fmt=png

    把其余的项都这样变换,最终我们就可以得到:

    640?wx_fmt=png

    这样一来,每一项都是 f(x1)f(x2)g(x1)g(x2) 的期望,只不过变量的采样分布不一样。

    特征函数

    现在的问题是:要选择哪些 f, g 呢?怎样才算“足够多”呢? 

    类比向量空间的知识,所有可能的 f(x) 能组成一个向量空间 F,所有的 g(y) 也一样组成一个向量空间 G 。如果能把这两个空间的所有“基底”都遍历一遍,那肯定就够了。那问题就是:如何找到所有的基底呢? 

    这时候“核函数”就登场了。所谓核函数,那就是——呃,其实说起来很复杂,我也不大懂。简单来说,核函数是类似于线性代数中“正定矩阵”的存在,就是一个定义在 X × X 的二元对称函数 K(x1, x2) = K(x2, x1) ,然后我们把一元函数 f(x) 类比为一个向量,那么:

    640?wx_fmt=png

    就相当于一个矩阵乘以向量的矩阵运算。跟矩阵的特征值和特征向量一样,核函数也能定义特征值和特征函数,满足下述恒等式的一元函数 ψ 就称为这个核函数的特征函数:

    640?wx_fmt=png

    上面的内容都是铺垫的,其严格定义则是属于“再生核希尔伯特空间“范畴。后面我们用到的,实际上是两点性质:

    1. 核函数的所有特征函数 ψ1,ψ2,…,构成该空间的一组正交基;

    2. 核函数的所有特征值 α1,α2,…都是正的,且满足:


    640?wx_fmt=png

    HSIC登场

    经过上述铺垫,HSIC 基本上就可以登场了:

    首先,假如我们已经有定义在 X×X 的核函数640?wx_fmt=png,那么我们就可以算出640?wx_fmt=png对应的特征值 α1,α2,… 和特征函数 ψ1,ψ2,…;同样地,有了定义在 Y×Y 的核函数640?wx_fmt=png后,也可以算出640?wx_fmt=png对应的特征值 β1,β2,…和特征函数 ϕ1,ϕ2,…。

    然后,因为特征函数构成了基底,所以在 (3) 中,我们可以把 f,g 换成对应特征函数 ψi,ϕj。

    640?wx_fmt=png

    因为所有的特征值都是正的,所以我们还可以用特征值为权重进行加权求和,而不改变640?wx_fmt=png的作用:

    640?wx_fmt=png

    现在我们把 (6) 代入到上面去,就得到:

    640?wx_fmt=png

    最后,再利用等式 (9),方括号里边的实际上就是640?wx_fmt=png,于是,HSIC 就登场了:

    640?wx_fmt=png

    这就是我们最重要寻找的度量相关性的指标,它纯粹是采样的形式,而且 KX,KY 都是事先给定的、通常是可微的,因此这就是一个可以明确采样计算、可以直接优化的指标!

    在实际计算中,我们可选的核函数有很多,比较常用的是:

    640?wx_fmt=png

    其中 σ>0 是一个常数,本文开头提到的论文 The HSIC Bottleneck: Deep Learning without Back-Propagation 也是用这个核函数。不同的核函数效果有点不一样,但是都能保证 HSIC(X,Y)=0⇔p(x,y)≡p(x)p(y) 。

    矩阵形式

    最后,我们来推导一下 (13) 在有限样本下的矩阵形式。

    按照采样求期望的思想,640?wx_fmt=png实际上就是对所有的样本对 (xi,yi) 的结果求平均,而其实就是640?wx_fmt=png将这个平均操作做两次,所以:

    640?wx_fmt=png

    其中640?wx_fmt=png实际上都是 n×n 的对称矩阵,分别记为640?wx_fmt=png,那么上述运算可以写成矩阵乘法640?wx_fmt=png,其中 Tr 表示矩阵的迹。基于同样的思想,第二项实际上就是“640?wx_fmt=png所有元素的平均乘以640?wx_fmt=png所有元素的平均”,如果非要写成矩阵形式的话,那就是640?wx_fmt=png,其中加粗的 1 表示大小为 n×n 的全 1 矩阵。相应地,最后一项“640?wx_fmt=png所有元素平均值的 1/n 的两倍”,即640?wx_fmt=png

    所以,如果用矩阵形式表示 HSIC,那就是:

    640?wx_fmt=png

    这里的 J=I−1/n,而 I 是 n 阶单位矩阵。跟《简述无偏估计和有偏估计》[2] 一文讨论的类似,这其实是一个有偏估计,而将前面的 1/n 换成 1/(n−1),就得到无偏估计:

    640?wx_fmt=png

    这就是最终的矩阵形式的 HSIC 公式(注意 J 里边的 1/n 不用换成 1/(n−1))。


    其它


    这里先给出一个参考实现,并做一个简单的实验,来验证 HSIC 的有效性,然后在后一节中,我们思考一下 HSIC 可能存在的问题。 

    参考实现

    假如已知核矩阵640?wx_fmt=png的情况下,HSIC 的计算实现参考如下:

    import numpy as np
    
    
    def hsic(Kx, Ky):
        Kxy = np.dot(Kx, Ky)
        n = Kxy.shape[0]
        h = np.trace(Kxy) / n**2 + np.mean(Kx) * np.mean(Ky) - 2 * np.mean(Kxy) / n
        return h * n**2 / (n - 1)**2
    

    注意这里的实现是根据 (13) 每一项的含义来的,并非根据矩阵形式 (17),事实上矩阵形式 (17) 效率并不高(涉及到三次矩阵乘法)。下面做一个简单的实验,验证 HSIC 的有效性:

    # 产生两组独立无关的随机变量
    x = np.random.randn(1000)
    y = np.random.randn(1000)
    
    Kx = np.expand_dims(x, 0) - np.expand_dims(x, 1)
    Kx = np.exp(- Kx**2) # 计算核矩阵
    
    Ky = np.expand_dims(y, 0) - np.expand_dims(y, 1)
    Ky = np.exp(- Ky**2) # 计算核矩阵
    
    print(hsic(Kx, Ky)) # 计算HSIC
    

    输出结果大概是 0.0002 左右,如果将 x,y 改为:

    x = np.random.randn(1000)
    y = x + 0.1 * np.random.randn(1000)
    

    这意味着 x,y 有比较强的相关性,而 HSIC 的结果也表明了这一点,约等于 0.096,比 0.0002 大了两个数量级以上,这表明了 HSIC 确实是有效的(注意,HSIC的输出值一般只有相对比较的意义,其绝对值没有明显含义) 。

    个人思考

    显然,由 (13) 给出的 HSIC 的计算结果取决于核函数的选择。不管用哪个核函数,理论上都可以保证:

    640?wx_fmt=png

    但问题是,当 HSIC(X,Y)>0 时,X,Y 究竟有多相关呢?

    这就相当依赖核函数选择和原始问题的背景了。从常用核函数 (14) 的形式我们大概可以感知到,核函数相当于两个样本之间的相似度,问题是什么样的相似度定义才是真正符合问题背景的,这并没有标准答案,而且通常都是很困难的问题。

    举个例子,假如 x1,x2,x3 分别代表三张图片,我们知道 ‖x1−x2‖2=0 的话意味着 x1,x2 这两张图片完全一样,但是当 ‖x1−x2‖2,‖x1−x3‖2 都不等于 0 时,我们不能因为 ‖x1−x2‖2<‖x1−x3‖2 就说图片 x2 一定比图片 x3“看起来”更像 x1,因为范数 ‖⋅‖2 不是我们视觉的一个完美的度量。

    其实笔者认为这是所有核方法的通病,即核方法只能保证当某个指标等于 0 时就是我们的理想追求,但是当这个指标不等于 0 时,这个指标无法很好地度量我们跟理想的差距。良好的度量是要根据具体问题精心设计的,或者根据数据集通过类似 GAN 的方法自动把这个度量学习出来。

    当然,也不能就此说 HSIC 就没有价值了,HSIC 的价值在于它可以作为辅助目标来优化,就好比我们要训练一个图片自编码器,就算我们用 GAN 的思想,我们也通常会把原图片和重构图片的 MSE 作为辅助 loss 来使用。


    总结

    总的来说,本文以一种较为通俗直白的方法介绍了 HSIC 这个概念,介绍过程中涉及到了一些数学内容,但省去了严格的数学定义和论述,尽量只保持了比较核心的部分,私以为这种处理会使得读者更容易接受一些。对于追求严谨的读者,请多多包涵。


    相关链接


    [1] https://kexue.fm/archives/3913
    [2] https://kexue.fm/archives/6747

    640?

    点击以下标题查看作者其他文章: 

    640?#投 稿 通 道#

     让你的论文被更多人看到 


    如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

    总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

    PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

    来稿标准:

    • 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

    • 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

    • PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

    ? 投稿邮箱:

    • 投稿邮箱:hr@paperweekly.site 

    • 所有文章配图,请单独在附件中发送 

    • 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

    ?

    现在,在「知乎」也能找到我们了

    进入知乎首页搜索「PaperWeekly」

    点击「关注」订阅我们的专栏吧

    关于PaperWeekly

    PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

    640?

    ▽ 点击 | 阅读原文 | 查看作者博客

    展开全文
  • 题目:THE HSIC BOTTLENECK: DEEP LEARNING WITHOUT BACK-PROPAGATION Abstract 这篇文章介绍了深度学习训练中的HSIC瓶颈(希尔伯特-施密特独立准则)HSIC瓶颈是传统反向传播的一种替代方法,它有许多明显的优点。...

    题目:THE HSIC BOTTLENECK: DEEP LEARNING WITHOUT BACK-PROPAGATION

    Abstract

    这篇文章介绍了深度学习训练中的HSIC瓶颈(希尔伯特-施密特独立准则)HSIC瓶颈是传统反向传播的一种替代方法,它有许多明显的优点。这种方法有利于并行处理,并且需要的操作要少得多。它不受爆炸或消失梯度的影响。它在生物学上比反向传播更合理,因为不需要对称反馈。我们发现HSIC瓶颈在MNIST/FashionMNIST/CIFAR10分类上提供了与交叉熵目标反向传播相当的性能,即使不鼓励系统使输出类似于分类标签。附加一个使用SGD(无反向传播)训练的单层会导致最新的性能。
    直观地说,IB主体在压缩有关输入数据的信息时保留关于标签的隐藏表示的信息。

    Introduction

    当前深度学习的误差反向传播算法在生物学上通常被认为是不合理的[1,2,3]。在实际应用中,反向传播和相关的随机梯度下降算法SGD及其变体非常耗时,存在梯度消失和爆炸的问题,需要跨层的顺序计算,并且通常需要探索学习率和其他超参数。这些考虑正在推动对理论和实际备选方案的研究[4]。
    通过最大化隐藏表示和标签之间相互信息的代理项,同时最小化隐藏表示和输入之间的相互依赖。
    我们进一步证明,用这种方法训练的网络的隐藏单元形成了有用的表示。具体地说,可以通过冻结无反向传播训练的网络,并使用传统的SGD将表示转换为所需的格式来附加和训练单层网络,从而获得完全竞争的精度。

    提出了一种不需要反向传播的深度网络训练方法。它包括使用信息瓶颈的近似值来训练网络。由于随机变量间互信息的计算困难,本文采用了基于非参数核的Hilbert-Schmidt独立准则(HSIC)来描述不同层的统计依赖性。也就是说,对于每个网络层,我们同时最大化该层和所需输出之间的HSIC,并最小化该层和输入之间的HSIC。与标准的反向传播算法相比,这种HSIC瓶颈的使用导致了训练过程中的快速收敛。由于HSIC瓶颈直接作用于连续随机变量,它比传统的基于binning的信息瓶颈方法更具吸引力。该方法使用一个浅层的经过常规训练的后处理网络将得到的表示转换为输出标签的形式。在实际应用中,我们使用一个由多个层组成的网络,以可变维数(完全连接层)或不同核数(卷积层)为起点。

    Related Work

    反向传播的生物学合理性是一个备受争议的话题,也是探索其他方法的一个动机。一个问题是,突触的重量是根据下游的错误来调整的,这在生物系统中是不可行的[26,27]。另一个问题是前馈推理和反向传播是相同的
    权重矩阵。这就是所谓的重量运输问题[28,11]。此外,反向传播梯度是线性计算的,但大脑有复杂的神经连接,在计算前馈时必须停止反向传播(反之亦然)[1]。
    信息理论[29]是学习理论研究的基础[8,30,31]。信息瓶颈(IB)原理[7]推广了最小充分统计量的概念,表达了预测输出所需信息和保留的输入信息之间隐藏表示的折衷。

    直观地说,IB主体在压缩有关输入数据的信息时保留关于标签的隐藏表示的信息.
    HSIC是再生核Hilbert空间(RKHS)中分布之间互协方差算子的Hilbert-Schmidt范数。
    与互信息不同,HSIC没有信息论量(bits或nats)的解释。另一方面,HSIC不需要密度估计,计算简单可靠。像HSIC这样的核分布嵌入方法也可以抵抗异常值,这可以通过考虑高斯核下异常值的影响来看出。经验估计值以与数据维数无关的速率1=pn收敛到总体HSIC值[33],这意味着它部分规避了维数的诅咒。

    原则上,HSIC可以发现变量之间的任意依赖关系,但在实际应用中,对于有限数据,HSIC核中σ参数的选择更强调某些尺度上的关系。直观地说,当两个数据点x;y的差足够小或足够大时,它们并没有被很好地区分,以至于它们位于高斯函数的小斜率部分。这通常是通过基于数据[35,36]中间距离选择核σ,或者通过参数搜索(如网格搜索[37]或随机搜索[38])来处理的。

    此外,核分布嵌入方法HSIC也可以抵抗异常值,这可以通过考虑高斯核下异常值的影响来看出。
    利用HSIC研究了自编码器的泛化特性。2018)使用HSIC来限制潜在空间搜索,以限制聚合变分后验。(Vepakomma等人。2019)使用距离相关性(HSIC的替代公式)从医疗培训数据中删除不必要的私人信息。

    Proposed Method

    本HSIC训练网络的输出包含分类所需的信息,但不一定是正确的形式首先,如果输出是一个hot,可以简单地对其进行排列,使其与训练标签对齐。在第二种方案中,我们在冻结的瓶颈训练网络中附加一个单层和softmax输出,并使用无反向传播的SGD训练附加层。这一步骤称为位置训练。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    公式(6)、(7)表明,最优隐藏表示Zi在独立于不必要的输入细节和依赖于输出之间找到平衡。理想情况下,当(6)收敛时,预测标签所需的信息被保留,而允许过度拟合的不必要信息被移除。

    我们使用块坐标下降法在每一层独立地优化方程(6),而不使用梯度传播
    在这里插入图片描述
    如实验部分所示,在某些实验中,HSIC瓶颈训练往往会产生一个One-hot输出。这启发我们利用HSIC瓶颈目标直接解决分类问题。这是通过设置最后一层ZL的维度来实现的,以匹配类的数量(例如,dL=dy)。由于所得到的激活通常是相对于标签的排列(例如,数字0的图像可能激活第四输出层条目),我们只需通过选择特定类的输入上具有最高激活的输出作为该类的输出来找到固定的排列。
    原则上,HSIC是统计独立性的一个强有力的度量,然而在实践中,即使使用规范化形式(5),结果也在一定程度上取决于所选择的σ参数。为了解决这一问题,我们将具有不同σ的无格式训练网络组合起来,然后聚合得到的隐藏表示。这种多尺度网络架构如图1b所示,并且具有
    在这里插入图片描述
    然而,学习收敛是一个最终的兴趣量。这个数量对于反向传播或HSIC瓶颈都是未知的,并且考虑到这两种方法的根本不同特征,它可能是不同的。由于消除了反向传播的需要,HSIC瓶颈更适合于层并行计算。

    Experiment

    在这一部分中,我们报告了几个探索和验证HSIC训练网络概念的实验。首先,为了激励我们的工作,我们绘制了一个简单模型在反向传播训练中的HSIC瓶颈值和激活分布。然后,我们将展示无格式训练如何产生一个热结果,直接准备好使用浅或深网络进行分类。接下来,我们比较了不同层数网络上的反向传播和格式训练。在接下来的实验中,我们考虑了HSIC训练对格式训练的价值以及超参数σ的影响。最后,我们简要讨论了HSIC训练在ResNet等其它网络体系结构中的应用。

    实验中,我们在MNIST/Fashion MNIST/CIFAR10数据集上使用了具有批处理规范化的标准前馈网络(Ioffe和Szegedy 2015)。所有实验,包括标准反向传播、未格式化训练和格式训练,都使用一个简单的SGD优化器。将HSICbottleneck的系数β和核尺度因子σ分别设置为500和5,在经验上平衡了压缩和分类任务可用的相关信息。

    在考虑使用“HSIC”作为训练目标之前,我们首先在传统深度网络训练的背景下验证其相关性(图2)。利用反向传播技术对一个简单网络的输入输出和隐藏激活之间的nHSIC进行监测,结果表明,随着表征的形成,nHSIC(Y;ZL)在早期训练中迅速增加,而nHSIC(X;ZL)则迅速下降。nHSIC(Y;ZL)的值随网络深度而变化(图2e),并取决于激活的选择(图2b)。此外,它与训练精度的提高明显平行(图2c,图2f)。总之,图2示出了一系列不同的网络遵循信息瓶颈原理。
    在这里插入图片描述
    在这里插入图片描述
    关于深层神经网络,一个有趣的问题是这些层叠层如何有效地从输入和标签中学习信息。为了探索这个问题,我们修正了非格式化训练网络的所有超参数,除了训练时间(历元数)。我们期望为更多的时代训练未格式化的训练网络将导致隐藏的表示,更好地表示预测标签所需的信息,从而在格式训练阶段获得更高的精度。图5示出了该实验的结果,具体地,在由1、5和10个阶段训练的五层无格式训练网络上的格式训练的准确性和丢失。从图5可以看出,在SGD格式训练开始时,无格式训练网络可以提高精度。另外,0随着未格式化训练网络训练时间的延长,formattraining产生更高的精度。

    在这里插入图片描述
    在这里插入图片描述
    结果表明,在多尺度网络上进行的格式训练优于其他实验,表明它在格式训练阶段提供了与相应尺度相关的附加信息。这也表明单个σ不足以捕获这些网络中的所有依赖项。把σ当作一个可学习的参数留给以后的工作。
    在这里插入图片描述
    在图7中,我们展示了在初始时间段的多个数据集上具有五个卷积残差块的网络的测试性能。每个实验包括五个未格式化的训练阶段,然后使用单层分类器网络进行格式训练,并与标准的反向传播训练阶段进行比较。

    结果表明,利用非格式化训练网络的不同表现形式,格式训练能更快地收敛到高精度性能。

    图7的最终测试精度分别为(98.8%,88.3%,59.4%)和(98.4%,87.6%,56.5%)对于反向传播训练网络,对于MNIST,FashionMNIST和CIFAR10。CIFAR10的结果远远低于最先进的性能,因为我们没有使用最先进的架构。然而,HSICbottleneck网络在收敛性方面提供了显著的提升。

    Conclusion

    本文提出了一种不使用反向传播的深层神经网络训练方法。该方法受到信息瓶颈的启发,可以看作是一种近似,但是(据我们所知)是第一种利用HSIC作为代理来回避在深神经网络中计算互信息的方法。几个标准分类问题的“无格式”HSIC瓶颈训练产生一个One-hot,可以直接排列来执行分类,其精度接近于同一体系结构的标准反向传播训练。通过使用输出作为格式训练阶段的表示,进一步提高了性能,在格式训练阶段中,使用常规SGD附加和训练单层(和softmax),但不使用反向传播。HSIC瓶颈训练网络通过去除无关信息并保留对目标任务重要的信息,提供了良好的隐藏表示。

    与传统的反向传播相比,HSIC瓶颈培训有几个好处:

    •能够训练反向传播训练失败的深层网络(图4);

    •它缓解了传统反向传播中的消失和爆炸梯度问题,因为它不使用链式规则逐层解决问题;

    •它消除了向后清扫的需要;

    •它可能允许使用分层块坐标下降并行训练层;

    •尽管我们的方法在生物学上并不合理,但它确实解决了重量传递问题(Lillicrap等人。2016)和更新锁定问题。

    参考文献

    https://arxiv.org/abs/1908.01580

    展开全文
  • HSIC一种基于USB的高速芯片通讯协议

    千次阅读 2020-09-21 22:32:06
    ②USB2.0可以直接通过HSIC直连,属于芯片间的连接方案。速度可达480M,是IIC的理想替代。 芯片间USB(IC-USB;有时也称为USB-IC,芯片间USB或高速芯片间;HSIC)是USB实施者论坛的USB 2.0规范的附录。HSIC的USB 3.0...

    从下面的资料可看出:

    ①USB+PHY 之后通过USB cable 连接。

    ②USB2.0可以直接通过HSIC直连,属于芯片间的连接方案。速度可达480M,是IIC的理想替代。

    芯片间USBIC-USB;有时也称为USB-IC芯片间USB高速芯片间HSIC)是USB实施者论坛的 USB 2.0规范的附录。HSIC的USB 3.0后继产品称为超高速芯片间SSIC)。

    USB 2.0高速芯片间(HSIC)是USB 2.0的芯片到芯片变体,它消除了普通USB中的传统模拟收发器。2007年,USB实施者论坛将其用作标准。与传统的USB 2.0相比,HSIC 物理层的功耗降低了约50%,电路板面积减少了75%。HSIC使用两个电压为1.2 V的信号,吞吐量为480 Mbit / s。HSIC的最大PCB走线长度为10厘米。它没有足够低的延迟来支持两个芯片之间的RAM共享。

    HSIC主要用于同一块电路板上两个USB设备的连接。物理接口跟通常的USB 接口完全不同。但传输数据完全遵循USB协议。

     

     

    ------------------------------------------------------------------------------------------------

    关于HSIC的资料介绍如下:http://www.usb.org/developers/docs/docs

    什么是HSIC?

    HSIC(高速芯片间)是USB芯片间互连的行业标准,具有2信号(选通,数据)源同步串行接口,使用240 MHz DDR信令仅提供高速(480 Mbps数据)率)。不支持外部电缆或连接器以及热插拔播放。还没有模拟收发器,因此降低了复杂性,成本,功耗和制造风险。使用1.2 V LVCMOS信号电平代替3.3 V信号要求可以实现低功耗。数据和选通脉冲都是利用NRZI编码双向传输的。此外,HSIC接口始终以480 Mbps的高速运行。因此,在枚举期间不需要高速线性调频协议。最后,HSIC USB与现有的USB软件堆栈完全兼容,并通过一个统一的USB软件堆栈满足所有数据传输需求。有关实现HSIC USB解决方案要求的更多技术信息,请参考高速芯片间USB电气规范,版本1.0(USB 2.0规范的补充)。

    为什么选择HSIC?

    • HSIC取代I2C
    • I2C不够快,需要特殊的驱动程序
    • HSIC允许USB软件重用
    • PHY重用/适应现有PHY技术

    使用Synopsys USB 2.0设备控制器和HSIC PHY的HSIC设备

    通过同时使用Synopsys设备控制器和HSIC PHY,可以实现USB芯片间互连。它消除了USB电缆和连接器连接到两根导线的连接,从而实现了高速芯片间通信。它还允许使用源同步串行接口进行低功耗高速数据传输(480 Mbps)。与传统的USB 2.0 PHY相比,Synopsys HSIC PHY消除了对3.3 V信号传输和5 V短路保护逻辑的需求,可提供低大约50%的功耗和75%的面积。

    USB 2.0 HSIC PHY

    • 符合HSIC USB版本1.0
    • HSIC USB功能
      • 根据UTMI +规范,支持8/16位单向并行接口用于HS操作模式
      • 通过HSIC连接器上的串行数据实现数据恢复
      • 实现SYNC /数据包结束(EOP)生成和检查
      • 实现位填充和解填充以及位填充错误检测
      • 实现不归零反相(NRZI)编码和解码
      • 实现位序列化和反序列化
      • 实现用于暂存传输和接收数据的保持寄存器
      • 实现逻辑以支持挂起,睡眠,恢复和远程唤醒操作
    • 一般特征
      • 占地小
      • 在活动,空闲或待机时实现低功耗
      • 实现一个并行数据接口和时钟,用于高速HSIC数据传输
      • 提供参数覆盖位,以实现最佳产量和互操作性
      • 提供片上PLL,以减少时钟噪声并消除对外部时钟发生器的需求
      • 提供内置的自测(BIST)电路以确认高速运行
      • 提供广泛的测试界面
    • 技术指标
      • 小面积约。0.18平方毫米(宏+垫)
      • 低电量
        • HS发射〜27 mW(典型值)
        • HS接收〜18 mW(典型值)
        • 暂停和睡眠模式〜4uA
      • 支持12/24/48 MHz时钟
      • 初始过程-TSMC 65LP
    • 相容性
      • HSIC PHY使用相同的UTMI接口与Synopsys设备控制器进行通信。由于HSIC的UTMI接口上没有明确定义的标准,并且我们还没有使用非Synopsys设备控制器对HSIC PHY进行过测试,因此我们不能保证HSIC PHY的UTMI接口可以与非Synopsys设备兼容。控制器。
    • 可用性
      • 如果您对USB产品的此功能感兴趣,请联系Synopsys。

    具有HSIC功能的USB 2.0设备控制器

    • 组态
      • 新的设备控制器配置选项可用于启用HSIC支持。
        • HSIC逻辑通过`ifdef语句实现。逻辑将另外由皮带销控制。
      • 设备控制器需要配置为支持单向UTMI PHY接口。
    • PHY接口特定
      • 用于HSIC的新引脚无需连接到Synopsys HSIC PHY。使用单向UTMI PHY接口。
      • 当设备控制器与Synopsys HSIC PHY相连时,设备控制器和PHY都应理解为不经过线性调频枚举步骤,而是直接进入高速空闲状态。
    • 应用程序接口/逻辑
      • 来自应用程序的新带状输入引脚,用于启用/禁用HSIC支持(如果内核已经配置为通过coreConsultant / RapidScript支持HSIC)
      • 如果设备控制器配置为不支持HSIC,则该新的扎带输入引脚将不存在。
    • 硬件影响
      • 如果支持HSIC功能,则设备控制器将绕过udc20_speed_enum模块的chirp_gen_state状态机中的Chirp枚举阶段。
      • 只有同时启用了相关的带信号时,才会发生线性调频枚举级的旁路。如果尚未启用条带信号,则内核将通过正常的线性调频握手机制来支持非HSIC PHY。
    • 固件影响
      • 无需重大更改。枚举期间连接到HSIC USB主机时,不再需要支持高速回落到全速模式,因为HSIC芯片间互连仅支持高速操作。因此,仅需要高速的设备驱动程序。
    • 相容性
      • 设备控制器使用相同的UTMI接口与Synopsys HSIC PHY进行通信。由于在HSIC的UTMI接口上没有明确定义的标准,并且我们还没有使用非Synopsys HSIC PHY测试设备控制器,因此我们不能保证设备控制器的UTMI接口与非Synopsys HSIC的接口可以正常工作物理层。
    • 可用性
      • 如果您对USB产品的此功能感兴趣,请联系Synopsys。
    展开全文
  • 机器之心上周介绍了一篇论文,说是不用BP也能训练神经网络,论文叫做《The HSIC Bottleneck: Deep Learning without Back-Propagation》,HSIC Bottleneck: Deep Learning without Back-Propagation]...

    机器之心上周介绍了一篇论文,说是不用BP也能训练神经网络,论文叫做《The HSIC Bottleneck: Deep Learning without Back-Propagation》,HSIC Bottleneck: Deep Learning without Back-Propagation](https://arxiv.org/pdf/1908.01580v1.pdf)》,引用了一个HSIC度量,并用其实现了直接从利用输入输出来优化隐藏层的参数。
    下面主要讲的我自己对文章的理解,但是不一定对。

    HSIC度量

    我们一般使用互信息度量两个分布的依赖强弱,但是一般只有在知道两个分布的情况下才能得到。论文直接引用了HSIC度量使用抽样来测量两个分布依赖的强弱。
    在这里插入图片描述
    核函数根据经验使用高斯核函数
    在这里插入图片描述

    用keras实现:

    def kernel_matrix(x, sigma):
        ndim = K.ndim(x)
        x1 = K.expand_dims(x, 0)
        x2 = K.expand_dims(x, 1)
        axis = tuple(range(2, ndim+1))
        return K.exp(-0.5*K.sum(K.pow(x1-x2, 2), axis=axis) / sigma ** 2)
    
    
    def hsic(Kx, Ky, m):
        Kxy = K.dot(Kx, Ky)
        h = tf.linalg.trace(Kxy) / m ** 2 + K.mean(Kx) * K.mean(Ky) - \
            2 * K.mean(Kxy) / m
        return h * (m / (m-1))**2
    

    如何跨层直接优化隐藏层

    一个好的隐藏层,它的输出应该尽量跟输出的依赖强和输入的依赖弱。换句话说,就是隐藏层输出应该尽量保存和输出相关的信息,移除和跟输出无关的信息(所有信息都来自输入)。
    用文中的公式表示就是:
    在这里插入图片描述
    这里 λ \lambda λ经验值取100.。
    我们直接优化(4)就可以做到跨层优化网络了。

    HSIC-Bottleneck Trained

    我们把所有隐藏层的放在一起优化,就得到了HSIC-Bottleneck Trained,
    公式为:
    在这里插入图片描述
    keras代码实现:

    class HSICBottleneckTrained(object):
        def __init__(self, model, batch_size, lambda_0, sigma):
            self.batch_size = batch_size
            input_x = model._feed_inputs[0]
            input_y = model._feed_targets[0]
    
            Kx = kernel_matrix(input_x, sigma)
            Ky = kernel_matrix(input_y, sigma)
    
    
            param2grad = {
            }
            trainable_params = []
            total_loss = 0.
            for layer in model.layers:
                if layer.name.startswith("hsic"):
                    params = layer.trainable_weights
                    if not params:
                        continue
                    hidden_z = layer.output
    
                    Kz = kernel_matrix(hidden_z, sigma)
                    loss = hsic(Kz, Kx, batch_size) - lambda_0 * hsic(Kz, Ky, batch_size)
                    total_loss += loss
                    trainable_params.extend(params)
                    grads = K.gradients(loss, params)
                                    for p, g in zip(params, grads):
                        param2grad[p.name] = g
                else:
                    layer.trainable = False
            model._collected_trainable_weights = trainable_params
            model.total_loss = total_loss
            optim = model.optimizer
            def get_gradients(loss, params):
                grads = [param2grad[p.name] for p in params]
                if hasattr(self, 'clipnorm') and self.clipnorm > 0:
                    norm = K.sqrt(sum([K.sum(K.square(g)) for g in grads]))
                    grads = [clip_norm(g, self.clipnorm, norm) for g in grads]
                if hasattr(self, 'clipvalue') and self.clipvalue > 0:
                    grads = [K.clip(g, -self.clipvalue, self.clipvalue) for g in grads]
                return grads
            optim.get_gradients = get_gradients
    
            self.model = model
    
        def reshape(self, x):
            shape = list(K.int_shape(x))
            shape[0] = self.batch_size
            return K.reshape(x, tuple(shape))
    
        def __call__(self):
            return self.model
    

    为了尽量保持keras代码的完整性,这里我们使用注入的方式实现的HSIC-Bottleneck Trained,动态的调整模型的属性值。

    Post-Trained

    最后,模型为了完成任务,在最后的隐藏层和模型输出之间添加一个输出层,完成特定的任务。
    代码实现:

    class PostTrained(object):
        def __init__(self, model):
            for layer in model.layers:
                if layer.name != "output_layer":
                    layer.trainable = True
                else:
                    # 冻结所有非输出层为不可训练
                    layer.trainable = False
            self.model = model
    
        def __call__(self):
            return model
    

    σ \sigma σ-Network

    只使用一个 σ \sigma σ可能无法捕捉到足够多的信息,所以可以使用多个 σ \sigma σ来进行联合训练,读者可以根据上面的代码自己调整实现之。

    代码开源在https://github.com/forin-xyz/Keras-HSIC-Bottleneck,可以自己改改。

    优点

    1. 不用BP可以避免梯度爆炸/消失;
    2. 可以在某一层没有梯度的情况下跨层优化;
    3. 可以并行同时优化多个层。

    缺点

    1. 目前来看效果并不能达到BP算法的效果,机器学习库也没有根据对应算法优化其速度。

    一些想法

    我们可以HSIC度量作为损失函数的一部分来优化网络,以避免梯度消失的情况下无法优化参数。

    展开全文
  • Hilbert-Schmidt Independence Criterion (HSIC)
  • 普通USB2.0 : 只能做主机,识别USB设备,接电脑无法识别,因为...HSIC的USB: 输出的不是普通的USB信号,而是XhsicSTROBE1,和XhsicDATA1的信号,必须接USB信号转换出来,不过比普通的USB信号强,可以接4路USB HOST; ...
  • 在分析PID控制器智能性的基础上,运用仿人智能控制(HSIC)原理,对PID控制器的3个控制分量分别通过模拟人的控制行为,在低层次上实现智能控制。通过实验比较常规PID控制器和基于HSIC的NPID控制器对同一控制对象的...
  • The INNOSILICON USB 2.0 OTG PHY is fully compliant with UTMI+ level 3 Rev 1.0 specification. Offering excellent performance combined with a die size up to 30% less than competitor's solution, this PHY...
  • 希尔伯特-施密特独立性准则(Hilbert-Schmidt Independence Criterion-HSIC)主要目的是衡量两个变量的一个分布差异,这一点类似于协方差(方差),而对于其本身也是依赖于协方差而构建。如下公式(1)所示 ...
  •   ③通过归一化使HSIC具有不变性,记得到CKA(K,L)   上述是带线性核函数的CKA,若加入带宽σ,则可定义带RBF核的CKA。 2.2 HETEROGENEOUS TRANSFERRING CNN WITH ATTENTION FOR HSI CLASSIFICATION   本文...
  • 电子政务-应用于HSIC接口全芯片集成的LDO电路.zip
  • HSIC——USB High Speed Inter-Chip

    万次阅读 2016-05-05 09:59:29
    最近在看原理图的过程中看到了 HSIC 这个东西,不知道这是什么,所以查了一下资料,下面是网址: https://www.synopsys.com/dw/dwtb.php?a=hsic_usb2_device HSIC 是一个两线的源同步穿行接口,使用 240MHz 双倍...
  • pdated Interface Standards Table - MIPI HSI, HSIC, UniPro, UniPort, LLI, C2C 芯片间的互连标准: HSIC, UniPro, HSI, C2C, LLI. There has been a lot of confusion about the ...
  • Hue, Saturation, Intensity, and Contrast (HSIC) 色彩,饱和度,强度和对比度(HSIC) 1、Sunlight visibility improvement Improved contrast for multimedia content at the same power (backlight) level ...
  • 恒生国际 这是本文的一个非常简单的实现: 高度经济的多视图二进制压缩,用于可伸缩图像聚类, 可以在ECCV 2018论文(即将发布)中找到详细信息。 该代码已在Matlab 2017a上进行了评估。 资源: ...
  • C. Zheng, N. Wang and J. Cui, “Hyperspectral Image Classification With Small Training Sample Size Using Superpixel-Guided Training Sample Enlargement,” in IEEE Transactions on Geoscience and Remote ...
  • 一个深度学习模型,Fast-3Dcnn项目
  • 高光谱分类
  • import numpy as np ...def hsic(Kx, Ky): Kxy = np.dot(Kx, Ky) n = Kxy.shape[0] h = np.trace(Kxy) / n**2 + np.mean(Kx) * np.mean(Ky) - 2 * np.mean(Kxy) / n return h * n**2 / (n - 1)**2 # ...
  • HSIC Description

    千次阅读 2012-09-27 10:28:58
    http://cqy-chenqiyao.blog.163.com/blog/static/66857812201162810112750/ High-Speed Inter-Chip USB [HSIC]; a USB chip-to-chip interconnect. HSIC removes the analog transceivers found in normal USB.
  • hsi图像分割matlab代码使用马尔可夫随机场和卷积神经网络的高光谱图像分类 CNN-HSI-MRF 这是卷积神经网络(CNN)的TensorFlow实现,用于基于代码()的高光谱图像分割任务,如本文所述: 曹X,周F....
  • 高光谱HSI论文阅读——A Superpixel-Correlation-Based Multiview Approach for HSIC 一种基于超像素-相关性的多视角的高光谱图像分类方法 论文来源:IEEE GEOSCIENCE AND REMOTE SENSING LETTERS,2021,03 引用:S. ...
  • pyHSICLasso是希尔伯特·施密特(Hilbert Schmidt)独立标准套索(HSIC Lasso)的软件包,这是一种考虑了非线性输入和输出关系的黑匣子(非线性)特征选择方法。 HSIC Lasso可以看作是广泛使用的最小冗余最大相关性...
  • HSIC Interface Description

    千次阅读 2014-06-17 11:23:31
    High-Speed Inter-Chip USB [HSIC]; a USB chip-to-chip interconnect. HSIC removes the analog transceivers found in normal USB. [Description of the USB Interface] The maximum trace length defined is 10
  • 来源: https://www.synopsys.com/dw/dwtb.php?a=hsic_usb2_device ...HSIC (High-Speed Inter-Chip) is an industry standard for USB chip-to-chip interconnect with a 2-signal (strobe, d...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 629
精华内容 251
关键字:

HSIC