av日韩亚洲,一本一本a久久,亚洲一区二区三区,亚洲一区二区三区免费视频

在微控制器芯片實現神經網絡的方法

來源:期刊VIP網所屬分類:檢驗醫學時間:瀏覽:

  摘 要: 針對微控制器芯片尚未存在使用神經網絡處理時序信號的現狀,提出一種可以在微控制器上進行神經網絡訓練、預測時序信號的方法。 該方法不基于操作系統運行神經網絡程序,無法由操作系統進行棧區空間大小的調整以及內存的分配問題,為了解決這個問題,更改了初始化棧區空間的大小,增加了外部擴展SDRAM芯片,使之達到適合神經網絡程序運行的大小。在微控制器芯片實現神經網絡的方法包括定義了實現神經網絡需要的矩陣運算,使用C語言編寫并封裝LSTM循環神經網絡前向傳播函數,反向傳播函數,以及LSTM循環神經網絡的權重更新函數。調用封裝好的LSTM循環神經網絡函數進行實驗,以時序信號sin x函數為例,預測信號變化。故使用該方法,可不依賴操作系統在微控制器芯片建立神經網絡,具備了穩定、實時可靠的優點。

  關鍵詞: 微控制器芯片; 神經網絡; LSTM; 棧區空間; 內存分配; 時序信號處理

醫學神經論文

  0 引 言

  在2018年中國國際嵌入式大會上,何積豐院士提出,人工智能存在向嵌入式系統遷移的趨勢[1]。在嵌入式系統上玩轉人工智能,是這個智能化時代前沿的研究。目前嵌入式系統人工智能主要使用Cortex?A系列微處理器芯片,A系列微處理器芯片主要面向手機、平板電腦等民用商品,屬于消費類電子,實現人工智能需要依賴操作系統,不具備穩定性,不適合應用在軍事、工業、信號處理等領域。Cortex?C系列微控制器芯片是單一功能的、更加專業的芯片,具備低功耗、低成本、實時、穩定可靠的特性,被廣泛應用在軍事、工業、信號處理等方面,但目前還未發現在微控制器芯片上建立神經網絡,做人工智能的研究。

  循環神經網絡算法是神經網絡算法的一種,常用來學習、識別、預測時序信號,若能在Cortex?C系列微控制器芯片上搭建循環神經網絡,只需要輸入信號,用理想輸出作為監督學習,多次訓練后,即可進行信號智能處理、信號智能識別、信號智能預測等工作。使用Cortex?C系列微控制器芯片搭建循環神經網絡,處理時序信號,更加智能、穩定可靠。搭建循環神經網絡需要進行一系列矩陣運算,Cortex?M系列微控制器芯片已經具備DSP指令,所有的DSP指令都可在一個機器周期內完成,提高了矩陣運算速度。本文結合當前的研究現狀提出一種針對Cortex?M系列微控制器芯片建立的循環神經網絡方法,使用循環神經網絡對時序信號進行學習,并預測未來的信號。

  1 LSTM循環神經網絡

  對于時間信號的預測,常常使用循環神經網絡(Recurrent Neural Network),簡稱RNN神經網絡。一個簡單的RNN神經網絡可以表示為圖1a)的形式。圖1a)中,[x]表示輸入向量;[O]表示輸出向量;[U]表示輸入層到隱含層的權重矩陣;[V]表示隱含層到輸出層的權重矩陣;[S]表示隱含層的值;[W]表示隱含層的值到下一個時刻隱含層的值的權重矩陣[2]。

  為了更好地理解RNN神經網絡,將圖1a)按時間展開,如圖1b)所示。其中,[xt-1],[xt],[xt+1]分別表示在t-1,t,t+1時刻的輸入向量;[Ot-1],[Ot],[Ot+1]分別表示在t-1,t,t+1時刻的輸出向量;[St-1],[St],[St+1]表示在t-1,t,t+1時刻的隱含層的值;[V]表示隱含層到輸出層的權重矩陣;[W]表示隱含層的值到下一個時刻隱含層的值的權重矩陣。從圖中可以看出,前向傳播公式為:

  由式(1)可以看出,當前隱含層的值[St]不僅與當前時刻的輸入相關,并且與之前隱含層的值相關,而輸出[Ot]是[VSt]的函數,所以輸出[Ot]受歷史輸入影響,這就是RNN可以處理時間序列的原因[3]。

  RNN神經網絡在處理長時間的信號序列時會產生梯度消失或梯度爆炸,為了克服這個缺點,將RNN進行改進,在RNN的基礎上,加入長期狀態C,用來保存長期狀態,從而達到解決RNN梯度消失和梯度爆炸的缺陷,改進后的RNN神經網絡被稱作LSTM(Long Short?Term Memory)神經網絡[4]。LSTM中主要使用3個門,分別是遺忘門、輸入門、輸出門以及即時狀態來控制長期狀態。遺忘門負責決定之前的長期狀態對當前的長期狀態影響程度;輸入門與即時狀態共同負責決定當前輸入對長期狀態的影響程度;輸出門決定當前長期狀態對輸出的影響程度[5]。LSTM神經元如圖2所示。

  前向傳播過程需要計算遺忘門輸出[ft],輸入門輸出[it],即時狀態輸出[C′t]以及輸出門輸出[Ot]。長期狀態[Ct]由遺忘門輸出[ft]、輸入門輸出[Ot]、即時狀態輸出[C′t]和上一時刻的長期狀態[Ct-1]共同決定。

  2 實現LSTM循環神經網絡

  Cortex?M系列芯片具有穩定可靠、實時、低成本、低功耗的優點,被廣泛應在工業控制、軍事、信號處理等領域。由于Cortex?M系列微控制器芯片在建立神經網絡時,不能由操作系統自動分配內存以及棧區空間,為了確保神經網絡程序能夠正常運行,需要人為擴展內存及擴大棧區空間。

  Cortex?M系列芯片一直被定位在低性能端,但是仍然比許多傳統處理器性能強大很多,例如Cortex?M7處理器,最高時鐘頻率可以達到400 MHz。Cortex?M7處理器是針對數據處理密集的高性能處理器,具備面向數字信號處理(DSP)的指令集,支持雙精度浮點運算,并且具備擴展存儲器的功能,使用搭載Cortex?M7處理器的芯片,實現機器學習、人工智能,具備低功耗、低成本、穩定可靠的優點。

  選擇以搭載Cortex?M7處理器的STM32F767IGT6芯片為例實現LSTM循環神經網絡,STM32F7使用Cortex?M7內核,在數字信號處理上增加了DSP指令集,大大提升了芯片的計算速度。ARM公司提供了DSP算法的庫(CMSIS_DSP),具備了部分矩陣運算的功能,減少了開發的時間以及難度,并使運算速度有了進一步的提升[6]。

  2.1 ARM芯片中的矩陣運算

  在STM32上實現LSTM,要解決矩陣、向量運算的問題。進行矩陣、向量運算,需要的內存空間比較大,所以需要對芯片進行內存擴展。LSTM的權重矩陣需要進行存儲,權重矩陣的維數直接關系到神經網絡的學習能力,通過內存擴展可以確保權重矩陣維數滿足需求,不會使神經網絡的學習能力過低。在實現LSTM的過程中,用到很多矩陣運算和向量運算,使用ARM公司提供的CMSIS_DSP庫中的矩陣處理函數,可以解決部分矩陣運算,提高運算速度。CMSIS_DSP庫中,用結構體arm_matrix_instance_f32表示矩陣,結構體的元素numRows表示矩陣的行,numCols表示矩陣的列,pData指向矩陣數組,矩陣元素為32位無符號float類型,可以滿足數據精度要求。

  用arm_matrix_instance_f32結構體定義結構體數組,用來存放張量(由數組構成的數組),使用張量,來存儲歷史時刻門的輸出值[7]。

  CMSIS_DSP庫中有矩陣的基本運算,如矩陣的加法、轉置、乘法等,在LSTM神經網絡算法中需要用到對矩陣元素的操作,例如矩陣按元素相乘,可以選擇使用for循環遍歷整個矩陣的方式訪問到每一個矩陣元素。

  定義生成隨機矩陣的函數,輸入值為要生成矩陣的行NumRows,列NumCols,以及這個矩陣是否被作為偏置矩陣使用。若生成權重矩陣,則使用C語言中的隨機數函數rand(),遍歷矩陣賦值隨機數;若生成偏置矩陣,則將矩陣所有元素初始化為0。

  無論是前向傳播還是反向傳播時,都會用到矩陣按元素相乘,但CMSIS_DSP庫中并沒有矩陣按元素相乘的函數,所以需要定義。定義矩陣按元素相乘的函數為mul2,它有兩個輸入,即兩個按元素相乘的矩陣,先判斷這2個矩陣的維數是否相同。因為按元素相乘,要求2個矩陣必須維數一樣,才能進行運算。使用for遍歷矩陣中的每一個值,讓2個矩陣對應位置上的元素進行相乘,并返回相乘后的新矩陣。此時新矩陣的維數應該和輸入矩陣的維數相同。

  使用兩個矩陣按元素相乘函數mul2,去構造3個矩陣按元素相乘的函數mul3。mul3有3個輸入,首先經前2個輸入送到mul2中進行按元素相乘,再將結果與第3個輸入放到mul2中進行計算,這樣可以獲得連續3個矩陣按元素相乘,同理可以獲得mul4,mul5。

  推薦閱讀:《中華神經醫學雜志》是中國科學技術協會主管,中華醫學會主辦,南方醫科大學珠江醫院承辦的國家級神經醫學專業學術期刊。

主站蜘蛛池模板: 峨眉山市| 邵阳县| 东阳市| 阿鲁科尔沁旗| 二手房| 南平市| 饶阳县| 巴林右旗| 武强县| 伊宁市| 金寨县| 丰宁| 苏州市| 龙南县| 柳江县| 南汇区| 开平市| 灵寿县| 乌拉特中旗| 蛟河市| 郎溪县| 黎川县| 罗江县| 遵义市| 师宗县| 酒泉市| 邢台县| 军事| 康马县| 崇仁县| 兴文县| 廉江市| 通道| 城口县| 科尔| 阿勒泰市| 沂南县| 宜都市| 礼泉县| 额敏县| 历史|