人脑是怎么防止梯度消失和梯度爆炸的?
共 2720字,需浏览 6分钟
·
2024-04-21 10:05
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
编者荐语
神经网络,也称为人工神经网络 (ANN) 或模拟神经网络 (SNN),是机器学习的子集,并且是深度学习算法的核心。其名称和结构是受人类大脑的启发,模仿了生物神经元信号相互传递的方式。
编者荐语
神经网络,也称为人工神经网络 (ANN) 或模拟神经网络 (SNN),是机器学习的子集,并且是深度学习算法的核心。其名称和结构是受人类大脑的启发,模仿了生物神经元信号相互传递的方式。
文 | 冒蓝火的加特林
源 | 知乎
感觉这个问题跟我的科研方向有一点关系,所以就厚着脸皮强答一波了;
(1)动物的神经元都是以脉冲的形式进行信息交流的,而脉冲是离散的,所以从数学角度人脑(往大了说就是动物)交换信息的方式是离散的,也就是不能求导,所以就不存在所谓的“梯度”这一概念了;当然也有论文可以建模,以一种伪bp的方式进行脉冲迭代,当然这就是后话了;
(2)基础知识准备:要解决题主的这两个问题,首先就要知道人脑是怎样基于脉冲的形式进行学习的:当一个神经元通过突触(准确的说是轴突)传输脉冲到下一个神经元,下一个神经元收到脉冲后就会引起膜电位的上升,不发射脉冲的时候,由于神经元存在离子泄露,导致膜电位下降;而当该神经元的膜电位达到一定阈值的时候,就会发射脉冲到下下个神经元了,当然你也得让神经元歇一会,在它发射脉冲后的一段时间内,你咋扒拉它,它也不射了,哦,不是,是不发射脉冲了(说白了就是贤者时间呗)。
神经元膜电位随前级神经元发射脉冲的关系:下面的绿条条就是脉冲,蓝线线就是膜电位变化曲线,红线线就是如果你不再来脉冲的话,膜电位的走向。
上面说到,前级神经元发射脉冲会引起后级神经元膜电位变化,进而导致后级神经元发射脉冲,完成信号传递;但是前级神经元的脉冲引起后级膜电位变化程度可是不一样的!
这就引出了大脑最重要的学习机制-STDP;啥意思呢?就是说前级脉冲引起后级膜电位的变化程度是与前后级神经元发射脉冲的时间差有关的。
这个膜电位的变化程度,你可以理解为一种权重;而这种更新权重方法与时间是有关的,这也是和传统神经网络最不一样的特点;
STDP学习机制:更新的权重随前后神经元发射脉冲的时间差之间的关系。
(3)怎样防止“梯度消失”?(1)中提到了,脉冲是离散的,所以其实是不存在梯度的,那么我所理解的就是如果大脑在进行迭代过程中更新的权重过小怎么办?
这个问题,就引出了大脑的长期记忆功能,“一朝被蛇咬,十年怕井绳”,你小时候遇见了一件非常可怕的事情为什么你能够记一辈子呢?
这就引出了大脑的cell assembly(细胞集群)的特点了,下图就是大脑的功能分区,我们在处理一件事情的时候,可不是所有的分区都在工作的,其实只用到了其中一部分,所以就本着谁的活谁干的原则。
如果你24小时干同一件事情,大脑中负责你干活的那块区域不整点活儿不得被你活活累死。
所以大脑的不同区域内部之间是存在集群效应的,它们之间的相互紧密连接,相互抱团,有点类似与循环神经网络的结构,由于绑定的非常紧密,突触之间的权重也非常高;这就回答了你的梯度消失:大脑A分区平时不工作,消停待着,但是如果开始工作,只要有一个脉冲进来,整个分区集群就会瞬间被激活,进行工作,相互之间产生脉冲,相互之间更新权重,大脑就开始进入训练阶段了~!
如果你持续做事件A,A分区就会一直处于激活状态,就像嚼了炫迈一样;如果你突然不做A了,A分区就没有外接刺激,由于神经元的不应期和STDP的学习机制,它就会一点点的萎下来,再次恢复待机状态,所以也就不存在所谓的梯度消失;不知道我这样说是否能够算回答你的第一个问题;
(4)怎样防止“梯度爆炸”?那么我所理解的就是如果大脑在进行迭代过程中更新的权重过大怎么办?
这个其实反而很好解释,根据(2)中神经元的特点,你会发现,更新权重其实只与前级神经元和后级神经元有关,继而大脑更新权重的方式就只有两层神经元的参与,所以就不会被滚起雪球来;
同时为了怕更新权重过大把脑子烧坏了,还特意为神经元准备了不应期(也就是(2)中提到的贤者时间),后级神经元不能持续发射脉冲,根据STDP学习的规则,也就不能持续的一直的更新脉冲;
(5)最后,其实大脑是十分复杂的,而且神经元发射脉冲其实上是非常稀疏的。我所答的内容其实也存在很多不客观或者不准确的地方,真心非常欢迎大家能够一起讨论,批评指正~~!
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲 在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲 在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~