吳恩達神經網路-第一週

猫猫不会吃芋头發表於2024-04-12

吳恩達神經網路

學習影片參考b站:吳恩達機器學習
本文是參照影片學習的隨手筆記,便於後續回顧

神經網路(Neural Networks

發展歷程
image

神經元和大腦(Neurons and the brain)

多個樹突接受訊號,透過軸突把訊號傳給下一個神經元
透過軟體模仿大腦工作,但大腦實際怎麼工作的人們並不清楚,只是模仿
image
神經網路存在幾十年了,因為近些年資料量激增所以發展起來了
image

需求預測(Demand Prediction)

T桖銷售模型
只有一個價格輸入,每一層的輸出由a來表示
image
多個輸入,輸入層->隱藏層(可能有很多層)->輸出層
可能一個神經元有多個輸入,判斷哪些輸入是不必要的,降低其影響
image
多個隱藏層示例,你需要決定有多少層隱藏層每一層有多少神經元(後面會講)
image

影像認知示例(Recognizing Images)

影像在計算機中的儲存
image
人像認知
早些層可能在認識某些線條,中間層可能在認識某些器官像是眼睛、鼻子,後面層可能在認識不同臉部
每一層認識的視窗越來越大
image
車輛認知
image

神經網路層的工作原理(Neural network layer

細節與符號表示

上標數字表示層,下標數字表示第幾個神經元
image
前一層的輸出是後一層的輸入
image
最後一個輸出透過條件判斷,輸出對應標籤
image

更復雜的神經網路

image

Question

image
Answer:one
輸入向量x又可以稱為a0(上標0表示第0層)
image

神經網路向前傳播(Forward Propagation)

計算a1,因為第一層有25個神經元,所以有25個輸出
image
計算a2,因為第一層有15個神經元,所以有15個輸出
image
計算a3,因為第一層有1個神經元,所以有1個輸出,最終可以透過a3的值判斷,因此輸出不同的標籤
image

TensorFlow

如何用程式碼實現推理(use TensorFlow)

烤咖啡豆模型
不同溫度、與持續時間控制咖啡豆是否烤的好
image
透過程式碼實現:
Dense表示第幾層,units表示神經元數,activation表示啟用函式,最後用a來接收每一層輸出
image
數字分類模型程式碼實現
image

TensorFlow中的資料表示方式(與numpy相互轉換)

numpy中的記錄
兩個方框表示矩陣(二維陣列),一個方框表示一維陣列
image
方框中的方框表示第幾行,逗號分隔第幾行第幾個元素
image
TensorFlow中是用矩陣表示資料的
image
程式碼中實際得到的向量是用矩陣表示的
nsorFlow和NumPy資料表示不同,但可以用Tensor或numpy方法相互轉換
image
image

搭建一個神經網路

簡單版本
image
現在可以透過Sequential方法將多個層構建成一個神經網路model
然後透過compile編譯,fit擬合來訓練模型(之後會講),之後透過predict預測輸入值所對應的輸出
image
數字分類模型示例
image
可以直接把每層的定義放入Sequential函式中,不用單獨定義
image

單個網路層上的向前傳播

image

向前傳播的一般實現(NumPy)

W的列數是3,所以units為3,然後透過下面的迴圈計算輸出值a
image

Is there a path to AGI?

AI的分類(ANI or AGI)

image
image
大腦的同一區域透過不同的輸入學會做不同的事(如何透過演算法實現?)
image

神經網路為何如此高效

迴圈與向量化對比

透過matmul函式實現矩陣乘法,比迴圈更高效
image

矩陣乘法(線代基礎---有基礎直接過)

點積:一一對應相乘,然後加起來
轉置:矩陣行列互換
矩陣乘法規則:有矩陣A,B,求A×B,A的列數與B的行數要相等,得到A的行數×B的列數的矩陣
image
image
image
image
image

矩陣乘法程式碼實現

使用matmal函式和@效果一樣,一般使用前者
image
向量化
image

Summary

本週學習內容如下:
1.神經網路的發展歷程,神經元和大腦,神經網路模型
2.影像認知示例
3.神經網路的工作原理神經網路的向前傳播
4.如何用程式碼實現推理
5.TensorFlow和NumPy對於資料的不同表示方式
6.搭建一個神經網路向前傳播的實現
7.AI的分類,神經網路為何如此高效,矩陣乘法與程式碼實現

相關文章