最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

時雨月五| AI機器學習實戰(zhàn)の電磁導航智能車中神經(jīng)網(wǎng)絡(luò)應(yīng)用的問題與思考

2020-03-31 21:31 作者:TSINGHUAJOKING  | 我要投稿

AI機器學習實戰(zhàn)の電磁導航智能車中神經(jīng)網(wǎng)絡(luò)應(yīng)用的問題與思考-交流向-本科生競賽——本文略長,可能需要十分鐘到半小時的閱讀時間。

文章目錄

  • 前言

  • 賽題背景簡介

  • 來自卓晴老師公眾號的解決方案

  • 為什么這個問題可以使用神經(jīng)網(wǎng)絡(luò)回歸來解決

  • 神經(jīng)網(wǎng)絡(luò)回歸方法的策略可能遇到的一些問題

  • 遇到未曾訓練過的值的問題-理論角度分析

  • 模型訓練欠擬合與過擬合的問題

  • 如何判斷特殊賽道元素以及何時加速減速

  • 強者恒強,模型缺少進一步發(fā)展的潛能

  • 相關(guān)問題的解決與筆者的個人思路


前言

在機器學習與人工智能告訴發(fā)展的大背景下,本科生競賽也在逐漸朝這方面靠攏。全國大學生智能車競賽也在今年(2020年)的比賽類別中加入了一組需要用到神經(jīng)網(wǎng)絡(luò)模型來控制車模運行的組別——AI電磁組,因為大一到大三年級走過來之后,也算對這個比賽有些感情,恰好新組別的內(nèi)容也與筆者現(xiàn)在研究的內(nèi)容有些交集,于是想與各位同學和前輩探討一下關(guān)于這個新組別的一些問題和思路。

當然筆者現(xiàn)在也只是堪堪入門,并非巨腕大鱷,文章難免有錯誤和紕漏,正因如此,希望能跟大家交流,以彌補自己學習中的不足。如有需要,可以在評論區(qū)留言或通過以下途徑與我聯(lián)系:

E-mail: zhouhaonan@mail.sdu.edu.cn QQ: 2733979004 WeChat: muyexiaoxiao_

首先申明,筆者博客寫作完全處于興趣和交流需要,若有引用也會盡可能的標注,不會從事任何商業(yè)商業(yè)活動,若有侵權(quán)或者引用不全不當之處,煩請指出,但不一定改(手動滑稽)。

賽題背景簡介

本組別的比賽任務(wù)為:在由直道、彎道、十字和環(huán)島等元素組成的賽道上,中央鋪設(shè)有一根通有20kHz交流電的電磁引導線,比賽賽車需要通過電磁傳感器——如工字電感——感知電磁信號沿賽道行駛一周,用時最少者獲勝。

由于我們的控制系統(tǒng)在時域上都存在一定的滯后,因此我們在確定控制器輸出的時候往往需要一些超前的信息來抵消這一段滯后的信息,也就是我們通俗所說的“前瞻”。但由于新的組別中限制了前瞻的長度——不能超過車輪五厘米——限制了我們通過加長前瞻來獲取超前信息的途徑,人們的思路就自然而然的想到了時下正火的“人工智能算法”來解決這個問題。

當然,按照筆者的理解,此處的“人工智能算法”還是要加個引號。

帶有大前瞻的實驗AI電磁車模

來自卓晴老師公眾號的解決方案

前幾天,一位學弟給我發(fā)送了這篇介紹在該競賽組別中可以使用的神經(jīng)網(wǎng)絡(luò)策略(一下簡稱本策略)的文章。 原文鏈接: AI機器學習實戰(zhàn)電磁智能車篇[1]

這篇文章給出的思路大致可以描述為,通過長前瞻的經(jīng)典控制方法采集數(shù)據(jù)并將經(jīng)典的控制算法中的控制器輸出作為數(shù)據(jù)集的標簽,并且通過這些訓練數(shù)據(jù)將該問題轉(zhuǎn)換為一個從車模近處的電感值映射到舵機控制輸出的回歸問題?;蛟S是為了保持比賽的競爭性,這篇文章中只是給出了簡單的模型和做法,對可能存在的一些問題以及其中存在的原理并沒有多做說明。

當然本文也只是處于共同交流和學習的目的,并沒有破壞競賽公平性的想法,也不打算敝帚自珍,只是根據(jù)其中存在的一些問題發(fā)表一下自己的看法。為防止氣氛過于沉重,下面給出一張自己陽光的笑容。

作者自己的肖像

為什么這個問題可以使用神經(jīng)網(wǎng)絡(luò)回歸來解決

實際上我們所有的控制問題,都可以采用抽象成數(shù)學函數(shù)或者說映射的方法來思考。就本文中所提到的競賽問題來說,若設(shè)向量 V 為所有電磁傳感器的采樣值,其維數(shù)為電磁傳感器的數(shù)量;向量 P 為我們控制器輸出的值,此處可以理解為輸出的PWM值,其維數(shù)可能為1,即舵機轉(zhuǎn)向角度,再更高級的策略中其維數(shù)也可能為3,即舵機轉(zhuǎn)向角度左右輪的速度。此時我們將這個函數(shù)表示為:

或許已經(jīng)有同學已經(jīng)感覺簡單到驚訝了,實際上本來這也并不是一個復雜的問題。但是此時 函數(shù) f 的形式對我們來說仍然是未知,這可能根據(jù)系統(tǒng)前瞻的不同,電感感值放大倍數(shù),機械摩擦與采取的控制器(如PID)策略有所不同。如果已知函數(shù)的具體形式,我們可以通過最小二乘法或牛頓法等方法完成函數(shù)的回歸與擬合,但是目前來說,該函數(shù)的形式是未知的。

然而,幸運的是,神經(jīng)網(wǎng)絡(luò)有一個很重要的特點就是:一個足夠復雜的神經(jīng)網(wǎng)絡(luò),擁有逼近任何函數(shù)形式的能力。 因此我們所要做的就是確定好輸入和輸出,其他的東西交給數(shù)據(jù)和神經(jīng)網(wǎng)絡(luò)來完成,這就是機器學習的魅力所在。

搞清楚這一點之后,我們再來討論為什么這個方法可以解決前瞻不足的問題?;氐轿覀儎倓傉f的函數(shù)映射,現(xiàn)在我們要面對的問題就是,我們的前瞻長度受到了限制,我們再也無法取得具有超前信息內(nèi)容的電磁傳感器輸入向量 V ,但是仍然可以取得車模近處的傳感器信息,此處我們設(shè)為 V’ 。

根據(jù)往常的思路,這時候我們首先想到的是什么呢?當然是,如果我有一個方法可以找到 V’ 和 V 之間的關(guān)系的話不就萬事大吉了么。于是,就有了函數(shù)映射:

當然,這時候我認為絕大部分比較聰明的同學就已經(jīng)想到了,如果按照這個思路的話,我需要完成兩次映射的過程,既然神經(jīng)網(wǎng)絡(luò)號稱自己可以逼近任何函數(shù),那我將兩次函數(shù)映射合并為一次之后的映射,那也必然是任何函數(shù)中的一種了。于是就有了:

到了此時,我要做的也就是通過神經(jīng)網(wǎng)絡(luò)來逼近函數(shù) 這也就變成了經(jīng)典的函數(shù)回歸問題,也就為這種解決方案提供了合理性和可實現(xiàn)性。此時神經(jīng)網(wǎng)絡(luò)的輸入input即為我們當前采集到的電磁傳感器信息V’ ,輸出則為我們之前所提到的 P 。可以參考公眾號原文中的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖:

神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖

但是,該實現(xiàn)方法雖然從理論上是可行可實現(xiàn)的,但是經(jīng)驗和理論分析都告訴我們,這種方法實現(xiàn)的控制器在實際應(yīng)用中魯棒性較差且存在一些不足,下面本文會一一列舉,若有未提及或者錯誤,歡迎聯(lián)系我進行補充或指出。

神經(jīng)網(wǎng)絡(luò)回歸方法的策略可能遇到的一些問題

遇到未曾訓練過的值的問題-實踐角度分析

首先我們的神經(jīng)網(wǎng)絡(luò)在訓練的時候,只能根據(jù)訓練集中的數(shù)據(jù)進行回歸學習,就像一個人在學習初期,也只能通過自己見過的事物來學習。就比如,你在池塘里見到一條魚(訓練數(shù)據(jù)-輸入),這個時候有人過來告訴你這個東西他是一條魚(訓練數(shù)據(jù)-標簽)。當你經(jīng)過這次訓練之后,下次如果你再見到水里的一條魚(驗證數(shù)據(jù)-輸入),你就可以告訴別人這是一條魚(驗證數(shù)據(jù)-輸出)。

但是這個時候問題就來了,你只知道水里的那一條魚的名字是魚,下次見到一條魚你還是認得的,但是你并沒有學習過,也就是沒有被訓練過,一個烏龜應(yīng)該長什么樣子,那當你見到一直烏龜?shù)臅r候,你不認識他,可能就只能胡言亂語了。

問題類比到我們比賽題目的內(nèi)容中就是,如果你在采集訓練數(shù)據(jù)的時候,車模一直根據(jù)之前已經(jīng)調(diào)試好的控制器運行,可能由始至終都運行在一個比較“良好”的狀態(tài),也就是我們說到的魚。但卻很少處于偏離中心的位置,也就是之前我們提到的“烏龜”。

因為神經(jīng)網(wǎng)絡(luò)模型對我們來說實際上是一個黑盒子,所以我們并不能寄希望于神經(jīng)網(wǎng)絡(luò)會將原控制器在訓練數(shù)據(jù)之外的特性也學到,更不能指望車模永遠運行在一個良好的狀態(tài)。原策略中對該問題的解釋如下:

AI模型運行時會有誤差,遲早導致出軌,那么有哪些誤差呢: 模型計算的誤差,邏輯回歸引入的誤差,無論訓練多少遍一定會存在一定的誤差; 訓練數(shù)據(jù)采集時的誤差,前置電感和車身電感距離上的誤差; 累積誤差,前兩種誤差會導致小車偏離軌道以至誤差越來越大。積累到在訓練數(shù)據(jù)里沒有出現(xiàn)過的程度時,模型就不知該怎么辦了,這是出軌的根源(說起來簡單,小編其實被虐了很久才悟出來)。

之所以要特意引用一下這一段,一方面為了說明誤差的來源,另一方面筆者認為這里有一處錯誤需要指出。

如何來解決模型推廣性問題

引用文本的第二行中提到了“邏輯回歸引入的誤差”,筆者個人認為在此處用邏輯回歸這個詞是不恰當?shù)模阂驗檫壿嫽貧w(Logistics Regression)雖然帶有回歸二字,但邏輯回歸處理的并不是回歸問題(連續(xù)值問題),而是分類問題(離散值問題),而且邏輯回歸又名邏輯分類器(Logistic Classifier)特指分類問題中的二分類問題。(因為筆者曾經(jīng)有一篇論文中用到了Logistic Classifier,因此對此印象極為深刻,也由此可見經(jīng)常寫一些東西確實是對學習有幫助的。(瞎扯))

測試車模在學習過程

當然,原文中也給出了一種解決方案,即在程序中故意引入誤差以及手動移動車模(manually),但筆者認為這樣的方式仍然存在缺陷,首先數(shù)據(jù)量可能不足,其次誤差涵蓋的數(shù)據(jù)范圍不夠廣泛。

實際上在傳統(tǒng)控制器中故意引入誤差,雖然說是誤差,但是這個誤差是我們通過編程主動引入的,很可能存在很強的規(guī)律性和特征性,并不能讓模型擁有足夠的泛化性能;同時,手動操縱車模與車模自動運行的情況存在極大的差異,這個差異可能大到我們可以將這兩種誤差看成兩類誤差,并不相互具有代表性。

模型車在運行過程中采集數(shù)據(jù)

實踐是硬道理

究其根本,出現(xiàn)這個問題的原因就在于,我們通過以上方法訓練出的神經(jīng)網(wǎng)絡(luò),一直都是在看別人怎么做(off-policy),卻從未嘗試從自己的動作中去吸取教訓總結(jié)經(jīng)驗(on-policy)。這種行為就像是一個學生,平時在學習的時候一遍遍的只看別人做的答案,卻從不自己動手解題總結(jié)經(jīng)驗,這樣的狀態(tài)上了考場,雖然考零分可能不至于,但很難拿到一個理想的分數(shù);又可以總結(jié)成戰(zhàn)國時期的趙括,自幼熟讀兵書與各個大將指點江山激揚文字,卻因從未親自帶兵打仗而只能紙上談兵,所以真正到了戰(zhàn)場上指揮戰(zhàn)斗的時候才會被秦將白起坑殺十萬大軍。

遇到未曾訓練過的值的問題-理論角度分析

上一個節(jié)比較偏向?qū)嶋H問題的分析,而這一節(jié)可能會略微有點偏向理論。考慮到智能車參賽選手向來都有“實踐能力強,理論能力弱”的傳統(tǒng)特征,這一段會在依舊通俗易懂的情況下簡單帶過,但是不得不講,目的當然是突出一下俺本人理論能力也還可以的特征。

之前我們已經(jīng)了解到,該問題是通過回歸的方式解決的,那么既然是回歸問題,無論是通過何種方式實現(xiàn),它一定還是會遵照回歸問題本有的數(shù)學法則和特征。由于該問題中的輸入和輸出都是多維的向量,在講到相關(guān)概念進行點的表示或者范圍切割的話就必然要涉及到超平面的概念,這不但對筆者畫圖產(chǎn)生了很大的困難(主要困難),也會給各位看官在理解的時候增加難度(次要困難)。因此我們將采用類比的方式,將該問題映射到二維的平面空間(y-x)中去理解。

回歸問題,也可以說是擬合,就是通過一些數(shù)據(jù)點找到一個函數(shù)來盡可能的靠近這些數(shù)據(jù),以最簡單的一次函數(shù)回歸問題來說,情景如下所示:

一次函數(shù)回歸

其中紅色的叉代表我們數(shù)據(jù)集中的數(shù)據(jù)點,而藍色的則代表我們通過訓練數(shù)據(jù)得出的函數(shù)模型,從現(xiàn)在的情況來看我們用這個一次函數(shù)——確切點說是正比例函數(shù)——來擬合相關(guān)的數(shù)據(jù)是沒有問題的,該模型基本可以體現(xiàn)出數(shù)據(jù)相關(guān)的規(guī)律。但是當情況變成下面這樣的時候,可能效果就不那么理想了:

非線性函數(shù)回歸

其中藍色的是我們訓練出的模型及其預測輸出,綠色和橙色則是實際上我們的目標函數(shù)的形式與實際應(yīng)該得到的數(shù)據(jù)??梢钥闯?,雖然在我們訓練數(shù)據(jù)(紅叉)所涵蓋的范圍內(nèi),訓練模型和實際模型貼合的很好,但是一旦出了這個范圍就很難再保證有這么好的效果了,甚至天差地別。因為今天實在是太晚了,就只能暫時拿iPad手動畫的圖來將就了。

模型訓練欠擬合與過擬合的問題

首先,讓我們來了解一下欠擬合和過擬合的概念,首先用一張圖來說明:

模型訓練過擬合

用通俗易懂的概念來講,就是我們可以把神經(jīng)網(wǎng)絡(luò)的訓練過程類比到人的學習過程。還拿魚和烏龜?shù)睦觼碇v,有一天你在水里看到一個正在游的東西,這時候有人告訴你這個東西是魚,然后這個時候你記住的東西不多,就記住了——在水里游的東西就是魚,于是等你下次見到烏龜也在水里游的時候你就會的出一個結(jié)論:這是一條魚!。而這就是欠擬合的特征。

過擬合又是一種什么情況呢?還是相同的情況,你看到水里有一條紅色的鯉魚正在游動,有人告訴你這是一條魚,這一次你記住的東西就有點太多了:在水里正在游動的,是紅色的,有很好看的尾巴的鯉魚是魚,于是下次的時候,你不光覺得烏龜不是魚,甚至停在水里的紅鯉魚,在水里游動的綠鯉魚還有在水里游動但是沒那么好看的紅鯉魚,你都覺得它不是魚!這怎么能是魚呢!而這種情況就是過擬合。

欠擬合與過擬合是在進行機器學習訓練的過程中經(jīng)常遇到的問題,原文中對這個問題并沒有引入描述,但我們卻不得不考慮,我們?nèi)绾闻袛嘧约河柧毜哪P陀袥]有過擬合,以及判斷出結(jié)果之后我們應(yīng)該怎樣糾正這個問題。

如何判斷特殊賽道元素以及何時加速減速

因為我們無法再取得超前的賽道元素信息,因此無法提前做出提前對賽道特殊元素——如十字,直道、彎道和環(huán)島——也就無法及時做出加減速指令以及特殊的轉(zhuǎn)向控制指令。而車模近處的多個電感的信息特征可能不是太明顯,直接用顯示的if…else…語句可能并不能很好地達到判斷的效果,即使我們可以通過人為設(shè)定復雜的判斷條件,但這是否又令使用機器學習的意義……那啥了……大家都懂,但我一時想不到何時的詞語了。 當然,關(guān)于加速減速問題,我們可以直接在上述神經(jīng)網(wǎng)絡(luò)模型中直接輸出車模運行速度的信息,但這是否需要增加網(wǎng)絡(luò)的復雜程度,以CPU貧瘠的算力是否還能承擔相關(guān)的任務(wù),都有待考量。當然筆者目前也被困在家中,無法進行試驗測試,這里只是引出思考而已。

強者恒強,模型缺少進一步發(fā)展的潛能

因為該神經(jīng)網(wǎng)絡(luò)模型在訓練的時候,需要有一個傳統(tǒng)控制器來設(shè)置數(shù)據(jù)的標簽,以為先導。而這就不得不提到智能車競賽領(lǐng)域一個很著名的詞語:祖?zhèn)鞔a。以往應(yīng)用祖?zhèn)鞔a的時候還需要看懂并加以修改,這次只是用來采集數(shù)據(jù)的話,甚至直接把原車拿過來跑一圈,可能就可以了。

以傳統(tǒng)控制器為先導標簽訓練出的神經(jīng)網(wǎng)絡(luò)模型,幾乎原有傳統(tǒng)控制器的性能就是該神經(jīng)網(wǎng)絡(luò)模型性能的上限,神經(jīng)網(wǎng)絡(luò)模型本身缺少進一步繼續(xù)發(fā)展的潛力。

當然,既然咱已經(jīng)在這里寫出來了,當然也就意味著有相應(yīng)的解決方法了hhhh

相關(guān)問題的解決與筆者的個人思路

一句話,那就是:讓車模自力更生、真正的自己去學習!

這一段會有對上述問題的解決方案以及筆者本人對該項目的思考和思路。但因為這一段要展開講的話恐怕又要幾千上萬字的篇幅,現(xiàn)在已經(jīng)是凌晨,恐怕很難以充足的精力寫好這一段,因此占下坑位,留作日后更新!同時希望這段空出來的時間可以集思廣益,歡迎各位同學相互交流,提出新的問題或已有問題的解決方案。

不知道俺的博客能不能有機會被競賽組委會看到……也不知道被看到之后會不會給俺發(fā)點稿費改善一下伙食……現(xiàn)在的時間是2020年3月31日02:19:09,也是時候該做個夢了~

最后留下一句話,機器學習算法性能的提升,計算量增加絕對不是一定要承受的東西!

最后的最后,筆者基本會以每周一篇的頻率發(fā)表一些博客。內(nèi)容主要是有:控制,機器學習,強化學習和ROS系統(tǒng)等,目的主要是記錄自己學習的成長歷程,以及與各位朋友各位同行分析交流,希望大家可以關(guān)注一下我的博客。

https://blog.csdn.net/qq_38427871/article/details/105210885

最后的最后的最后,如果再寫一句我就是狗。汪!

參考資料

[1]

AI機器學習實戰(zhàn)電磁智能車篇: https://mp.weixin.qq.com/s/JRv0e_oru3clC-xHJIubTw


時雨月五| AI機器學習實戰(zhàn)の電磁導航智能車中神經(jīng)網(wǎng)絡(luò)應(yīng)用的問題與思考的評論 (共 條)

分享到微博請遵守國家法律
宜昌市| 涟水县| 高雄县| 新营市| 乾安县| 武定县| 本溪市| 莱芜市| 图木舒克市| 嵊州市| 平遥县| 安吉县| 贺兰县| 巢湖市| 澜沧| 神池县| 宁国市| 临潭县| 阳曲县| 北票市| 泰宁县| 武山县| 视频| 泊头市| 平陆县| 呈贡县| 崇州市| 饶平县| 绵阳市| 双辽市| 永济市| 江安县| 土默特右旗| 翼城县| 云浮市| 铁力市| 安丘市| 德庆县| 东至县| 佛冈县| 册亨县|