2019年4月4日,埃航發(fā)布了波音737 MAX 8飛機(jī)空難的初期報(bào)告 [1]。埃航和去年印尼獅航的空難出于幾乎相同的原因,讓346人失去了生命。眾所周知,兩起空難都是由于MCAS(機(jī)動(dòng)特性增強(qiáng)系統(tǒng),即自動(dòng)防失速系統(tǒng))根據(jù)錯(cuò)誤的攻角傳感器數(shù)據(jù)下壓機(jī)頭,導(dǎo)致飛機(jī)起飛后幾分鐘內(nèi)就俯沖墜毀。從埃航 [1] 和獅航 [2] 的報(bào)告中,看到飛行員與自動(dòng)防失速系統(tǒng)的搏斗,簡(jiǎn)直是人類與AI的人機(jī)大戰(zhàn)了。筆者作為一個(gè)計(jì)算機(jī)系統(tǒng)研究者,雖然不是飛行專業(yè)人士,但也試圖通過(guò)技術(shù)分析,指出MCAS不容錯(cuò)、不可見(jiàn)、不受限、難關(guān)閉的四大問(wèn)題,給更多的AI系統(tǒng)帶來(lái)啟示。
技術(shù)背景簡(jiǎn)介
飛機(jī)之所以能在空中飛行,是因?yàn)闄C(jī)翼在不斷“攻擊”前方的空氣。顧名思義,攻角(Angle of Attack,AOA)就是指機(jī)翼弦線(如圖1所示的紅色長(zhǎng)線)與相對(duì)風(fēng)向(圖1中的藍(lán)箭頭)之間的夾角。在一定的范圍內(nèi),攻角越大,氣流對(duì)機(jī)翼“推動(dòng)”作用向上的分量也就越大,從而飛機(jī)的升力越大。但是,如果攻角過(guò)大,升力就會(huì)急劇下降,從而發(fā)生失速。這個(gè)達(dá)到最大升力但即將失速的攻角稱為臨界攻角,一般是十幾到二十幾度。
圖1:攻角(Angle of Attack)的定義(來(lái)源:維基百科)。
飛機(jī)的攻角一般是通過(guò)機(jī)頭的上下俯仰(pitch)來(lái)調(diào)整。我們常見(jiàn)的客機(jī)尾部有一對(duì)水平方向的翼面,叫做水平尾翼。兩個(gè)水平尾翼的后邊緣各有一個(gè)能夠上下活動(dòng)的舵面,叫做升降舵(elevator)。飛行員向后“拉桿”時(shí),升降舵會(huì)向上偏轉(zhuǎn),氣流對(duì)它有個(gè)向下壓的力,飛機(jī)就會(huì)抬頭;反之,飛行員向前“推桿”時(shí),飛機(jī)就會(huì)低頭。但是,如果只有升降舵,飛行員即使在勻速平飛的時(shí)候,也得不停地推桿拉桿,這太累了。因此,為了提高俯仰方向上的靜穩(wěn)定性,水平尾翼的水平翼面也是能夠旋轉(zhuǎn)的,稱為水平安定面(stabilizer)。把水平安定面調(diào)整到飛機(jī)力矩平衡的狀態(tài),就叫做配平(trim)。配平大致可以分為人工、電動(dòng)、自動(dòng)配平三種方式。如圖2所示,人工配平就是用手去通過(guò)液壓傳動(dòng)機(jī)構(gòu)轉(zhuǎn)動(dòng)安定面;電動(dòng)配平是按動(dòng)電鈕,向上或向下按一次,水平安定面就會(huì)轉(zhuǎn)動(dòng)一點(diǎn);自動(dòng)配平則是讓計(jì)算機(jī)根據(jù)速度或自動(dòng)駕駛系統(tǒng)的指令來(lái)操作。
圖2:波音737 MAX 8的俯仰控制系統(tǒng)(來(lái)源:[1])。
前面我們提到,飛機(jī)攻角過(guò)大會(huì)導(dǎo)致失速。由于波音737 MAX 8氣動(dòng)構(gòu)型設(shè)計(jì)的一些原因,為防止失速,飛機(jī)安裝了MCAS系統(tǒng),也就是在飛機(jī)的攻角傳感器檢測(cè)到攻角超過(guò)臨界攻角時(shí),自動(dòng)轉(zhuǎn)動(dòng)水平安定面,下壓機(jī)頭。不管自動(dòng)駕駛開(kāi)啟還是關(guān)閉,只要水平安定面的電源開(kāi)著,MCAS系統(tǒng)就會(huì)起作用,而且不達(dá)目的不罷休,這點(diǎn)我們后面還會(huì)討論到?,F(xiàn)在我們就來(lái)分析導(dǎo)致空難的三個(gè)環(huán)環(huán)相扣的技術(shù)問(wèn)題。
問(wèn)題一:攻角傳感器讀數(shù)離譜并且不一致
波音737 MAX 8飛機(jī)有左右兩個(gè)獨(dú)立的攻角傳感器。從埃航空難班機(jī)飛行記錄儀的數(shù)據(jù)(圖3)可以看出,右側(cè)攻角傳感器(AOA-R)在15度左右比較正常,而左側(cè)攻角傳感器(AOA-L)在05:38:45突然上升到75度左右了。此時(shí)飛機(jī)正在上升高度,攻角加上飛機(jī)本身的仰角就接近90度了,這意味著飛機(jī)幾乎是在豎直向上飛。這是當(dāng)火箭呢?因此攻角傳感器的數(shù)值顯然是離譜的。左右攻角傳感器的差值也高達(dá)60度,側(cè)風(fēng)的影響也不至于這么大。然而MCAS系統(tǒng)并沒(méi)有考慮到這些,而是根據(jù)左側(cè)攻角傳感器單方面的數(shù)值來(lái)下壓機(jī)頭。
計(jì)算機(jī)系統(tǒng)中有個(gè)著名的拜占庭將軍問(wèn)題,就是幾個(gè)軍官之間在通信不可靠、軍官中還可能有叛徒的情況下,如何保證忠誠(chéng)的軍官之間能達(dá)成一致的協(xié)議。這個(gè)問(wèn)題是早在20世紀(jì)七八十年代,Leslie Lamport就在NASA的容錯(cuò)航電計(jì)算機(jī)系統(tǒng)項(xiàng)目中提出的。這也是使他獲得圖靈獎(jiǎng)的重要成就之一。航空航天領(lǐng)域?qū)θ蒎e(cuò)性要求很高,這些容錯(cuò)的系統(tǒng)設(shè)計(jì)也在21世紀(jì)的今天被應(yīng)用在上千上萬(wàn)臺(tái)機(jī)器組成的數(shù)據(jù)中心里。然而MCAS系統(tǒng)卻沒(méi)有足夠的容錯(cuò)性。最早一些人把事故歸因于攻角傳感器被鳥(niǎo)擊,但單側(cè)攻角傳感器損壞就導(dǎo)致飛機(jī)失控,顯然不符合飛控系統(tǒng)的容錯(cuò)性要求。在波音事故后的軟件更新 [3] 中,飛控系統(tǒng)將比較攻角傳感器的輸入,如果相差超過(guò)5.5度就不會(huì)觸發(fā)MCAS系統(tǒng),這就解決了第一個(gè)問(wèn)題。
圖3:埃航空難班機(jī)飛行記錄儀的數(shù)據(jù)(來(lái)源:[1])
問(wèn)題二:MCAS的操作對(duì)飛行員不可見(jiàn)
去年的獅航空難前,飛行員操作手冊(cè)中根本沒(méi)有關(guān)于MCAS系統(tǒng)的說(shuō)明,飛行員不知道為什么機(jī)頭自己下沉了,此時(shí)飛行員的內(nèi)心想必是蒙圈的。后來(lái)波音盡管更新了安定面失控檢查單,但MCAS在發(fā)現(xiàn)攻角達(dá)到臨界時(shí)還是不會(huì)通知飛行員,而是悄悄地執(zhí)行安定面配平操作。此外,這個(gè)機(jī)型上的攻角指示器是選配的,因此事故航班的飛行員看不到攻角,也不知道攻角不一致,直到墜毀前幾十秒才發(fā)現(xiàn)左側(cè)攻角傳感器(left alpha vane)故障這個(gè)根本原因(圖4),但由于后面將討論到的問(wèn)題還是沒(méi)能挽救飛機(jī)。對(duì)有經(jīng)驗(yàn)的飛行員而言,攻角指示器確實(shí)不必要,不過(guò)有傳感無(wú)指示,就很難發(fā)現(xiàn)儀表故障。很多自動(dòng)系統(tǒng)為了讓用戶省心,隱藏了大量技術(shù)細(xì)節(jié),卻給故障的定位和調(diào)試帶來(lái)了麻煩。理想的設(shè)計(jì)應(yīng)當(dāng)是平時(shí)減少對(duì)用戶的干擾,但在異常時(shí)提醒用戶,用戶也能按需查看系統(tǒng)的數(shù)據(jù)來(lái)源和內(nèi)部細(xì)節(jié)。
圖4:埃航事故班機(jī)飛行歷史的最后階段(來(lái)源:[1])
波音軟件更新中,增加了攻角指示器和攻角不一致的告警,如圖5所示。
圖5:波音軟件更新中飛行員主顯示面板上的攻角指示器和攻角不一致警告(來(lái)源:[3])
問(wèn)題三:MCAS系統(tǒng)與飛行員持續(xù)較勁
第三個(gè)問(wèn)題就是MCAS系統(tǒng)把自己當(dāng)成了救世主,不恢復(fù)攻角不罷休,不斷跟飛行員較勁,而且“力氣”比人更大。例如在去年獅航事故中,左右攻角傳感器差了20度,飛行員與MCAS大戰(zhàn)二十多個(gè)回合,看起來(lái)膽戰(zhàn)心驚。如圖5所示,鋸齒狀的藍(lán)線是手動(dòng)配平(trim manual),橙線是自動(dòng)配平(trim automatic),每次手動(dòng)配平之后自動(dòng)配平都會(huì)被觸發(fā),然后飛行員再去手動(dòng)配平,但最后幾次自動(dòng)配平的“力氣”明顯比人大,飛行員也無(wú)力回天。海恩法則指出:每一起嚴(yán)重事故的背后,必然有29次輕微事故和300起未遂先兆以及1000起事故隱患。就在獅航事故班機(jī)的上一次飛行中,如圖6所示,就出現(xiàn)了飛行員與MCAS系統(tǒng)較勁的問(wèn)題,還好控制住了,緊急返航成功。
圖6:獅航事故當(dāng)次航班的飛行記錄儀信息(來(lái)源:[2])
圖7:獅航事故上一次航班的飛行記錄儀信息(來(lái)源:[2])
波音最近的軟件更新中,增加了兩個(gè)限制:首先,每次檢測(cè)到攻角異常,都只會(huì)啟動(dòng)MCAS一次,而不是多次啟動(dòng)MCAS直到攻角恢復(fù)正常。只要不是飛行員故意跟它較勁,只需修正一次安定面,就能從失速邊緣解除危險(xiǎn)。其次,MCAS對(duì)安定面的輸入不能超過(guò)飛行員用力拉桿時(shí)對(duì)升降舵的輸入,這保證飛行員始終能通過(guò)拉桿的方式抵消MCAS的錯(cuò)誤操作。多數(shù)情況下,AI系統(tǒng)不需要預(yù)防人類的惡意操作,而應(yīng)當(dāng)作為人類的輔助和失誤時(shí)的臨時(shí)補(bǔ)救。
問(wèn)題四:要么斷電,要么開(kāi)啟MCAS
最后一個(gè)問(wèn)題是MCAS系統(tǒng)與電動(dòng)控制系統(tǒng)的緊密耦合。埃航空難中,飛行員按照波音的檢查單,給水平安定面斷電(stab trim cutout)。我們知道,拉桿(升降舵)和配平(水平安定面)都可以控制飛機(jī)的俯仰。因此,在安定面狀態(tài)異常的情況下,飛行員用力拉了兩分多鐘的桿,讓飛機(jī)爬升。但是水平安定面一直這樣異常著總不是好事,因此飛行員還是想配平。在飛機(jī)超速的情況下,手動(dòng)配平需要的力氣很大,飛行員弄不動(dòng)。因此,飛行員又恢復(fù)供電,試圖電動(dòng)配平。這在五秒后激活了MCAS系統(tǒng),一個(gè)俯沖把機(jī)頭拉到40度了(圖8)。在打開(kāi)電動(dòng)系統(tǒng)的情況下,盡管自動(dòng)駕駛系統(tǒng)可以關(guān)閉,但MCAS系統(tǒng)無(wú)法關(guān)閉。波音在獅航空難后給出的檢查單認(rèn)為拔掉電源手動(dòng)配平就行了,但在埃航的情況下手動(dòng)弄不動(dòng)。因此自動(dòng)控制系統(tǒng)應(yīng)該有辦法與基本電動(dòng)系統(tǒng)解耦。此外,MCAS系統(tǒng)的操作幅度過(guò)大也是問(wèn)題,最后的下壓機(jī)頭操作飛行員來(lái)不及挽回,這在波音的軟件更新中已經(jīng)解決。
圖8:埃航事故班機(jī)拉桿、超速、嘗試手動(dòng)配平失敗的過(guò)程(來(lái)源:[1])
對(duì)AI系統(tǒng)的啟示
MCAS系統(tǒng)是有用的,但不容錯(cuò)、不可見(jiàn)、不受限、難關(guān)閉的軟件設(shè)計(jì)導(dǎo)致了人機(jī)大戰(zhàn),并以人類的慘敗告終。隨著物聯(lián)網(wǎng)、自動(dòng)駕駛、工業(yè)自動(dòng)化和工業(yè)互聯(lián)網(wǎng)的普及,越來(lái)越多重要甚至生命攸關(guān)的系統(tǒng)將使用人工智能(AI)自動(dòng)控制。在數(shù)據(jù)中心的自動(dòng)控制系統(tǒng)中,也存在很多故障恢復(fù)機(jī)制反而導(dǎo)致了更大規(guī)模故障的案例 [4]。
我們希望AI系統(tǒng)能夠吸取四條教訓(xùn):
1.應(yīng)當(dāng)更謹(jǐn)慎地對(duì)待它的輸入,輸入異常時(shí)應(yīng)提醒用戶并保護(hù)性關(guān)閉;
2.用戶應(yīng)當(dāng)知道AI的存在,其操作應(yīng)當(dāng)對(duì)用戶可見(jiàn);
3.應(yīng)當(dāng)限制自動(dòng)操作的次數(shù)和強(qiáng)度,保證人類能超控(override);
4.應(yīng)當(dāng)提供拔電源以外更優(yōu)雅的關(guān)閉方式。
聯(lián)系客服