人脑在做反向传播(back propagation)意味着啥( 二 )

人脑在做反向传播(back propagation)意味着啥

注:如果你理解了反向传播并且你正在使用 RNN,你就总是会为一定要做梯度裁剪而感到焦虑,要不然你就去使用 LSTM。昨天,我正在浏览 Deep Q Learning 在 TensorFlow 上的实现(看看别人是怎么处理等同于 numpy 的 Q 的计算,其中的 a 是个整数向量——发现 TensorFlow 并不支持该繁琐的操作。)总之,我搜索了一下「dqn tensorflow」,点开第一条搜索连接,发现了它的核心代码,下面是引用:如果你熟悉 DQN,你可以看到有一个 target_q_t,也就是 ,然后有一个 q_acted,也就是采用的该 action 的 Q(s,a)。作者在这里将上面这两个简化到了变量间隔(variable delta),然后他们想要把 295 行的代码中的 L2 loss 用 tf.reduce_mean(tf.square()) 替换掉从而进行缩减,到这里还好。 但问题出在第 291 行。作者想要保持对异常值(outlier)的稳健性,所以如果间隔(delta)过大,它们就使用 tf.clip_by_value 修剪它。意图很好,而且从前向传播的角度来看也是合理的,但如果你考虑一下就会发现它引入了一个大漏洞。这个 clip_by_value 函数在 min_delta 到 max_delta 的范围之外还有一个 0 的局部梯度,所以无论何时,该 delta 都在 min/max_delta 之上,该梯度会在反向传播过程中变成确定的 0。当作者为了额外增加稳健性而很可能尝试修剪梯度时,他们修剪了原始的 Q delta。在那个案例中,正确的做法是在 tf.square 的位置使用 Huber loss:在 TensorFlow 中,这有点难办;因为如果梯度超过了一个阈值,我们想做的只是修剪该梯度,但是因为我们不能直接干预梯度,所以我们必须通过定义 Huber loss 这种迂回的方式来做这件事。在 Torch 中,这会简单得多。 总结反向传播是一个 leaky abstraction;它是一个有着非琐细后果的信用分配机制。如果你试着忽视引擎下面的工作原理,因为「TensorFlow 会自动让我的网络学习」,那么,你就无法应对它会带来的危险,而且在搭建和调试神经网络时,会低效很多。人脑在做反向传播(back propagation)意味着啥


■网友
有bp的机制很正常。。。。人体只是把物理空间映射到语义空间。神经网络只是把语义空间映射到向量空间。鉴于两者都必须work。存在反馈是肯定的,只是不一定是bp的形式罢了。看啊,那只猴子觉得自己和苍蝇有什么区别。
■网友
Werbos说了啥我不清楚,Hinton提到过他相信人脑中也有类似BP的机制,而且正在work on it。至于人脑的BP机制可能对应哪些神经生物学层次的现象,希望能有专业人士来回答。
【人脑在做反向传播(back propagation)意味着啥】 题主一上来就阴阳怪气的,并不是科研工作者应有的态度。

■网友
谢邀。 我以为,BP是ML中一种经典算法,以递归求最优值。脑功能的网络有很多种,BP大概能硬套中十分之一?比如CA3模式补完符合BP算法。但只要有Glutamate和GABA以外的神经调制参与,比如Dopamine的奖赏环路,权重值完全不是BP那么玩的,而大脑里有一百多种神经调质和荷尔蒙。所以,算法大神还在自娱自乐阶段,但已经沾边了。


推荐阅读