官术网_书友最值得收藏!

1.2.1 從傳統編程轉向機器學習

為了詳細了解機器學習編碼與傳統編碼之間的核心區別,讓我們來看一個例子。

考慮描述一條線的函數:

y=Wx+B

這描述了對于一條線,線上的每個點y都可以通過將x乘以值W(用于權重)并添加值B(用于偏置)來導出。

(注意:AI文獻往往是非常重視數學的。如果你剛剛開始,那么這是不必要的。這是我在本書中使用的極少數數學示例之一?。?/p>

現在,假設這條線上有兩個點,并且它們位于x=2,y=3處和x=3,y=5處。我們如何編寫計算WB值的代碼來描述連接這兩個點的線?

讓我們從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時推導出另一個規則。接著,一旦你有了WB,就可以編寫另一個規則來根據W、B和給定的x來計算y

那是傳統的編程,現在通常稱為基于規則的編程。我喜歡用如圖1-3所示的圖表來總結這一點。

圖1-3:傳統編程

在最高層次上,傳統編程涉及創建作用于數據并為我們提供答案的規則。在前面的場景中,我們擁有數據——一條線上的兩個點。然后我們找出了作用于這些數據的規則,以計算出這條線的方程。接著,根據這些規則,我們可以獲得新數據的答案,例如,我們可以繪制該線條。

這種場景下程序員的核心工作就是搞清楚規則。這就是你為任何問題帶來的價值——將它分解成規則,然后使用計算機可以理解的編碼語言來表達這些規則。

但是你可能并不總是能夠輕松表達這些規則??紤]之前我們想要區分T恤和鞋子的場景。人們無法總是通過找出規則來確定它們之間的關系,然后在代碼中表達這些規則。這就是機器學習的用武之地,但在針對這樣的計算機視覺任務進行研究之前,先考慮一下如何使用機器學習來得出我們之前計算出的直線方程。

主站蜘蛛池模板: 紫阳县| 七台河市| 临澧县| 道孚县| 肥西县| 班戈县| 正阳县| 龙胜| 佛学| 阿拉善盟| 铜鼓县| 福鼎市| 新建县| 小金县| 聂荣县| 微山县| 兰州市| 宁明县| 新源县| 慈利县| 夏河县| 安义县| 石景山区| 潜江市| 茶陵县| 油尖旺区| 永丰县| 治县。| 水富县| 卢湾区| 大邑县| 马尔康县| 防城港市| 手游| 涞源县| 克什克腾旗| 清流县| 鹤岗市| 交城县| 赤城县| 泽普县|