从0到1,深度学习开发可以这样迭代
CNN 卷积神经网络
现任谷歌云端人工智能暨机器学习首席科学家李飞飞创办的ImageNet大规模视觉挑战赛(ILSVRC: ImageNet Large Scale Visual Recogition Challenge)始于2009年,彼时李飞飞还在斯坦福。2012 年,Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 利用一个大型的深度卷积神经网络,又称为AlexNet,赢得了当年的 ILSVRC。这是第一次CNN架构展现出其超群优势而取得了该赛事历史上划时代的突破。
2016年横空出世的AlphaGo系列接连战胜李世石,柯洁等人类最强围棋棋手。AlphaGo架构中的价值网络和策略网络都采用了卷积神经网络。
以卷积神经网络为代表的深度机器学习框架尽管沉寂了几十年,但是其结合巨量训练数据以及强大且可以负担的数据处理能力,将人工智能提高到了一个传统人工智能技术无法企及的高度。
由于人工智能水平的提高和人工智能使用门槛的降低,人工智能在过去几年成为一个炙手可热的研究和投资领域。大家都期盼人工智能可以赋能各行各业,可以造福人类。
今天我们来讨论一下小团队开发一个人工智能卷积神经网络IP行不行?
精益创业和敏捷开发
精益创业精益创业的主要思想是尽快找到最早的付费用户,尽早接触用户来修正产品的定义,在产品没有上市之前就已经可以保证不会赔钱,而且将用户的需求也添加进去了。
这里的核心是快速迭代,从用户愿意买单的最简功能开始,不要试图一下子推出所有的功能,不要试图去制造一下子就完美的产品。
尽快推出产品,获得用户反馈,对产品进行修正以及升级,尽快推出下一代产品。
敏捷开发
敏捷开发流程将产品集成开发分成很多小功能模块,每次只集成一个小功能,进行充分集成和系统验证。这样的流程保证一旦系统出现问题都可以很快定位。这样的流程可以保证每次系统集成的可靠性。
结合精益创业和敏捷开发的思想,通过一次次小功能升级,将更多用户需求集成进产品,在尽快获得收益的同时及时收集用户反馈对产品进行下一次升级。经过多次迭代后的产品一定会越来越有竞争力。
回答上节最后提出的问题。通过这种方式,小团队也可以开发出好的人工智能卷积神经网络IP。这个IP的第一代可能功能有限但一定是可以满足用户某些需求的。这个IP会逐渐演化变得更有用,更好用。
线性回归算法
从原理到实践。如何在卷积神经网络IP开发中使用精益产品定义的思想?卷积神经网络IP开发的第一个功能模块是什么?
卷积神经网络的结构如本文图一所示,包含了输入层,输出层和数量不等的隐含层。第一个隐含层的每个状态都是出入层所有状态的加权和。其实每一层每个状态都是前一层所有状态的加权和。也就是说卷积神经网络每个状态的运算和线性回归算法一致。主要的区别就是每次运算,CNN有多少个状态,这个线性回归计算就要重复多少次。
众所周知,线性运算的组合还是线性运算。如果卷积神经网络是很多线性运算怎么可以近似出非线性的系统? 答案是每一层之间还会引入非线性运算,如Sigmoid, softmax Tanh和ReLU等。
非线性运算的引入,结合巨量的训练数据,通过无数次的迭代和权值修正,CNN可以实现各种非线性近乎混沌的深度学习功能。
除了加权和运算,误差的后向传播进行权值修正也是线性回归算法中经典的功能,也是CNN实现的核心功能。
综上所述,线性回归功能的开发可以是卷积神经网络开发的第一步。这是必要的一步,也是足够小的一步。为了进一步减小第一次开发的难度,第一版的线性回归算法只需要支持单参数即可。
当单参数线性回归算法包括基于梯度的权值修正实现完成后,可以通过增加输入输出的数目,增加权值的数目来对其进行升级。然后加入非线性部分对其进行进一步升级。至此一个卷积神经网络的基本实现了。
2015年彼得蒂尔的书《从0到1》火遍全球。借用其概念,如果开发出强大的CNN IP是到100的话,开发出线性回归IP可能已经完成了从0到1的变化。而从0到1往往是最难的。
Learn by doing
以赛代练细节决定成败。只有亲自动手将一个想法实现出来时才会去认真思考每一个细节,只有这样才能检验出自己的想法是不是正确。
实践出真知。只有真正践行自己想法才可以对自己的想法做出评判,才可以对自己的想法进行修正和升级。
以赛代练而不是纸上谈兵。万事开头难,最难的其实就是停止畏首畏脚,真的开始做。
以赛代练
一旦确定了目标,一旦团队开始行动,产品开发已经成功了一大半。