意识生物学与计算机编程 意识的生物学基础 - Assbbs

意识生物学与计算机编程 意识的生物学基础到底是什么? - Owl of Minerva的回答 - 知乎https://www.zhihu.com/question/19716987/answer/270103088 对于意识的生物学基础,我非常同意 Filestorm 的观点/结论,即 意识的生物学基础是大量 神经元集群 的协同活动 我在Neuroanato…

意识生物学与计算机编程 意识的生物学基础到底是什么? - Owl of Minerva的回答 - 知乎https://www.zhihu.com/question/19716987/answer/270103088 对于意识的生物学基础,我非常同意 Filestorm 的观点/结论,即 意识的生物学基础是大量 神经元集群 的协同活动 我在Neuroanatomy领域从是过数年的研究,实际切过人脑组织,并系统研究过从微观 神经元 到宏观(脑区、大脑)的各种尺度的人脑结构和功能。实际的经验加上大量的论文给我的直观感受就是如此简单——意识无非是大量神经元的协同活动。但是这里的“大量”和“协同”才是根本性的关键问题,也是普通人很难使用实际形态的事物或者概念去理解的——这么物理/数学模型简单的神经元,如何大量地协同起来去达成复杂的功能的呢。理解这个问题,我主观性的认为,其工具不在于神经科学/心理学领域,而在于数学/计算机科学,这也是我转行的主要动机。幸运的是,计算机科学最近数年的发展,已经能过为我们理解这个问题提供初步的工具了。 意识的最基本单元:神经元和突触 神经元之间最直接的连接在于从一个神经元的轴突到另一个神经元的树突通过突触的连接。一个神经元的树突可以接收多个神经元轴突的连,同样地,一个神经元的轴突也可以连接到多个神经元的树突。姑且认为,这种连接是单向地,也就是,信号以放电的形式,只能从上一个神经元的轴突传导到下一个神经元的树突。实际上,即使这种连接是双向的,如果转换成网络,两个神经元组成的无向图在拓扑上等价于由它们组成的两个有向图。所以,我们考虑神经网络的问题,可以把这个生理结构最为简单化,也就是使用最为简单的数学/物理模型表示: 一个神经元j接收由上一个神经元传来的信号(强度) ,并给出反应 放电 . 这个神经元对于来组不同轴突的信号敏感性不同,对于 信号所来的轴突,其敏感性为 ,同时该神经元对信号的响应函数(激活函数)为f, 那么对于这个信号的输出 . 如果考虑来自于n个轴突的信号,则有: . 实际上,神经元总是有一个额外的输入,称为bias, 并有对应的敏感性(权重),这里暂不考虑。 2. 神经元到神经元网络 从几个神经元到神经元网络,事情就突然变得复杂起来,因为这个事情的复杂度至少是指数增长的。不过我们仍然可以使用类似如下一类的多个基本神经元网络来等价生物神经元网络的拓扑结构: 这就是我们经常听说或者接触的神经网络。可以这样简单理解:多个数据从各自对应的树突传入,经过几个神经元的处理(加权、响应、bias等),在某个神经元的轴突传出放电信号。这个过程在生物大脑中无时不在进行。 在生物体中,神经元网络里的权重和响应函数可以通过多种方式得到改变。对于底层功能,比如基础视觉、听觉,最为常见的权重改变方式为 “用进废退” Use it or lose it 1 . 也就是,使用越多(在适度的方位内,放电越频繁)的神经元连接会得到增强,而长期不使用的神经元连接会被削弱甚至断开。对于高级功能对应的神经元/神经元网络,其权重改变方式则要多变和复杂的多,除了用进废退,还有反馈,协同等等已知和未知的方式。 在现有的常见神经元系统中,神经元连接权重的改变的主流方法在于 反向传输 Back Propagation 2, 3 ,这是一种反馈方式. 简单来说,就是将输出信号跟目标信号以一定方式进行比对 loss function ,然后将误差反向传导,以一定的速度(量)来改变对应神经元连接的权重 微分 。通过如下简单的python代码可以很容易的理解这个过程: import numpy as npN, D in, H, D out = 64, 1000, 100, 10x = np.random.randn N, D in y = np.random.randn N, D out w1 = np.random.randn D in, H w2 = np.random.randn H, D out learning rate = 1e-6for t in range 500 :       Forward pass: compute predicted y     h = x.dot w1     h relu = np.maximum h, 0     y pred = h relu.dot w2     loss = np.square y pred - y .sum     print t, loss       Backprop to compute gradients of w1 and w2 with respect to loss     grad y pred = 2.0    y pred - y     grad w2 = h relu.T.dot grad y pred     grad h relu = grad y pred.dot w2.T     grad h = grad h relu.copy     grad h h < 0  = 0     grad w1 = x.T.dot grad h       Update weights     w1 -= learning rate   grad w1     w2 -= learning rate   grad w2 3. 意念对象与Autoencoder…