1. 程式人生 > >網上某位牛人的deep learning學習筆記彙總

網上某位牛人的deep learning學習筆記彙總

  前言:

  教程中的一些術語:

  Model representation:

  其實就是指學習到的函式的表達形式,可以用矩陣表示。

  Vectorized implementation:

  指定是函式表示式的向量實現。

  Feature scaling:

  指是將特徵的每一維都進行一個尺度變化,比如說都讓其均值為0等。

  Normal equations:

  這裡指的是多元線性迴歸中引數解的矩陣形式,這個解方程稱為normal equations.

  Optimization objective:

  指的是需要優化的目標函式,比如說logistic中loss function表示式的公式推導。或者多元線性迴歸中帶有規則性的目標函式。

  Gradient Descent、Newton’s Method:

  都是求目標函式最小值的方法。

  Common variations:

  指的是規則項表達形式的多樣性。

  一些筆記:

  模型表達就是給出輸入和輸出之間的函式關係式,當然這個函式是有前提假設的,裡面可以含有引數。此時如果有許多訓練樣本的話,同樣可以給出訓練樣本的平均相關的誤差函式,一般該函式也稱作是損失函式(Loss function)。我們的目標是求出模型表達中的引數,這是通過最小化損失函式來求得的。一般最小化損失函式是通過梯度下降法(即先隨機給出引數的一組值,然後更新引數,使每次更新後的結構都能夠讓損失函式變小,最終達到最小即可)。在梯度下降法中,目標函式其實可以看做是引數的函式,因為給出了樣本輸入和輸出值後,目標函式就只剩下引數部分了,這時可以把引數看做是自變數,則目標函式變成引數的函數了。梯度下降每次都是更新每個引數,且每個引數更新的形式是一樣的,即用前一次該引數的值減掉學習率和目標函式對該引數的偏導數(如果只有1個引數的話,就是導數),為什麼要這樣做呢?通過取不同點處的引數可以看出,這樣做恰好可以使原來的目標函式值變低,因此符合我們的要求(即求函式的最小值)。即使當學習速率固定(但不能太大),梯度下降法也是可以收斂到一個區域性最小點的,因為梯度值會越來越小,它和固定的學習率相乘後的積也會越來越小。線上性迴歸問題中我們就可以用梯度下降法來求迴歸方程中的引數。有時候該方法也稱為批量梯度下降法,這裡的批量指的是每一時候引數的更新使用到了所有的訓練樣本。

      Vectorized implementation指的是向量實現,由於實際問題中很多變數都是向量的,所有如果要把每個分量都寫出來的話會很不方便,應該儘量寫成向量的形式。比如上面的梯度下降法的引數更新公式其實也是可以用向量形式實現的。向量形式的公式簡單,且易用matlab程式設計。由於梯度下降法是按照梯度方向來收斂到極值的,如果輸入樣本各個維數的尺寸不同(即範圍不同),則這些引數的構成的等高線不同的方向胖瘦不同,這樣會導致引數的極值收斂速度極慢。因此在進行梯度下降法求引數前,需要先進行feature scaling這一項,一般都是把樣本中的各維變成0均值,即先減掉該維的均值,然後除以該變數的range。

     接下來就是學習率對梯度下降法的影響。如果學習速率過大,這每次迭代就有可能出現超調的現象,會在極值點兩側不斷髮散,最終損失函式的值是越變越大,而不是越來越小。在損失函式值——迭代次數的曲線圖中,可以看到,該曲線是向上遞增的。當然了,當學習速率過大時,還可能出現該曲線不斷震盪的情形。如果學習速率太小,這該曲線下降得很慢,甚至在很多次迭代處曲線值保持不變。那到底該選什麼值呢?這個一般是根據經驗來選取的,比如從…0.0001,0.001,.0.01,0.1,1.0…這些引數中選,看那個引數使得損失值和迭代次數之間的函式曲線下降速度最快。

     同一個問題可以選用不同的特徵和不同的模型,特徵方面,比如單個面積特徵其實是可以寫成長和寬2個特徵的。不同模型方面,比如在使用多項式擬合模型時,可以指定x的指數項最多到多少。當用訓練樣本來進行資料的測試時,一般都會將所有的訓練資料整理成一個矩陣,矩陣的每一行就是一個訓練樣本,這樣的矩陣有時候也會叫做是“design matrix”。當用矩陣的形式來解多項式模型的引數時,引數w=inv(X’*X)*X’*y,這個方程也稱為normal equations. 雖然X’*X是方陣,但是它的逆不一定存在(當一個方陣的逆矩陣不存在時,該方陣也稱為sigular)。比如說當X是單個元素0時,它的倒數不存在,這就是個Sigular矩陣,當然了這個例子太特殊了。另一個比較常見的例子就是引數的個數比訓練樣本的個數還要多時也是非可逆矩陣。這時候要求解的話就需要引入regularization項,或者去掉一些特徵項(典型的就是降維,去掉那些相關性強的特徵)。另外,對線性迴歸中的normal equations方程求解前,不需要對輸入樣本的特徵進行feature scale(這個是有理論依據的)。

  上面講的函式一般都是迴歸方面的,也就是說預測值是連續的,如果我們需要預測的值只有2種,要麼是要麼不是,即預測值要麼是0要麼是1,那麼就是分類問題了。這樣我們需要有一個函式將原本的預測值對映到0到1之間,通常這個函式就是logistic function,或者叫做sigmoid function。因為這種函式值還是個連續的值,所以對logistic函式的解釋就是在給定x的值下輸出y值為1的概率。

  Convex函式其實指的是隻有一個極值點的函式,而non-convex可能有多個極值點。一般情況下我們都希望損失函式的形式是convex的。在分類問題情況下,先考慮訓練樣本中值為1的那些樣本集,這時候我的損失函式要求我們當預測值為1時,損失函式值最小(為0),當預測值為0時,此時損失函式的值最大,為無窮大,所以這種情況下一般採用的是-log(h(x)),剛好滿足要求。同理,當訓練樣本值為0時,一般採用的損失函式是-log(1-h(x)).因此將這兩種整合在一起時就為-y*log(h(x))-(1-y)*log(1-h(x)),結果是和上面的一樣,不過表示式更緊湊了,選這樣形式的loss函式是通過最大釋然估計(MLE)求得的。這種情況下依舊可以使用梯度下降法來求解引數的最優值。在求引數的迭代公式時,同樣需要求損失函式的偏導,很奇怪的時,這時候的偏導函式和多元線性迴歸時的偏導函式結構類似,只是其中的預測函式一個是普通的線性函式,一個是線性函式和sigmoid的複合的函式。

  梯度下降法是用來求函式值最小處的引數值,而牛頓法是用來求函式值為0處的引數值,這兩者的目的初看是感覺有所不同,但是再仔細觀察下牛頓法是求函式值為0時的情況,如果此時的函式是某個函式A的導數,則牛頓法也算是求函式A的最小值(當然也有可能是最大值)了,因此這兩者方法目的還是具有相同性的。牛頓法的引數求解也可以用向量的形式表示,表示式中有hession矩陣和一元導函式向量。

  下面來比較梯度法和牛頓法,首先的不同之處在於梯度法中需要選擇學習速率,而牛頓法不需要選擇任何引數。第二個不同之處在於梯度法需要大量的迭代次數才能找到最小值,而牛頓法只需要少量的次數便可完成。但是梯度法中的每一次迭代的代價要小,其複雜度為O(n),而牛頓法的每一次迭代的代價要大,為O(n^3)。因此當特徵的數量n比較小時適合選擇牛頓法,當特徵數n比較大時,最好選梯度法。這裡的大小以n等於1000為界來計算。

  如果當系統的輸入特徵有多個,而系統的訓練樣本比較少時,這樣就很容易造成over-fitting的問題。這種情況下要麼通過降維方法來減小特徵的個數(也可以通過模型選擇的方法),要麼通過regularization的方法,通常情況下通過regularization方法在特徵數很多的情況下是最有效,但是要求這些特徵都只對最終的結果預測起少部分作用。因為規則項可以作用在引數上,讓最終的引數很小,當所有引數都很小的情況下,這些假設就是簡單假設,從而能夠很好的解決over-fitting的問題。一般對引數進行regularization時,前面都有一個懲罰係數,這個係數稱為regularization parameter,如果這個規則項係數太大的話,有可能導致系統所有的引數最終都很接近0,所有會出現欠擬合的現象。在多元線性迴歸中,規則項一般懲罰的是引數1到n(當然有的也可以將引數0加入懲罰項,但不常見)。隨著訓練樣本的增加,這些規則項的作用在慢慢減小,因此學習到的系統的引數傾向而慢慢增加。規則項還有很多種形式,有的規則項不會包含特徵的個數,如L2-norm regularization(或者叫做2-norm regularization).當然了,還有L1-norm regularization。由於規則項的形式有很多種,所以這種情形也稱為規則項的common variations.

  在有規則項的線性迴歸問題求解中,如果採用梯度下降法,則引數的更新公式類似(其中引數0的公式是一樣的,因為規則項中沒有懲罰引數0),不同之處在於其它引數的更新公式中的更新不是用本身的引數去減掉後面一串,而是用本身引數乘以(1-alpha*lamda/m)再減掉其它的,當然了這個數在很多情況下和1是相等的,也就很前面的無規則項的梯度下降法類似了。它的normal equation也很前面的類似,大致為inv(X’*X+lamda*A)*X’*y,多了一項,其中A是一個對角矩陣,除了第一個元素為0外,其它元素都為1(在通用規則項下的情形)。這種情況下前面的矩陣一般就是可逆的了,即在樣本數量小於特徵數量的情況下是可解的。當為logistic迴歸的情況中(此時的loss函式中含有對數項),如果使用梯度下降法,則引數的更新方程中也和線性迴歸中的類似,也是要乘以(1-alpha*lamda/m),nomal equation中也是多了一個矩陣,這樣同理就解決了不可逆問題。在牛頓法的求解過程中,加了規則項後的一元導向量都隨著改變,hession矩陣也要在最後加入lamda/m*A矩陣,其中A和前面的一樣。

  logistic迴歸與多充線性迴歸實際上有很多相同之處,最大的區別就在於他們的因變數不同,其他的基本都差不多,正是因為如此,這兩種迴歸可以歸於同一個家族,即廣義線性模型(generalized linear model)。這一家族中的模型形式基本上都差不多,不同的就是因變數不同,如果是連續的,就是多重線性迴歸,如果是二項分佈,就是logistic迴歸,如果是poisson分佈,就是poisson迴歸,如果是負二項分佈,就是負二項迴歸,等等。只要注意區分它們的因變數就可以了。logistic迴歸的因變數可以是二分類的,也可以是多分類的,但是二分類的更為常用,也更加容易解釋。所以實際中最為常用的就是二分類的logistic迴歸。

  參考資料:

  前言

  本文是多元線性迴歸的練習,這裡練習的是最簡單的二元線性迴歸,參考斯坦福大學的教學網http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex2/ex2.html。本題給出的是50個數據樣本點,其中x為這50個小朋友到的年齡,年齡為2歲到8歲,年齡可有小數形式呈現。Y為這50個小朋友對應的身高,當然也是小數形式表示的。現在的問題是要根據這50個訓練樣本,估計出3.5歲和7歲時小孩子的身高。通過畫出訓練樣本點的分佈憑直覺可以發現這是一個典型的線性迴歸問題。

  matlab函式介紹:

  legend:

  比如legend('Training data', 'Linear regression'),它表示的是標出影象中各曲線標誌所代表的意義,這裡影象的第一條曲線(其實是離散的點)表示的是訓練樣本資料,第二條曲線(其實是一條直線)表示的是迴歸曲線。

  hold on, hold off:

  hold on指在前一幅圖的情況下開啟畫紙,允許在上面繼續畫曲線。hold off指關閉前一副畫的畫紙。

  linspace:

  比如linspace(-3, 3, 100)指的是給出-3到3之間的100個數,均勻的選取,即線性的選取。

  logspace:

  比如logspace(-2, 2, 15),指的是在10^(-2)到10^(2)之間選取15個數,這些數按照指數大小來選取,即指數部分是均勻選取的,但是由於都取了10為底的指數,所以最終是服從指數分佈選取的。

  實驗結果:

  訓練樣本散點和迴歸曲線預測圖:

  

  損失函式與引數之間的曲面圖:

  

  損失函式的等高線圖:

   

  程式程式碼及註釋:

  採用normal equations方法求解:

複製程式碼
%%方法一
x = load('ex2x.dat');
y = load('ex2y.dat');
plot(x,y,'*')
xlabel('height')
ylabel('age')
x = [ones(size(x),1),x];
w=inv(x'*x)*x'*y
hold on
%plot(x,0.0639*x+0.7502) 
plot(x(:,2),0.0639*x(:,2)+0.7502)%更正後的程式碼
複製程式碼

  採用gradient descend過程求解:

複製程式碼
% Exercise 2 Linear Regression

% Data is roughly based on 2000 CDC growth figures
% for boys
%
% x refers to a boy's age
% y is a boy's height in meters
%

clear all; close all; clc
x = load('ex2x.dat'); y = load('ex2y.dat');

m = length(y); % number of training examples


% Plot the training data
figure; % open a new figure window
plot(x, y, 'o');
ylabel('Height in meters')
xlabel('Age in years')

% Gradient descent
x = [ones(m, 1) x]; % Add a column of ones to x
theta = zeros(size(x(1,:)))'; % initialize fitting parameters
MAX_ITR = 1500;
alpha = 0.07;

for num_iterations = 1:MAX_ITR
    % This is a vectorized version of the 
    % gradient descent update formula
    % It's also fine to use the summation formula from the videos
    
    % Here is the gradient
    grad = (1/m).* x' * ((x * theta) - y);
    
    % Here is the actual update
    theta = theta - alpha .* grad;
    
    % Sequential update: The wrong way to do gradient descent
    % grad1 = (1/m).* x(:,1)' * ((x * theta) - y);
    % theta(1) = theta(1) + alpha*grad1;
    % grad2 = (1/m).* x(:,2)' * ((x * theta) - y);
    % theta(2) = theta(2) + alpha*grad2;
end
% print theta to screen
theta

% Plot the linear fit
hold on; % keep previous plot visible
plot(x(:,2), x*theta, '-')
legend('Training data', 'Linear regression')%標出影象中各曲線標誌所代表的意義
hold off % don't overlay any more plots on this figure,指關掉前面的那幅圖

% Closed form solution for reference
% You will learn about this method in future videos
exact_theta = (x' * x)\x' * y

% Predict values for age 3.5 and 7
predict1 = [1, 3.5] *theta
predict2 = [1, 7] * theta


% Calculate J matrix

% Grid over which we will calculate J
theta0_vals = linspace(-3, 3, 100);
theta1_vals = linspace(-1, 1, 100);

% initialize J_vals to a matrix of 0's
J_vals = zeros(length(theta0_vals), length(theta1_vals));

for i = 1:length(theta0_vals)
      for j = 1:length(theta1_vals)
      t = [theta0_vals(i); theta1_vals(j)];    
      J_vals(i,j) = (0.5/m) .* (x * t - y)' * (x * t - y);
    end
end

% Because of the way meshgrids work in the surf command, we need to 
% transpose J_vals before calling surf, or else the axes will be flipped
J_vals = J_vals';
% Surface plot
figure;
surf(theta0_vals, theta1_vals, J_vals)
xlabel('\theta_0'); ylabel('\theta_1');

% Contour plot
figure;
% Plot J_vals as 15 contours spaced logarithmically between 0.01 and 100
contour(theta0_vals, theta1_vals, J_vals, logspace(-2, 2, 15))%畫出等高線
xlabel('\theta_0'); ylabel('\theta_1');%類似於轉義字元,但是最多隻能是到引數0~9
複製程式碼

  參考資料:

  前言:

  本文要解決的問題是給出了47個訓練樣本,訓練樣本的y值為房子的價格,x屬性有2個,一個是房子的大小,另一個是房子臥室的個數。需要通過這些訓練資料來學習系統的函式,從而預測房子大小為1650,且臥室有3個的房子的價格。

  實驗基礎:

  dot(A,B):表示的是向量A和向量B的內積。

  又線性迴歸的理論可以知道系統的損失函式如下所示:

  

    其向量表達形式如下:

  

  當使用梯度下降法進行引數的求解時,引數的更新公式如下:

  

  當然它也有自己的向量形式(程式中可以體現)。

  實驗結果:

  測試學習率的結果如下:

   

  由此可知,選用學習率為1時,可以到達很快的收斂速度,因此最終的程式中使用的學習率為1.

  最終使用梯度下降法和公式法的預測結果如下:

   

  可以看出兩者的結果是一致的。

  實驗主要程式及程式碼:

複製程式碼
%% 方法一:梯度下降法
x = load('ex3x.dat');
y = load('ex3y.dat');

x = [ones(size(x,1),1) x];
meanx = mean(x);%求均值
sigmax = std(x);%求標準偏差
x(:,2) = (x(:,2)-meanx(2))./sigmax(2);
x(:,3) = (x(:,3)-meanx(3))./sigmax(3);

figure
itera_num = 100; %嘗試的迭代次數
sample_num = size(x,1); %訓練樣本的次數
alpha = [0.01, 0.03, 0.1, 0.3, 1, 1.3];%因為差不多是選取每個3倍的學習率來測試,所以直接枚舉出來
plotstyle = {'b', 'r', 'g', 'k', 'b--', 'r--'};

theta_grad_descent = zeros(size(x(1,:)));
for alpha_i = 1:length(alpha) %嘗試看哪個學習速率最好
    theta = zeros(size(x,2),1); %theta的初始值賦值為0
    Jtheta = zeros(itera_num, 1);
    for i = 1:itera_num %計算出某個學習速率alpha下迭代itera_num次數後的引數       
        Jtheta(i) = (1/(2*sample_num)).*(x*theta-y)'*(x*theta-y);%Jtheta是個行向量
        grad = (1/sample_num).*x'*(x*theta-y);
        theta = theta - alpha(alpha_i).*grad;
    end
    plot(0:49, Jtheta(1:50),char(plotstyle(alpha_i)),'LineWidth', 2)%此處一定要通過char函式來轉換
    hold on
    
    if(1 == alpha(alpha_i)) %通過實驗發現alpha為1時效果最好,則此時的迭代後的theta值為所求的值
        theta_grad_descent = theta
    end
end
legend('0.01','0.03','0.1','0.3','1','1.3');
xlabel('Number of iterations')
ylabel('Cost function')

%下面是預測公式
price_grad_descend = theta_grad_descent'*[1 (1650-meanx(2))/sigmax(2) (3-meanx(3)/sigmax(3))]'
                                     
                                     
%%方法二:normal equations
x = load('ex3x.dat');
y = load('ex3y.dat');
x = [ones(size(x,1),1) x];

theta_norequ = inv((x'*x))*x'*y
price_norequ = theta_norequ'*[1 1650 3]'
複製程式碼

  參考資料:

  前言:

  本節來練習下logistic regression相關內容,參考的資料為網頁:http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex4/ex4.html。這裡給出的訓練樣本的特徵為80個學生的兩門功課的分數,樣本值為對應的同學是否允許被上大學,如果是允許的話則用’1’表示,否則不允許就用’0’表示,這是一個典型的二分類問題。在此問題中,給出的80個樣本中正負樣本各佔40個。而這節採用的是logistic regression來求解,該求解後的結果其實是一個概率值,當然通過與0.5比較就可以變成一個二分類問題了。

  實驗基礎:

  在logistic regression問題中,logistic函式表示式如下:

  

  這樣做的好處是可以把輸出結果壓縮到0~1之間。而在logistic迴歸問題中的損失函式與線性迴歸中的損失函式不同,這裡定義的為:

   

  如果採用牛頓法來求解迴歸方程中的引數,則引數的迭代公式為:

   

  其中一階導函式和hessian矩陣表示式如下:

   

  當然了,在程式設計的時候為了避免使用for迴圈,而應該直接使用這些公式的矢量表達式(具體的見程式內容)。

  一些matlab函式:

  find:

  是找到的一個向量,其結果是find函式括號值為真時的值的下標編號。

  inline:

  構造一個內嵌的函式,很類似於我們在草稿紙上寫的數學推導公式一樣。引數一般用單引號弄起來,裡面就是函式的表示式,如果有多個引數,則後面用單引號隔開一一說明。比如:g = inline('sin(alpha*x)','x','alpha'),則該二元函式是g(x,alpha) = sin(alpha*x)。

  實驗結果:

  訓練樣本的分佈圖以及所學習到的分類介面曲線:

   

  損失函式值和迭代次數之間的曲線:

   

  最終輸出的結果:

   

  可以看出當一個小孩的第一門功課為20分,第二門功課為80分時,這個小孩不允許上大學的概率為0.6680,因此如果作為二分類的話,就說明該小孩不會被允許上大學。

  實驗程式碼(原網頁提供):

複製程式碼
% Exercise 4 -- Logistic Regression

clear all; close all; clc

x = load('ex4x.dat'); 
y = load('ex4y.dat');

[m, n] = size(x);

% Add intercept term to x
x = [ones(m, 1), x]; 

% Plot the training data
% Use different markers for positives and negatives
figure
pos = find(y); neg = find(y == 0);%find是找到的一個向量,其結果是find函式括號值為真時的值的編號
plot(x(pos, 2), x(pos,3), '+')
hold on
plot(x(neg, 2), x(neg, 3), 'o')
hold on
xlabel('Exam 1 score')
ylabel('Exam 2 score')


% Initialize fitting parameters
theta = zeros(n+1, 1);

% Define the sigmoid function
g = inline('1.0 ./ (1.0 + exp(-z))'); 

% Newton's method
MAX_ITR = 7;
J = zeros(MAX_ITR, 1);

for i = 1:MAX_ITR
    % Calculate the hypothesis function
    z = x * theta;
    h = g(z);%轉換成logistic函式
    
    % Calculate gradient and hessian.
    % The formulas below are equivalent to the summation formulas
    % given in the lecture videos.
    grad = (1/m).*x' * (h-y);%梯度的矢量表示法
    H = (1/m).*x' * diag(h) * diag(1-h) * x;%hessian矩陣的矢量表示法
    
    % Calculate J (for testing convergence)
    J(i) =(1/m)*sum(-y.*log(h) - (1-y).*log(1-h));%損失函式的矢量表示法
    
    theta = theta - H\grad;%是這樣子的嗎?
end
% Display theta
theta

% Calculate the probability that a student with
% Score 20 on exam 1 and score 80 on exam 2 
% will not be admitted
prob = 1 - g([1, 20, 80]*theta)

%畫出分介面
% Plot Newton's method result
% Only need 2 points to define a line, so choose two endpoints
plot_x = [min(x(:,2))-2,  max(x(:,2))+2];
% Calculate the decision boundary line
plot_y = (-1./theta(
            
           

相關推薦

網上deep learning學習筆記彙總

  前言:   教程中的一些術語:   Model representation:   其實就是指學習到的函式的表達形式,可以用矩陣表示。   Vectorized implementation:   指定是函式表示式的向量實現。   Feature scaling:   指是將

Neural Networks and Deep Learning學習筆記ch1 - 神經網絡

1.4 true ole 輸出 使用 .org ptr easy isp 近期開始看一些深度學習的資料。想學習一下深度學習的基礎知識。找到了一個比較好的tutorial,Neural Networks and Deep Learning,認真看完了之後覺

python Deep learning 學習筆記(3)

本節介紹基於Keras的使用預訓練模型方法 想要將深度學習應用於小型影象資料集,一種常用且非常高效的方法是使用預訓練網路。預訓練網路(pretrained network)是一個儲存好的網路,之前已在大型資料集(通常是大規模影象分類任務)上訓練好 使用預訓練網路有兩種方法:特徵提取(feature ext

python Deep learning 學習筆記(4)

本節講卷積神經網路的視覺化 三種方法 視覺化卷積神經網路的中間輸出(中間啟用) 有助於理解卷積神經網路連續的層如何對輸入進行變換,也有助於初步瞭解卷積神經網路每個過濾器的含義 視覺化卷積神經網路的過濾器 有助於精確理解卷積神經網路中每個過濾器容易接受的視覺模

python Deep learning 學習筆記(6)

本節介紹迴圈神經網路及其優化 迴圈神經網路(RNN,recurrent neural network)處理序列的方式是,遍歷所有序列元素,並儲存一個狀態(state),其中包含與已檢視內容相關的資訊。在處理兩個不同的獨立序列(比如兩條不同的 IMDB 評論)之間,RNN 狀態會被重置,因此,你仍可以將一個序列

Deep Learning 學習筆記3:《深度學習》線性代數部分

標量:一個標量就是一個單獨的數 向量:一個向量是一列數,這些數是有序排列的,比如:,如果每個元素都屬於實數R,且有n個元素,則記為:。向量可以看做n維空間的點。 矩陣:二維陣列,如果一個矩陣A高度為m,寬度為n,且每個元素都屬於實數,則記為:A∈ 張量:一組陣列中的元素

Deep Learning 學習筆記5:神經網路彙總

本篇文章整理自FJODOR VAN VEEN的論文:The Neural Network Zoo。本文介紹了神經網路大家族,但不是所有的神經網路都能涵蓋,畢竟新的網路結構在不斷被髮展出來。以下是神經網路的圖譜。 介紹神經網路之前,先介紹神經元的分類,這部分內容來自博友的

CS224n: Natural Language Processing with Deep Learning 學習筆記

課程地址:http://web.stanford.edu/class/cs224n/ 時間:2017年 主講:Christopher Manning、Richard Lecture 1: Introduction NLP:Natural language processing 常見

python Deep learning 學習筆記(1)

Python深度學習筆記 -- 偏重實驗 Python 的 Keras 庫來學習手寫數字分類,將手寫數字的灰度影象(28 畫素 ×28 畫素)劃分到 10 個類別 中(0~9) 神經網路的核心元件是層(layer),它是一種資料處理模組,它從輸入資料中提取表示,緊接著的一個例子中,將含有兩個Dense 層,它

python Deep learning 學習筆記(5)

本節講深度學習用於文字和序列 用於處理序列的兩種基本的深度學習演算法分別是迴圈神經網路(recurrent neural network)和一維卷積神經網路(1D convnet) 與其他所有神經網路一樣,深度學習模型不會接收原始文字作為輸入,它只能處理數值張量。文字向量化(vectorize)是指將文字轉換

Neural Networks and Deep Learning 學習筆記(五)

1. 如何理解梯度下降最後變成了 wk→w′k=wk−η∑j∂CXj∂wk 每次都要遞迴相減一個,不如直接把一小撮∇Cxj算出來再直接相減。由於概率論,這一小撮隨機的Cxj可以基本代表所有的,然後再

Neural Networks and Deep Learning學習筆記ch1

最近開始看一些深度學習的資料,想學習一下深度學習的基礎知識。找到了一個比較好的tutorial,Neural Networks and Deep Learning,認真看完了之後覺得收穫還是很多的。從最基本的感知機開始講起,到後來使用logistic函式作為啟用

Neural Networks and Deep Learning 學習筆記(十)

MIT那本書不適合短平快的學習方式,轉戰Udacity裡基於Tensorflow的一個視訊教學 1. softmax的優勢 格式為exi∑jexj 相比較xi∑jxj 假設原資料為[3.0,1.0,0.2] 那麼經過softmax運算,則得到[

python Deep learning 學習筆記(10)

並且 () 想要 res valid else 示例 variable enc 生成式深度學習 機器學習模型能夠對圖像、音樂和故事的統計潛在空間(latent space)進行學習,然後從這個空間中采樣(sample),創造出與模型在訓練數據中所見到的藝術作品具有相似特征的

Deep Learning 學習筆記(二):神經網路Python實現

多層神經網路的Python實現。 程式碼先貼上,程式設計的東西不解釋。 程式碼中出現的SupervisedLearningModel、NNLayer和SoftmaxRegression,請參考上一篇筆記:Deep Learning 學習筆記(一)——softmax

Neural Networks and Deep Learning 學習筆記(三)

1. 怎麼理解C(w,b)≡12n∑x∥y(x)−a∥2 首先,∥v∥是指範數 範函是一個函式,其為向量空間內的所有向量賦予非零的正長度或大小 好吧,這其實是個均方誤差函式,可自行查閱百度百科,但是不明白為什麼是12n。 2. 什麼是梯度下降

Deep Learning學習筆記——概率與資訊理論

在人工智慧領域,概率論主要有兩種途徑。 概率法則告訴我們AI系統如何推理,據此我們設計一些演算法來計算或者估算有概率論匯出的表示式。(比如:神經網路的輸出是概率的形式) 我們可以用概率和統計從理論上

Neural Networks and Deep Learning 學習筆記(一)

1. 為什麼假設w⋅x≡∑jwjxj後,w與x就變成向量了? The first change is to write ∑jwjxj as a dot product, w⋅x≡∑jwjxj, where w and x are vectors who

Coursera 深度學習 吳恩達 deep learning.ai 筆記整理(3-2)——機器學習策略

新的 bsp 誤差 spa 歸納 空間 font 處理 整理 一、誤差分析 定義:有時我們希望算法能夠勝任人類能做的任務,但是當算法還沒達到人類所預期的性能時,人工檢查算法錯誤會讓你知道接下來做什麽,這也就是誤差分析 檢查,發現會把夠狗當恒,是否需要做一個項目專門處理狗

【DeepLearning學習筆記】Coursera課程《Neural Networks and Deep Learning》——Week1 Introduction to deep learning課堂筆記

決定 如同 樣本 理解 你是 水平 包含 rod spa Coursera課程《Neural Networks and Deep Learning》 deeplearning.ai Week1 Introduction to deep learning What is a