《吳恩達機器學習》學習筆記004 神經網路

2022-08-23 00:09:10 字數 3418 閱讀 6775

假使我們採用的都是50x50畫素的小,並且我們將所有的畫素視為特徵,則會有 2500個特徵,如果我們要進一步將兩兩特徵組合構成乙個多項式模型,則會有約$^}/2$個(接近3百萬個)特徵。普通的邏輯回歸模型,不能有效地處理這麼多的特徵,這時候我們需要神經網路。

當資料的特徵太多,比如影象識別,一般就不能使用邏輯回歸進行分類,而要使用神經網路。

神經網路模型建立在很多神經元之上,每乙個神經元又是乙個個學習模型。這些神經元(也叫啟用單元,activation unit)採納一些特徵作為輸出,並且根據本身的模型提供乙個輸出。下圖是乙個以邏輯回歸模型作為自身學習模型的神經元示例,在神經網路中,引數又可被成為權重(weight)。

我們設計出了類似於神經元的神經網路,效果如下:

其中$x_1$, $x_2$, $x_3$是輸入單元(input units),我們將原始資料輸入給它們。 $a_1$, $a_2$, $a_3$是中間單元,它們負責將資料進行處理,然後呈遞到下一層。 最後是輸出單元,它負責計算$\left( x \right)$。

神經網路模型是許多邏輯單元按照不同層級組織起來的網路,每一層的輸出變數都是下一層的輸入變數。下圖為乙個3層的神經網路,第一層成為輸入層(input layer),最後一層稱為輸出層(output layer),中間一層成為隱藏層(hidden layers)。我們為每一層都增加乙個偏差單位(bias unit):

下面引入一些標記法來幫助描述模型: $a_^$ 代表第$j$ 層的第 $i$ 個啟用單元。$^}$代表從第 $j$ 層對映到第$ j+1$ 層時的權重的矩陣,例如$^}$代表從第一層對映到第二層的權重的矩陣。其尺寸為:以第 $j+1$層的啟用單元數量為行數,以第 $j$ 層的啟用單元數加一為列數的矩陣。例如:上圖所示的神經網路中$^}$的尺寸為 3*4。

對於上圖所示的模型,啟用單元和輸出分別表達為:

$a_^=g(\theta ^}+\theta ^}+\theta ^}+\theta ^})$ $a_^=g(\theta ^}+\theta ^}+\theta ^}+\theta ^})$ $a_^=g(\theta ^}+\theta ^}+\theta ^}+\theta ^})$ $_}(x)=g(\theta a+\theta a+\theta a+\theta a)$

上面進行的討論中只是將特徵矩陣中的一行(乙個訓練例項)餵給了神經網路,我們需要將整個訓練集都餵給我們的神經網路演算法來學習模型。

(我們把這樣從左到右的演算法稱為前向傳播演算法( forward propagation ))

把$x$, $\theta$, $a$ 分別用矩陣表示:

我們可以得到$\theta \cdot x=a$ 。

( forward propagation ) 相對於使用迴圈來編碼,利用向量化的方法會使得計算更為簡便。以上面的神經網路為例,試著計算第二層的值:

我們令 $^}=^}x$,則 $^}=g(^})$ ,計算後新增 $a_^=1$。 計算輸出的值為:

我們令 $^}=^}^}$,則 $h_\theta(x)=^}=g(^})$。 這只是針對訓練集中乙個訓練例項所進行的計算。如果我們要對整個訓練集進行計算,我們需要將訓練集特徵矩陣進行轉置,使得同乙個例項的特徵都在同一列裡。即: $^}=^}\times ^} $

$^}=g(^})$

為了更好了了解neuron networks的工作原理,我們先把左半部分遮住:

右半部分其實就是以$a_0, a_1, a_2, a_3$, 按照logistic regression的方式輸出$h_\theta(x)$:

其實神經網路就像是logistic regression,只不過我們把logistic regression中的輸入向量$\left[ x_1\sim \right]$ 變成了中間層的$\left[ a_1^\sim a_3^ \right]$, 即: $h_\theta(x)=g\left( \theta_0^a_0^+\theta_1^a_1^+\theta_^a_^+\theta_^a_^ \right)$ 我們可以把$a_0, a_1, a_2, a_3$看成更為高階的特徵值,也就是$x_0, x_1, x_2, x_3$的進化體,並且它們是由 $x$與$\theta$決定的,因為是梯度下降的,所以$a$是變化的,並且變得越來越厲害,所以這些更高階的特徵值遠比僅僅將 $x$次方厲害,也能更好的**新資料。 這就是神經網路相比於邏輯回歸和線性回歸的優勢。

從本質上講,神經網路能夠通過學習得出其自身的一系列特徵。在普通的邏輯回歸中,我們被限制為使用資料中的原始特徵$x_1,x_2,...,_}$,我們雖然可以使用一些二項式項來組合這些特徵,但是我們仍然受到這些原始特徵的限制。在神經網路中,原始特徵只是輸入層,在我們上面三層的神經網路例子中,第三層也就是輸出層做出的**利用的是第二層的特徵,而非輸入層中的原始特徵,我們可以認為第二層中的特徵是神經網路通過學習後自己得出的一系列用於**輸出變數的新特徵。

神經網路中,單層神經元(無中間層)的計算可用來表示邏輯運算,比如邏輯與(and)、邏輯或(or)。

舉例說明:邏輯與(and);下圖中左半部分是神經網路的設計與output層表示式,右邊上部分是sigmod函式,下半部分是真值表。

我們可以用這樣的乙個神經網路表示and 函式:

其中$\theta_0 = -30, \theta_1 = 20, \theta_2 = 20$ 我們的輸出函式$h_\theta(x)$即為:$h_\theta(x)=g\left( -30+20x_1+20x_2 \right)$

所以我們的:$h_\theta(x) $

這就是and函式。

接下來再介紹乙個or函式:

or與and整體一樣,區別只在於的取值不同。

使用多層神經網路進行分類。

吳恩達機器學習筆記

為了解決實際生活中的問題,我們通常需要乙個數學模型。比如,小明有乙個房子 他想賣掉房子 為了知道房子的 小明收集了該地區近兩年的房屋交易 他發現房屋 與房屋大小呈正相關,所以他畫了了一幅圖 小明的房屋大小用紅色的 代替。可見和小明房屋一樣大小的房子並不存在,而類似的房屋 又有很大差別,如此小明決定用...

吳恩達機器學習筆記

sigmoid啟用函式 0,1 x 0,y 0.5 tanh啟用函式 1,1 x 0,y 0 relu啟用函式 x 0,y 0 x 0,y x sigmoid啟用函式 除了輸出層是乙個二分類問題基本不會用它。tanh啟用函式 tanh是非常優秀的,幾乎適合所有場合。relu啟用函式 最常用的預設函式...

吳恩達機器學習004多元梯度下降

標籤 演算法 機器學習 目錄特徵和多項式回歸 正規方程 我們引入更加多的特徵來對房價進行進一步評估,同時也新增一些符號來幫助表示引數。n用來表示特徵 feature 量,x i 這是表示的就不是乙個值了,而是一組向量 同時用xj i 來表示向量裡的具體哪乙個引數 有了多個特徵之後假設函式就應該將所有...