神奇的大脑 & 神经网络_人脑与神经网络-程序员宅基地

技术标签: 算法  深度学习  神经网络  人生  

0序

让你在操场上溜达几圈,大脑会自然的识别跑在你前面人的性别、年龄、工作等大致信息。但问题来了,你是如何做出的判断,背影识人术是从哪里进修得到的技能,让你具体说出根据什么判断的还真是一时哑口无言。这时你就奇怪了:对呀,我刚才也没建模型,也没有用逻辑,然后就判断了,还8、9不离10,这咋回事儿啊? 或许此文读完可以略知一二。

了解掌握人脑的作用机理是作为一个有探索欲望的人一生的追求,也是改进提升神经网络的一个极其重要的途径。此文目的是记录有趣的人脑活动,旨在指导神经网络的改造。

首先展示下人脑---神经网络的过程图作为直观想象之根基。

人脑解刨示意图
人脑神经元抽象图
神经元节点互通
神经网络示意图

1 又回到最初的起点 - 咿呀学语

我们来看看每一个人在婴幼儿期如何学习知识、理解并回答问题的。首先婴儿在一开始不会说话,他只会听。他要做的第一件事情就是把听到的复述出来,这就相当于去设计一个双层的RNN来完成一个自编码器功能,一个负责听,一个负责复述,用输出等于输入来进行自编码。当一个婴儿开始能把听到的大多数词、话复述出来的时候,他就不满足复述,会和大人互动。有时候大人问一个问题,他给出回答,一开始可能大多数是错误的。那我们大人要给他纠正。这就相当于把之前训练好的两个RNN拆开来(但锁定他们的权重),在他们中间插入一个神经网络专门用来训练问答,这个问答过程中,婴儿可以不懂问答的含义。关键在于这个新插入的DNN网络经过监督训练完成了从问题(文本序列)到回答(文本序列)的正确转换。到这个时候就训练好了两个网络了。那么如何体现知识和推理呢?我们把第一个负责接收信息的RNN的输出提取出来,这个输出有什么意义?它是一个特征,什么特征?一个词、一句话、甚至几句话的特征表示。我们把这个特征再送入一个网络,这个网络的输出用来表示我接受表示这句话的输入特征的几率。可以设定:网络输出为1,表示我强烈认同刚才听到的话所表示的世界知识;输出为-1表示强烈反对;输出为0可以表示不具备相关的判别能力,然后我们给出“世界知识”作为监督来训练这个小网络,也可以使用强化学习方法。训练好了之后,我们暂时不用该网络隐藏层到输出层的权重和输出结果,我们只去用这个网络的隐藏层。隐藏层具备什么意义?它仍然是特征,从RNN的输出到这个隐藏层的变换表示了我具备的知识,把这个特征联同第一个负责接受文本(或语音)序列的RNN输出合并起来,作为我们训练问答系统网络的输入,锁定训练好的部分权重,开始利用知识进行问答的网络训练。当然在这个网络中你还可以增加一些其他输入数据:比如情感特征、幽默程度特征等(永远记住特征就是网络的隐藏层,是另一个网络通过自编码或监督训练得到的)来提供不一样的回答。这样的问答系统,我认为可以直接输出问题的答案,而不去判断某个词是正确答案的几率。我们从小学习知识也是这么学的。

2 视觉

关于卷积神经网络(CNN),大家可能都广泛知晓其背后的灵感来自于人视觉系统中一个叫感受野的(receptive field)概念。其实CNN只是借用了这一概念,其整体机制与人的视觉系统还是有很大的差别。现有的CNN只是对视觉系统的简单模仿,我们需要从人类视觉系统得到启发,不断去完善,这可能需要很多方面的人才公同努力。

1.1 从神经科学剖析视觉

人眼的视觉系统可以被认为是由三大部分依次链接组合而成,这三大块分别位于人眼球后壁内部的视网膜(retina)、位于丘脑的外侧膝状体(lateral geniculate),以及大脑的视皮层区域(visual cortex)。下图展示了这三块区域的相对位置:其中眼球后壁的视网膜由于太薄,图中没有清晰绘制。链接这三块区域的分别是视神经(optic nerve)和视放射(optic radiation)。他们都是神经元的轴突,类似于深度学习神经网络中的隐层节点之间的链接。请不要把视觉系统简单的认为是三层神经网络,其实视网膜、外侧膝状体、视皮层这三个区域的每一个区域都是有深层神经网络组成,可以借用下名词“网络内部的网络”(Network in Network)。

视网膜是最先接收到图像光源刺激的神经系统。它位于眼球后方负责将传入眼睛的光信号转化为生物电信号,并初步分析后将处理后的生物电信号通过视神经向外侧膝状体传递的神经网络结构。视网膜有十层结构、其中三层被神经元占据。

下图是视网膜十层结构的一个示意图,

这十层结构在图中上而下分别是:色素上皮层,视锥、视杆细胞层,外界膜,外颗粒层,外丛状层,内颗粒层,内丛状层,神经节细胞层,神经纤维层,内界膜。其中负责接受光信号(也就是网络的输入层)的是视锥、视杆细胞(感光细胞)层(Rods and cones layer)。一个有趣的现象是,光线在到达该层时(该层的神经元称为:感光细胞)要首先穿过视网膜的其余八层。二者八层不是完全透明的哦,其中部分层次分布有为视网膜提供营养的血管(不透明),可是我们从来感觉(看)不到血管的存在导致的视野中的阴影。光信号在到达感光细胞前经过其它视网膜的其它结构是脊椎动物与非脊椎动物视网膜结构的重要差别。

视网膜中由神经元占据的另外两层分别是外侧核状层(Outer nuclear layer)和内侧核状层(Inner nuclear layer)。前者主要是双极细胞(bipolar cell)和水平细胞胞体(神经元的主体,定义阈值和激活函数的地方,不是激活函数的映射)组成;后者则主要由神经节细胞(ganglion cell)和无长突细胞(amacrine cell)的胞体组成。这三层神经元通过他们相应的树突或轴突链接形成整体的网络结构。

池化发生在感光层与与双极细胞层、双极细胞层与神经节细胞层之间

从深度学习的角度来看,池化操作是使用一个值来替代某一局部区域的由多个值表示的信息,借此达到缩小网络规模但又一定程度保留原始数据特征的目的。具体方法有平均池化、最大化池化等。池化是感受野概念在CNN中的典型应用。在视网膜中,局部一个或多个感光细胞信号汇聚到一个双极细胞;一个或多个双极细胞的输出信号汇聚到一个神经节细胞。与CNN池化不同的是,视网膜的池化操作其核大小是不固定的。当人眼注视某一个区域时,该区域对应的视网膜相关的池化核是1对1的,离注视中心越远,核的尺寸越大。这就是人眼在注视区域中心的视觉灵敏度最高,在周边则要差很多的原因。人眼这样的池化设计一定程度上也是为了缩小传送到外侧膝状体的信号通道的规模。这种不均匀的池化操作并没有让人在看物体时感觉过度的不自然,这种平滑的过度及其神秘。

在视网膜神经网络里具有层内链接

仔细观察上图,会发现有一类细胞叫水平细胞(horizontal cell),他们负责链接协调在感光层的信号;同样您会发现还有一类细胞叫无长突细胞(amacrine cell),它们在神经节细胞层内做类似的工作。这两类细胞的功能并不完全清楚,我个人感觉可能和抵消池化带来的不自然过渡有关,也可能和人眼处理的是动态的视频而不是静态的图片信号有关;也有可能和人眼的注意力机制有关(attention mechanism),人眼的注意力机制体现在人会把注视中心对准那些在视网膜上短时间内信号变化较大的区域。比如突然一个亮点或移动引起的视网膜上对应细胞的信号输出短时间内发生较大的变化。在CNN中,我们并没有找到类似的层内连接结构,也许未来我们需要这样的结构来处理复杂的问题,比如视频处理等。

到目前位置,我们已经在视网膜这个网络中见识了许多人类视觉系统与CNN的联系和区别,比如都有感受野、人眼没有卷积操作、CNN没有层内链接等;它们之间还有其他的联系和区别。

3、其他

激活函数

生物神经元与深度学习使用的神经元数学模型差别其实非常的大。在生物体内,一部分神经元对输入信号的响应是光滑的,比如前文提到的感光细胞、双极细胞、水平细胞大多数无长突细胞,他们由于比较靠近输入信号,对输入信号的响应迅速。这类细胞不能产生脉冲电位,又叫动作电位。而向外侧膝状体传送信号的神经节细胞则仅依靠脉冲电位来编码。这就相当于一个网络里使用了两种不同的激活函数。这种方式在人的神经系统里还很多见,但是否在人工神经网络里有效就不好说了,有学者建议单一网络只使用一种激活函数。

其实脉冲神经元其实也可以被看成是产生连续输出的神经元,只不过他们输出的信号值不连续,很多人在研究脉冲神经元的数学建模工作,但我个人认为这类神经元我完全可以用LSTM结构中的单个神经元来模拟,而且LSTM的门结构已经给出了完美的参数调整办法。有关长短时记忆网络(LSTM)可以参考我另一篇专门讲LSTM博文:用通俗易懂例子“干掉”RNN与LSTM_nobles007820的博客-程序员宅基地

生物体内使用脉冲神经元可能是不得已而为之的,因为有些信号要传输很远的距离,比如从腿部到大脑,而生物神经元的信号传递速度不能太慢,否则该物种可能存在着被灭绝的危险。

侧抑制与local response normalization

侧抑制也广泛的存在于生物体内神经系统中,在CNN中表现为local response normalization(LRN,翻译为:局部响应规范化吗?)。它的作用体现在当物理位置靠近的两个神经元给出的输出信号差别较大时,local response normalization会进一步放大这种差别,在图像处理中我个人认为和轮廓提取和注意力机制有关。有深度学习的研究学者认为LRN用处不大,我对此持保留意见。特别是在今后的处理视频的网络建模时,LRN可能会有大用处。

神经元的衰老与drop-out

CNN中还有一个有趣的小技巧是drop-out,它使得神经元在训练时以一定几率出于静眠状态,既不发送输出信号,也不更新权重。这种机制被认为在抑制过拟合现象时很有效。在生物神经领域,我想到的对应的可能是神经元的备份与衰老机制,但这并不完全准确。生物细胞是会衰老死亡的,如果没有备份的话,具备检测某一特征的神经元死亡了,该特征就无法识别啦,这种事情在生物体内较少发生依靠的就是其备份机制(也有在大脑内大量发生的,产生的就是认知和行为障碍,比如阿尔兹海默病,俗称老年痴呆就是大量神经元失活无法传递信号)。CNN乃至所有的DNN都引入drop-out机制还有一个原因时我们目前对单一隐藏层到底该准备多少个神经元并没有理论上有突破的研究,通常我们会设置相对需要更多的神经元,通过引入drop-out机制来抵抗过多神经元带来的过拟合。特征备份这一功能对于人工神经网络没有什么意义。

跨层链接与残差

跨层链接在生物神经系统里是否广泛存在不好说,但在某些网络结构中,承担跨层链接任务的细胞目前被认为仅对神经元提供营养支持,其本身不是神经元,不参与信号传递。真相是否如此,geshu意见。

关于深度学习网络中的跨层链接利用残差技术我是非常赞同的,我个人对次的理解是:初级特征既可以用来生成高级特征,也可以直接用来进行判别。未来可能会出现各种丰富多样的跨层链接方式,事实上这种事情正在发生。

外侧膝状体处理轮廓、纹理、颜色和运动信息

经过视网膜的简单处理,视觉信号被神经节细胞送入外侧膝状体。在那里视觉信号得到了独立且完整的处理,其输出信号可以被送入所有有需要的地方,比如经视放射送入视皮层参与智慧生命活动,又比如被送入其他较为低级核团(脑组织中聚集在一起的神经元,不包括其对外联系的轴突和树突)直接参与产生输出信号控制肌肉运动,可以用低等动物通过视觉观察到危险不经思考拔腿就跑来理解。

关于外侧膝状体的详细结构和功能,我对其没有深入的研究,只大概知道其相当于一个全连接神经网络,分为大小两类细胞。这类细胞除了接受来自神经节细胞的视觉信号,还会接受来自其他核团的感觉信号,负责分析视觉信号的轮廓、纹理、颜色、运动等信息。同时人的很多器官都是左右各一的,外侧膝状体也不例外,而且外侧膝状体同时接受来自两侧视网膜的信号,者被认为与形成立体视觉有关。

目前并不了解在外侧膝状体是否有类似视网膜上的感受野(池化操作),我个人倾向于没有。在我看来中枢神经系统的一个小网络都是以循环神经网络为基本结构的。这类网络有一个很大的特点:输出会循环反馈给输入,自身形成回路;同时可以产生跨层连接。同时,从进化的角度看,在很多低等动物,由于大脑不够发达,丘脑基本上完成了大部分的生命活动所需要的与外界交互的决策,因此一定程度上,丘脑内部网络的结构与组成大脑皮质单元的皮质柱是类似的。

视皮层是视觉相关智慧活动的不可或缺的参与者

在谈大脑功能前,我要说的一句话是目前所有关于大脑的研究成果,无论发表在多么高级的期刊上,均有可能被再次推翻的可能。因此,关于这一部分我们可以充分大胆的想象而不用被质疑没有根据,因为已有的根据不一定是正确的。

首先我个人坚持认为,理论上没有大脑的人是可以有生命活动的,甚至是可以进行一定的活动的。这里定义生命活动指的是持续规律的自主心跳和呼吸。比如植物人。

不过,大脑不同区域的负责不同的功能,当某一区域受损严重时,会出现对应功能的缺失。这类例子也有很多,就不举了。还有一类有趣的现象,就是大脑的功能区域是人们根据研究结果人工划分的,事实上其界限没有研究人员说得那么清楚。比如一个自幼失明的孩子可能具备灵敏的听觉或音乐天分。其背后的原因就是,由于失明,视皮质区域的大脑结构被用来参与处理与其相邻听觉系统相关的智慧活动去了。反而造成其在音乐上的独特天分。

因此,我大胆推测人类产生智慧活动所需要的知识是分块处理的,这些知识存储在一个个类似于皮质柱的神经网络里。记忆的并不存储在人们常说的海马区域,而是存储在这些一个个皮质柱里。大脑里有许多条高速信息公路在各脑区穿行,皮质柱通过自己的神经纤维挂在这些信息高速公路上,通过门控机制决定是否使用这些信息,同时记忆的提取也是利用一条类似的寻址高速公路,遗忘不是皮质柱的死亡,还是丢失了打开门控的信息。同时皮质柱也承担着决策功能,决策体现在信号的转化和流转、记忆和知识体现在某一个或多个层神经元的整体信号中。这就相当于神经网络中特征层存储着知识、权重参数充当着决策。

既然人视觉系统没有卷积操作,那么CNN引入了卷积操作那么成功其理由是什么?CNN未来又会怎样发展?

CNN的卷积操作代替的是人移动眼球扫描外界视觉信号的过程。在当前集中在静态图片处理的情况下,这种把扫视放入到网络里面来进行比较有优势;随着计算性能的提高,自动驾驶对于处理视频数据的要求,我们可能需要更多的借鉴人眼在处理视频数据中的特点,到时候CNN也许会被抛弃或改进。但是CNN中使用的各种技巧还是可以借鉴的,可能会抛弃卷积核,以注视中心为基准,采用"池化+全连接"联合注意力机制,辅以足够的基于数据扩增(data augmentation,包括平移、镜像、旋转和缩放)的监督训练,我个人对此很有信心。目前对视频处理的研究主要采用基于3D的CNN,卷积操作仍然是其核心操作,这种方法很可能只是过渡性的方法。

以下一些猜想:(仅仅供娱乐和交流,没有任何根据)

1、大脑网络的参数是不是长期进化已经能从DNA直接遗传得到的?

2、宇宙是不是一个高级生物的大脑? 热辐射类似神经元之间的电信号,而人类是宇宙这个大脑的神经递质。

宇宙与大脑

3、一个很奇怪的现象,团队竞技中,a.NBA球队往往某一年很强、狠NB,但是第二年往往就不尽人意了。b.女排2019年很强,遇神杀神,但2020年就无缘世界女排联赛四强。2021输的一塌糊涂。看到网上有个评论有点意思: “每当出现体育明星夺冠放卫星后,资本介入商业炒作广告,接下来多数无法再续辉煌,资本所到之处一片焦炭。。”

4、2021年6月21日上午10时左右,学活楼下看到两个女孩子抱在一起,B主动抱的A。

A:不哭不哭,我们以后再见哈

B: 呜啊~~~

A也跟着抽搐。

5、记忆速度和记忆时长

不知何时,大家普遍有这样的意识:小明背东西贼快,古诗10分钟就能背下来,然而10分钟后他可能题目都忘掉了;小红背的贼慢,古诗30分钟才能背过,然而10分钟后她仍89不离10能复述。

基于这个常识,我认为大脑在认知过程中有一种负责逻辑的(海马体长时记忆区,直接调大脑长时记忆的参数),一个是负责存储的(海马体短时记忆区)。如小明,海马体短时记忆区够大,他背东西是把知识直接存储在短时记忆的海马体短时记忆区中,不带有任何前后逻辑关系。小红海马体短时记忆区容量不是很够,需要背的过程中将短时记忆存储成长时记忆,即:调大脑逻辑参数。因而忘却的慢一些。小明型人格记为A,反应迅速,能够快速存储眼前知识。小红型人格记为B,反应迟钝,需要在存储过程建立前后逻辑。

人际交流。从身体角度来讲,我们与外界都要保持一个安全距离,或者从亲密关系的角度,我们会有一个比较舒服的距离存在,而超越这个范围,我们就会感到浑身不自在,同理,在思想上也是如此。  圆滚的很快但欣赏不了周围的风景。A是速热速冷型,B是慢热慢冷型。碰到一个陌生人C,A会凭借短时记忆优势迅速从对话中了解C,迅速勾勒出一个大致的人物形象继而迅速降温(不进则退)。而B每天记一点,从头至尾加上逻辑,勾勒出一个很充实的人继而降温速度较缓慢。

亿、未完待续、、、、

————————————————
版权声明:本文使用的一些图片素材来自于网络,感谢素材提供方,如有侵权请联系告知。本文为CSDN博主「walking_tree」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

特别说明: 文中部分内容参考如下网址,感谢大神的整理规整:

【1】视觉神经--叶强, 链接:https://zhuanlan.zhihu.com/p/28614693, 来源:知乎

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/nobles007820/article/details/117460432

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签