日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

人工智能实践:Tensorflow2.0笔记 北京大学MOOC(1-1)

發布時間:2024/1/8 编程问答 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 人工智能实践: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 億個這樣的神經元首尾相接組成的網絡。

    圖1 神經元示意圖

    圖2 展示了從出生到成年,人腦中神經網絡的變化。

    圖2 人腦神經網絡變化示意圖

    隨著我們的成長,大量的數據通過視覺、聽覺涌入大腦,使我們的神經網絡連接,也就是這些神經元連接線上的權重發生了變化,有些線上的權重增強了,有些線上的權重減弱了。
    如圖3 所示。

    圖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

    在鳶尾花數據集中,各矩陣大小如下:

    變量行數列數
    y13
    x14
    w43
    b3

    3.2.2 全連接網絡的搭建

    搭建如圖所示的全連接網絡

    1.初始化過程:搭建好基本網絡后,需要輸入特征數據,并對線上權重 w 與偏置 b 進行初始化。

    假設搭建網絡時隨機初始化所有參數w和b分別如下:

    圖6 權重與偏置初始化矩陣

    2.前向傳播計算過程:有了輸入數據與線上權重等數據,即可按照 y = x × w + b y=x \times w+b y=x×w+b 的方式進行前向傳播。

    假設某組鳶尾花數據為 [ 5.8 , 4.0 , 1.2 , 0.2 ](實際標簽為0:狗尾草鳶尾花),則前向傳播計算過程如圖所示:

    圖7 前向傳播計算過程示意圖 在本次計算中,1類鳶尾花得分最高,為2.01分,因此該鳶尾花被判斷為雜色鳶尾化(判斷失誤的原因是此時的w與b均為隨機產生的,輸出結果也就是隨機數)

    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_)=nk=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.
    以下通過代碼仿真反向傳播過程中梯度下降法使損失函數減小,參數更新的過程:

    import tensorflow as tf w = tf.Variable(tf.constant(5, dtype=tf.float32)) lr = 0.2 #初始化參數 epoch = 40for epoch in range(epoch): # for epoch 定義頂層循環,表示對數據集循環epoch次,此例數據集數據僅有1個w,初始化時候constant賦值為5,循環40次迭代。with tf.GradientTape() as tape: # with結構到grads框起了梯度的計算過程。loss = tf.square(w + 1)grads = tape.gradient(loss, w) # .gradient函數告知誰對誰求導w.assign_sub(lr * grads) # .assign_sub 對變量做自減 即:w -= lr*grads 即 w = w - lr*gradsprint("After %s epoch,w is %f,loss is %f" % (epoch, w.numpy(), loss))

    改變參數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)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。