机械化是用机器代替人的体力,但机器的运作还是要靠人的。比如说,用水泵抽水,就不再需要手提肩挑了,但开泵关泵还是要靠人看管,否则水池满了、溢出来了,或者池塘见底了,泵在空抽、造成损坏,就不好了。在自动化时代,水池里加个水位计,池塘里也加一个水位计,水池满了,或者池塘干了,就自动停泵;水池的水位下去了,而且池塘的水位也足够,那就重新开干。
在人工智能的时代,可能有一个高级应用在监管着。水池可能不满,池塘也有足够水位,但现在其实用水的地方并不需要,白白抽那么多水上来,影响节水,增加挥发,也是高峰用电的电价,浪费了,可以等等再决定是不是要抽水。或者说,现在有好多地方都需要用水,需要综合权衡一下,哪里有优先权可以多用水,哪里需要牺牲一下顾全大局,或者在水价低的时候多用,水价高的时候少用。这样在更高层次上规划用水要求,决定自动抽水是不是进入工作状态,还是继续待命,这可以看作最低初级的人工智能。
也就是说,人工智能可以看作更高层次的自动化。如果说自动化可以比作查表办事,表上说看到“1”就做“A”,看到“2”就做“B”,看到的在“1”和“2”之间,那要做的也在“A”和“B”之间;那人工智能就像炒股,需要对比好多曲线,查对好多条件,说不定还要根据自家秘制的公式计算一下成本、收益和风险,才能决定到底怎么办了。说到底,还是有一定之规的,只是这“规”要复杂得多。
人工智能有很多分支,当前主流基本上围绕着神经元网络。
神经元网络模仿人类大脑的思维,其基本单元是神经元。神经元的数学表述不复杂,就是一条S形曲线。也就是说,在输入值从小变到大的时候,输出值从也从小变到大,但不是均匀地变,而是先慢、后快、再慢地变。
神经元这条S曲线有几个参数可调,一是可调“小”到底多小,“大”到底多大,二是可调S形的弯度,还有参数可以整体升高或者降低基线。“拉直”了,S曲线就和笔直的斜线差不多了,这时神经元的表现和传统的连续变量接近。“拧巴”到极点了,S曲线就和开关曲线差不多了,也就是说,输入值从小变到中的时候,输出值基本不变,保持在低位;但在中点前后急剧上升,一过中点,输出值就基本保持在高位了。这时,S曲线的表现和传统的断续变量接近。
S曲线可以在连续变量(像温度、水位)和离散变量(像“好/坏”、“开/关”)之间无缝过渡的特点,使得神经元既可以模拟连续变量,也可以模拟离散事件,这是人工智能更加“聪明”的关键。
单个的神经元还只是好玩的玩具,多个神经元组网起来,就可以模拟高度复杂的现象。一层一层的神经元网络组成高度复杂的网,这就是深度学习了,已经展现出令人类害怕的智能了。
什么是智能、人工智能vs人类智能可能会成为永恒的哲学问题,但对眼下来说人工智能已经远远超过简单重复人类智能的地步了。“阿尔法狗”大胜人类顶级围棋手成为里程碑式的转折,“阿尔法狗1.0”还是还是用人类最优秀的棋局首先训练一遍然后在“自我琢磨”的,“阿尔法狗2.0”就是脱离人类棋局完全用自学习训练出来的。在更加“接地气”的层面上,人脸识别已经做到惊人的准确度和速度。
但就这些还是抢不了自动化的饭碗的。人脸识别对标的是传感器,自动化的核心还是在于控制器。
自控有两大路:一路是参数化控制(parametric control),另一路是非参数化控制(non-parametric control)。非参数化控制不需要被控过程的数学模型,只要了解大概的定性行为就可以了,比如“加水导致水位升高,撤火导致降温”,这个不能搞反了,剩下的靠一定形式的控制算法和参数整定来最终调试出一个稳定、满意的系统,传统的PID就是这样的。参数化控制则是以数学模型为基础的,数学模型的作用是精确预测被控过程在给定输入时的响应,然后可以根据需要的响应,反推需要给出的控制输入。当然,模型不可能完全精确,剩下的就靠反馈和参数微调来“磨”了。
人工智能用于非参数化控制的话,参数整定太恐怖。一个简单的单回路神经元网络控制器可能有一个决策层,不超过10个神经元,加上输入层和输出层,随随便便就有30-50个可调参数,这是不可能像PID那样整定的。PID一共只有3个参数,大部分人都嫌麻烦,不碰微分,只动比例和积分。要动那么多参数,这是不可能的。但把大量参数都锁定,神经元网络的高度可塑性就没有了,也就不需要费那个事了。
像“阿尔法狗1.0”那样,用现有数据训练神经元网络控制器,这在理论上是可能的,问题是实用中不可能有那样海量的输入-输出的静态数据和动态数据。要真有这些数据,非神经元网络的控制器也已经在手了,而且行为可预测,还费那个事干什么?直接观察人类操作的常年数据也不行,那是闭环的,输入-输出的因果关系已经打乱了,直接拿来训练肯定是不行的,这就和闭环辨识一样。
那像“阿尔法狗2.0”那样自学习呢?更不行了。“阿尔法狗2.0”自我训练的前提是有清晰的规则和游戏空间。更重要的是,自学习需要大量的试错。不可能在实际工业过程上这样试错,人家还要不要生产啦?更何况无限制的试错可能造成各种安全问题。用高度精确的仿真系统大量试错倒是不会造成危险或者生产损失,“阿尔法狗2.0”实际上就是这样做的,但围棋和实际工业工程的差别太大了,“阿尔法狗2.0”可以左右手互博,也可以与“阿尔法狗1.0”互博,每一步在棋盘上清清楚楚,结果判定也一目了然,实际工业过程就需要高精度动态仿真系统了,还要考虑各种不定性情况,这样的高精度动态仿真在工业上是特例,可遇而不可求的。事实上,有了高度精确的动态仿真模型,本身就可以成为模型预估控制或者其他现代控制方法的基础,不需要舍近求远搞神经元网络控制器。
这和人工智能用于医学一样,人工智能辅助诊断喜闻乐见,但自学习人工智能疗法?您先请。
影响神经元网络用于控制算法大发展的关键可能在于缺乏一个统一、有效的数学分析架构。PID控制的概念很早就有了,但提高到理论高度是在微分方程稳定性理论发展起来之后。微分方程是数学里很重要的一个分支,稳定性又是微分方程里的一个分支。从这里用拉普拉斯变换发展出频域分析,建立了经典控制理论。在60年代,卡尔曼引入线性代数,建立状态空间方法,控制理论进入了单变量和多变量统一架构甚至可以包容非线性系统的现代控制理论阶段。随着计算机的发展,曾经只能纸上谈兵的控制理论可以工程实现了,各种严格、不严格但管用的控制方法(如模型预估控制)如雨后春笋般地涌现,但基本上都是在微分方程的架构下,计算机实现中使用的差分方程也可看作微分方程离散化的结果,很多结论和方法可以通过映射搬过来用。
但神经元的S曲线尽管威力无穷,很难用已知的数学方法进行分析和综合。换句话说,即使建立了神经元网络的被控对象和控制器的模型结构,除了用数字仿真一遍一遍试错,没法确保回路性能,连给出有意义的指导性设计原则(如经典控制理论里的“闭环极点必须在左半平面才能保证稳定,离虚轴的距离代表收敛速率,离实轴的距离代表振荡频率“)都做不到。
数字仿真能试错的场景永远是有限的,以此为系统稳定性的依据是不够的,因为在已经测试的有限场景之间(内插)或者之外(外推),谁也不知道系统会如何反应,所以仿真几百几千次也不一定能说明问题。这与按照传统控制理论(包括经典和现代)截然不同,那里在完成设计计算后,数字仿真只是验证用的,验算几个点就足够了。
人工智能在实用中已经出现了这个问题。“阿尔法狗”(不管是1.0还是2.0)都在棋局中走出令人类匪夷所思的步子,事后看来是走对的,但对于如何走出这样的步子依然百思不得其解。这样的人工智能正在成为应用中的最大阻碍:人类不能接受无法理解因而不能信赖的人工智能决策,对于实时性要求很高的控制领域,人类又不可能查验人工智能的每一步决策。在做到对人工智能的行为能严格数学分析和预测之前,这个坎很难迈过去,因次在可预见的将来,人工智能决策的直接应用必定是有限的。
但人工智能用于自控层之上的“指挥层”则几乎是必然的,就像前面提到的智能用水调度系统指挥自动控制的水泵一样。在这个场景下,自控的要求其实是高了,不是低了。
在模型预估控制时代,很有一些人为PID的未来担忧,但很快发现,要使得模型预估控制有效工作,PID层需要更加精细地整定到最优状态。这和串级控制是一个道理。主回路好比小领导,副回路好比干活的。要是干活的手脚麻利,办事精准,小领导则有条不紊、指挥若定,那这配合就如鱼得水了,指哪打哪。要是反过来,小领导是个事儿妈,干活的懒懒散散,这就肯定要砸。
在人工智能时代,这还是一个道理。指挥层的人工智能要从长计议,不能事儿妈;自控层则要更加敏捷、精准。指挥层与自控层最好还要有深度沟通,指挥层不仅发布下一步的指令,还把预期的未来指令一起发下去,自控层好预做安排。
这就好像开汽车过弯一样。看着车头前3米的地方,一点一点过,是可以安全过弯的,就是慢一点。但要是早早看到前面完整的弯道,可以预先计划好,在入弯的时候晚一点刹车,在中间的时候甩一点尾,然后加速出弯,这就快多了。但这要求预先就看到整个弯道,预作准备。
这样的预估控制是典型PID做不到的,模型预估控制就可以做到,但各种PID依然是模型预估控制的腿脚,不仅不能弱化,还要极大强化。
在人工智能时代,自动化不仅不需要瑟瑟发抖,还要打起精神,锻炼新本事。本来端坐的金字塔尖的位置被人工智能坐掉了,但自动化其实还是坐在原来的位置,只是金字塔长高了。