学习《机器学习100天》第27天 什么是神经网络? | 深度学习,第1章
github上的項目,跟著一起學習
項目地址??? https://github.com/MLEveryday/100-Days-Of-ML-Code
Youtube頻道3Blue1Brown中有精彩的視頻介紹神經網絡。這個視頻提供了很好的解釋,并使用手寫數字數據集演示基本概念。
B站視頻在這里(https://www.bilibili.com/video/av15532370)。
? ? ? 以下是視頻筆記:
人腦能輕易的識別并不清晰的數字3
如果寫一個程序,來完成這一工作
神經網絡的變種:
??? 卷積神經網絡,擅于圖像識別
??? 長短期記憶網絡,擅于語音識別
神經網絡的原味版(多層感知器MLP)
??? 名稱來源:人的大腦結構
??? 神經元,裝有一個數字(0到1之間)的容器
很多個神經元,分別對應圖像中的每個像素(28*28=784個),神經元中的數字(激活值)代表對應像素的灰度值(0純黑,1純白)
這些784個神經元組成了網絡的第一層,
最后一層代表0-9這十個數字,這些激活值表示系統認為輸入的圖像對應著哪個數字的可能性
中間還有幾層“隱含層”,大黑箱
神經網絡工作時,上一層的激活值,決定下一層的激活值
處理機制,一層的激活值是通過怎樣的運算,算出下一層的激活值
模擬生物鐘神經元組成的網絡
神經網絡如何工作,在第一層輸入784個灰度值,輸出層最亮的神經元就是神經網絡的“選擇”
??? 憑什么我們就覺得這種層狀結構可以做到智能判斷?
人在在識別數字時,是各個部分的組合
理想情況下,希望倒數第二層中的各個神經元,分別對應上一個筆畫部件。
當輸入一個9或8這種帶圈的數字時,某一個神經元的激活值就會接近1.不特指某個圈,而是希望所有這種位于圖像頂部的圓圈圖案都能點亮這個神經元,這樣,從第三層到輸出層,只需要學習哪些部件能組合出哪個數字。
識別圓圈的任務可以拆分為更細微的問題,識別出細微的邊
希望第二層的神經元,對應短邊
不僅是數字識別,圖像識別等很多識別工作都能像這樣,拆分成小塊
上一層的激活值,如何決定下一層的激活值:設計一個機制,把像素拼成短邊,把短邊拼成圖案,
把圖案拼成數字。
設計第二層的這一個神經元,能夠正確識別出圖像中的這塊區域里,是否存在一條邊。
需要知道這個網絡的參數,應該如何調整網絡上的旋鈕開關,才能讓它足以表示出,要么這種圖案,要么別的像素圖案,要么是幾條邊組合成圓圈的圖案之類。
需要給這個歌神經元和第一層所有神經元間的每一條接線,賦上權重值。激活值*權重值,求和。
把關注區域的權重賦值為正,其他所有的權重為0,對所有像素值取加權和,就會只累積我們關注區域的像素值了。
如果想識別出是否存在一條邊,只需給周圍一圈的像素賦予負的權重。
在神經網絡中,需要激活值在0-1之間。
把加權和輸進某個函數,壓縮到0-1之間
sigmoid函數/logistic/邏輯斯蒂曲線,把非常大的負值變成接近0,非常大的正值,變成接近1
有時希望大于10再激活,可以-10(這個附加的數叫做偏置),再送進sigmoid函數
權重告訴你第二層的神經網絡關注什么樣的像素圖案
這一層每個神經元,都會和第一層全部的784個神經元相連接,每個各帶一個偏置
整個神經網絡,很多個權重和偏置。及其如何學習,實際上是計算機如何設置這一大坨的數字參數
符號表達,表示所有連線
把某一層中所有的激活值統一成一列向量
把它和下一層所有的權重放到一個矩陣中,矩陣第n行就是這一層的所有神經元和下一層的神經元連線的權重
權重矩陣和向量乘積的第n項,是這一層所有的激活值和下一層第n個神經元間連線權重的加權和
神經元,數字的容器,函數(輸入是上一層所有神經元的輸出,輸出是0-1之間的值)
其實整個神經網絡就是一個函數,復雜一點的函數
神經網絡是如何通過數據,來獲得合適的權重和偏置的?下集
早期的神經網絡用sigmoid函數映射到0-1之間,模擬生物神經元的激活。
但現在的神經網絡基本不用sigmoid函數了,用ReLU線性整流函數,返回0和a的最大值,其中a是函數的輸入
模擬生物的神經元,大于某一值就激發
在特別深的神經網絡上效果特別好
?
總結
以上是生活随笔為你收集整理的学习《机器学习100天》第27天 什么是神经网络? | 深度学习,第1章的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JFinal整合CKFinder
- 下一篇: 阻塞队列之七:DelayQueue延时队