尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
從’為什麼’開始
問「我們為什麼這樣做?」應該是我們在任何機器學習項目中提出的第一個問題。很多時候我們看到項目失敗,是由於一個錯誤的原因開始,所以我們對於這個新項目首先開始問下:
我們為什麼要製作自動駕駛帆船?
簡短回答:它為學習如何應用機器學習提供了一個絕佳的環境。
這並不是因為人們厭倦了自己駕駛帆船,也不是我們想用新的智能系統去贏得比賽,而是發起的這個挑戰有一些因素在內,使得它非常適合學習:
- 帆船賽其實是一場比賽
這種所謂的「對抗性」設置意味著我們不僅要考慮自己的行為,還要考慮一個或多個對手的行為。這在無形中增加了一層全新的複雜性,從而提供了一個非常具有挑戰性的學習環境。
- 環境是真實的
這種設置不是人為的,而是現實的和無情的。有許多因素需要考慮:風、波浪、船的狀況等。這些是大多數算法在現實世界中工作時所面臨的現實。
- 知識會更牢固
人們通常會在調動起所有的感官的時候學習效果更為顯著。乘坐帆船的時候,會刺激到所有人,並提供豐富的學習經驗,這會有助於您更為深入理解這些概念。
在我們的課程中,我們採用的方法與大多數其他AI課程不同。我們不會從基本概念開始,直到我們解決難題這種方法。我們將採取不同的路線,贏得勝利。通過不斷保持主要目標(創建自主帆船),您將在整個過程中保持更多的參與和積極性。
目標
讓我們稍微細化一下我們的目標。創建一艘自動駕駛的帆船聽起來比較簡單,但可能會涉及到很多的內容。
我們可以按如下方式定義目標:
為帆船創建一個自動駕駛儀(轉向機構),使其能夠以競爭的方式參加帆船比賽。
到現在它仍然看起來像是一個非常大的難題。通常有助於將問題分解為我們可以單獨解決的較小問題。這樣的事情可能會有所幫助:
- 目標1:尋找最佳駕駛路線,考慮風向和速度
- 目標2:讓船沿著最佳航線航行
- 目標3:應用比賽策略,以便我們可以選擇最大化獲勝機會的行動
目標1似乎現在看起來更加實用了。我們可以提出一些具體的問題:在給定風向和速度的情況下,帆船的最佳航線是什麼?
能夠提出這樣一個問題是很有幫助的,接下來我們一起看下
目標1:找到最佳航線
在我們可以通過機器學習做些什麼之前,我們首先需要學習一兩件關於航行的知識。這種「領域知識」對於機器學習項目的成功至關重要。除了錯誤的動機之外,缺乏領域知識是許多機器學習項目失敗的第二個原因。有時候,要麼是我們解決問題的原因錯了,要麼是我們解決了錯誤的問題。
考慮下圖1中的情景。假設我們需要到達頂部的標誌點,風是直接來自上方的。根據航行方面的常識問題,您可能知道:我們無法直接駛入風中。但如果風來自側面,我們就永遠不會集中目標。所以在這兩個極端之間存在一個最佳狀態。找到這個最優是我們的目標。
圖1:逆風梯(風來自頂部)
風角、風速和船速之間的關係通常由海員用極坐標顯示。圖2顯示了這樣一個圖的一個例子。
圖2:極坐標圖
粗黑線表示在某些風角(相對於船)和速度下的船速。針對6,8,10,12和20節的風速繪制不同的曲線。船速通常以1節≈1,85kph的結節來測量。現在變得非常容易閱讀船速:10度風在110度風角(答案約為7節)。更重要的是,這個圖有助於我們找到最佳的VMG(見視頻:Velocity Made Good)。
粗黑線表示在一定的風角(相對於船)和速度下的船速。風速分別為6、8、10、12和20節時繪制了不同的曲線。船的速度通常用繩結來計算,繩結≈每小時1,85公里。現在的船速就很容易閱讀了
它變得很容易讀的船速說:10節風在110度角(答案是大約7節)。更重要的是,這個圖幫助我們找到最優的VMG(參見視頻:Velocity Made Good)。
比較簡單吧?我們不需要機器學習。只是我們沒有為每艘船提供這些極坐標圖。通常船艇設計師會提供一些理論上的內容,但專業團隊需要創造自己的最佳性能。
現在我們可以將第一個目標重新定義為更具體的內容:
根據風速和風向,預測某個方向的船速。
有了這樣的模型,我們可以很容易地預測最大VMG的過程。現在讓我們繼續看看如何使用機器學習來做到這一目標!
始終牢記目標
在課程中,我們將使用除自動帆船以外的示例。當我們介紹新概念時,我們將使用如下插入將它們鏈接到我們的目標:
目標:尋找最佳航線
什麼是機器學習?
那麼,什麼是機器學習?讓我們首先定義學習本身。 Google網路定義告訴我們:
學習:通過學習、經驗或被教導獲得知識或技能
這適用於計算機以及人類。後來我們確實會看到:人類和計算機其實是以非常相似的方式學習。
在機器中,獲得的知識存在於所謂的模型中。該模型在訓練階段學習,稍後將用於在應用程序中執行其最終任務。以預測為例。
模型:系統的世界觀,包含系統學到的東西
機器學習的類型
根據上面的學習定義,機器學習有三大類:
- 監督學習(正在教授)
- 強化學習(經驗)
- 無監督學習(學習)
監督學習
目前,這是最常見的機器學習形式。我們知道結果必須是什麼,通過提供好的和壞的數據示例「教導」機器更接近。
更具體:我們希望我們的模型能夠將給定輸入(通常名為X)轉換為特定輸出(通常命名為y)。我們通過輸入具有相應輸入的輸出示例來訓練模型,這稱為訓練集。
圖3:輸入、輸出和模型
定義它的另一種方法是將其寫為數學公式:
y = f(X)
這里f是將輸入轉換為輸出的函數(模型)。
強化學習
這在技術上是一種監督學習形式,但老師不是真實的人類。系統會通過反復試驗從其環境中學習。
該模型仍有輸入和輸出,但我們沒有帶示例的訓練集。相反,我們有一個稱為獎勵函數的東西,模型試圖最大化。
無監督學習
即使沒有老師,機器也可以學習如何在收到的數據中找到結構。例如:’clustering’和’dimensionality reduction’。請參閱下面的維數減少示例。系統找到看起來相似的照片示例。
圖4:t-SNE降維示例
目標 – 尋找最佳航線
問題
什麼機器學習類型最適合我們的目標?
回答
我們有一個標籤數據集,所以我們可以使用監督學習。
問題的類型
在有監督的學習中,我們可以解決兩種主要類型的問題。類型取決於所需的輸出。
想像一下,您想要確定某個圖像是否包含狗或貓。這將是分類的一個例子。
分類:目標是預測一個類或類別
另一個例子:假設我們想根據天氣預報和季節來預測北京的煙霧量。這將是一個回歸問題。
回歸:目標是預測實數
目標 – 尋找最佳航線
問題
我們的目標是分類還是回歸類問題?
回答
顯然是一個回歸問題,因為我們想要預測的船速是一個實數。
特徵
現在,我們來看一下機器學習系統的輸入數據。模型需要知道我們想要了解的東西的屬性,這些屬性稱為特性。
我們以水果為例:水果的重量和顏色都是特色。
圖5:橙子和獼猴桃的不同特徵
該模型可以使用這些特徵來預測我們觀察到的水果種類。這將是分類。
試圖根據重量和顏色預測直徑是一個回歸問題。
目標 – 尋找最佳航線
問題
對於我們的目標,模型的特徵是什麼?
回答
風角和風速
訓練模型
好的,但我們如何從特徵到預測呢?首先,我們必須訓練我們的模型。
訓練分類模型
讓我們繼續水果的例子,我們想根據重量和顏色來確定水果的類型。首先,我們需要將顏色轉換為數字。我們選擇以nm為單位的光波長。綠色變為520nm,橙色為600nm。我們把兩個數字都繪制在圖表中。
圖6:帶有數據點的散點圖
訓練的目標是找到一條分出獼猴桃和橙子的線。該線完全是隨機開始的。在每個訓練步驟中,模型都試圖將直線往正確的方向移動一點點。一段時間後,越來越多的水果將最終落在正確的一側。
圖7:對橙子和獼猴桃進行分類
經過5個步驟,我們對結果感到滿意。訓練停止,我們現在可以使用我們全新的訓練模型進行預測。
訓練回歸模型
這遵循相同的基本原則,現在我們將根據重量預測每個橙子的價格。目標是繪制一條與我們用於訓練的示例非常匹配的線。
圖8:回歸模型的示例
訓練後,模型給出了給定重量的每個橙子的可能價格。
回到帆船上
那麼考慮到風速和風向,我們如何使用機器學習模型來預測某個方向的船速?在我們開始訓練之前,我們需要數據!
假設您的團隊去年每次航行時都記錄了風速、風向和船速。你遇到了很多不同的天氣(和波浪)條件。清理完這些數據後,最終會得到一個帶數字的大表。來自該數據幀的隨機樣本如圖9所示。
圖9:數據集的隨機樣本
在這種情況下,boat_speed是我們的目標變量。我們的輸入功能是wind_speed和angle_of_attack。
在我們的課程中,我們使用船上收集的數據來訓練機器學習模型。參與者將使用這些預測來製作他們自己的船的極坐標圖。如前所述,這將使船舶可以自動駕駛,並在競賽中發揮重要作用。
然後我們用帆船將它們掛在水面上測試模型。我們還與所有參與者進行虛擬競賽,以找出最適合的模型!
總結
在這篇博客文章中,您已經發現了我們做到自主航行挑戰子目標1的方法——找到最佳航線,並學習了一些機器學習的關鍵概念。
那麼子目標2和3呢?子目標1在一篇博客文章中已經涵蓋了很多內容,所以請繼續關注後續的文章。
編譯出品