成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

酷極了!5分鐘用Python理解人工智能優化算法

開發 后端 機器學習 算法
梯度下降是神經網絡中流行的優化算法之一。一般來說,我們想要找到最小化誤差函數的權重和偏差。梯度下降算法迭代地更新參數,以使整體網絡的誤差最小化。

 概述

梯度下降是神經網絡中流行的優化算法之一。一般來說,我們想要找到最小化誤差函數的權重和偏差。梯度下降算法迭代地更新參數,以使整體網絡的誤差最小化。

 

酷極了!5分鐘用Python理解人工智能優化算法

 

梯度下降是迭代法的一種,可以用于求解最小二乘問題(線性和非線性都可以)。在求解機器學習算法的模型參數,即無約束優化問題時,梯度下降(Gradient Descent)是最常采用的方法之一,另一種常用的方法是最小二乘法。在求解損失函數的最小值時,可以通過梯度下降法來一步步的迭代求解,得到最小化的損失函數和模型參數值。反過來,如果我們需要求解損失函數的最大值,這時就需要用梯度上升法來迭代了。在機器學習中,基于基本的梯度下降法發展了兩種梯度下降方法,分別為隨機梯度下降法和批量梯度下降法。

 

該算法在損失函數的梯度上迭代地更新權重參數,直至達到最小值。換句話說,我們沿著損失函數的斜坡方向下坡,直至到達山谷。基本思想大致如圖3.8所示。如果偏導數為負,則權重增加(圖的左側部分),如果偏導數為正,則權重減小(圖中右半部分) 42 。學習速率參數決定了達到最小值所需步數的大小。

 

酷極了!5分鐘用Python理解人工智能優化算法

 

圖3.8 隨機梯度最小化的基本思想

 

酷極了!5分鐘用Python理解人工智能優化算法

 

誤差曲面

尋找全局最佳方案的同時避免局部極小值是一件很有挑戰的事情。這是因為誤差曲面有很多的峰和谷,如圖3.9所示。誤差曲面在一些方向上可能是高度彎曲的,但在其他方向是平坦的。這使得優化過程非常復雜。為了避免網絡陷入局部極小值的境地,通常要指定一個沖量(momentum)參數。

 

酷極了!5分鐘用Python理解人工智能優化算法

 

圖3.9 典型優化問題的復雜誤差曲面

我很早就發現,使用梯度下降的反向傳播通常收斂得非常緩慢,或者根本不收斂。在編寫第一個神經網絡時,我使用了反向傳播算法,該網絡包含一個很小的數據集。網絡用了3天多的時間才收斂到一個解決方案。幸虧我采取一些措施加快了處理過程。

說明 雖然反向傳播相關的學習速率相對較慢,但作為前饋算法,其在預測或者分類階段是相當快速的。

 

酷極了!5分鐘用Python理解人工智能優化算法

 

隨機梯度下降

傳統的梯度下降算法使用整個數據集來計算每次迭代的梯度。對于大型數據集,這會導致冗余計算,因為在每個參數更新之前,非常相似的樣本的梯度會被重新計算。隨機梯度下降(SGD)是真實梯度的近似值。在每次迭代中,它隨機選擇一個樣本來更新參數,并在該樣本的相關梯度上移動。因此,它遵循一條曲折的通往極小值的梯度路徑。在某種程度上,由于其缺乏冗余,它往往能比傳統梯度下降更快地收斂到解決方案。

說明 隨機梯度下降的一個非常好的理論特性是,如果損失函數是凸的 43 ,那么保證能找到全局最小值。

 

代碼實踐

理論已經足夠多了,接下來敲一敲實在的代碼吧。

一維問題

假設我們需要求解的目標函數是:

()=2+1f(x)=x2+1

 

酷極了!5分鐘用Python理解人工智能優化算法

 

顯然一眼就知道它的最小值是 =0x=0 處,但是這里我們需要用梯度下降法的 Python 代碼來實現。

 

  1. #!/usr/bin/env python 
  2. # -*- coding: utf-8 -*- 
  3. ""
  4. 一維問題的梯度下降法示例 
  5. ""
  6.  
  7.  
  8. def func_1d(x): 
  9.  ""
  10.  目標函數 
  11.  :param x: 自變量,標量 
  12.  :return: 因變量,標量 
  13.  ""
  14.  return x ** 2 + 1 
  15.  
  16.  
  17. def grad_1d(x): 
  18.  ""
  19.  目標函數的梯度 
  20.  :param x: 自變量,標量 
  21.  :return: 因變量,標量 
  22.  ""
  23.  return x * 2 
  24.  
  25.  
  26. def gradient_descent_1d(grad, cur_x=0.1, learning_rate=0.01, precision=0.0001, max_iters=10000): 
  27.  ""
  28.  一維問題的梯度下降法 
  29.  :param grad: 目標函數的梯度 
  30.  :param cur_x: 當前 x 值,通過參數可以提供初始值 
  31.  :param learning_rate: 學習率,也相當于設置的步長 
  32.  :param precision: 設置收斂精度 
  33.  :param max_iters: 最大迭代次數 
  34.  :return: 局部最小值 x* 
  35.  ""
  36.  for i in range(max_iters): 
  37.  grad_cur = grad(cur_x) 
  38.  if abs(grad_cur) < precision
  39.  break # 當梯度趨近為 0 時,視為收斂 
  40.  cur_x = cur_x - grad_cur * learning_rate 
  41.  print("第", i, "次迭代:x 值為 ", cur_x) 
  42.  
  43.  print("局部最小值 x =", cur_x) 
  44.  return cur_x 
  45.  
  46.  
  47. if __name__ == '__main__'
  48.  gradient_descent_1d(grad_1d, cur_x=10, learning_rate=0.2, precision=0.000001, max_iters=10000) 

就是這么酷吧!用Python理解剃度下降!

責任編輯:華軒 來源: 今日頭條
相關推薦

2021-03-23 15:35:36

Adam優化語言

2020-12-01 16:21:06

人工智能深度學習機器學習

2020-12-01 10:24:48

人工智能機器學習技術

2019-07-03 09:00:00

人工智能機器系統

2021-01-28 15:36:14

人工智能機器學習算法

2021-01-29 11:25:57

Python爬山算法函數優化

2025-06-26 01:00:00

人工智能傳統安全OWASP

2018-10-19 12:27:23

人工智能機器學習技術

2025-06-20 01:00:00

人工智能AI

2011-08-08 09:22:10

Python

2019-02-12 09:45:27

2020-12-18 11:46:25

人工智能人工智能技術

2019-03-29 17:30:32

人工智能機器學習深度學習

2018-08-20 19:49:00

人工智能機器學習深度學習

2017-03-12 14:30:35

人工智能人工智障機器學習

2020-07-25 19:40:33

Java開發代碼

2018-04-28 10:30:36

人工智能機器學習計算機視覺

2025-04-28 09:53:40

2021-06-02 05:22:57

人工智能AI深度學習

2012-06-28 10:26:51

Silverlight
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜网 | 国产在线精品一区二区三区 | 亚洲精品日韩一区二区电影 | 国产不卡一区 | 自拍偷拍第一页 | 日韩精品在线看 | 粉色午夜视频 | 中文在线a在线 | 亚洲精品成人网 | 毛片a级| 国产做a爱片久久毛片 | 国产免费一区二区三区 | 日韩一区二区在线视频 | 99热这里都是精品 | 国产目拍亚洲精品99久久精品 | 久久国产精品一区二区三区 | 国产日韩欧美一区二区 | 91久久精品日日躁夜夜躁国产 | 三级黄色大片网站 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 九九99靖品 | 日韩一二三区 | 亚洲福利在线视频 | 亚洲 日本 欧美 中文幕 | 99伊人 | 国产目拍亚洲精品99久久精品 | 碰碰视频 | 中文字幕日韩在线观看 | 欧美久久久久久久 | 久久久久九九九女人毛片 | 三级成人在线 | 午夜影院网站 | 欧美成人激情视频 | 久久久亚洲精品视频 | 久久久精品网 | av男人的天堂在线 | 久久精品国产久精国产 | 天天视频一区二区三区 | 久久国产欧美日韩精品 | 一区二区三区 在线 | 香蕉国产在线视频 |