1. 程式人生 > >理解機器學習和深度學習的核心思想與實現思路 (入門與總結)[圖文 + 詳細思路]

理解機器學習和深度學習的核心思想與實現思路 (入門與總結)[圖文 + 詳細思路]

本文講解涉及到的核心思想:

機器學習與深度學習:

	1:線性迴歸問題。
	2:優化搜尋時,步長選取的重要性。
	3:為什麼神經網路可以擬合任意的曲線函式。
	4:影象識別網路中,為什麼淺層網路只能識別出一些簡單的線,面,隨著網路的加深可以識別出十分複雜的圖案。

1:線性迴歸問題:
(1)問題描述
在這裡插入圖片描述
如上圖所示,小紅(左)和小藍(右)在進行一個水果交換的遊戲。
目前已經進行了三次交換:
第一次:小紅給小藍1個蘋果,小藍因此給了小紅0個香蕉
第二次:小紅給小藍5個蘋果,小藍因此給了小紅16個香蕉
第三次:小紅給小藍6個蘋果,小藍因此給了小紅20個香蕉
問題:現在小紅想知道,將來小紅給小藍 x

個蘋果,小藍會因此給小紅的香蕉數 y 的值是多少?

(2)問題建模:


我們可以將上述問題按照上圖所示進行建模,假設我們是使用一個線性函式y=wx+b來描述上述問題。將已知資料進行表格化:
在這裡插入圖片描述
我們現在的問題就是如何找到合適的w,b可以很好的解決我們的問題。

首先,我們觀察兩種w,b取值的情況,y^為根據w,b的取值,函式所得到的結果:
w=1, b=0時:
在這裡插入圖片描述
w=2, b=2時:
在這裡插入圖片描述
那麼,到底哪一個w,b的取值比較好呢?那我們就需要引入代價函式C(w,b)了。
在這裡插入圖片描述
我們讓代價函式C為真實值y與模型得到的值y^的差值平方和,於是我們知道,代價函式C值越小,表示模型得出的結果越好。我們可以根據代價函式C的值來評判兩個預測函式的好壞。


由此可知,w=2, b=2時 比 w=1, b=0時更好。

那麼我們如何才能找到更好的w,b使得代價函式值更小(最小)呢?
我們的目標就是搜尋不同的w,b來最小化代價函式C
在這裡插入圖片描述
一種搜尋的方案是:按照長度為1的大小,在w-b座標系下進行上下左右的搜尋:
起始位置:(w=2,b=2)
在這裡插入圖片描述
向上搜尋到(w=3,b=2),由於代價函式值更小了,所以可以更新w,b的值
在這裡插入圖片描述
(w=3,b=2):繼續向上搜尋(w=4,b=2),由於代價函式值沒有變小,則不更新
在這裡插入圖片描述
(w=3,b=2):繼續向右搜尋(w=3,b=3),由於代價函式值沒有變小,則不更新
在這裡插入圖片描述
(w=3,b=2):繼續向左搜尋(w=3,b=1),由於代價函式值變小,更新w,b
在這裡插入圖片描述


(w=3,b=1):繼續向左搜尋(w=3,b=0),代價函式變小,更新w,b
在這裡插入圖片描述
(w=3,b=0):繼續搜尋,在此處向上下左右四個方向搜尋到無法使得代價函式值C變小,所以以長度為1的搜尋方式結束了,找到了當前可以取到的最優w=3,b=0值。

對於上述問題,w=3,b=0就是最好的結果了嗎?其實並不是,(w=4,b=-2)才是最優解。
在這裡插入圖片描述

那為什麼我們沒有找到這個最優解呢?
在這裡插入圖片描述
如上圖所示,當(w=3,b=0)時,粉色三角形代表代價函式值C上升的區域,2個三角形之間的白色通道才是可以使得代價函式值C降低的區域。
由於我們的搜尋長度為1,所以我們無法進入到白色通道中,當我們減小搜尋長度時,我們就可以得到更好的優化結果了。
在這裡插入圖片描述
在這裡插入圖片描述
這就是機器學習進行梯度下降搜尋時,更新步長選擇的重要性

現在我們將問題進行進一步的複雜化:
小紅和小藍又進行了2次水果交換:
第四次:小紅給小藍9個蘋果,小藍因此給了小紅20個香蕉
第五次:小紅給小藍11個蘋果,小藍因此給了小紅20個香蕉
在這裡插入圖片描述
那麼我們繼續使用線性函式模型進行問題的求解優化,我們得到的最優解為:
在這裡插入圖片描述
我們可以很容易的看出,隨著問題的複雜化,線性函式模型已經無法較好的解決我們的問題了。真正我們想要的結果函式影象如下所示:
在這裡插入圖片描述
我們發現,該曲線可以被分為兩個線性函式區域,所以我們可以使用兩個線性函式的組合來表示,於是我們將函式模型變成如下模式:
在這裡插入圖片描述
(w1,b1)用來表示上述斜線,(w2,b2)用來表示橫線
所以我們只需s1,s2滿足:
當x<=6時,s1=1,s2=0
當x>6時,s1=0,s2=1
只需滿足上述條件,下面的函式就可以很好的解決我們的問題

那我們如何可以使得s1,s2滿足上述條件呢?接下來我們提出非線性函式
在這裡插入圖片描述
通過增加w可以使上述函式進行壓縮,改變b的大小,可以將上述函式進行平移經過搜尋我們可以得到下述函式,來解決我們的問題。
在這裡插入圖片描述
於是,通過增加線性函式的個數(神經元的個數)我們可以解決更加複雜的問題。

思考: 對於下面這個二分類問題,至少使用多少個神經元,可以較好的將矩形和圓形分開?

在這裡插入圖片描述

解答分析:
如下圖所示,我們至少需要使用3條直線才能將矩形和圓形較好的分開,所以我們至少使用3個神經元。
在這裡插入圖片描述

現在,通過資料的新增(5和6),我們的問題又進一步複雜化了,如下所示:
在這裡插入圖片描述
由之前的處理可知,我們可以使用下面這個模型進行問題的處理:
在這裡插入圖片描述
那麼s2將如何表示呢?經過分析我們可以知道,當s1=0,s3=0時,s2=1就滿足了我們的問題。即s2 = not s1 and not s3
在這裡插入圖片描述
函式模型如下所示:就是一個2層的神經網路
在這裡插入圖片描述
由此我們可以知道,對於複雜性不同的問題,我們可以通過改變(增加或減少)神經網路的神經元個數和網路的層數,來處理不同的問題。

總結:
1:優化搜尋時,步長選取的重要性
由上述對最初問題的優化過程,我們可以知道,當更新步長較長時,我們可以很快的得到一個較好的結果,但是對於問題的最優解,可能由於步長過長而無法到達。通過縮小步長,我們可以得到更加優秀的解。

2:為什麼說神經網路可以擬合任意的曲線函式。
如下某一複雜曲線而言,按照上述的解決方案,我們只需將該複雜的曲線,有限次的劃分,然後分別使用線性函式來擬合不同的區域的弧線即可。
在這裡插入圖片描述
在這裡插入圖片描述

3:影象識別網路中,為什麼淺層網路只能識別出一些簡單的線,面,隨著網路的加深可以識別出十分複雜的圖案。

由2可知,淺層線性函式可以使用直線來擬合任意的曲線,所以在淺層網路中,主要是使用一些直線來對目標進行描述。隨著網路層次的加深,會將折現變得更加光滑和複雜,因此可以用來對更加複雜的圖形進行描述。