第三部分 NN-ANN 70年前的逆向推演

从这部分开始,调整一下视角主要学习神经网络算法,将其与生物神经网络进行横向的比较,以窥探一二。 现在基于NN的AI应用几乎是满地都是,效果也不错,这种貌似神奇的玩意怎么想出来的。个人不禁好奇,随后一通乱找。想理出来个线头,谁知一挖发现这线后面的故事太丰富,这里特意分享出来。

其实对神经元的认知是比较早的,在机制和功能方面多是偏向生物学解释,在这个领域最前面的自然是神经学和生物学家。在生物学框架下成果在二战前后推进速度飞快(二战期间德国和英美科研投入特别大,这也算是战争福利),逐步搞清楚一系列关于脑神经微观上事实。直到1943年,神经学家McCulloch和逻辑学家(其实文章发表的时候他连高中文凭都没有)Walter Pitts一篇共同的论文出现,一把将一堆其他门类的学者拉进了大脑研究的大坑中。

这篇叫做“A Logical Calculus of Ideas Immanent in Nervous Activity”的文章(第一次学神经网络算法的同学必看),其中提出来一个假说:在细胞在通过网络连接可以实现计算的能力,也就是是说”大脑是台计算器“。说明了在细胞的基础上可以构建一套图灵机,而这个工作模式可能就是大脑工作的本质。更进一步的是pitts给神经元设计了几种基本连接模式,构成了完备的逻辑集合(类似于罗素搞出来的 与 或 非)进一步解释一种大脑可能存在的运作机制。也就是说他找到了一组通过神经元简单逻辑单元构建复杂计算的框架。在这套框架下生物学的机能解释被逻辑框架组装了起来。之后几十年内,最主要的神经网络算法都是在此基础上调整改进.乃至到围棋大师AlphaGo还是得认它为亲妈。随后Pitts被MIT和Norbert Wienner看中,招为研究生。 没错,这个Wienner就是那个折磨万千自动化系学生的[控制论]作者(此书很值得读,轻薄小巧),Cybernetic学科的创始人。说到Cybernetic,这个被我们叫做"控制论的"学习小组事实上在不只是干自动控制这一个事情,事实上这是一个杂学小组,目标是用数学逻辑的方法解释所有能动的东西的机制,特别是活的。按照Wienner他老人家的说法,这个学科的目的就一个:统一通信,控制,统计力学的核心问题。(Cybernetic本身是拉丁文翻译出来的,原来的意思是"掌舵",听听看人家这气魄.)重要的是这是一帮子实践派,他们不满足于单纯的学术研究,还总试图把这些活的东西用别的方法造出来。所以这里面的人就显得特别神奇,一个学科里面充满了,数学家,生物学家,社会学家,物理学家,甚至还有心理学家以及各种工程师,唯独没有一个叫做控制学家。就这样的一个杂学学科,在今天我们的高校以单一技能专业化的方式授课,自动化系普遍成了电子系第二专业,实在为教学方式捏一把汗,Wienner若泉下有知不知会不会吐血再死一次。Pitts自然在wienner的带领下参加Cybernetic组织。按照wienner在书里面的说法,pitts认识了Claude Shannon,这时候的Shannon还没开始搞信息论,主要工作是跟着Vannevar Bush(这货搞的曼哈顿计划)写论文等毕业,当时他的毕业研究是搞开关电路(其实就是数字电路)。当时Wienner的把他两搓到一起就是想让pitts去找到把“脑牌计算机”用数字电路造出来,让Shannon给他传播数字电路的知识。随后又将pittes拉去参加小聚会,期间接触到John von Neumann(这个现代计算机的发明人也是这个组织成员),这期间pitts主要给von Neumann和Goldstone的团队说明“脑牌计算机”的故事,同时还做神经学的科普。这跨组织,跨学科的效果就是好,von Neumann把"Pitts's loops "用到了EDVAC的改进中(就是那篇文章的成果之一,这个loops具体说来就是通过闭环网络实现内存),这下计算机的指令和数据基本存储体系才算是基本补全了。读完这通才恍然明白,计算机和脑结构在很多方面的相似性原来不是偶然的,这帮人是在一起混的。Cybernetic和计算机的产生其实还对研究现实问题在基本方法上产生根本性的影响,这个找时间我们再说。

按控制论导论里面的说法,McCulloch 和Pitts1947年还设计了一套盲人阅读机,这套机器能模仿视觉皮层第四层的,可惜年代久远不能得见,甚至论文都找不到了。后来Pitts加入了一个小组,试图用统计学,信息论,数学,生物学来搞清楚神经网络的工作机制。当时他觉得神经元结构的学习形成过程可以用统计力学来做过程建模。 1959年他们弄出来一篇关于青蛙视觉论文,里面揭示了视觉到大脑的信息传递过程和内容和眼球本身对视觉信息的预处理机制。这对神经元网络的数据输入信息内容有了来自生物实验的准确观测,今天看来成效卓著。随着着他对生物细节的了解,pitts对这条路渐渐感到绝望和Wienner的关系也产生了激烈的矛盾,一怒之下把博士论文给烧了。在后续能查阅到的研究中pitts对网络结构本身的过程建模没能做出更大的突破。没多少年这位仁兄就挂了,实乃一大遗憾。Pitts这条故事线基本也就到这里。之后在NN的研究就再没有按照使用数学逻辑+生物学逆向工程的基本逻辑走下去的,逐渐与生物学分家了。神经学的研究又回到微观细节上。

而此后的NN真的就成了ANN(人工神经网络),更多是在算法和逻辑上直接发展了 ,这也就不难理解今天的神经网络算法压根不需要学习生物学了。

先丢开故事的精彩和神奇,仔细看看这个Pitts留下的遗产是什么?

1:给出了神经元建模 ,也是NN沿用下来的McCulloch-Pitts Neurons 就是常说的MP/MCP 神经元。

2:找到了完备的基本的计算逻辑连接集合。图中的每个具体连接形式。

3:说明了如何用这些算子在开环结构中如何用这些基本的逻辑结构组建计算的功能。即是生物逻辑的图灵机

4:数学上解释了如果在网络中环装连接会产生的递归效应(环状网络计算自身的效应)。

5:揭示了时间在环装结构中的不存在。听起来很诡异,一旦进入环装逻辑以后就只有顺序但时间被消除掉了,这个观点在后来的很多学说上都被承认,但直观上不容易理解。

这对40年代简直是个奇迹,这些信息可以说是一套逻辑上的“现代计算机”模型了(尽管没造出来),你可以通过设计输入"公式"和"数据"它就能帮你完成计算过程。事实上这也是我们日常的“编程",“录入”的基本模式。但往前一步,这和人脑比较下来任在工作范式上存在本质的差异---从“录入”的信息中生长出“公式”的能力。这种能力就是“学习”,具备“学习”能力的系统,只需要向它输入数据,它自身就能形成与之匹配的计算模式。 同样在40年代Donald Hebb 搞出来一套叫做Hebbian learning的假说,歌词大意就是当两个神经元反复激活,连接的关系会得到加强。这个Hebbian是个心理学家,里面没有做复杂的数学逻辑论证和建模,Hebbian learning在后续过程就一直被当做工具或方法被沿用,直到后来发现LTP这个假说才得到验证。这个先放下不表。

基本上40年代NN最大的遗产就是MP 神经元和Hebbian Learning的基本思路,一直用到今天。后面我们将MP神经元应用的发展作为一条主线,看看pitts的这个假说到底带来如何巨大的变革。

从下往上看--新皮层资料的读后感 第三部分 70年前的逆向推演- 从NN到ANN的更多相关文章

  1. 从下往上看--新皮层资料的读后感 第二部分:突触Synapses

    为进一步了解这种连接性产生的差异,在认识soma这个独立的逻辑单元后,进化过程设计了一整套系统设计来使用这个逻辑单元.为促成细胞体之间发生连接构成系统dendrite和axon之间的连接需要引入新的功 ...

  2. 从下往上看--新皮层资料的读后感 第四部分 来自神经元的设计-perceptron 感知机

    搬地方了,其他的部分看知乎:https://zhuanlan.zhihu.com/p/22114481 直到50年代,perceptron被Frank Rosenblatt搞了出来.perceptro ...

  3. 免申请直接用上 IDEA 新 UI,只需要这三步配置

    早上给大家介绍了IDEA官方宣布正在开发一套全新的UI,但目前是预览版需要申请才能体验. 随后马上就有网友分享了,不需要申请直接就能激活体验的方法. 本期视频:https://www.bilibili ...

  4. TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)[转]

    TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub) Git-1.7.11-preview+GitExtensions244SetupComplete+T ...

  5. 原生JavaScript 获取下一个/上一个同胞元素

    看JavaScript遇到的问题,研究了下 获取上一个或者下一个同胞元素,使用很多人会立马想到JQuery  prev() 和 next() 的确非常方便.那么原生的JavaScript该怎么获取 上 ...

  6. C#情怀与未来,怨天尤人还是抓住机会,能否跟上dnc新时代浪潮?

    C#情怀与未来,怨天尤人还是抓住机会,能否跟上dnc新时代浪潮?   经常看到有.NET圈子在讨论是否应该转其它语言   C#情怀是一方面,如果觉得C#未来没前途,光靠情怀是撑不住的, 建议对C#未来 ...

  7. Mkdocs在html网页上看markdown

    目录 Mkdocs在html网页上看markdown 1. 本文目的 2. Mkdocs介绍 3. DEMO的演示 3.1 配置需求 3.2 安装mkdocs 3.3 新建工程 3.4 启动服务器 3 ...

  8. CentOS系统在不重启的情况下为虚拟机添加新硬盘

    一.概述 用过虚拟机的都知道,如果在系统运行的时候去给虚拟机添加一块新设备,比如说硬盘,系统是读取不到这个新硬盘的,因为系统在启动的时候会去检测硬件设备.但是我们也可能会遇到这样的情况,比如正在运行比 ...

  9. 手把手教popupWindow从下往上,以达到流行效果

    效果如图所看到的,点击開始button,popWindow从下往上出来,再点击popWindow外面,popWindow又从上往下消失 能够看出来,上面的popupWindow是半透明的,后面我会细说 ...

随机推荐

  1. linux 时间管理——概念、注意点(一)【转】

    转自:http://www.cnblogs.com/openix/p/3324243.html 参考:1.http://bbs.eyeler.com/thread-69-1-1.html        ...

  2. 《Spark 官方文档》机器学习库(MLlib)指南

    spark-2.0.2 机器学习库(MLlib)指南 MLlib是Spark的机器学习(ML)库.旨在简化机器学习的工程实践工作,并方便扩展到更大规模.MLlib由一些通用的学习算法和工具组成,包括分 ...

  3. 浅谈sql的字符分割

    对于oracle:在字符串处理时:经常会遇到字符串分割的问题:可惜SQL中没有split函数:这个倒是挺困扰我们写sql的.对此:我来说说这字符串分割. 例如对字段str中一条数据是'120-mm-2 ...

  4. iOS · UILabel加删除线

    创建自定义子类DeleteLineLabel,继承自UILabel,然后在自定义子类DeleteLineLabel中 方法一(上下文): - (void)drawRect:(CGRect)rect { ...

  5. ADO 读取 ACCESS

    #pragma once #include <vector> // 加入ADO支持库, #import "C:\Program Files\Common Files\System ...

  6. 30-React JSX IN DEPTH

    JSX IN DEPTH JSX 从根本上说,JSX只是提供了语法糖React.createElement(component, props, ...children)的功能.以下JSX代码: < ...

  7. 复旦大学2014--2015学年第二学期(14级)高等代数II期末考试第八大题解答

    八.(本题10分)  设 $A,B$ 为 $n$ 阶半正定实对称阵, 求证: $AB$ 可对角化. 分析  证明分成两个步骤: 第一步, 将 $A,B$ 中的某一个简化为合同标准形来考虑问题, 这是矩 ...

  8. UVALive 3177 长城守卫

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  9. 【Android】解决新建的xml文件无法正常加载的问题

    新建一个xml布局文件,如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm ...

  10. 人工神经网络ANNs

    参考: 1. Stanford前向传播神经网络Wiki 2. Stanford后向传播Wiki 3. 神经网络CSDN blog 4. 感知器 5. 线性规划 6. Logistic回归模型 内容: ...