深度學習奠基作 AlexNet 論文閱讀筆記(2025.2.25)

文章目錄

    • 訓練數據集
    • 數據預處理
    • 神經網絡模型
    • 模型訓練
    • 正則化技術
    • 模型性能
    • 其他補充

訓練數據集

  • 模型主要使用2010年和2012年的 ImageNet 大規模視覺識別挑戰賽(ILSVRC)提供的 ImageNet 的子集進行訓練,這些子集包含120萬張圖像。
  • 最終,模型還使用2009年秋天版本的完整 ImageNet 數據集進行了訓練,該數據集包含8900萬張圖像,分屬于10184個類別。數據集中一半的圖像用于訓練,另一半用于測試。

數據預處理

  • 圖像裁剪:因為模型需要固定大小的圖像輸入,因此首先將數據集中的圖像的短邊縮放到 256 個像素,再從得到的圖像中裁剪出中間的 256 × 256 的圖像塊。
  • 像素處理:從每張圖像的像素中減去了所有圖像中該像素的平均值。這樣的處理即對像素數據進行了歸一化,可以加速模型的訓練并使得訓練更加穩定。
  • 數據增強
    • CPU運行的數據增強AlexNet 使用了兩種計算量都很低的數據增強方式,所以增強后的圖像無需存儲在計算機的硬盤中備用。數據增強過程使用 Python 進行編程,在CPU上運行。由于數據增強無需使用正在訓練模型的GPU,因此作者們認為數據增強是“計算免費”的,即不會影響模型的訓練過程。
    • 兩種數據增強方式
      • 圖像平移和水平翻轉:從 256 × 256 的圖像中提取正中央和四個角的 224 × 224 的圖片塊及其水平翻轉得到的圖片塊(共十張),并最終平均網絡的 Softmax 對十張新圖片的分類結果得到最終的分類結果。作者們發現如果不這樣做,模型就會產生嚴重的過擬合。
      • 改變圖像中RGB通道的強度:對整個 ImageNet 訓練集中的RGB像素值執行主成分分析(PCA),作者們發現這種方式可以降低模型的分類錯誤率。

備注:由于GPU技術的發展比CPU快多了,因此如果從現在的角度看,在CPU上做數據增強反而會成為模型效率的瓶頸。

神經網絡模型

  • 模型主要特點:非常大且非常深,是截至當時最大的卷積神經網絡。
  • 模型參數量6000萬 參數和 65萬 神經元。
  • 模型基本結構
    • 神經網絡層構成:包含五個卷積層(一些卷積層帶有最大池化層)、三個全連接層和一個最終的 1000-way 的 Softmax 層。
    • 卷積核情況:第一個卷積層的卷積核大小是 11 × 11 × 3,個數為96個,步長為5;第二個卷積層的卷積核大小為 5 × 5 × 48,個數為256個;第三個卷積層的卷積核大小為 3 × 3 × 256,個數為 384 個;第四卷積層有 384 個大小為 3 × 3 × 192 的核;第五個卷積層有 256個 3 × 3 × 192 的核。
    • 全連接層情況:每個全連接層都有4096個神經元。
  • 層疊池化方法:作者們發現層疊池化可以略微降低模型分類的錯誤率,但是也會使得模型會變得略微難以收斂。

備注

  • AlexNet 中包含的兩個隱藏的全連接層是其性能的一大瓶頸,也是其設計的缺陷。現在的CNN不會使用那么大的全連接層,因此Dropout的使用減少了,反而是循環神經網絡系列的模型使用 Dropout 更多。
  • 層疊池化方法在后續的卷積神經網絡中已經基本上沒有繼續使用了。

模型訓練

  • 激活函數:使用 ReLU 作為激活函數,文中稱為一種非飽和神經元,用于加速訓練過程。作者們認為相較于當時主流的激活函數 tanhReLU 激活函數可以大大加快模型的訓練過程。在模型中,每一個卷積層和全連接層的輸出都使用了 ReLU 激活函數進行處理。
  • 訓練設備:使用GPU進行高效的卷積操作。具體而言,使用的是兩個型號為 GTX 580 的GPU,兩個GPU的顯存都是 3GB
  • 分布式訓練
    • 基本模式:受限于GPU的顯存,作者們將模型分布在兩個GPU上進行訓練。作者們將模型的卷積核對半分到兩個GPU上,且兩個GPU只在模型中的某些層進行交互。作者們發現使用雙GPU的網絡訓練時間比使用單GPU的網絡更快一些。
    • 兩個GPU訓練結果的區別:作者們最后發現第一個GPU對顏色敏感,而第二個GPU對顏色不敏感,并且每一次訓練模型都是這樣,他們不清楚是什么原因。
  • 優化器
    • 優化器類型:使用隨機梯度下降優化器(SGD)進行模型訓練。
    • 優化器超參數設置:批次大小設置為 128,動量設置為 0.9,權重衰減設置為 0.0005。作者們發現少量的權重衰減非常重要,因為減少了模型的訓練誤差。所有的層采用相同的學習率,初始化為 0.01,當驗證錯誤率隨著學習率的提高而升高時,將學習率除以 10。現在設置模型的學習率時,往往從小到大,然后慢慢減小。
  • 模型初始化
    • 權重初始化:以標準差為 0.01 的零均值高斯分布來初始化模型每一層的權重。
    • 偏置初始化:用常數 1 來初始化第二、第四和第五卷積層以及全連接隱藏層中的神經元偏置,剩余層的偏置初始化為 0。作者們認為這樣的偏置設置可以為 ReLU 提供積極的輸入來加速早期的學習。
  • 迭代次數和訓練時間:迭代了 90 次,總共花費了五到六天的時間進行模型訓練。

備注

  • 現在看起來,使用 ReLU 作為激活函數并沒有比其他的激活函數對模型訓練有多強的加速效果,只是單純因為它足夠簡單。
  • 在目前看來,將 AlexNet 拆分到兩個GPU上進行訓練,這個非常工程化的細節并不是特別重要。并且,實際上 在代碼編寫得好的情況下,使用一個 GTX 580 GPU也是可以訓練模型的。
  • 當年SGD并不是主流的模型訓練器,因為其調參過程相對而言比較困難。但是現在SGD已經是最主流的模型學習器。
  • 權重衰減實際上就是L2正則項,其不是加在模型上,而是優化算法上。
  • 現在設置模型優化器的學習率時,往往從小到大,然后慢慢再減小,類似于一個余弦曲線。

正則化技術

  • Dropout
    • 功能和原理:用于緩解全連接層的過擬合現象。對每一個隱藏神經元,有 0.5 的概率將其輸出設置為 0,使得它們不參與前向傳播和反向傳播過程。在測試階段,將所有神經元的輸出都乘 0.5。作者們發現如果不使用 Dropout,模型就會存在嚴重的過擬合現象,但是 Dropout 也會使得模型需要的迭代次數翻倍。
    • 文中的觀點:作者們認為,在處理模型的輸入時,增加了 Dropout 之后相當于每一次都是不同的神經網絡,這樣迫使模型學習更加穩健的特征。
  • 局部響應歸一化:一種正則化方法,作者們發現使用了該歸一化方法也可以降低模型分類的錯誤率。局部響應歸一化層在第一和第二卷積層之后。

備注

  • 目前的觀點認為 Dropout 不是模型融合,而是在線性模型上等價于一個L2正則項。它產生一個正則的效果,但是無法構造出一個和它相同的正則方式。
  • 局部響應歸一化也不是很重要,后面基本上沒有人繼續使用。

模型性能

  • 2010年 ImageNet 大規模圖像識別挑戰賽:top-1 和 top-5 的錯誤率分別為 37.5%17.0%,顯著優于之前最先進的模型。
  • 2012年 ImageNet 大規模圖像識別挑戰賽:top-5 的錯誤率為 15.3%,遠高于第二名的 26.2% 的水平。
  • 特征向量使用:如果兩張圖像通過模型后獲得的特征向量之間的歐氏距離很小,則可以認為這兩張圖像是相似的。
  • 未來展望:作者們指出該模型的性能在出現了更快的GPU和更大的數據集時還可以繼續提升。

其他補充

  • 訓練模型的啟示
    • 為了提升機器學習算法的性能,我們可以收集更大的數據集、訓練更強大的模型和使用更好的技術來防止過擬合。
  • 數據集相關
    • 在 AlexNet 提出的時代,大部分有標注的圖像數據集相對而言都比較小,只有數萬張圖片,例如 NORBCaltech-101/256CIFAR-10/100 等。
    • LabelMe 是一個包含有數十萬張全分割的圖像的數據集。
    • ImageNet 包含有1500萬張有標注的高分辨率的圖像,這些圖像分屬于超過2200個類別。
  • 模型相關
    • 卷積神經網絡具有先驗知識來彌補圖像數據集不夠大的問題,因為它們對圖像的本質特征有假設。相較于相似規模的標準前饋神經網絡,卷積神經網絡的參數量和連接數都少得多,因此更加容易訓練,它們的理論最優性能僅僅略低于前饋神經網絡。
    • 作者們發現模型的深度(即神經網絡中的層數)非常重要,移除任意一個卷積層都會導致模型性能的下降,盡管卷積層的參數數量非常少。現在看來,這個觀點不太對,因為雖然神經網絡的深度非常重要,但是移除一個神經網絡層不一定會導致性能下降,通過優化超參數可以達到相同的性能。
    • ReLU 的一個理想特性是,它不需要對輸入進行歸一化來防止飽和。只需要一些訓練樣本向 ReLU 產生了正輸入,那么學習就可以發生。
    • 卷積神經網絡中的池化層用于匯總同一特征圖中相鄰神經元組的輸出。
    • 最簡單和最常用的降低過擬合的方式是使用保留標注的數據增強來人為地擴大數據集。
    • 結合多個不同模型的預測結果是一種降低測試錯誤率的好用的方法,但是往往代價高昂。
    • 無監督預訓練可以幫助神經網絡獲取較為優秀的早期權重,本文中作者也提到,雖然他們出于簡化沒有這么做,但是他們認為這么做是有幫助的。
    • 神經網絡的深度很重要,但是寬度也很重要,不能特別寬特別淺,也不能特別深但是特別窄。
    • 過擬合是深度學習的一個派別,現在研究者們又認為正則不是那么重要,最重要的是模型本身的結構。
  • 硬件相關
    • 2007年 NVIDIA 推出了 CUDA 庫,使得用GPU訓練模型變得普遍。當時的研究人員研究人員主要是使用 Matlab 進行編程。
    • GPU對2D卷積進行了高度優化,能夠很好地促進大型卷積神經網絡的訓練過程。
    • 現代的GPU設計非常適合跨GPU并行,因為它們可以直接讀寫其他GPU的顯存,而不需要以計算機的內存作為中介。
  • 論文閱讀相關
    • 閱讀機器學習和深度學習領域的論文,對于工程上的細節,如果不是需要復現,則可以暫時忽略掉。
    • 論文的實驗部分,如果不是領域專家或者需要復現論文,一般不用太了解,這樣可以節約時間。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70604.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70604.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70604.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Deepseek 實戰全攻略,領航科技應用的深度探索之旅

想玩轉 Deepseek?這攻略別錯過!先帶你了解它的基本原理,教你搭建運行環境。接著給出自然語言處理、智能客服等應用場景的實操方法與代碼。還分享模型微調、優化技巧,結合案例加深理解,讓你全面掌握,探索科技…

藍橋杯備賽-精衛填海-DP

精衛終于快把東海填平了!只剩下了最后的一小片區域了。同時,西山上的木石也已經不多了。精衛能把東海填平嗎? 事實上,東海未填平的區域還需要至少體積為 v 的木石才可以填平,而西山上的木石還剩下 n 塊,每塊…

2025面試Go真題第一場

前幾天參加了一場面試,GoLang 后端工程師,他們直接給了我 10 道題,我留了一個截圖。 在看答案之前,你可以先簡單做一下,下面我會對每個題目做一個說明。 文章目錄 1、golang map 是否并發安全?2、協程泄漏的原因可能是…

JavaScript 簡單類型與復雜類型-堆和棧

深入理解JavaScript中的簡單類型(基本數據類型)與復雜類型(引用數據類型)如何在內存中存儲對于編寫高效、無誤的代碼至關重要。本文將探討這兩種類型的差異,以及它們在內存中的存儲機制——棧(Stack&#x…

騰訊SQL面試題解析:如何找出連續5天漲幅超過5%的股票

騰訊SQL面試題解析:如何找出連續5天漲幅超過5%的股票 作者:某七年數據開發工程師 | 2025年02月23日 關鍵詞:SQL窗口函數、連續問題、股票分析、騰訊面試題 一、問題背景與難點拆解 在股票量化分析場景中,"連續N天滿足條件"是高頻面試題類型。本題要求在單表stoc…

圖像處理、數據挖掘、數據呈現

目錄 圖像處理方法 閾值分割 圖像處理方法 圖像平滑 圖像銳化 圖像增強 閾值分割 邊緣檢測 閾值分割 特征提取 提取邊界 區域提取 主成分壓縮 POI 多源數據 數據挖掘 多源數據提取 關聯度提取 位置集群, 新聞事件, 權限 個人喜好 歷史…

嵌入式項目:STM32刷卡指紋智能門禁系統

本文詳細介紹基于STM32的刷卡指紋智能門禁系統。 獲取資料/指導答疑/技術交流/選題/幫助,請點鏈接: https://gitee.com/zengzhaorong/share_contact/blob/master/stm32.txt 1 系統功能 1.1 功能概述 本系統由STM32硬件端(下位機)…

計算機畢業設計 ——jspssm504springboot 職稱評審管理系統

作者:程序媛9688 開發技術:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等。 🌟文末獲取源碼數據庫🌟 感興趣的可以先收藏起來,還有大家在畢設選題(免費咨詢指導選題)&#xf…

安裝VM和Centos

安裝VM 一、打開虛擬機 二、選擇典型 三、選擇光盤 四、指定虛擬機位置 五、設置磁盤大小并拆分為多個文件 六、完成 安裝Centos 一、上述過程完成后我們直接打開虛擬機 二、語言選擇中文 三,默認安裝位置并點擊完成 四、點擊開始安裝 五、點擊設置密碼 等待安裝…

【AI應用】數字人涉及的一些主要 AI 技術

【AI論文解讀】【AI知識點】【AI小項目】【AI戰略思考】【AI日記】【讀書與思考】【AI應用】 在 數字人搭建 過程中,涉及多個 AI 技術,包括 訓練微調、算法、圖像合成、聲音克隆,每個部分都決定了最終效果的真實度、交互流暢度和個性化能力。…

【嘗試使用python調用Seismic unix】

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、代碼總結 前言 提示:這里可以添加本文要記錄的大概內容: 使用seismic unix嘗試建立界面,首先想到使用pyqt&#xff0c…

【安裝及調試舊版Chrome + 多版本環境測試全攻略】

👨💻 安裝及調試舊版Chrome 多版本環境測試全攻略 🌐 (新手友好版 | 覆蓋安裝/運行/調試全流程) 🕰? 【背景篇】為什么我們需要舊版瀏覽器測試? 🌍 🌐 瀏覽器世界的“…

2. EXCEL中函數和公式《AI賦能Excel》

歡迎來到滔滔講AI。今天我們來學習和討論下函數和公式是什么,以及它們之間的區別。 點擊圖片查看視頻 2、AI賦能EXCEL-函數和公式 一、什么是函數 首先,我們來了解一下函數。函數是Excel中預定義的計算工具,能夠幫助我們快速進行各種計算。 …

Python常見面試題的詳解16

1. 如何強行關閉客戶端和服務器之間的連接? 在網絡編程中,有時需要強行中斷客戶端和服務器之間的連接。對于基于 TCP 協議的連接,由于其面向連接的特性,需要采取特定的步驟來確保連接被正確關閉;而 UDP 是無連接協議&a…

【深度學習】矩陣的核心問題解析

一、基礎問題 1. 如何實現兩個矩陣的乘法? 問題描述:給定兩個矩陣 A A A和 B B B,編寫代碼實現矩陣乘法。 解法: 使用三重循環實現標準矩陣乘法。 或者使用 NumPy 的 dot 方法進行高效計算。 def matrix_multiply(A, B):m, n …

在CentOS 7下部署NFS的詳細教程

在CentOS 7下部署NFS的詳細教程 NFS(Network File System)是一種分布式文件系統協議,允許用戶在網絡中的不同主機之間共享文件和目錄。NFS廣泛應用于Linux和Unix系統中,特別適合在集群環境中共享存儲資源。本文將詳細介紹如何在C…

js中的await與async的使用

以下兩個方法,區別只在有沒有catch,使用的時候卻要注意 // 封裝請求方法,同步loading狀態出去 export const fetchWithLoading async (fn: Function, params: any, loading: Ref) > {loading.value true;try {return await fn(params);…

Ubuntu服務器 /data 盤需要手動掛載的解決方案

服務器 /data 盤需要手動掛載的解決方案 如果重啟服務器后,發現 /data 盤 沒有自動掛載,通常是因為: /etc/fstab 配置文件 沒有正確設置 自動掛載。該磁盤 沒有被正確識別,需要手動掛載。文件系統錯誤 導致掛載失敗。 下面是解…

輸入搜索、分組展示選項、下拉選取,全局跳轉頁,el-select 實現 —— 后端數據處理代碼,拋磚引玉展思路

詳細前端代碼寫于上一篇:輸入搜索、分組展示選項、下拉選取,el-select 實現:即輸入關鍵字檢索,返回分組選項,選取跳轉到相應內容頁 —— VUE項目-全局模糊檢索 【效果圖】:分組展示選項 >【去界面操作體…

【SpringBoot】_統一功能處理:統一數據返回格式

目錄 1. 對所有返回類型方法進行統一數據返回類型處理 2. 部分返回類型方法存在的問題 3. 對兩種有誤的方法進行處理 仍以圖書管理系統為例。 創建Result對后端返回給前端的數據進行封裝,增加業務狀態碼與錯誤信息,將原本的數據作為data部分&#xff…