人工智能实践:Tensorflow2.0笔记 北京大学MOOC(1-1)
人工智能實踐:Tensorflow2.0筆記 北京大學MOOC(1-1)
- 說明
- 一、神經網絡計算過程
- 1. 人工智能三學派
- 2. 神經網絡設計過程
- 2.1 人腦中的神經網絡形成過程
- 2.2 計算機模仿神經網絡連接關系
- 3.神經網絡設計過程
- 3.1 數據集介紹
- 3.2 網絡搭建與訓練
- 3.2.1 神經元的計算模型
- 3.2.2 全連接網絡的搭建
- 3.2.3 定義損失函數
- 3.2.3.1 損失函數
- 3.2.3.2 梯度下降法
- 傳送門
說明
本文內容整理自中國大學MOOC “北京大學-人工智能實踐:Tensorflow筆記” 課程,轉載請注明出處
授課老師:曹健
中國大學MOOC 人工智能實踐:Tensorflow筆記課程鏈接
本講目標:理解神經網絡計算過程,使用基于TF2原生代碼搭建第一個神經網絡訓練模型
本節內容:介紹神經網絡相關的基本概念,剖析神經網絡實際計算過程
一、神經網絡計算過程
1. 人工智能三學派
人工智能:讓機器具備人的思維和意識。
人工智能三學派:
2. 神經網絡設計過程
2.1 人腦中的神經網絡形成過程
圖1展示了人腦中的一根神經元,其中紫色部分為樹突,其作為神經元的輸入。黃色部分為軸突,其作為神經元的輸出。
人腦就是由大約 860 億個這樣的神經元首尾相接組成的網絡。
圖2 展示了從出生到成年,人腦中神經網絡的變化。
隨著我們的成長,大量的數據通過視覺、聽覺涌入大腦,使我們的神經網絡連接,也就是這些神經元連接線上的權重發生了變化,有些線上的權重增強了,有些線上的權重減弱了。
如圖3 所示。
2.2 計算機模仿神經網絡連接關系
要用計算機模仿剛剛說到的神經網絡連接關系,讓計算機具備感性思維,需要4個步驟:
數據采集->搭建網絡->優化參數->應用網絡
- 數據采集:采集大量“標簽/特征”數據
- 搭建網絡:搭建神經網絡結構
- 優化參數:訓練網絡獲取最佳參數(反向傳播)
- 應用網絡:將網絡保存為模型,輸入新數據,輸出分類或預測結果(前向傳播)
圖4 神經網絡權重變化示意圖
3.神經網絡設計過程
3.1 數據集介紹
本文中采用鳶尾花數據集,此數據集包含鳶尾花 “花萼長、花萼寬、花瓣長、花瓣寬 ”及對應的類別。
其中前 4 個屬性作為輸入特征,類別作為標簽,0 代表狗尾草鳶尾(Iris Setosa),1 代表雜色鳶尾(Iris Versicolour),2 代表弗吉尼亞鳶尾(Iris Virginica)。
人們通過對數據進行分析總結出了規律:通過測量花的花萼長、花萼寬、花瓣長、花瓣寬,可以得出鳶尾花的類別
(如:“花萼長>花萼寬” 且 “花瓣長/花瓣寬>2” ,則 “雜色鳶尾”)。
由上述可知,可通過 if 與 case 語句構成專家系統,進行判別分類。
在本文中,采用搭建神經網絡的辦法對其進行分類。即將鳶尾花花萼長、花萼寬、花瓣長、花瓣寬四個輸入屬性喂入搭建好的神經網絡,網絡優化參數得到模型,輸出分類結果。
3.2 網絡搭建與訓練
采用搭建神經網絡的辦法對其進行分類,需要將鳶尾花花萼長、花萼寬、花瓣長、花瓣寬四個輸入屬性喂入搭建好的神經網絡,網絡優化參數得到模型,輸出分類結果。設想中構建的神經網絡如下圖所示:
3.2.1 神經元的計算模型
1943年,英國心理學家瑪卡洛克和數學家皮茨給出了神經元的計算模型,即MP模型。
為求解簡單,本文將MP模型進行簡化,去掉非線性函數后MP模型如下所示。
由矩陣乘法,該模型可用數學表達式寫為:
y = x × w + b y=x \times w+b y=x×w+b
在鳶尾花數據集中,各矩陣大小如下:
| y | 1 | 3 |
| x | 1 | 4 |
| w | 4 | 3 |
| b | – | 3 |
3.2.2 全連接網絡的搭建
搭建如圖所示的全連接網絡:
1.初始化過程:搭建好基本網絡后,需要輸入特征數據,并對線上權重 w 與偏置 b 進行初始化。
假設搭建網絡時隨機初始化所有參數w和b分別如下:
2.前向傳播計算過程:有了輸入數據與線上權重等數據,即可按照 y = x × w + b y=x \times w+b y=x×w+b 的方式進行前向傳播。
假設某組鳶尾花數據為 [ 5.8 , 4.0 , 1.2 , 0.2 ](實際標簽為0:狗尾草鳶尾花),則前向傳播計算過程如圖所示:
3.2.3 定義損失函數
3.2.3.1 損失函數
損失函數(loss function):定義預測值(y)和標準答案(標簽)(y_)的差距。
損失函數可以定量的判斷當前參數 w 和 b 的優劣,當損失函數最小時,即可得到最優 w 的值和 b 的值。
損失函數的定義有多種方法,均方誤差就是一種常用的損失函數。
均方誤差: M S E ( y , y _ ) = ∑ k = 0 n ( y ? y _ ) 2 n \mathbf{MSE}(y,y\_)=\frac{\sum_{k=0}^n(y-y\_)^2}{n} MSE(y,y_)=n∑k=0n?(y?y_)2?
3.2.3.2 梯度下降法
目的:尋找一組參數 w 和 b ,使得損失函數最小。
方法:梯度下降法 - 損失函數的梯度表示損失函數對各參數求偏導后的向量,損失函數梯度下降的方向,就是是損失函數減小的方向。梯度下降法即沿著損失函數梯度下降的方向,尋找損失函數的最小值,從而得到最優的參數。
梯度下降法更新參數時涉及的公式如下:
w t + 1 = w t ? l r × ? l o s s ? w t b t + 1 = b ? l r × ? l o s s ? b t w t + 1 × x + b t + 1 → y \boxed{ \begin{gathered} w_{t+1}=w_t-lr \times \frac{\partial{loss}}{\partial{w_t}}\\ b_{t+1}=b-lr \times \frac{\partial{loss}}{\partial{b_t}}\\ w_{t+1} \times x+b_{t+1} \rightarrow y \end{gathered} } wt+1?=wt??lr×?wt??loss?bt+1?=b?lr×?bt??loss?wt+1?×x+bt+1?→y??
其中,參數lr(learning rate)為學習率,用于表征梯度下降的速度,是一個超參數。
梯度下降更新的過程為反向傳播。
其中如學習率lr設置過小,參數更新會很慢;
如果學習率lr設置過大,參數更新可能會跳過最小值。
eg(舉例如下):
設損失函數為 l o s s = ( w + 1 ) 2 loss=(w+1)^2 loss=(w+1)2,則其對 w 的偏導數為 ? l o s s ? w t = 2 w + 2 \frac{\partial{loss}}{\partial{w_t}}=2w+2 ?wt??loss?=2w+2。
該函數在平面內的圖像如下所示:
由圖像可知,該函數在w=-1時損失函數達到最小值,故最優解w=-1.
以下通過代碼仿真反向傳播過程中梯度下降法使損失函數減小,參數更新的過程:
改變參數lr的初始值,觀察程序的運行結果:
- 當lr取0.2時,迭代31次后算法收斂,得到最優解 w=-1
- 當lr取0.01時,迭代40次后算法未收斂,沒有得到最優解
- 當lr取0.99時,迭代40次后算法未收斂,沒有得到最優解,但取值在最優解附件反復跳動
傳送門
下一講將介紹TensorFlow2.1 中的基本概念與常用函數。
人工智能實踐:Tensorflow2.0筆記 北京大學MOOC(1-2)
總結
以上是生活随笔為你收集整理的人工智能实践:Tensorflow2.0笔记 北京大学MOOC(1-1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: untiy下连接photon
- 下一篇: 如何写一个优质的网站标题title?