关于卷积是什么,大家可以去参考一篇《一文读懂卷积神经网络》(广泛地转载于各大公众号间),下图是我目前看到的最形象的卷积描述。
该图片源自网络,感谢原 gif 作者 其本质就是对于一个区块,判断和自己系数组成的「基」区块的相似程度,得到的分数越高就越相似。这样,当一种「基区块」被赋予一种特征是,即使用于整张图片的特征提取,他的系数也是固定的,因此大量的系数加载操作可以被省略。同时,一个固定大小的「卷积核」成为了比「乘累加」更高阶、更高效的原子操作,在现代计算机体系结构中,实现越复杂,但操作越固定的加速器,其效率和速度的提升也就越大。 (2)Pooling——是垃圾就要扔掉 CNN 网络的另一个巨大贡献就是在卷积层和层之间,设置了一个」垃圾箱「,把上一层产生的无效信息都扔掉,避免了超大规模的数据传输和存储。大家把这叫做 Pooling,我又要来吐槽那个中国人给他取了个」池化「的名字,虽然我也找不到更好的名字,但根本无法帮助理解。Pooling 的策略很多,最常见的是 max pooling 就是留个最大的,然后又其他都扔掉。 (3)「乱撸」?(ReLU) LeNet 后期发展到 AlexNet 后,激活函数也从 sigmoid 变成了 ReLu,他们的图形曲线大概如下所示。用脚趾头也知道,Relu 操作的实现就是把符号位为负置 0 就好了。至于 sigmoid 么,传承自经典机器学习回归理论,是 e 指数的除法操作,编译后简直就是一场噩梦,我们先把他当作一个古老的神话就好了。
以上种种硬件实现的简化,加上 CNN 的巨大胜利,都当让硅工们看到了直接从电路角度优化的角度切入人工智能芯片的可能。但是,也发现了一个问题,传统的硬件加速的算法往往是做死的,比如椭圆加密,浮点乘除等等。但是 CNN 的元操作——卷积核——虽然模式固定,但是其每一层的卷积核数量和层数却是纷繁复杂,固定的硬件并不能实现网络的可塑性(structural plasticity)? 那该怎么办?下一次,我们先来回顾下 CPU 的发展历程,看看现代处理器的」形与令「。 「几重卷积几重生」——你看懂神经网络的卷积了?还有「重生」呢~限于篇幅,只能等番外了。 就到这里,且听下回分解。 〈三〉 梦里不问形与令 世界上有两种管家 一种是 Batman 的 Alfred 能服务能做饭能伪装能打架 狠起来超人也不是干不过 另一种是天朝的大内总管 掌印秉笔,啥事不会 老大又吩咐了就去传个话 你脑子里的 CPU 是哪一种? 有了神经元,知道了怎么把神经元连成网络,这个系列终于进入了主题——怎么实现神经网络。如果在这个问题上加一个条件,那就是「怎样用芯片实现神经网络的计算」? 在回答这个问题以前,让我们先去拜访两位长者——Alan Turing 和 John Von Neumann,目前大家公认的计算机之父。话说前者才是真的「苟利国家生死以,岂因祸福避趋之」,详见卷福主演的奥斯卡获奖电影《模仿游戏》。
图灵-冯-诺依曼架构 为了表达对大师的尊敬,我起了个很干脆的标题。大师之所以是大师,是因为他们定义了在 80 年前定义了通用计算机的数学模型和体系结构。在这过去的 80 年里,任何试图推翻这些结构的「投机」分子几乎都没什么好下场。但是,总有人希望推翻这个架构。先简单的描述下两位长者干了什么。 (责任编辑:本港台直播) |