原文地址:https://www.zhihu.com/question/59800121/answer/184888043

神经元

在深度学习领域,神经元是最底层的单元,如果用感知机的模型, wx + b, 加上一个激活函数构成了全部,输入和输出都是数字,研究的比较清楚。别的不说,在参数已知的情况下,有了输入可以计算输出,有了输出可以计算输入。

但在神经科学领域,神经元并不是最底层的单位。

举例来说,有人在做神经元膜离子通道相关的工作。一个神经元的输入,可以分为三部分,从其他神经元来的电信号输入,化学信号输入,还有编码在细胞内的信号(兴奋,抑制类型,这里可以类比为 激活函数?),输出也是三个,电输出,化学输出,改变自身状态(LTP 长时程增强, LTD长时程抑制)。

我们是否足够了解神经元? 我个人十分怀疑这一点,前几天还看到一个关于神经元的进展,大意是神经元不仅能对单一信号产生反应。还能对一定一定间隔的信号产生反应。。 神经元的底层编码能力其实更强。我们神经科学发展了这么久,可能真的连神经元都没真正的搞清楚。

在这另外说一句。 深度神经网络里面,大部分节点都是等同的,但是在人类神经网络里面,并不是这样。不同的脑区,甚至脑区内部,神经元的形态都可以有很大的差异,如V1内部的六层就是基于神经元形态的区分。从这个角度,人类神经系统要更复杂一些。我个人并不否认每一种神经元可以用不同初始化参数的 节点来代替,但是目前来说,复杂度还是要比深度神经网络要高。

信号编码方式

再说编码方式,神经科学里面的 神经元是会产生0-1 的动作电位,通过动作电位的频率来编码相应的信号(脑子里面的大部分是这样,外周会有其他形式的),而人工神经网络?大部分我们听到的,看到的应该都不是这种方式编码的,但是 脉冲神经网络 这个东西确实也有,(去ASSC 开会的时候看到了一个很有趣的工作,在评论区简单说了下,有兴趣可以去看。)

神经网络的结构

目前的深度神经网络主要是三种结构, DNN(全连接的)、CNN(卷积), RNN(循环)。还有一些很奇怪的, 比如说…Attention 的?不好意思,文章还没看,不敢乱说。

DNN:

CNN:

出处: AlexNet

RNN:

出处: Understanding LSTM Networks

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

神经科学里面的网络结构,此处以V1 为例:

和大家想的不同,视觉区分了V1,V2,V3,V4,V5(MT),上面还有FFA, 和一些掌管更高级功能的脑区。在这里面每一个小的视皮层里面,并不是纯由神经元互相连接构成的,仍然存在不同的层级结构。这里去google 找了一张图,不用管具体的文章,主要说明的是V1 的精细结构和连接关系。V1 的主要功能是 识别点和不同角度的线段(Hubel 和W 在上世纪50年代在猫上的工作),但是其实不止如此,V1 还对颜色有一定的感知。

如果在这个层面作比较,我自己的理解是, 人类神经网络是 DNN+ CNN + RNN 再加上脉冲作为编码方式。层内更像DNN, 层间和CNN 很类似,在时间上展开就是RNN。

好,我们继续。

训练方式

深度神经网络的训练方式主要是反向传播,从输出层一直反向传播到第一层,每一层不断修正出现的错误。但是大脑里面并没有类似反向传播机制,最简单的解释,神经元信号传递具有方向性,并没机会把信号返回上一层。举个例子,我要拿起手边的杯子,视觉发现向右偏移了一点,那我会自然而然的移动整个手臂向左一点,然后试着去重新抓住杯子。好像没人是让手指,手,最后是手臂朝杯子移动,甚至多次才能最后成功吧。在此引用下一篇文章里面的图。

来源文章: Towards Biologically Plausible Error Signal Transmission in Neural Networks

https://arxiv.org/abs/1702.07097

我们的大脑,更像最后 DFA 的原理。出错了,把误差送到一个更靠近输入的地方,然后重新训练。

记忆和遗忘

提到记忆的话,这里主要说的是LSTM, LSTM 的记忆储存在每个节点的权重里面,同时有专门的 遗忘门 控制遗忘速率。这些都是以数字的形式存储的。

在神经系统里面,记忆的存储是由一些脑区的突触的形成和消失来存储的。其实他们有一个比较共通的地方在于,他们在训练过程中都是渐变的。得益于反向传播机制和 神经系统的生物性,他们在训练过程中和在不断的学习过程中都只能以一个相对慢的速度发生改变,从学习速率角度来讲,他们是比较相似的。

然后我们来说遗忘。遗忘在LSTM 里面是通过门来控制的,在神经系统里面,我觉得是和STDP相关的,它的基础是 Hebb 假说, Fire Together, Wire Together, 同步放电的神经元倾向于建立一个更强的连接。STDP 拓展了这一点,考虑了两神经元放电的先后顺序带来的影响。

来源:Synaptic Modification by Correlated Activity: Hebb's Postulate Revisited

http://annualreviews.org/doi/abs/10.1146/annurev.neuro.24.1.139

简单来说,如果突触前神经元放电先于突触后神经元(神经元信号传导具有方向性,从突触前到突触后),这个突触会进入一个LTP 长时程增强状态,会对来自突触前的信号有更强的反应。反之,如果突触前神经元放电后于突触后,则会进入一个长时程抑制的状态(说明他俩并没有接收到相同来源的信号,信号不相关),一段时间的反应更弱。

深度神经网络里面门的权重也是 反向传播训练出来的,也有渐变的这个性质,当对于快速变化的刺激,有一定的滞后。从这个角度来说,人类神经系统要更灵活一些,可以在很短的时间内完成状态的切换。

觉得想说的大概就是这些,因为我自己做的研究是 视觉注意,更多在人身上做,所以对于中间的环路级别的研究,并不是特别的熟悉。再往上,谈到人类大脑皮层的工作,个人觉得做的十分的有限,对于大部分脑区,我们并不知道他们是怎么工作的,只是能把不同的脑区和不同的功能对应起来(还不一定准)。在这个角度上谈他们的异同是不太负责的。。容易被打脸。

接下来我会试着邀请几个朋友来说下环路这个级别的事情。然后会找其他同行帮我挑错和补充。很多东西都是按照记忆写的。一些东西不一定准确。。

我的观点

正如在提纲里面提到的。 对的答案往往类似,而错误的答案各有不同。地球上这么多高等的生命都有类似的底层网络结构,而其中的一种还发展出了这么伟大的文明,神经网络这个结构,至少已经被我们自己证明是一种有效的形式。但是是不是智能这个形式的全局最优解?我个人持怀疑态度。

神经网络是一个有效的结构,所以大家用这个结构做出一些很好的结果,我一定都不吃惊。但是如果谈模拟的话,就是尽力要往这个方向靠。这点上,我个人并不是十分看好这种方式。我们向蝙蝠学习用声音定位,发展的声呐无论是距离还是效果都远超蝙蝠。我们能超过蝙蝠的原因,第一是我们的技术有拓展性,底层原理共通的情况下,解决工程和机械问题,我们可以不那么轻松但是也做到了探测几千米,甚至几十公里。第二个原因就是我们需要而蝙蝠不需要,他们天天在山洞里面睡觉。。哪用得着探测几十公里的距离,探到了也吃不着。

其实人类大脑也很类似,大脑是一个进化的产物。是由环境不断塑造而成的,人为什么没进化出计算机一样的计算能力,因为不需要。但是其实反过来也有一定的共通的地方,大脑里面的一些东西,我们也不需要,我们千百年来忍饥挨饿进化出的 对于脂肪摄入的需求,在儿童时期对于糖类摄取的需求。这么说的话,我们对于大脑,同样去其糟粕,取其精华不是更好吗?

我上面提到的是一个理想的情况,我们对大脑已经了解的比较透彻的,知道该去掉哪,留下哪。但是现在……可能还要走一段模拟的路子。

总结一下,就是深度神经网络和大脑皮层有共通的地方,但是并不能算是模拟。只是大家都找到了解题的同一个思路而已。

拓展阅读以及参考文献:

从科研到脑科学 - 知乎专栏

https://zhuanlan.zhihu.com/VisNeuro

Understanding LSTM Networks

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

AlexNet: ImageNet Classification with Deep Convolutional Neural Networks

http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks

Towards Biologically Plausible Error Signal Transmission in Neural Networks

https://arxiv.org/abs/1702.07097

STDP: Synaptic Modification by Correlated Activity: Hebb's Postulate Revisited

http://annualreviews.org/doi/abs/10.1146/annurev.neuro.24.1.139

神经元对一定间隔信号反应: Learned response sequences in cerebellar Purkinje cells

http://www.pnas.org/content/114/23/6127.short

新智元相关报道 :【新智元专访】神经元本身也能编程,神经网络学习能力远超预期

https://mp.weixin.qq.com/s/df5tF31RGT7up_Q-kD_w_g

深度神经网络(DNN)是否模拟了人类大脑皮层结构?的更多相关文章

  1. 深度神经网络DNN的多GPU数据并行框架 及其在语音识别的应用

    深度神经网络(Deep Neural Networks, 简称DNN)是近年来机器学习领域中的研究热点,产生了广泛的应用.DNN具有深层结构.数千万参数需要学习,导致训练非常耗时.GPU有强大的计算能 ...

  2. 一天搞懂深度学习-训练深度神经网络(DNN)的要点

    前言 这是<一天搞懂深度学习>的第二部分 一.选择合适的损失函数 典型的损失函数有平方误差损失函数和交叉熵损失函数. 交叉熵损失函数: 选择不同的损失函数会有不同的训练效果 二.mini- ...

  3. 神经网络6_CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)概念区分理解

    sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程,QQ:231469242) https://study.163.com/course/introduction.htm?courseId ...

  4. 深度神经网络(DNN)模型与前向传播算法

    深度神经网络(Deep Neural Networks, 以下简称DNN)是深度学习的基础,而要理解DNN,首先我们要理解DNN模型,下面我们就对DNN的模型与前向传播算法做一个总结. 1. 从感知机 ...

  5. 深度神经网络(DNN)

    深度神经网络(DNN) 深度神经网络(Deep Neural Networks, 以下简称DNN)是深度学习的基础,而要理解DNN,首先我们要理解DNN模型,下面我们就对DNN的模型与前向传播算法做一 ...

  6. 云中的机器学习:FPGA 上的深度神经网络

    人工智能正在经历一场变革,这要得益于机器学习的快速进步.在机器学习领域,人们正对一类名为“深度学习”算法产生浓厚的兴趣,因为这类算法具有出色的大数据集性能.在深度学习中,机器可以在监督或不受监督的方式 ...

  7. Keras入门(一)搭建深度神经网络(DNN)解决多分类问题

    Keras介绍   Keras是一个开源的高层神经网络API,由纯Python编写而成,其后端可以基于Tensorflow.Theano.MXNet以及CNTK.Keras 为支持快速实验而生,能够把 ...

  8. CNN(卷积神经网络)、RNN(循环神经网络)和DNN(深度神经网络)

    本文转载修改自:知乎-科言君 感知机(perceptron) 神经网络技术起源于上世纪五.六十年代,当时叫感知机(perceptron),拥有输入层.输出层和一个隐含层.输入的特征向量通过隐含层变换达 ...

  9. CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?

    https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...

随机推荐

  1. golang channle close() x,ok := <- c

    close为内置函数 close内置函数关闭一个通道channle,其效果为:在最后的值从已关闭的信道中被接收后,任何对其的接收操作都会无阻塞的成功.对于已关闭的信道使用v,ok := <-   ...

  2. 【1】【leetcode-76】 最小覆盖子串

     最小覆盖子串(hard) (不会) 给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串. 示例: 输入: S = "ADOBECODEBANC", ...

  3. SQL结构化查询语句

    SQL结构化查询语句 SQL定义了查询所有关系型数据库的规则. 1.通用语法 SQL语句可以单行或者多行书写,以分号结尾 可以使用空格和缩进增强可读性 不区分大小写,但是关键字建议大写 3种注释 注释 ...

  4. Ajax和Json实现自动补全

    1.index.jsp <%@ page language="java" import="java.util.*" pageEncoding=" ...

  5. SpringBoot系列: 集成MyBatis

    本文主要修改自下面博客:http://www.ityouknow.com/springboot/2016/11/06/spring-boo-mybatis.htmlhttp://tengj.top/2 ...

  6. linux 中 如何 搜索 指定目录 下 指定文件 的 指定内容

    开发时,经常遇到 全局查找某些代码 linux 中 如何 检索 某 目录下指定文件 的 指定内容如下: //.点为查找当前目录 下 的 所有 *.php 文件里 有 hello 的文件 find . ...

  7. ubuntu没有/usr/include/sys目录

    实际上不是没有sys目录,只是系统给换路径了 32位系统:/usr/incude/i386-linux-gnu/sys 64位系统:/usr/include/x86_64-linux-gnu/sys/ ...

  8. [译]在vuejs中使用任意js库

    原文 全局变量 最naive的办法是通过附加类库到window对象,使之成为全局变量: entry.js window._ = require('lodash'); MyComponent.vue e ...

  9. python基础 range()与np.arange()

    range()返回的是range object,而np.nrange()返回的是numpy.ndarray() range尽可用于迭代,而np.nrange作用远不止于此,它是一个序列,可被当做向量使 ...

  10. 实现两线程的同步二(lockSupport的park/unpark)

    1.使用LockSupport的part/unpark实现 package com.ares.thread; import java.util.concurrent.locks.LockSupport ...