1. 程式人生 > >TensorFlow官方教程《Neural Networks and Deep Learning》譯(第一章)

TensorFlow官方教程《Neural Networks and Deep Learning》譯(第一章)

– 更新中

成果預展示

如果你能堅持閱讀完本章, 你可以獲得如下的成果:
這裡寫圖片描述

上圖中的命令列視窗輸出為:

Epoch 0: 9095 / 10000
Epoch 1: 9213 / 10000
Epoch 2: 9299 / 10000
Epoch 3: 9358 / 10000
...
Epoch 27: 9535 / 10000
Epoch 28: 9515/ 10000
Epoch 29: 9536 / 10000
  • 其中每一個 epoch 表示一個神經網路的訓練小週期。 後面的數字表示從 10000 個測試圖片,該神經網路成功識別了多少個手寫數字的圖片。

  • 令人興奮的是, 上面的這個 pyhon 程式並沒有使用任何特殊的神經網路庫, 且它只有短短 74 行程式碼(除去註釋和空格排版)。 但是這個簡短的程式可以在沒有人工干預的情況下, 自行從訓練資料中學習, 以 96% 的準確度識別手寫數字。 而且, 在後面的章節中, 我們會將這個程式的識別準確度改進到 99%

這意味通過閱讀本文和理解上面的程式, 你能真正理解神經網路及深度學習背後的原理, 相信我, 這絕對是一個通俗易懂的教程!

前言

Neural Networks and Deep Learning 是一本免費的網路書籍,它在 Tensor Flow Playground 的首頁中被推薦為學習神經網路和深度學習的入門級教材。 個人閱讀後發現該教程極其清晰易懂。 故特作翻譯, 以作知識分享和自我激勵。 翻譯中可能會加入一些個人的理解和略去一些個人認為無關緊要的修飾性內容。

該教程主要內容為

  • 神經網路, 一種優美的受生物學啟發而設計出的程式設計模式,使得計算機可以從觀測到的資料中學習
  • 深度學習, 一套利用神經網路進行學習的強大技術集合。

神經網路和深度學習目前為影象識別, 語音識別, 自然語言處理方面的很多問題提供了最佳的解決方案。 這本書會教你很多神經網路和深度學習背後的核心概念。

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

人類的視覺系統是世界上的眾多奇蹟之一。 考慮如下的手寫數字序列。

這裡寫圖片描述

大部分人可以輕而易舉的識別出圖片中的數字序列為 504192 。但是這個任務的複雜度顯然被這個“輕而易舉” 所掩蓋。 在我們每一個腦半球, 都有一個初級視覺皮層, 被稱為 V1, 包含了 1億4千萬神經元, 以及神經元之間數以十億的連線。 但是, 人類的視覺系統不僅涉及到 V1, 還有一系列的視覺皮層 V2, V3,V4 和 V5 , 漸進式地負責更加複雜的影象處理。 我們可以把我們的大腦當做一個超級計算機, 經過了上成百上千萬年的演化, 完成了對視覺世界的理解。

識別視覺影象的難度當你在嘗試寫一個程式來識別上述圖片中的數字時顯現出來, 你會發現之前顯而易見的直覺變得難以描述:“ 數字 9 在上方有一個圈, 在右下方有一個豎直的一筆, 可以彎曲也可以不彎曲 ”, 這在演算法上是很難表達的。 如果你嘗試更加精確地描述這個規則, 你會很快迷失在大量混亂的異常和特例中。 這種方法看上去毫無希望。

這裡寫圖片描述

神經網路以一種完全不同的方式來解決這個問題, 其思想是, 獲取大量的手寫數字的樣例, 被稱作訓練樣例, 然後開發出一個可以從訓練樣例中學習的系統。 換句話說,神經網路使用樣例來自動推理識別手寫數字的規則。 進而, 通過增加訓練的樣例, 神經網路可以從手寫數字中學習更多, 提高識別的準確度。 因此儘管我們在上圖中只展示了 100 個數字, 但我們可以利用更多的資料樣例構建一個更好的的手寫數字識別系統。

在本章節中, 我們會寫一個程式來實現一個能識別手寫數字的神經網路。 這個程式只有 73 行, 沒有使用任何特殊的神經網路庫。 但是這個簡短的程式可以在沒有人工干預的情況下以 96% 的準確度識別手寫數字。 而且, 在後面的章節中, 我們會將這個程式的識別準確度改進到 99%。 事實上, 最好的商用神經網路已經很成熟, 被商業銀行用來處理支票, 被郵局用來識別地址。

我們專注於手寫影象的識別, 是因為這是一個用於學習神經網路非常傑出的原型問題。 作為原型問題, 它有如下幾個特點:

  • 具有挑戰性。 想寫出識別手寫數字的程式並不是小菜一碟
  • 沒有過度困難。 並不需要非常複雜的解決方案, 或者大量的算力。
  • 容易在此基礎上衍生出更加高階的技術, 例如深度學習。

在這正本書中, 我們會反覆地來解決手寫影象識別的問題。 在本教程的後面部分, 我們會討論這些思想如何被應用到計算機視覺, 語音識別, 自然語言處理以及其他領域的問題中。

當然, 如果本章的核心點僅僅是寫一個能夠識別手寫數字的程式, 那應該會很短, 但是我們會沿著這個問題, 去理解神經網路的很多核心概念與思想, 具體包括

  • 兩種人工神經元: 感知器(perceptron)和 S形神經元(sigmoid neuron)
  • 神經網路中標準的學習演算法: 隨機梯度下降(stochastic gradient descent),

自始至終, 我都會專注於解釋為什麼事情是以這種方式做, 並且搭建起你對神經網路的直覺性理解。 這比簡單地展示出基本的機理要花費更多的篇幅, 但是這一切都是值得的, 因為你可以通過這個過程對神經網路獲得深刻的理解。 在獲得了所有的學習成果後, 在本章節的末尾, 我們將能夠理解什麼是深度學習以及為什麼深度學習非常重要。

感知器(Perceptrons)

什麼是神經網路? 作為開始, 我會先來解釋一種稱作 感知器(perceptron) 的人工神經元。 感知器是19世紀50年代-60年代, 由科學家 Frank Rosenblatt 受 Warren McCulloch 和 Walter Pitts 的早期工作啟發而開發出的。 今天, 通常會使用其他型別的人工神經元。 在這本書中, 以及在大部分現代的神經網路工作中, 主要被使用的神經元模型是被稱作 S形神經元(sigmoid neuron)。 我們會很快地學習到 S形神經元。 但是為了理解為什麼S形神經元會以那種方式定義, 我們首先得花一些時間來理解感知器。

所以, 感知器是如何工作的? 一個感知器會獲取多個二進位制的輸入,x1,x2,....,然後產生一個單個的二進位制輸出。
這裡寫圖片描述

在這個李忠, 感知器有三個輸入 x1,x2,x3 。 一般來說, 感知器可以擁有更多或更少的輸入,Rosenblatt 提出了一種計算輸出的簡單規則。 他引入了權重(weights) , w1,w2,...., 等多個實數來表示不同輸入的重要程度。 神經元的輸出 0 或 1 是由輸入的加權求和是否超過某個閾值 而決定的 。 就像權重一樣, 閾值也是一個實數, 是該神經元的一個引數。 可以用代數更精確地描述為:

output=0ifi=1wjxjthreshold1ifi=1wjxj>threshold(1)
以上就是所有感知器工作的原理了!

這是一個非常基礎的數學模型。一種理解感知器的方法是, 你可以將其看做一個能夠評估不同因素, 做出決策的裝置。 讓我們舉個栗子,一個不是非常逼真的例子,但是很容易理解。 假設週末即將到來, 你聽說你所在的城市裡將要有一個乳酪嘉年華。 你喜歡乳酪, 想要決定是不是要去參加這個活動。你可能會根據以下三個因素做出決策:

  1. 天氣是否好?
  2. 你的男/女朋友是否會陪你一起去?
  3. 這個活動乘坐公交是否容易到達(你沒有車)?

我們可以用三個二進位制變數 x1,x2,x3來表示這三個因素。 例如, x1=1 表示天氣好, x1=0 表示天氣不好。 類似的, x2=1 表示你的男/女朋友會陪你一起去, x2=0 表示不會陪你一起去。 x3 同理。

現在假設你極度喜乳酪, 以致於即使你的男/女朋友不能夠陪你而且公共交通不易到達活動地點, 你也想去參加這個活動, 但是你非常厭惡壞天氣,如果天氣不好的話, 你是無論如何都不會去參加這個活動。 你可以使用感知器來為這個決策過程建模。 一種建模的方法是, 設定權重 w1=6,w2=2,w3=2w1設定的越大表示天氣因素對你來說越重要。 最終,假設你將這個感知器的threshhold 設定成 5。通過這些設定, 該感知器實現了一個你所期望的決策模型, 輸出 1 表示你要去參加活動(天氣好), 輸出 0 表示你不去參加活動(天氣不好)。

通過調整權重和閾值, 我們可以獲得不同的決策模型。 例如, 假設我們選擇 3 作為閾值, 那麼當天氣好時或容易乘坐公交到達活動地點且男/女朋友願意陪伴你兩個條件都達成時,決策你應該去參加活動。 調低閾值表示你更願意去參加這個活動。

顯然, 感知器不是一個完整的人類決策模型!但是這個例子展示了一個感知器是如何把不同的因素進行考量進而做出決策。 那麼, 利用下面這個多感知器組成的一個複雜網路為複雜而微妙的決策過程建模似乎是可行的:
這裡寫圖片描述

在這個網路中, 第一列感知器 - 我們稱之為第一層感知器- 會通過衡量輸入 inputs 的內容 做出三個非常簡單的決策。 那麼第二層感知器起什麼作用? 第二層的每一個感知器會進一步衡量第一層感知器輸出的結果再次做出各自的決策。 和第一層相比, 可以做出更為複雜,更為抽象的決策。 繼而, 第三層感知器可以作出更加複雜的決策。 通過這種方式, 一個多層感知器可以參與非常複雜的決策過程。

當我在定義感知器時, 順表說了一句一個感知器只有一個輸出 。 在上面的這個網路中, 感知器似乎有多個輸出。 事實上, 每個感知器輸出依舊只有一個, 多個輸出的箭頭僅僅是單個輸出被用於多個感知器的輸入的簡便表示。

讓我們來簡化一下描述感知器的方式。條件i=1wjxj>threshold 看上去非常煩瑣, 我們可以做兩個記號上的改變來簡化它。 第一個改變是把i=1wjxj 用點乘的方式表示, 即 wxi=1wjxj , wx是權重和輸入的向量表示。 第二個改變是, 把閾值挪到等式的另外一側, 改用偏倚量 (bias)來表示。 bthreshold 使用偏倚量而不是閾值來表示後, 感知器的規則可以被重寫為:

output=0ifi=

相關推薦

Neural Networks and Deep Learning 整理

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

Neural Networks and Deep Learning 整理

反向傳播(backpropagation)         權重矩陣         偏置向量         帶權輸入z      

TensorFlow官方教程Neural Networks and Deep Learning第一

– 更新中 成果預展示 如果你能堅持閱讀完本章, 你可以獲得如下的成果: 上圖中的命令列視窗輸出為: Epoch 0: 9095 / 10000 Epoch 1: 9213 / 10000 Epoch 2: 9299 / 10000 E

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功能來進行作業。具體方法如下: 安裝後開啟進入到一個資料夾目錄,找到這個目錄在你的資料夾的具體位置。並將作業檔案複

Neural Networks and Deep Learning 整理

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

A Beginner's Guide to Neural Networks and Deep Learning

Neural networks are a set of algorithms, modeled loosely after the human brain, that are designed to recognize patterns. They interpret sensory data throug

Neural Networks and Deep Learning 筆記

目錄 1 Introduction to Deep Learning 1.1 結構化資料/非結構化資料 1.2 為什麼深度學習會興起 2 Neural Networks Basics 2.1 二分類問題 2.2 邏輯迴歸 2.3 損失函式

神經⽹絡與深度學習 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