炼数成金 门户 商业智能 芯片 查看内容

窥脑究竟,结网造芯(二)

2016-12-30 17:16| 发布者: 炼数成金_小数| 查看: 14218| 评论: 0|原作者: 痴笑|来自: 矽说

摘要: 其实在神经网络领域里,目前为止唯一能算的上前所未有成功的就是 CNN(Convolution Neural Network,卷积神经网络)。最早的 CNN 可以追溯到 98 年 Yann LeCun 的一篇如何识别手写数字的 paper,这里出现了第一个 CN ...

网络 工具 神经网络 硬件 人工智能

〈二〉
几重卷积几重生

蜘蛛结网,是为了捕食昆虫;
蜘蛛侠结网,是为了拯救世界;
码农 Data Scientist (~ds~) 结网,是为了——
换一个角度看世界,
英语叫做: Representation。

如果你只想知道一个关于神经网络的常识,我认为上面这个单词是最不应该错过的。就像每个学模拟电子学的人,其实归根结底就是学了两个字——放大。

话接上回,我们说到,通过一系列乘累加和非线性激活函数,我们就可以实现一个神经元。而关键的问题就是如何把神经元们连起来。解决这个问题之前,我们先要明白神经网络的作用——通过一系列线性和非线性的变化重新将输入信息映射成为表达事物的本质的简化特征。

如果你觉得上面一句的每个字都认识,却不知道他在说什么,那么我们来看一个经典的例子——人类的视觉皮层(Visual Cortex)。

视觉皮层, 一场生物与 AI 的伟大握手

码农老师的生物课又来了……
你有没有想过当你看到生命中一个重要的人的时候,比如说基友(码农怎么会有妹纸?),你是看到是他/她的鼻子,眼睛,脸上的痘痘,昨晚熬夜的黑眼圈……但是这些东西最后都只留下了一个映像——我面基了。可是你有没有想过从你看到图像,到你得到的结论,无数的信息都已经没有过滤,你的脑子完成了一次将 4K3D 图像压缩成两个字的过程,到底发生了什么事?
这个过程就是从信息经过视觉皮层(神经网络??)的过程。从前到后,他经过了几站:

(1)始发站——视网膜,比较像是一个电子系统的传感器,用来接收信号;
(2)快速交流道——LGN,他是将左右眼看到的信号重新编码后传递给视觉皮层,像是一个电子系统中的主控处理器与总线(请原谅我不说 LGN 的中文,因为说了你也记 不住);
(3)第一站——主视觉区 V1,第一层神经网络,司「边界检测(Edge Detection)」一职,这可能是神经元数量最丰富的一个区域;
(4)第二站——次视觉区 V2,第二层神经网络,司「基础特征提取」一职,归纳视觉信号的形状、大小、颜色、频率……
(5)第三站——V3,司「位置「,也是个过渡区,一条线上你有些站你不知道为什么会停~
(6)第四站——V4/V5(MT)分支,深度神经网络,各司「色彩/运动」;
(6)V4 分支终点站 1——换乘 inferotemporal Cortex,近深度智能 TE 区,司」目标识别「~~~终于终于我认出基友来了,撒花~~
(7)V5 分支终点站 2——换乘 Parietal Cortex, 进深度智能 MST 区,司「空间运动分析」。
 
视觉皮层可能是目前为止人类认识的最透彻的大脑部分,不过,好像建立在无数的活体实验上。。。即使如此,还是有很多未知的空间亟待生物学家探索。
不知道读到这里,对人工智能略有了解的你有没有觉得这堂生物课在哪里见过?先做边界检测,在再做特征提取,在进行分类识别,这不就是大名鼎鼎的

C N N
LeNet/VGG/AlexNet

卷积,让加速成为一种可能

其实在神经网络领域里,目前为止唯一能算的上前所未有成功的就是 CNN(Convolution Neural Network,卷积神经网络)。最早的 CNN 可以追溯到 98 年 Yann LeCun 的一篇如何识别手写数字的 paper,这里出现了第一个 CNN 的雏形 LeNet:
从结构上来,CNN 继承了视觉皮层中对信号处理「层」的概念,虽然不是那么的 100% 的吻合,但是 CNN 的初级层往往用来做「边界检测」这样的简单的特征提取,而在深度层重新组合初级层的信息成为抽象的再表达(Representation), 最后交给事件的发生的相关概率归纳出事物的本质。

另外,一个比较不太准确的趋势是神经元的数量随层的深度逐渐减少,但是单个神经元的粗壮程度(输入数量)随层的深度逐渐增加。视觉皮层也具有相似的规律,V1 的数量多,但是结构比较简单,但到了 V4/V5,链接变得很复杂,但占的区域却比 V1 小的多。

然而,这些都不做电路的人重点。对于硅工们而言 CNN 获得巨大成功的原因在于

它极大地节省了神经网络的硬件开销
使神经元为单位作加速器成为了可能

(1)CNN 定义了一种更高能效的元操作——卷积核

关于卷积是什么,大家可以去参考一篇《一文读懂卷积神经网络》(广泛地转载于各大公众号间),下图是我目前看到的最形象的卷积描述。
该图片源自网络,感谢原 gif 作者

其本质就是对于一个区块,判断和自己系数组成的「基」区块的相似程度,得到的分数越高就越相似。这样,当一种「基区块」被赋予一种特征是,即使用于整张图片的特征提取,他的系数也是固定的,因此大量的系数加载操作可以被省略。同时,一个固定大小的「卷积核」成为了比「乘累加」更高阶、更高效的原子操作,在现代计算机体系结构中,实现越复杂,但操作越固定的加速器,其效率和速度的提升也就越大。

(2)Pooling——是垃圾就要扔掉
CNN 网络的另一个巨大贡献就是在卷积层和层之间,设置了一个」垃圾箱「,把上一层产生的无效信息都扔掉,避免了超大规模的数据传输和存储。大家把这叫做 Pooling,我又要来吐槽那个中国人给他取了个」池化「的名字,虽然我也找不到更好的名字,但根本无法帮助理解。Pooling 的策略很多,最常见的是 max pooling 就是留个最大的,然后又其他都扔掉。

(3)「乱撸」?(ReLU)
LeNet 后期发展到 AlexNet 后,激活函数也从 sigmoid 变成了 ReLu,他们的图形曲线大概如下所示。用脚趾头也知道,Relu 操作的实现就是把符号位为负置 0 就好了。至于 sigmoid 么,传承自经典机器学习回归理论,是 e 指数的除法操作,编译后简直就是一场噩梦,我们先把他当作一个古老的神话就好了。

以上种种硬件实现的简化,加上 CNN 的巨大胜利,都当让硅工们看到了直接从电路角度优化的角度切入人工智能芯片的可能。但是,也发现了一个问题,传统的硬件加速的算法往往是做死的,比如椭圆加密,浮点乘除等等。但是 CNN 的元操作——卷积核——虽然模式固定,但是其每一层的卷积核数量和层数却是纷繁复杂,固定的硬件并不能实现网络的可塑性(structural plasticity)?

那该怎么办?下一次,我们先来回顾下 CPU 的发展历程,看看现代处理器的」形与令「。

「几重卷积几重生」——你看懂神经网络的卷积了?还有「重生」呢~限于篇幅,只能等番外了。

就到这里,且听下回分解。

欢迎加入本站公开兴趣群
商业智能与数据分析群
兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754

鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2017-5-24 02:47 , Processed in 0.144726 second(s), 26 queries .