如果语言与思想密切相关, 那么人类语言很可能已经成为放飞思维的阻碍: 我们的思想往往一直被语言自身所困, 无法真正跳脱出来解决这一难题的方法同样相当复杂要, 因为惟一的规避方式似乎在于发现并修复我们自然语言当中的缺陷而这正是一项我们只能立足语言之内由内而外完成的任务
Andrew Brook, 论知识与头脑
在 AI 领域, kernel 一词拥有两种含义这种多义性, 是指既不同音亦非衍生关系, 但却在语义领域内拥有相互关联的意义
Kernel 一词的第一种用法, 是指为了检测特征而在 N 维表面 (例如 2D 图像) 上的滑动窗口而第二种 kernel, 例如β kernel, 则是指机器学习模型当中的基本构建块, 其能够通过组合构建起规模更大的整体架构举例来说, 在 TensorFlow 源代码当中, core/kernels 目录当中包含着数百个文件, 其中又囊括诸多底层运算, 它们正是 TensorFlow 的核心所在
尽管 kernel 一词的这两种版本皆源自图像处理领域, 但二者已经演变成为截然不同的概念更有趣的一点在于, 人工智能中的两种 kernel 表义卷积与核心运算则复用了 kernel 一词的原始多义用法 kernel 既指核心 (例如各种水果的核,β kernel 也取此义), 同时也代表着覆盖某一表面的小单元(例如玉米粒以及α粒子) 在这两种情况下, kernel 同时代表着某种种子或者细粒, 但我们在理解时会根据植物及饮食等语境而作出完全不同的判断
究其根源, 多义词是对人类理解能力的一种肯定, 换言之即是利用旧有语言创造新含义的方式然而, 多义词同时也可能因此而带来潜在风险: 其有可能因主流概念框架的存在而固化, 并因此限制我们在考虑问题时的创造力更具讽刺意味的是, kernel 这个词还暗指一种不可变的或公理性单位人工智能一词本身就是这种多义性谬论的牺牲品其多重含义广泛存在于各类在线文档与学术文章当中, 影响着我们的工具图书馆课程以及思想, 并导致我们失去了自行判断的能力
在今天的文章中, 我将讨论 kernel 这一被广泛使用, 但却已经开始阻碍人工智能社区内部创新的词汇最后, 我还将提出几条前进道路, 其中包括我们在 Messhkan Machine Learning 项目当中采取的道路之一
AlexNet α Kernels 与并行化
AlexNet 曾经以创纪录的极高准确度赢得了 2012 年 ImageNet 大规模视觉识别挑战赛, 其架构在利用深层卷积神经网络实现 ImageNet 分类能力一文当中得到详尽描述作者写道, 我们采用的并行化方案, 在本质上相当于在每个 GPU 上放置半数 kernel(或者说神经元); 另外我们还实施了另一项技巧, 即 GPU 只在某些层中进行通信请注意这里的 kernel(kernel)表达
AlexNet 当中的两条并行卷积曲线
在这篇论文的帮助下, 卷积已经成为人工智能领域从图像识别到语句分类再到语音识别等各类实际应用的核心驱动力目前, 所有主要机器学习库都提供开箱即用的卷积选项, 其中几种卷积(β)kernel 还得到了显著优化但有趣的是, AlexNet 的并行化策略从来没能在 AI 社区当中得到重视与推广这很可能是因为人们通常并没有大量英伟达 GPU 可供使用
这一现状对于人工智能业界意味着, 相较于立足并行化层面进行创新, 人们往往倾向于通过 kernel 与卷积来表达自己的思路这确实带来了显著成效卷积技术在自动驾驶与人脸识别等方面取得了重大突破然而, AlexNet 的核心问题在于试图通过 GPU 并行化来解决各类问题, 例如攻克缺乏 kernel-size 与 stride 等超参数的卷积方法难以搞定的问题目前, 卷积研究论文也提供了一些值得称道 (且切实有效) 的解决方案, 例如将大量 kernel 一次性打包至同一套前馈网络当中另一种更为细致的方法, 则可以并行方式同时运行大量 kernel, 保留其中最具前景的 kernel 并随时间推移对其加以修改这一切已经远远超出了 AI 库的范围, 而延伸至更为深奥的研究领域这种类型的创造力很可能在达到行业规模后带来真正的颠覆性效果, 因为其具有适应性, 因此能够有效实现进化数据处理与预测
Tensorflowβ Kernels 与 XLA 编译器
在 Tensorflow 项目庞大的说明文档当中, XLA 编译器无疑是一大极为重要的功能孵化选项 XLA(全称为加速线性代数)的维护者们在文档中写道, 相较于标准 TensorFlow,XLA 的优势在于其能够将多个运算符 (kernel 融合) 融合至少量经过编译的 kernel 当中同样的, 请注意这里的 kernel 表达
图中所示, 为由 Meeshkan graphviz 后端生成并由 Gephi 渲染的五层全连接神经网络当中的加法与乘法运算可视化结果
虽然 XLA 项目关于其理论给出了令人信服的叙述, 但在实践当中, 还很少出现利用这款编译器并得到显著速度提升的反馈信息我们自己的项目也未能获得这样的效果当然, 这并不是编译器本身的错, 而是该编译器只适合特定某类机器学习模型如果您的全连接神经网络分裂成几条独立的路径, 而后再重新对接在一起, 那么这种将队列与 kernel 加以融合的作法才真正具有意义特别是傅像 Apache Spark 以及 OpenCL 等工具时, 其能够充分发挥分布式与资源加速优势然而, 必须承认的是 kernel 融合在很大程度上并不能带来什么收效, 因为目前的主流机器学习工具与规范并没有促进或者鼓励在算法当中, 确保数据在融合之前通过并行路径进行处理并行化中的主要运算 (例如点乘积或卷积内乘法) 已通过经过高度优化的 C 代码得以执行, 其无需进行额外的融合换句话来说, AI 当中开箱即用的 kernel 机制非常谘, 我们完全可以在无需深入挖掘的前提下解决问题这就导致 XLA 编译器等新型工具变得并不像理论上那么实用
Kernel 时代下的生活
语言阻碍了直觉的实现, 也妨碍着我们以开放思维考量体验
Tina Röck, 过程本体论: 混凝土的思辨哲学
如果您同意在两种不同语境下使用 kernel 这个词会给对某些 AI 问题的思考方式带来负面影响, 那么接下来我将把这个词的两种用法联系起来, 并描述其中存在的真正问题事实上, kernel 一词的两种含义在不同范围内亦相互关联即使是最强大的 CNN 构建器也不需要了解 Tensorflow 具体在使用怎样的 kernel, 反之亦然优化 Tensorflow kernel 的人可能永远不会接触到卷积那么, 这会带来怎样的问题?
如果一个多义词代表着一个语义连续体, 那么 kernel 将始终存在于固定或停滞的理解区间之内相比之下, 多元文化中的 church(教会, 教堂)一词则具备包容性, 其含义存在于拥有空间及地点连续性的统一体之内: 强调精神层面的路德教会与赫尔辛基的实体教堂当然有所不同, 但 church 一词仍有助于将概念单位限定为其具体含义归属即同时涵盖物理空间与精神社区同样的, 卷积α-kernel 是一种几何层面的恒定单位, 其沿表面移动; 点积β-kernel 则是一种经过高度优化的线性代数运算, 但都强化了机器学习当中固定元素的概念这种固定性源自机器学习中的一系列实践与理论考量举例来说, GPU 在并行 (实践) 处理多次重复的相同运算方面表现得非常出色, 而同样的松散关联也存在于光学识别神经基础与 AlexNet 当中所实现的卷积之间 (理论) 不过最终结果是, 机器学习往往会预先修正 kernerl, 而后对训练集进行数次运行以调整其具体使用方式
赫尔辛基的岩石教堂
当然, 更激动人心的过程在于 AI 的自我调整; 但只有当我们修改其中发挥主导作用的 kernel 规范时, 才能最终衍生出基准测试课程工具以及最重要的因素语言简单来讲, 我们需要采取更为开放的心态或者流程需要实现动态水平提升, 但在这种情况下我们需要从根本层面重新思考自身架构, 从而将设计的基本单位由 kernel 转换为信息流更具体地讲, 以 AlexNet 为例, 我们需要重视的是不再执着于 kernel, 而是更具创造性地对两个 GPU 加以组合的基本思路
这类设计决策在实施难度其实并不像大家想象的那么可怕就在本月, 一篇名为 IMPALA: 利用重要度加权 Actor-Learner 架构实现可扩展分布式深层强化学习的精彩论文就很好地论述了这个问题正如作者所指出的那样, IMPALA 的高数据吞吐量与数据处理效率使我们不仅能够在单一任务当中进行训练, 同时还能够面向多项任务同时进行训练且只需对训练设置进行最低限度的修改不过在我看来, 其最重要的优势在于 IMPALA 能够在各类规模情况之下, 高效利用当前计算机设备, 从而快速将新思路转化为现实并开辟更多未得到探索的应用机会
Meeshkan 与并行 AI
Meeshkan Machine Learning 正致力于实现同样的目标通过创建数以千计的设备来一套能够运行 AI 模型的网络, 其能够精确地探索在 XPU(无论是 CPUGPU 抑或是 TPU)上因设备与 kernel 规范局限而根本无法解决的一系列现有问题网络效应以及规模有人曾问我, 为什么人们会将 40000 项二进制运算分发给 40000 台独立的设备单是带宽成本与花费在数据传输上的时间就已经远远超过了并行性带来的收益我的答案是, 通过这种从零开始构建并行化系统的方法, 我们才能够拥有充足的自由与空间来探索实现机器学习的另一种方法而不必被束缚在固有 kernel 优化规范之内作为云计算之战的旁观者, 我们见证着各大行业巨头竞相将 TB 级别的数据交由具备高度优化型 kernel 的超级计算机进行预测因此, Meeshkan 提供了另一种新的可用于探索真实世界的设备分布式架构, 并希望能够借此挑战目前处于主流地位的实现模式
Meeshkan 目前正与不同的合作伙伴包括艺术家企业以及非营利性组织共同探索这些思路即使我们设计的发展道路无法真正为机器学习世界指明方向, 我仍然鼓励大家思考这种因主观习惯而引发的创新阻碍问题有时候, 我们忘记了人工智能是由人类所创造, 并对其大加批评总结而言, 我们的人工智能事实上提升着我们自身所掌握的最重要且最基本的工具人类智能!
来源: https://juejin.im/post/5aaf727b51882555627d16c4