1. 程式人生 > >吳恩達機器學習 課程筆記第五週

吳恩達機器學習 課程筆記第五週

Costfunction代價函式:

在前面的課程總我們瞭解了邏輯迴歸的代價函式:


在神經網路中,我們增加了對k個輸出的誤差進行了求和。得到代價函式如下:


K為輸出的個數,在正則項中L表示神經網路的層數

Backpropagation algorithm反向傳播演算法:

當我們進行梯度下降演算法的時候,便要計算J的偏導數。在神經網路中最後造成誤差結果不單是由最後一層導致的。因此,需要對中間層的誤差進行計算當。我們計算某一層的誤差時,通過鏈式法則我們便要對後面的層的偏導進行計算。我們可以通過反向傳播演算法來計算這些偏導數。


其中delta為誤差g'(z)可以化簡為g(z)*(1-g(z))


其中a表示計算所得的值,a為正向傳播。delta為第l層,第i個值對第j個下一個單元的誤差值,從最後一層反向傳播。

Gradient checking(梯度檢驗):

在行經梯度下降的時候常會有各種bug,有時候雖然代價函式的值在下降但實際上還有有很大的誤差可能是由小bug導致的。我們可以使用梯度檢驗對其進行檢測,保證產生模型的質量。

可以使用J(theta+ε)-J(theta-ε)/ε來檢驗J(theta)的導數


n為theta的數量,從theta的第一項開始,將thetaPlus賦值為theta+epsilon,thetaMinus賦值為theta-epsilon。gradApprox表示第i項上檢測的偏導值。


Random initialization:

總結:

神經網路的輸入輸出中間層的引數選擇:確定的特徵集決定了輸入的單元數量X的維度,分類的個數決定輸出層的維度。

理論上來說隱藏層單元個數越多越好,中間層的單元個數一般與輸入層的維度相匹配(相同或者二三四倍)。

程式設計作業:

程式設計作業的主要任務是寫出神經網路的代價函式,然後通過反向傳播演算法進行梯度下降,最後是進行正則化。

nncostfunction:

function [J grad] = nnCostFunction(nn_params, ...
                                   input_layer_size, ...
                                   hidden_layer_size, ...
                                   num_labels, ...
                                   X, y, lambda)

Theta1 = reshape(nn_params(1:hidden_layer_size * (input_layer_size + 1)), ...
                 hidden_layer_size, (input_layer_size + 1));

Theta2 = reshape(nn_params((1 + (hidden_layer_size * (input_layer_size + 1))):end), ...
                 num_labels, (hidden_layer_size + 1));

% Setup some useful variables
m = size(X, 1);
         
% You need to return the following variables correctly 
J = 0;
Theta1_grad = zeros(size(Theta1));
Theta2_grad = zeros(size(Theta2));

X = [ones(m, 1) X];
ylabel = zeros(num_labels, m);
for i=1:m
    ylabel(y(i), i) = 1;
end

z2 = X*Theta1';
z2 = [ones(m, 1) z2];
a2 = sigmoid(X*Theta1');
a2 = [ones(m, 1) a2];
a3 = sigmoid(a2*Theta2');


for i=1:m
	J=J-log( a3 (i,:) ) * ylabel(:,i)-log( 1-a3(i,:) )*(1-ylabel(:,i));
end
J=J/m;
J=J+lambda/(2*m)*(sum(sum(Theta1(:,2:end).^2))+sum(sum(Theta2(:,2).^2)));
Delta1 = zeros(size(Theta1));
Delta2 = zeros(size(Theta2));
for t=1:m
	delta3=a3(t,:)'-ylabel(:,t);
	delta2=Theta2'*delta3.*sigmoidGradient(z2(t,:)');
	

	Delta1=Delta1+delta2(2:end)*X(t,:);

	Deltal=Delta2+delta3*a2(t,:);
end

Theta1_grad = Delta1 /m;

Theta1_grad(:,2:end)=Theta1_grad(:,2:end)+lambda/m*Theta1(:,2:end);

Theta2_grad=Delta2 /m;

Theta2_grad(:,2:end)=Theta2_grad(:,2:end)+lambda/m*Theta2(:,2:end);





% -------------------------------------------------------------

% =========================================================================

% Unroll gradients
grad = [Theta1_grad(:) ; Theta2_grad(:)];


end

sigmoidgradient:用來計算g(z)*(1-g(z))

function g = sigmoidGradient(z)
%SIGMOIDGRADIENT returns the gradient of the sigmoid function
%evaluated at z
g = zeros(size(z));
g=sigmoid(z).*(1-sigmoid(z));

end

randinitalizeweight:生成隨機初始theta

function W = randInitializeWeights(L_in, L_out)

W = zeros(L_out, 1 + L_in);

epsilon_init = 1;
W = rand(L_out, 1 + L_in) * 2 * epsilon_init - epsilon_init;


end

相關推薦

機器學習 課程筆記

Costfunction代價函式:在前面的課程總我們瞭解了邏輯迴歸的代價函式:在神經網路中,我們增加了對k個輸出的誤差進行了求和。得到代價函式如下:K為輸出的個數,在正則項中L表示神經網路的層數Backpropagation algorithm反向傳播演算法:當我們進行梯度下

機器學習課程筆記02——處理房價預測問題(梯度下降演算法詳解)

  建議記住的實用符號 符號 含義 m 樣本數目 x 輸入變數 y 輸出變數/目標變數

機器學習課程筆記章節二單變數線性迴歸

1、模型描述 Univariate(One variable)Linear Regression m=訓練樣本的數目,x's=輸入的變數/特徵,y's=輸出變數/目標變數 2、代價函式 基本定義: 3、代價函式(一) 回顧一下,前面一些定義: 簡化的假設函式,theta0=0,得到假

機器學習課程筆記——第二

1. 多變數線性迴歸(Linear Regression with Multiple Variables) 也稱為多元線性迴歸,一元就是一個變數,多元就是多個變數,在這裡也可以叫做多個特徵 1.1 多維特徵(Multiple Features) 之前,

機器學習課程筆記——第一

1. 單變數線性迴歸(Linear Regression with One Variable) 1.1 模型表示 像上述公式,因為只含有一個特徵/輸入變數,因此這樣的問題叫作單變數線性迴歸問題。 例子如下: 單變數線性方程,就是我們初中就學的

Coursera 斯坦福機器學習課程筆記 (1)

看了課程一週後發現忘光了,決定做一個筆記用作複習。如果涉及到侵權問題請聯絡我,我會立馬刪除並道歉。同時,禁止任何形式的轉載,包括全文轉載和部分轉載。如需使用請聯絡本人 [email protected]。如若發現侵權行為,我學過智慧財產權法的,嘿嘿第一週:基礎概念和

Coursera機器學習課程 總結筆記及作業程式碼——5周神經網路續

Neural Networks:Learning 上週的課程學習了神經網路正向傳播演算法,這周的課程主要在於神經網路的反向更新過程。 1.1 Cost function 我們先回憶一下邏輯迴歸的價值函式 J(θ)=1m[∑mi=1y(i)log(hθ

Coursera機器學習課程 總結筆記及作業程式碼——1,2周

Linear’regression 發現這個教程是最入門的一個教程了,老師講的很好,也很通俗,每堂課後面還有程式設計作業,全程用matlab程式設計,只需要填寫核心程式碼,很適合自學。 1.1 Model representation 起始給出了

Coursera機器學習課程 總結筆記及作業程式碼——6周有關機器學習的小建議

1.1 Deciding what to try next 當你除錯你的學習演算法時,當面對測試集你的演算法效果不佳時,你會怎麼做呢? 獲得更多的訓練樣本? 嘗試更少的特徵? 嘗試獲取附加的特徵? 嘗試增加多項式的特徵? 嘗試增加λ? 嘗試減小λ?

機器學習筆記--機器學習課程2

梯度下降法 對於梯度下降法而言,當偏導數 的學習效率過大或過小時,收斂的速率會變得很緩慢,α過大時甚至會無法收斂。學習效率α是一個正數。 同樣梯度下降法初始點在區域性最低點時同樣不會再更新,此時偏導數的值為0.

學習筆記——-機器學習課程-1.3 用神經網路進行監督學習

         神經網路有時媒體炒作的很厲害,考慮到它們的使用效果,有些說法還是靠譜的,事實上到目前為止,幾乎所有的神經網路創造的經濟價值都基於其中一種機器學習,我們稱之為“監督學習”,那是什麼意思呢?         我們來看一些例子, 在監督學習中輸入x,習得一個函式

Coursera機器學習課程-

五、Octave教程(Octave Tutorial) 5.1 基本操作 參考視訊: 5 - 1 - Basic Operations (14 min).mkv 在這段視訊中,我將教你一種程式語言:Octave語言。你能夠用它來非常迅速地實現這門課中我們已經學過的,或者

學習筆記——-機器學習課程 1.2 什麼是神經網路

1.2 什麼是神經網路         “深度學習”指的是訓練神經網路,有的時候 規模很大,那麼神經網路是什麼呢?我們從一個房價預測的例子開始,假設有一個六間房屋的資料集已知房屋的面積,單位是平房英尺或者平方米,已知房屋價格,想要找到一個函式,根據房屋面積,預測房價的函式,

-深度學習-課程筆記-3: Python和向量化( Week 2 )

有時 指數 檢查 都是 效果 很快 -1 tro str 1 向量化( Vectorization ) 在邏輯回歸中,以計算z為例,z = w的轉置和x進行內積運算再加上b,你可以用for循環來實現。 但是在python中z可以調用numpy的方法,直接一句z = np.d

-深度學習-課程筆記-6: 深度學習的實用層面( Week 1 )

data 絕對值 initial 均值化 http 梯度下降法 ati lod 表示 1 訓練/驗證/測試集( Train/Dev/test sets ) 構建神經網絡的時候有些參數需要選擇,比如層數,單元數,學習率,激活函數。這些參數可以通過在驗證集上的表現好壞來進行選擇

-深度學習-課程筆記-8: 超參數調試、Batch正則化和softmax( Week 3 )

erp 搜索 給定 via 深度 mode any .com sim 1 調試處理( tuning process ) 如下圖所示,ng認為學習速率α是需要調試的最重要的超參數。 其次重要的是momentum算法的β參數(一般設為0.9),隱藏單元數和mini-batch的

機器學習視訊筆記03——矩陣和向量

注:非常基礎的內容,學過線性代數的童鞋可以跳過  矩陣介紹: 左邊是一個4×2的矩陣,右邊是一個2×3的矩陣 A是一個四行而列的矩陣 A11=1402(表示第一行第一列) A12=191(第一行第二列)

機器學習視訊筆記——簡單知識背景

  1、生活的機器學習: 電腦區分垃圾郵件 淘寶的智慧推薦 照相時候的美顏 什麼是人工智慧: Arthur Samuel(1959):部分特定程式碼賦予計算機自動學習的能力。 世界上第一個機器學習的程式:Samuel編寫的西洋棋程式 &n

機器學習視訊筆記——梯度下降簡化技巧

    房價預測   多個因素作用下,即θ有多個的情況下,如何得到假設函式。 第二行的訓練樣本,用矩陣進行表示如下: 同樣,假設函式在4個變數的情況下,其表示方法為: 有n個因素作用的情況下(即預設X0 = 1):

機器學習筆記(參考機器學習視訊筆記)16_決策樹

16 決策樹 決策樹是一種監督學習演算法,以樹狀圖為基礎,其輸出結果為一系列簡單實用的規則。它就是一系列的if-then語句,既可以用於分類問題,也可以用於迴歸問題。構建決策樹之通常包括三個步驟:        1)特徵選擇   &n