不用反向传播的HSIC Bottleneck到底讲了啥,及其keras实现

机器之心上周介绍了一篇论文,说是不用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

如何跨层直接优化隐藏层

一个好的隐藏层,它的输出应该尽量跟输出的依赖强和输入的依赖弱。换句话说,就是隐藏层输出应该尽量保存和输出相关的信息,移除和跟输出无关的信息(所有信息都来自输入)。
用文中的公式表示就是:

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值