1. 程式人生 > >100天搞定機器學習|Day35 深度學習之神經網路的結構

100天搞定機器學習|Day35 深度學習之神經網路的結構

100天搞定機器學習|Day1資料預處理

100天搞定機器學習|Day2簡單線性迴歸分析

100天搞定機器學習|Day3多元線性迴歸

100天搞定機器學習|Day4-6 邏輯迴歸

100天搞定機器學習|Day7 K-NN

100天搞定機器學習|Day8 邏輯迴歸的數學原理

100天搞定機器學習|Day9-12 支援向量機

100天搞定機器學習|Day11 實現KNN

100天搞定機器學習|Day13-14 SVM的實現

100天搞定機器學習|Day15 樸素貝葉斯

100天搞定機器學習|Day16 通過核心技巧實現SVM

100天搞定機器學習|Day17-18  神奇的邏輯迴歸

100天搞定機器學習|Day19-20 加州理工學院公開課:機器學習與資料探勘

100天搞定機器學習|Day21 Beautiful Soup

100天搞定機器學習|Day22 機器為什麼能學習?

100天搞定機器學習|Day23-25 決策樹及Python實現

100天搞定機器學習|Day26-29 線性代數的本質

100天搞定機器學習|Day 30-32 微積分的本質

100天搞定機器學習|Day33-34 隨機森林

本文為3Blue1Brown之《What is a Neural Network?》學習筆記

觀看地址:bilibili.com/video/av15532370

這集Grant大佬假設大家都沒有神經網路的基礎,為新手講解神經網路基本概念,讓大家再聽說神經網路學習的時候,可以明白究竟是什麼意思。大佬選擇經典的多層感知器(MLP)結構解決手寫數字識別問題,理由是理解了經典原版,才能更好地理解功能強大的變種,比如CNN和LSTM。

首先看看神經元和他們是怎麼連線的

神經元可以理解為一個裝著0到1之間數字的容器。以28*28輸入影象每一個畫素為例,每一個原點都是一個神經元,其中數字代表對於畫素的灰度值,0表示純黑,1表示純白,這個數字在神經網路裡稱作“啟用值”。

這784個神經元就組成了網路的第一層,最後一層的十個神經元代表0-9這十個數,同樣的,他們的啟用值也在0-1之間,代表了輸入影象對應哪個數字的可能性。網路中間層被稱為隱含層,可以看做黑箱,數字識別的具體工作就在這裡完成,這裡加了兩層隱含層,每層有16個神經元——隨便設定的,只是為了顯得好看,後期還可以再調整。

神經網路處理資訊的核心機制正是如此,一層的啟用值通過一定的運算,得出下一層的啟用值。上面也提到784個神經元代表的是數字圖案,那麼下一層啟用值也會產生某些特殊的圖案,最終在輸出層最亮的神經元表示神經網路的選擇。

我們再看看如何訓練,為什麼這種層狀結構就能識別數字呢?

我們可以把數字進行拆解,理想狀況下希望倒數第二層的各個神經元可以分別對應上一個筆畫。

再來看隱含層第一層,當輸入為9或8的上面帶圈的數字時,某個神經元的啟用值就會接近1,希望所有這種位於影象頂部的圓圈圖案都能點亮這個神經元,這樣,從第三次到輸出層,我們只需要學習哪些部件能組合出哪個數字即可。

但是如何識別圓圈呢?同理可以把它拆分成更細微的問題。

於是我們希望網路第二層的各個神經元對應這些短邊,第二層就能把所有關聯短邊的八到十個神經元都點亮,接著就能點亮對於頂部圓圈和長豎條的神經元。

然後我們看看連線的作用

如何讓第二層(隱含層的第一層)中的這一個神經元能夠能夠識別出影象的這一塊區域是否存在一條邊?

我們設計讓第二層的某一個神經元能正確識別影象中的這塊區域裡是否存在一條邊。

我們拿出第一層(輸入層/第0層)的啟用值,並賦上權重(要關注區域的權重為正值,否則為0),這樣對所有畫素值求加權和,就只會累加關注區域的畫素值了。

綠色為正值,紅色為負值,顏色越暗表示權重越接近0

所以想要識別是否存在一條邊,只需要給周圍一圈的畫素都賦予負權重

計算的加權值可以使任意大小的

但是我們需要的是將其壓縮到0-1之間

這裡就需要Sigmoid函數了,這就是啟用函式。

啟用值實際上就是一個對加權之和到底有多正的打分,但是有時加權之和大於0時,也不想點亮神經元,比如想要加權和大於10時才讓他激發,這裡就還需要加上一個偏置值,保證不隨便激發。

權重告訴我們第二個神經元關注什麼樣的畫素圖案

bias告訴我們加權和要多大才能讓神經元的激發有意義

這裡有13000多個引數需要調整,所以這裡所謂的學習就是找到正確的權重和偏置。剛開始講到我們把神經元看作是數字容器,但是這些數字取決於輸入的影象,所以把神經元看過一個函式才更準確,它的輸入是上一層所有神經元的輸出,它的輸出是一個0-1之間的值。其實整個神經網路也是一個函式,輸入784個值,輸出10個值。不過它是一個包含了13000個權重、偏置引數的極其複雜的函式。

需要注意的是,機器學習尤其是神經網路運算與線性代數是密不可分的,之前有過介紹,請移步:

100天搞定機器學習|Day26-29 線性代數的本質

神經網路中需要大量的矩陣乘法和sigmoid對映運算

這種運算方式,非常適合程式設計,比如可以用Python的numpy很簡單的實現。

最後需要一提的是,現在神經網路基本不再使用sigmoid了,比較流行的是ReLU(線性整流函式)。

相關推薦

100機器學習|Day35 深度學習神經網路的結構

100天搞定機器學習|Day1資料預處理 100天搞定機器學習|Day2簡單線性迴歸分析 100天搞定機器學習|Day3多元線性迴歸 100天搞定機器學習|Day4-6 邏輯迴歸 100天搞定機器學習|Day7 K-NN 100天搞定機器學習|Day8 邏輯迴歸的數學原理 100天搞定機器學習|Day9-12

100機器學習|Day3多元線性迴歸

前情回顧 第二天100天搞定機器學習|Day2簡單線性迴歸分析,我們學習了簡單線性迴歸分析,這個模型非常簡單,很容易理解。實現方

100機器學習|Day4-6 邏輯迴歸

邏輯迴歸avik-jain介紹的不是特別詳細,下面再嘮叨一遍這個演算法。 1.模型 在分類問題中,比如判斷郵件是否為垃圾郵件,判斷

100機器學習|Day15 樸素貝葉斯

Day15,開始學習樸素貝葉斯,先了解一下貝爺,以示敬意。 托馬斯·貝葉斯 (Thomas Bayes),英國神學家、數學家、數理統計學家和哲學家,1702年出生於英國倫敦,做過神甫;1742年成為英國皇家學會會員;1763年4月7日逝世。貝葉斯曾是對概率論與統計的早期發展有重大影響的兩位(貝葉斯和布萊斯·帕

100機器學習|Day17-18 神奇的邏輯迴歸

前情回顧 機器學習100天|Day1資料預處理 100天搞定機器學習|Day2簡單線性迴歸分析 100天搞定機器學習|Day3多元線性迴歸 100天搞定機器學習|Day4-6 邏輯迴歸 100天搞定機器學習|Day7 K-NN 100天搞定機器學習|Day8 邏輯迴歸的數學原理 100天搞定機器學習|Day9

100機器學習|Day23-25 決策樹及Python實現

演算法部分不再細講,之前發過很多: 【算法系列】決策樹 決策樹(Decision Tree)ID3演算法 決策樹(Decision Tree)C4.5演算法 決策樹(Decision Tree)CART演算法 ID3、C4.5、CART三種決策樹的區別 實驗: 匯入需要用到的python庫 import

100機器學習|Day 30-32 微積分的本質

3blue1brown系列課程,精美的動畫,配上生動的講解,非常適合幫助建立數學的形象思維,非常值得反覆觀看: http://www.3blue1brown.com/ 嗶哩嗶哩: https://space.bilibili.com/88461692 作者還把製作視訊的用到的程式碼放到了 github

100機器學習|Day33-34 隨機森林

前情回顧 機器學習100天|Day1資料預處理 100天搞定機器學習|Day2簡單線性迴歸分析 100天搞定機器學習|Day3多元線性迴歸 100天搞定機器學習|Day4-6 邏輯迴歸 100天搞定機器學習|Day7 K-NN 100天搞定機器學習|Day8 邏輯迴歸的數學原理 100天搞定機器學習|Day9

100機器學習|Day36用有趣的方式解釋梯度下降演算法

本文為3Blue1Brown神經網路課程講解第二部分《Gradient descent, how neural networks learn 》的學習筆記,觀看地址:www.bilibili.com/video/av16144388前文我們已經搭建了一個包含兩個隱藏層的神經網路,我們需要這樣一種演算法:網路得

100機器學習|day37 無公式理解反向傳播演算法精髓

 100天搞定機器學習(Day1-34) 100天搞定機器學習|Day35 深度學習之神經網路的結構 100天搞定機器學習|Day36 深度學習之梯度下降演算法 本篇為100天搞定機器學習之第37天,亦為3Blue1Brown《深度學習之反向傳播演算法》學習筆記。 上集提到我們

100機器學習|day38 反向傳播演算法推導

往期回顧 100天搞定機器學習|(Day1-36) 100天搞定機器學習|Day37無公式理解反向傳播演算法之精髓 上集我們學習了反向傳播演算法的原理,今天我們深入講解其中的微積分理論,展示在機器學習中,怎麼理解鏈式法則。 我們從一個最簡單的網路講起,每層只有一個神經元,圖上這個網路就是由三個權重

100機器學習|day39 Tensorflow Keras手寫數字識別

提示:建議先看day36-38的內容 TensorFlow™ 是一個採用資料流圖(data flow graphs),用於數值計算的開源軟體庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯絡的多維資料陣列,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,

100機器學習|day40-42 Tensorflow Keras識別貓狗

100天搞定機器學習|1-38天 100天搞定機器學習|day39 Tensorflow Keras手寫數字識別 前文我們用keras的Sequential 模型實現mnist手寫數字識別,準確率0.9713。今天我們完成day40-42的課程,實現貓、狗的識別。 本文資料集下載地址 https://down

100機器學習|day43 幾張GIF理解K-均值聚類原理

前文推薦 如何正確使用「K均值聚類」? KMeans演算法是典型的基於距離的聚類演算法,採用距離作為相似性的評價指標,即認為兩個物件的距離越近,其相似度就越大。該演算法認為簇是由距離靠近的物件組成的,因此把得到緊湊且獨立的簇作為最終目標。 K個初始聚類中心點的選取對聚類結果具有較大的影響,因為在該演算法第一步

100機器學習|Day56 隨機森林工作原理及調參實戰(信用卡欺詐預測)

本文是對100天搞定機器學習|Day33-34 隨機森林的補充 前文對隨機森林的概念、工作原理、使用方法做了簡單介紹,並提供了分類和迴歸的例項。 本期我們重點講一下: 1、整合學習、Bagging和隨機森林概念及相互關係 2、隨機森林引數解釋及設定建議 3、隨機森林模型調參實戰 4、隨機森林模型優缺點總結 整

編程學習第一步,讓你20Python編程

目標 如何解決 從零學習 人工 參考 每次 遇到的問題 批量上傳 智能 大家好,歡迎大家閱讀篇文章,Python是當前火爆的編程語言之一;從後臺開發到自動化,從數據分析到人工智能,都有Python的身影。我們掌握Python,就有了進入這些行業的可能。下面簡單介紹下老貓和這

一篇文章懂人工智慧、機器學習深度學習之間的區別

概述2015年11月9日,Google釋出人工智慧系統TensorFlow並宣佈開源。這兩年在不管在國內還是在國外,人工智慧、機器學習彷彿一夜之前傳遍大街小巷。機器學習作為人工智慧的一種型別,可以讓軟體根據大量的資料來對未來的情況進行闡述或預判。如今,領先的科技巨頭無不在機器

從0到1 | 0基礎/轉行如何用3個月機器學習

寫這篇文章的初衷是現在好多朋友都想了解如何入門/轉行機器學習,搭上人工智慧這列二十一世紀的快車。再加上這個問題每隔一陣子就會有人提及,因此想寫篇文章來個一勞永逸。 文章的宗旨: 指出學習中的一些誤區 提供客觀可行的學習表 給出進階學習的建議 目標讀者是: 零基礎,對人工智慧感興趣的讀者 有基

機器學習PPT筆記-1

Introduction of Deep Learning some introductions Machine Learning is close to Looking for a Function The model is a set of fun

(資料科學學習手札100matplotlib中的字型設定

> 本文示例檔案已上傳至我的`Github`倉庫[https://github.com/CNFeffery/DataScienceStudyNotes](https://github.com/CNFeffery/DataScienceStudyNotes) # 1 簡介   `matplotlib`作為資