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

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

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

考慮描述一條線的函數:

y=Wx+B

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

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

現在,假設這條線上有兩個點,并且它們位于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,就可以編寫另一個規則來根據WB和給定的x來計算y

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

圖1-3:傳統編程

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

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

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

主站蜘蛛池模板: 萨迦县| 无棣县| 息烽县| 二连浩特市| 沛县| 韶关市| 江源县| 中阳县| 大港区| 贡山| 柞水县| 苏尼特右旗| 湘潭市| 分宜县| 册亨县| 济源市| 林西县| 兴宁市| 页游| 衡阳县| 太谷县| 上思县| 穆棱市| 宝坻区| 南通市| 永平县| 元氏县| 建昌县| 泗洪县| 东兰县| 天柱县| 屏山县| 辛集市| 大理市| 安图县| 贡觉县| 武邑县| 义乌市| 高邑县| 白玉县| 兰坪|