書名: 移動端AI與ML應用開發:基于iOS和Android作者名: (美)勞倫斯·莫羅尼本章字數: 1064字更新時間: 2023-07-24 18:05:19
1.2.1 從傳統編程轉向機器學習
為了詳細了解機器學習編碼與傳統編碼之間的核心區別,讓我們來看一個例子。
考慮描述一條線的函數:
y=Wx+B
這描述了對于一條線,線上的每個點y都可以通過將x乘以值W(用于權重)并添加值B(用于偏置)來導出。
(注意:AI文獻往往是非常重視數學的。如果你剛剛開始,那么這是不必要的。這是我在本書中使用的極少數數學示例之一?。?/p>
現在,假設這條線上有兩個點,并且它們位于x=2,y=3處和x=3,y=5處。我們如何編寫計算W和B值的代碼來描述連接這兩個點的線?
讓我們從W開始,其中W稱為權重,但在幾何學中,它也被稱為斜率(或梯度)。具體情況如圖1-2所示。
計算很簡單:
W=(y2-y1)/(x2-x1)
代入數字,便可得出斜率:
W=(5-3)/(3-2)=(2)/(1)=2

圖1-2:具有斜率的線段可視化
或者,在代碼中,在這種情況下使用Python:

這個函數能工作。它很簡單,因為當兩個x值相同時,它會忽略除以零,但現在讓我們繼續吧。
我們現在已經計算出W值。為了得到直線的函數,我們還需要算出B?;氐礁咧袔缀?,我們可以用一個點作為例子。
所以,假設我們有:
y=Wx+B
我們也可以說:
B=y-Wx
我們知道當x=2、y=3且W=2時,我們可以回填這個函數:
B=3-(2*2)
這導致我們推導出B是-1。同樣,在代碼中,我們會這樣寫:

所以,現在,要確定線上的任何點,給定一個x,我們可以很容易地說:

或者,對于完整代碼:

從中可以看出,當x為10時,y為19。
你剛剛完成了一項典型的編程任務。你有一個問題要解決,可以通過搞清楚規則然后用代碼表達來解決問題。當給定兩個點時,有一個要計算W的規則,你創建了該代碼。然后,一旦你計算出W,就可以在使用W和單個點計算B時推導出另一個規則。接著,一旦你有了W和B,就可以編寫另一個規則來根據W、B和給定的x來計算y。
那是傳統的編程,現在通常稱為基于規則的編程。我喜歡用如圖1-3所示的圖表來總結這一點。

圖1-3:傳統編程
在最高層次上,傳統編程涉及創建作用于數據并為我們提供答案的規則。在前面的場景中,我們擁有數據——一條線上的兩個點。然后我們找出了作用于這些數據的規則,以計算出這條線的方程。接著,根據這些規則,我們可以獲得新數據的答案,例如,我們可以繪制該線條。
這種場景下程序員的核心工作就是搞清楚規則。這就是你為任何問題帶來的價值——將它分解成規則,然后使用計算機可以理解的編碼語言來表達這些規則。
但是你可能并不總是能夠輕松表達這些規則??紤]之前我們想要區分T恤和鞋子的場景。人們無法總是通過找出規則來確定它們之間的關系,然后在代碼中表達這些規則。這就是機器學習的用武之地,但在針對這樣的計算機視覺任務進行研究之前,先考慮一下如何使用機器學習來得出我們之前計算出的直線方程。