Thoughts on vertical integration
Imagine taking an airplane, one would not need to know how to build it before sitting comfortable in it. Similarly, a pilot need not to know how each part of the plane works mechanically, a mechanic need not to know how each tool is created, and a software engineer need not to know the blueprint of his/her computer chips. Thus, for every complicate system there are different levels of abstraction. Each level is build on top of the previous one. Moreover, it seems to be easier to build level x+1 using level x rather than level x-1.
However, one may argue that everything can be explained or constructed using only the very low level components (e.g., atom level), except that it is almost impossible for us to comprehend a holistic view using only the lower level components. By introducing higher level abstractions, we make communication of ideas and knowledge more efficiently. Essentially, we create embedding to reduce the computation cost for ourselves to think and imagine, and to reduce the bandwidth need for us to communicate. But, at the same time, such compression also introduce noise.
On the other hand, machines have perfect memory and potentially more computation power. So, is it possible that in future machine learning we can abandon the higher level abstractions? Obviously, current approaches still embrace the structure information and the idea of embedding and adding levels of abstraction (e.g., 100+ layer CONV Nets). But do we really need it? If we do so much computation and achieve optimization using genetic programming, why can't we have a "vertical integration" of abstractions and learn everything at the atom level? In that case, we create less noise and higher accuracy.
One note to myself is that structural information may not equal to high level of abstraction. For example, by processing an image using a 2D/3D array instead of a 1D array, we preserve information rather than introducing a higher level of abstraction.
(TODO: Need to write an example in CNN…)
想象一下乘坐飞机——你不必先学会如何制造飞机,就能舒适地坐在里面。同样,飞行员不必了解飞机每个部件的机械原理,机械师不必了解每件工具是如何制造的,软件工程师也不必了解计算机芯片的设计蓝图。因此,对于每一个复杂的系统,都存在不同层次的抽象。每一层都建立在前一层之上。而且,用第 x 层来构建第 x+1 层,似乎比用第 x-1 层更容易。
然而,有人可能会说,一切都可以只用最低层的组件(例如原子层面)来解释或构造——只是用低层组件几乎不可能让我们理解整体图景。通过引入更高层的抽象,我们可以更高效地交流思想和知识。本质上,我们创建了嵌入(embedding),以降低自己思考和想象的计算成本,并减少交流所需的带宽。但与此同时,这种压缩也会引入噪声。
另一方面,机器拥有完美的记忆,且可能有更强的计算能力。那么,未来的机器学习是否有可能抛弃高层抽象?显然,当前的方法仍然依赖结构信息和嵌入以及逐层抽象的思想(例如 100 层以上的卷积网络)。但我们真的需要它吗?如果我们能用遗传编程做大量计算并实现优化,为什么不能对抽象进行"垂直集成",在原子层面学习一切?那样的话,我们引入的噪声更少,精度更高。
给自己的一个备注是:结构信息不一定等于高层抽象。例如,用二维/三维数组而非一维数组处理图像,是在保留信息,而不是引入更高层的抽象。
(TODO:需要在 CNN 中写一个例子……)
Comments