查看原文
其他

【脑洞】Hinton剑桥演讲:大脑神经元的误差反向传播机制

2016-05-24 潘汀 深度学习大讲堂
点击上方“公众号”可订阅哦!
深度学习大讲堂致力于推送人工智能,深度学习方面的最新技术,产品以及活动。

来源
        偶然翻了一下微博,发现了@爱可可-爱生活老师转的,Hinton教授六月末在剑桥的一个讲座。
    视频度娘链接:http://pan.baidu.com/s/1eQjj0rS    整个讲座前半部分基本在回顾DL目前的几个成就:RBM、DNN、CNN、RNN、Dropout以及在CV、NLP、Speech方面的应用,这部分没什么可在意的。    有趣的是,Hinton在中间插了一段对自己(还有学界)的吐槽,大致就是1986~2006这20年间毫无作为的反思,也是神经网络模型体系在这20年间犯的四大错误:
1
    ★Our labeled datasets were thousands of times too small.
    分析:LeCun搞的MNIST在当时看起来,6W的数据量是客观的,结果神经网络(CNN)跑的没Hand-Made特征好,    大家就埋怨神经网络垃圾. 2009年ImageNet立项后,1500W的数据,千倍的强化,神经网络立刻甩开了SIFT    这类的Hand-Made特征,CV界老一辈气得半死。
2
    ★Our computers were millions of times too slow.
    分析:早期是单机CPU单线程。Intel给力后,多线程算法开始流行,变成单机CPU多线程。    这几年云计算给力后,有变成云CPU多线程。后来NVIDIA发功了,现在又是云GPU多线程。计算力上去百万倍,跑神经网络才毫无压力。
3
    ★We initializaed the weights in a stupid way.
    分析:早期神经网络初始化,清一色的
    Bengio组的Xavier在2010年推出了一个更合适的范围,能够使得隐层Sigmoid系函数获得最好的激活范围。
    对于Log-Sigmoid:
    对于Tanh-Sigmoid:
    当然,这些仍然有些Stupid。Hinton指的“Smart”是指用Unsuprvised Learning学习出初始值,即Pre-Training。
4
    ★We used the wrong type of non-linearty.
    分析: Simgoid函数祸害了几十年。虽然中间出现过RBF径向基函数,但因为找径向基中心麻烦,RBF很快就被遗弃了。Sigmoid春风吹满地。直到2010年后,才普遍推广ReLU.    Hinton顺便解释了ReLU有效的原因,这点在其他paper倒是很少见到:They automatically equalize the magnitude of gradient in different layers
-Layers with big weights get small gradients-Layers with small weights get big gradients
    从图上来看,就是ReLU的非饱和性,使得Gradient在各层拥有弹性缩放能力。    至于为什么Layer越高,Weight越大,个人猜测是较高层较Sensitive,调整幅度较大。毕竟0.01是默认Random值,Traning过程中变大也是可能的。
生物神经网络 VS 神经网络模型
        讲座的后半部分比较高潮,Hinton充分展示了他在认知心理学、计算神经学、脑机制多方面的研究:以生物神经学界向计算神经学界提出的四大否定结论发难。    这四点基本招招致命,分分钟都能推翻整个神经网络模型体系。
1
    挑战书一:生物神经元不可能进行数值计算
    ★Cortical neurons do not communicate real-valued activities. (2012年)    -Current Solved: They send spikes.
    分析:脑皮层神经元之间,可不会用实数值来交流。(数字体系是人类文明的高度抽象)    目前已经这个问题已经被解决,神经元之间发spikes来交流。    百度关键词:spike+神经,spike是神经学术语,指的是单神经元发的电信号。    电信号的频率、强度一定程度上可以模拟数字计算体系。
2
    挑战书二:生物神经元难道会自动求导?★How do neurons know dy/dx(Gradient)
    分析:请发功,用神经元,秒解一个N元M次函数的求导问题。(想想也不可能)
3
    挑战书三:生物神经元是否真的需要发两种信号(前向传播+反向传播)?    ★The neurons need to send two different types of signal
-Forward Pass (Signal=activity=y)-Backward Pass (Signal=dE/dx)
4
    挑战书四:生物神经网络元没有同值的互连接    ★Neurons do not have point-wise reciprocal connections with the same weight in both directions.    分析:整个讲座最费解的地方。只提供个人见解。    一般而言,生物神经元没有输入、输出之分,输出神经元肯定连着输出神经元,在输出之后,电信号的下一跳就成了输入神经元。    两个神经元之间,通过对输出神经元的解码,输入神经元可以拿到输入信息。    而前馈网络,包括算法,完全就是代码上的硬跳转实现循环训练,这就使得新的输入还是上次的输入。    两个方向很有可能指的是:    I、输入--->输出    II、输出--->输入--->输出    我们的算法,很明显有 I=II 。然而对于生物神经而言,很有可能 I≠II。
Hinton的解释
    很多东西都比较玄,只能说目前还能含糊过去。
1
    解释一:符合泊松过程的电信号机制    要点:    ★Synapses are much cheaper than training cases.    -We have 10^14 synapses and are for 10^9 seconds(3年)    分析:神经突触数量庞大,更新周期3年(疑问?),所以发电信号来计算很廉价.    ★Sending random spikes from Possion process is very similar to dropout
    -It is better than sending real-values.
    分析:如此庞大数量的神经突触,肯定不会同时激活的。激活过程疑似泊松过程,即每次随机抽出部分神经突触发电信号,这点和Dropout过程相近。    ★A good way to throw a lot of parameters at a task is to use big neural networkswith dropout
    分析:补上一个要点,大型模型相当于建立一堆突触,而Dropout每次只激活部分,屏蔽大部分参数。
2
    解释二:Error误差导数的生物神经编码体系    生物神经学界的一个观点就是:生物神经元不可能完成复杂求导计算,然后反向传播。    Hinton给出了一个神奇的生物神经编码体系,    要点:    ★Don’t compute it. Measure it.Make a small change to the total input and observe the resulting small change in the total output.    分析:生物神经元不需要复杂计算,而是有一种通过简单的观测,来修正参数的方法.    ★编码体系:    传统导数体系:
    基于时间的生物神经编码体系:
    Hinton把这个非求导的Δ更新量称之为“时间导数",意思就是:    任意复杂函数的导数,都能由N个基于时间的线性函数构成。    不同时间段,以不同频率,放出不同强度的电信号,这些电信号足以模拟出任何函数的导数。
    对于这个图,Hinton又补充了一句:    ★Spike-time-dependent plasticity is just a derivative filter.    You need a computation theory (not a billion euros) to recognize what you discovered!    分析:神经元的发电形态相当于一个(时间)导数滤波器。    你得用复杂的计算理论(就是建立复杂的观测模型)来从神经元放电图像中获知信息。    值得注意的是 not a billion euros,应该并不是术语。    百度关键词 billion euro+神经 ,第一个结果就是欧盟12亿元模拟人脑计划:人类大脑工程。疑似Hinton在吐槽这个梗:砸数亿欧元,你也无法知道神经元的具体工作信息。
    推测根据是,之前看到的对Yann LeCun的采访 http://www.huxiu.com/article/109035/1.html:    LeCun:从根本上说,欧盟人脑计划(Human Brain Project)中的很大部分也是基于这样一种理念:我们应该建造一种模拟神经元功能的芯片,越接近越好,然后将芯片用于建造超级计算机,当我们用一些学习规则来开启它时,人工智能就出现了。我认为这纯属胡说八道。诚然,我刚才指的是欧盟人脑计划,并不是讽刺参与这个项目的每个人。许多人参与该项目的原因仅仅是因为它能获得巨额资助,这是他们所无法拒绝的。    似乎整个北美学界都对欧盟的这个计划不满,Hinton在加入Google之前几乎是穷困潦倒了,而欧盟却在这挥霍浪费,乱烧钱。
3
    解释三:双向连接回炉机制
    前馈网络存在的一个最大问题就是双向连接。即在模型中:输出神经元没有和输入神经元建立连接。生物神经元不分彼此,从输出可以循环退回到输入,然后重复工作。    而目前神经网络模型的训练算法,则是以:
    程序的循环机制,本质是硬件上的硬跳跃,生物神经元可没有这么厉害的高级功能。
    要点:    ★If the AutoEncoder is perfect,replacing the bottom-up input by the top-down input,will have no effect on the input of i.    If we then start moving yjyj and ykyk towards their target values,we get:
    分析:这里Hinton做了一个假设,他假设AutoEncoder已经完美完成Pre-Training,然后逆转一下传播方向,进行Reconstruction(重构),这样就有:
以重构的x~进行正向传播,在反向传播阶段:
    这个式子想要表达: 反向逆回去的x~x~是可以再度参战的。    这个式子的存在,表明生物神经元可能存在反向逆权值,通过这个逆权值,建立循环连接,而不是硬件式地直接跳回去。    而反向逆权值,恰好可以通过Pre-Training得到,从另一方面又佐证了Pre-Training机制在生物神经网络中是可能存在的。
4
    解释四:神经突触更新法则
    这部分,是Hinton根据上面的一些假设,做出的一份合理神经突触工作机制的推测:    要点:    ★First do an upward(forward) pass as usual.    分析:首先做正向传播。    ★Then do top-down reconstruction at each level.    分析:在正向传播过程中,逐层贪心做Reconstruction(重构).    ★Then perturb the top-level activities by  blending them with the target values so that the rate of change of activity of a top-level unit represents the derivative of the error with respect to the total input to that unit.    -This will make the activity changes at every level represent error derivatives.    分析:到达最高层后,Target值和y形成时间导数,反向在各层传播,替代误差导数。    ★Then update each synapse in proportion to:
    分析:期间更新神经突触的状态,从pre(前状态)到post(后状态)。
5
    解释五:自适应Pre-Training    生物神经的回炉机制从另一方面佐证了Pre-Traning的可能,于是出现了以下问题:    ★This way of performing backpropagation appears to requires symmetric weights.    分析:回炉机制肯定需要两个对称的权值,正向权值&逆向权值    ★What happens if the top-down weights are random and fixed?
    分析:逆向权值如果是随机、且固定的,会怎么样?(即不存在自适应调整机制)    ★Lillicrap,Cownden,Tweed&Akerman(2014)showed that backprop still works almost as well.    -The bottom-up weights adapt so that the fixed top-down weights are approximately their pseudo-inverse near the data mainfold.    分析:固定逆向权值,并不会造成太大影响。根据论文说法,最后正向权值矩阵会调整到与逆向权值矩阵互逆。    尽管固定逆向权值,并不会导致情况很糟糕,但是Hinton还是推荐逆向权值自适应调整,这贴合生物神经实际情况。    ★If it works for fixed top-down weights,it must work for slowly changing top-down weights.    -So adapt the top-down weights to be good at reconstructing the activity in the layer below.    -This is just the wake-phase of the wake-sleep algorithm.    分析:自适应的逆向权值调整有利于重构。另外,这也是wake-sleep算法的醒状态。详见 [zouxy09] 的博客。    ★With slowly apdapting top-down weights it works better.    在MNIST测试中:    -A 784-800-800-10 network with 50% dropout gets 153 errors.    -With fixed top-down pre-training,it gets 160 errors.    -With real adaptive backprop,it gets 150 errors and learns faster.    分析:从MNIST来看,自适应Pre-Traning还是不错的。
总结:脑皮层中的反向传播
1
    放电信号不是大问题    ★The fact that neurons send spikes rather than real numbers is not a problem-Spikes are a great regularizer.    分析: 生物神经元放电, 而不是以实数计算. 并且电信号本身就是个很好的Weight调整约束器(regularizer).
2
    时间导数    ★Error derivatives can be represented as temporal derivatives.    -This allows a neuron to represent both its activity and its error derivative in the same axon.    分析: 误差导数可以被分解为线性时间导数, 这样, 一个神经元就无须准备传递两种Signal了.    (temporal__derivatives∝activity=y)
3
    放电时刻即是反向传播的时刻    ★Spike-time dependent plasticity is the signature of backpropagation learning.
4
    双向权值不是大问题    ★The problem that each bottom-up connection needs to have a corresponding top-down connection is a non-problem.    -Random top-down weights work just fine.    分析:生物神经网络中,逆向权值应该是存在的。即便逆向权值不能反向传播自适应调整,问题也不大。
该文章属于作者个人,“深度学习大讲堂”拥有转载权,欢迎转发到朋友圈等等,但是不允许随意转载,如需要转载,请联系loveholicguoguo。
作者简介 潘汀
合肥工业大学计算机专业大三本科生,中科院深圳先进院集成所MMLAB访问学生。原ACM-ICPC算法竞赛选手,2015年获CCPC铜牌。2015年初开始研究机器学习,研究兴趣集中于对深度学习理论、应用(CV&NLP)及系统架构设计的综合探索。关于深度学习在面部情感分析方面应用的论文被《自动化学报》录用。
 欢迎关注我们!深度学习大讲堂致力于推送人工智能,深度学习的最新技术,产品和活动!
深度学习大讲堂

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存