謝作如 浙江省溫州中學
王博倫 上海人工智能實驗室
在2017年時,筆者曾和諸暨的李琦老師一起做過一個跨學科學習案例,研究用超聲波傳感器來識別前方障礙物的方向,并且寫了一篇名為《基于距離差的方向跟蹤》的文章(刊登在本刊2017年第7期)。這一研究的原理,是利用三角函數的知識,通過障礙物和不同傳感器之間的距離來計算出角度。而根據超聲波傳感器來測量障礙物的方向,可以應用于無人駕駛、目標跟蹤等場景。
近年來,有不少義務教育階段的創客教師與筆者討論,認為文章列舉的案例是很好的學習案例,可惜小學和初中的學生沒有學過三角函數,無法進行研究。前段時間復習AI知識,想起神經網絡在理論上可以擬合各種曲線,那么,是否可以用一個深層的神經網絡來模擬這個計算公式呢?如果可以,即使學生沒有學過三角函數,也能用訓練模型的方式來完成障礙物角度的計算。有了這個想法后,筆者立刻開始著手驗證。
測量障礙物方向的方法有很多。2017年時采用的方法是通過距離差,根據平面幾何原理計算出被測物體與觀察者正前方視線的水平夾角。如圖1所示,障礙物和超聲波傳感器1、2形成了一個三角形,只要測量出障礙物和超聲波傳感器1、2的距離(D1和D2這兩條邊),就能計算障礙物和超聲波傳感器之間的中點C的夾角α(即方向)。
從圖1中可以看出,決定夾角α的變量有三個,除了D1和D2,還有兩個超聲波之間的距離。為了減少數據量,可以先固定這一距離,那么此問題就可以轉換為一個典型的數學回歸問題:找出兩個輸入量和一個輸出量之間的關系。我們可以用機器學習的方式,借助現有的真實數據,訓練一個AI模型來“推測”出這三個量之間的關系。

圖1
現實中有多種方式采集數據。第一種是最真實的,即在障礙物和中點之間拉一條線,然后讀取兩個超聲波傳感器的數據,同時測量角度并記錄;或者是拉三條線,因為超聲波傳感器的數值和真實長度誤差是很小的。
當然,因為這一角度是可以用三角函數計算的,那么最方便的數據采集方式莫過于用Python寫一段代碼,然后將一組數據輸出到CSV文件中,或者使用Excel的公式來計算,再導出關鍵數據,如圖2所示。

圖2
除了做實地測量外,還有沒有其他簡便的辦法呢?答案當然是有,可以借助geogebra來獲取數據。如圖3所示,只要畫出這個圖,用鼠標拖動兩個滾動條的圓點,即可看到D1和D2,以及角α的數據在不斷變化。可以用100條數據作為訓練集,再用20條作為驗證集,這樣就完成了數據集的整理工作。

圖3
這里需要強調一點,因為最后輸出的角度是在0~180之間(真實情況會小很多),這和輸入的三組數據在數據大小上差距較大,容易導致訓練時Loss值不正常,甚至無法收斂,因此最好使用弧度值來訓練。通過實際測試可知,只要除以18,把數據范圍控制在0~10之間,訓練時就很正常。
筆者選擇用BaseNN來搭建神經網絡。BaseNN是神經網絡Python庫,延續了MMEdu極簡的訓練流程和風格,聚焦于基礎原理的探究和模型的快速應用。BaseNN類似Keras,只不過底層是Pytorch,初學者用簡短的代碼即可搭建出各種網絡模型,調整神經元的個數、層數、激活方式等。

圖4
筆者準備用一個最基礎的全連接神經網絡來解決這一問題。BaseNN的代碼很簡潔,幾乎類似偽代碼。下面的數行代碼搭建了一個三層的神經網絡,輸入維度是3(3列數據),最后輸出維度是1(1列數據),隱藏層是30和6,激活函數使用ReLU(如下頁圖5)。這里的隱藏層的層數和寬度僅用于參考,可以根據具體的情況修改。

圖5
筆者繪制了一個神經網絡示意圖,由于30層畫起來密密麻麻,所以僅畫出了15層,如圖6所示。

圖6
經過多次測試,200輪訓練就能夠得到較好的效果,程序如圖7所示。

圖7
接下來用model.inference函數進行推理,即可得到模型預測的結果,程序如圖8所示。

圖8
為直觀呈現結果,筆者畫出了一張對比圖(如圖9),可以看出,預測結果和真實值幾乎一致。

圖9
本項目訪問地址是https://www.openinnolab.org.cn/pjlab/project?id=639d352b3791ab 1c3aa8b987,“克隆”后即可體驗。
通過這一實驗,證明了用多層神經網絡果然可以訓練出一個能夠擬合三角函數曲線的AI模型,能夠根據距離差來準確預測方向,或者說,驗證了“神經網絡能擬合任意曲線”這一結論。但是有AI專家表示擔憂:這會不會導致神經網絡被濫用,明明可以用三角函數精確計算,卻偏偏用神經網絡來擬合?
這一擔心不無道理。但任何一項新技術最開始總會被指責“濫用”,而之后才會發現其實是常態。既然神經網絡能夠讓數學較差或者沒學過較復雜公式的孩子,利用采集數據的方式進行“粗略計算”,那么就等同于他們掌握了一種萬能工具,不應該以“濫用”的名義進行否認。
當然,真實世界中還存在很多有關聯卻無法用精確的數學公式來表示的物理量,這在科學研究和工程應用中經常會遇到。那么,用采集數據加上訓練模型的方式來“擬合”多種物理量之間的關系,顯然是一種有效的解決辦法,希望有更多的教師去探索這一領域,讓AI成為學生開展科創活動的好幫手,真正培養他們的數據意識和AI思維。