1. 程式人生 > >Neural Networks and Deep Learning 神經網路和深度學習

Neural Networks and Deep Learning 神經網路和深度學習

在http://neuralnetworksanddeeplearning.com/看到這篇文章。寫的簡單易懂。適合初學者學習,不過是英文的。

自己嘗試著一邊翻譯一邊學習。

第一章 使用神經網路識別手寫數字

人眼是世界上最奇妙的東西之一。有如下一串手寫數字:

大部分人一眼就能看出是504192。實際上“一眼看出來”沒有這麼簡單。在我們大腦的左右半球,都有掌控視覺大腦皮層,被稱為V1區。V1包含了1.4億的神經細胞。且這些細胞組成了幾十億的連線。我們的視覺不僅僅使用了V1區,還包括了V2,V3,V4和V5區,他們用來處理更為複雜的場景。我們的大腦就是一個經過幾百萬年演進的超級電腦,能很好的識別外在的世界。識別手寫數字是非常複雜的事情,但是我們人類能夠識別,這應該是令人讚歎的事情。但是這些都是潛意識的,所以我們覺得我們能識別這些問題很平常,沒有什麼驚歎的。

但是如果你嘗試自己程式設計實現以上功能,那就會發現這是非常複雜的。我們自己輕而易舉能夠做到的事情突然變得非常困難。例如,我們是這麼識別9這個數字的,“上面是個圈,右下方拖著一個長尾巴”。但是如果用演算法來描述,就沒那麼簡單了。如果你想定義一個規則,你很快就會發現無論如何定義規則,都有著大量的例外。這讓人非常絕望。

神經網路用不同的方式來解決這個問題。他的主要思想是利用大量的手寫的數字(稱為訓練樣本),

然後研發一個能從這些樣本進行學習的系統。換句話說,神經網路能利用大量的樣本自己推測出規則。而且,樣本個數越大,神經網路學的越多,就越聰明。所以上面我只用了100個例子,如果有幾千個或者幾百萬個或幾十億個樣本,我們可以建造一個更好的系統。

本章,我們會程式設計來實現一個能識別手寫數字的神經網路。整個程式只有74行長,而且沒有用特殊的神經網路庫函式。但是這個程式的識別正確率能達到96%以上。更進一步,在後面章節中,我們能把識別正確率提到到99%以上。實際上,現在最好的商用神經網路已經在銀行中用來處理支票,在郵局識別地址了。

We're focusing on handwriting recognition because it's an excellent prototype problem for learning about neural networks in general. As a prototype it hits a sweet spot: it's challenging - it's no small feat to recognize handwritten digits - but it's not so difficult as to require an extremely complicated solution, or tremendous computational power. Furthermore, it's a great way to develop more advanced techniques, such as deep learning. And so throughout the book we'll return repeatedly to the problem of handwriting recognition. Later in the book, we'll discuss how these ideas may be applied to other problems in computer vision, and also in speech, natural language processing, and other domains.

如果本章只是要寫一個能識別手寫數字的程式,那麼本章會很短。但是我們會順便介紹很多的關於神經網路的基本概念,包括兩個重要的人工神經元(感知機和sigmoid神經元),標準的神經網路學習演算法-隨機梯度遞減法。並且我會著重介紹神經網路的來龍去脈,使得讀著對神經網路有直觀地感受。所以本章會比較長,但是這是值得的。最後,我會介紹什麼是深度學習,為什麼它很重要。

什麼是神經網路?我們先看一種人工神經元---感知機。感知機是上個世紀五六十年代由Frank Rosenblatt發明的。現在人們普遍使用的是另一種模型sigmoid神經元,我們馬上也會講到。但是為了理解sigmoid神經元,我們還是要花時間講一下感知機的。

感知機是如何工作的呢?一個感知機有多個二進位制的輸入x1,x2..., 產生一個單一的輸出。

這個例子中的感知機有三個輸入x1,x2,x3。Rosenblatt提供了一個簡單的規則來產生輸出。他一如了weights權重,w1,w2,..., 都是實數。這些數字代表了各個輸入對輸出的重要程度。神經元的輸出是0或者1,是由權重的和jwjxj決定。如果和小於某個閾值,那麼輸出為0;如果大於某個閾值,那麼輸出為1。閾值也是一個實數。我們可以用方程來表示如下:

output={01if jwjxj thresholdif jwjxj> threshold(1)感知機是這麼工作的。

這個是基本的數學模型。你可以這麼看感知機:他是一個通過改變權重來做出不同決定的裝置機器。舉個很好理解但是不太恰當的例子。週末了,你聽說成立舉辦一個乳酪節。你很喜歡乳酪,在思考去還是不去。可能有三個方面的考慮:

1 天氣

2 女朋友

3 交通

我們可以用x1,x2,x3來表示這三個方面。例如天氣好,那麼x1=1;天氣不好,x1=0; 女朋友想去x2=1,不想去x2=0;交通方便有地鐵,x3=1,不方面x3=0。

假如你非常喜歡乳酪,不管天氣如何,不管女朋友去不去,你都想去。但是你又非常在意天氣,天氣不好,你就不去了。現在用感知機來幫你做出決定。一個方法是選擇權重。w1=6,w2=2,w3=2。w1=6表示你更在意天氣。最後,選擇5作為去不去的閾值。所以當天氣好的時候,不管交通和女朋友,僅僅計算w1*x1=6已經大於5,所以你肯定去。當天起不好的時候,不管交通好,女朋友想去,總和最大是0*w1 + 1* w2 + 1*w3=4,小於5,所以天氣不好,你肯定不去。

通過改變權重和閾值,我們可以得到不同的決策結果。例如,我們選擇閾值3。當天氣好的時候,你肯定回去;如果天氣不好,但是交通方便,女朋友想去,那麼總和是4,你也得去。也即是說,這個系統已經變成完全不同的系統了。選擇閾值3本身就代表著你很想去乳酪節。

顯然,感知機不是一個完美的人類思考的模型。但是上面的例子揭示了感知機可以通過調節權重做出不同的決定。如果感知機模型再複雜一些,那麼也許能夠做出更合理的決策。


在上圖的網路中,第一列叫做第一層,它做出三個決定。第二層是加權第一層的輸出,因此第二層能做出比第一層更復雜更抽象的決定。第三層可以做出更更復雜的決定。這樣,多層神經網路可以做出非常複雜的決策。

前文提到感知機都只有一個輸出。但是上面的圖看上去一個感知機有多個輸出。實際上還是隻有一個輸出。多輸出的箭頭只是一個表示方式。如果先話一個箭頭,後面再分出不同的線來,整個圖會顯得比較醜。

讓我們簡化一下感知機的描述。jwjxj>threshold看上去挺複雜的,我們可以用兩個方法簡化。第一個,wxjwjxj。用點來

表示乘法求和,其中w和x都是向量。第二個,把threshold閾值移到不等式的另一邊,且令

bthreshold。 方程可以簡化為:


output={01if wx+b0if wx+b>0(2)

相關推薦

Neural Networks and Deep Learning 神經網路深度學習

在http://neuralnetworksanddeeplearning.com/看到這篇文章。寫的簡單易懂。適合初學者學習,不過是英文的。 自己嘗試著一邊翻譯一邊學習。 第一章 使用神經網路識別手寫數字 人眼是世界上最奇妙的東西之一。有如下一串手寫數字: 大部

Neural Networks and Deep Learning_week2_神經網路基礎

前段時間在網易雲課堂零散學習了吳恩達老師的機器學習和深度學習課程,能聽懂課程,但是不能使用裡面的技能,學習效率不高。從2018/9開始系統性學習深度學習課程,今特把做的筆記思維導圖傳上部落格,與學習者多多交流。不足之處,不喜勿噴。 目前的學習心得: 1、每週的

神經⽹絡與深度學習 Neural Networks and Deep Learning

26 Theano-based large-scale visual recognition with multiple GPUs, by Weiguang Ding, Ruoyan Wang, Fei Mao, andGraham Taylor (2014). 27 Going deeper with

Coursera deep learning 吳恩達 神經網路深度學習 第四周 程式設計作業 Building your Deep Neural Network

def two_layer_model(X, Y, layers_dims, learning_rate = 0.0075, num_iterations = 3000, print_cost=False):     """     Implements a two-layer neural network

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

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

課程一(Neural Networks and Deep Learning)總結:Logistic Regression

pdf idt note hub blog bsp http learn gre -------------------------------------------------------------------------

第四節,Neural Networks and Deep Learning 一書小節(上)

rain 集合 最大值 劃分 import {0} mar result bsp 最近花了半個多月把Mchiael Nielsen所寫的Neural Networks and Deep Learning這本書看了一遍,受益匪淺。 該書英文原版地址地址:http://neur

【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

【DeepLearning學習筆記】Coursera課程《Neural Networks and Deep Learning》——Week2 Neural Networks Basics課堂筆記

樣本數目 and 編程 多次 之間 優化 我們 round 符號 Coursera課程《Neural Networks and Deep Learning》 deeplearning.ai Week2 Neural Networks Basics 2.1 Logistic

課程一(Neural Networks and Deep Learning),第一週(Introduction to Deep Learning)—— 0、學習目標

1. Understand the major trends driving the rise of deep learning. 2. Be able to explain how deep learning is applied to supervised learning. 3. Unde

課程一(Neural Networks and Deep Learning),第二週(Basics of Neural Network programming)—— 1、10個測驗題(Neural N

              --------------------------------------------------中文翻譯-------

Neural Networks and Deep Learning

too near poi sel ace data- big Dimension important Neural Networks and Deep Learning This is the first course of the deep learning specia

課程一(Neural Networks and Deep Learning),第一週(Introduction to Deep Learning)—— 2、10個測驗題

1、What does the analogy “AI is the new electricity” refer to?  (B) A. Through the “smart grid”, AI is delivering a new wave of electricity.

sp1.1-1.2 Neural Networks and Deep Learning

    Relu這影象也叫線性流動函式 不再用sigmoid函式當啟用函式     相當於max(0,x)函式 比較0和當前值哪個大   可以把隱藏層看作 前面整合

sp1.3-1.4 Neural Networks and Deep Learning

交叉熵定義了兩個概率分佈之間的距離,因為是概率分佈 所以又引入softmax變為概率的形式 相加還是1 3 shallow neural network   神經網路輸入層不算     上

Neural networks and deep learning 概覽

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

如何免費學習coursera上吳恩達的Neural Networks and Deep Learning課程

首先,在註冊時不要選擇免費試用,而是要選擇旁聽。 進入旁聽之後,中間的部分課程是無法做的,這時候,需要用anaconda的jupyter notebook功能來進行作業。具體方法如下: 安裝後開啟進入到一個資料夾目錄,找到這個目錄在你的資料夾的具體位置。並將作業檔案複

01神經網路深度學習-Deep Neural Network for Image Classification: Application-第四周程式設計作業2

一、兩層神經網路 模型:LINEAR->RELU->LINEAR->SIGMOID #coding=utf-8 import time import numpy as np import h5py import matplotlib.pyplot as

Neural Networks and Deep Learning 整理

   之前看了一些吳恩達的視訊和大話機器學習的一部分東西。選擇記錄的這本書頁數比較少,但是可以作為一個不錯的總結記錄。   權重,w1, w2, . . .,表⽰相應輸⼊對於輸出重要性的實數。神經元的輸出,0 或者 1,則由分配權重後的總和 ∑j wjxj ⼩於

Neural Networks and Deep Learning 整理(三)

公式太麻煩,沒寫公式。 交叉熵函式作為代價函式         用求導推理說明了這樣比二次代價函式(方差的形式)要更好一些,即導數和(y-a)成正比。         一開始期望值和輸出的差別越大,下降的速度