機器學習與深度學習20-數學優化

目錄

    • 前文回顧
    • 1.梯度下降的基本原理
    • 2.什么是損失函數?
    • 3.隨機梯度下降和小批量梯度下降
    • 4.什么是學習率
    • 5.優化算法中的收斂性
    • 6.常用的數學優化算法

前文回顧

上一篇文章鏈接:地址

1.梯度下降的基本原理

梯度下降(Gradient Descent)是一種常用的優化算法,用于對目標函數進行最小化或最大化。其基本原理是通過迭代更新模型參數,沿著目標函數的負梯度方向逐步調整參數值,直到達到局部最優解。在機器學習中,梯度下降廣泛應用于優化模型參數。具體步驟如下:

  1. 定義損失函數:首先,需要定義一個損失函數(也稱為目標函數),它衡量模型預測結果與真實標簽之間的差異
  2. 初始化參數:將模型的參數初始化為某個初始值。這些參數可以是權重矩陣、偏置項等
  3. 計算梯度:使用訓練數據集中的樣本進行前向傳播,計算預測值,并根據損失函數計算梯度。梯度是目標函數對每個參數的偏導數,表示了損失函數相對于每個參數的變化率
  4. 更新參數:根據梯度信息,按照指定的學習率(learning rate)通過以下公式來更新參數:
    θ = θ ? learning_rate × ? J ( θ ) \theta = \theta - \text{learning\_rate} \times \nabla J(\theta) θ=θ?learning_rate×?J(θ)
    其中 θ \theta θ表示模型的參數, ? J ( θ ) \nabla J(\theta) ?J(θ)表示損失函數對參數的梯度
  5. 重復步驟3和步驟4:迭代地計算梯度并更新參數,直到滿足停止準則(例如達到最大迭代次數、損失函數收斂等)

通過不斷迭代更新參數,梯度下降算法能夠逐漸優化模型的參數值,使得損失函數逐漸減小,從而讓模型更好地擬合訓練數據。例如,在線性回歸中,我們希望找到最佳的權重和偏置來擬合數據。可以定義均方誤差(Mean Squared Error)作為損失函數,并使用梯度下降來最小化這個損失函數。在每次迭代中,計算預測值與真實標簽之間的差異,然后計算相對于權重和偏置的梯度。通過更新權重和偏置的值,使得損失函數逐漸減小,從而得到更好的模型擬合效果。總結來說,梯度下降是通過計算損失函數關于模型參數的梯度,然后迭代地更新參數值,以優化模型的過程。它是一種常用的優化算法,在機器學習中被廣泛應用于訓練模型的參數

2.什么是損失函數?

在機器學習中,損失函數(Loss Function)是用來衡量模型預測結果與真實標簽之間的差異的函數。它是模型訓練過程中的一個關鍵組成部分,通過量化模型預測的準確性或擬合程度來指導參數的優化。損失函數的選擇取決于具體的機器學習任務和模型類型。不同的任務和模型可能需要使用不同的損失函數。常見的損失函數包括均方誤差(Mean Squared Error),交叉熵(Cross-Entropy),對數損失(Log Loss)等,為了理解為什么我們需要最小化損失函數,需要考慮以下幾點:

  • 評估模型性能:損失函數提供了一種對模型預測質量的度量方式。通過計算預測值與真實標簽之間的差異,損失函數可以定量地衡量模型在訓練數據上的擬合程度。更小的損失值表示模型預測結果與真實標簽更接近,反之則表示模型預測的差異較大
  • 優化模型參數:最小化損失函數是為了找到使得模型擬合數據效果最佳的模型參數值。通過將損失函數作為優化目標,我們可以使用梯度下降等優化算法來迭代地調整模型參數,使得損失函數逐漸減小,從而改善模型的性能
  • 推廣到新樣本:通過最小化損失函數優化模型參數,我們希望模型在訓練集之外的新樣本上表現良好。通過降低訓練數據上的損失值,我們可以期望模型對未見過的數據進行更準確的預測,提高模型的泛化能力

總之,損失函數用于衡量模型預測結果與真實標簽之間的差異,并且幫助我們評估模型的性能。通過最小化損失函數,我們可以以一種系統化的方式優化模型參數,使得模型在訓練數據和新樣本上都有更好的表現

3.隨機梯度下降和小批量梯度下降

隨機梯度下降(Stochastic Gradient Descent,SGD)和小批量梯度下降(Mini-Batch Gradient Descent)是兩種基于梯度下降算法的優化方法,在更新模型參數時有所區別。以下是它們之間的區別、優點和缺點,以及它們的公式:

隨機梯度下降(SGD):

  • 區別:在每次迭代中,SGD使用一個樣本來計算梯度并更新參數
  • 優點:
    • 訓練速度快:每次迭代只使用一個樣本,計算速度相對較快
    • 可用于在線學習:適用于需要實時更新模型的場景,可以動態更新模型參數
  • 缺點:
    • 參數更新不穩定:由于每次迭代僅使用一個樣本,梯度估計可能存在噪聲,導致參數更新不穩定
    • 可能陷入局部最優解:隨機性可能導致算法在訓練過程中反復跳出局部最優解

小批量梯度下降(Mini-Batch Gradient Descent):

  • 區別:在每次迭代中,MBGD使用一小批樣本來計算梯度并更新參數,批量大小通常在10到1000之間
  • 優點:
    • 較好的收斂速度和穩定性:相比于SGD,MBGD使用一小批樣本來計算梯度,減少了梯度估計的方差,從而更穩定地更新參數
    • 可以充分利用硬件并行性:批量大小通常為2的冪,可以有效利用GPU等硬件加速并行計算
  • 缺點:
    • 需要調整批量大小:選擇合適的批量大小可能需要一些試驗和調整
    • 計算開銷較大:與SGD相比,計算每次迭代的梯度需要更多的計算資源

在梯度下降中,更新參數的公式如下:
1、隨機梯度下降(SGD):
θ = θ ? learning_rate × ? J ( θ ; x j , y j ) \theta = \theta - \text{learning\_rate} \times \nabla J(\theta; x^j, y^j) θ=θ?learning_rate×?J(θ;xj,yj)
其中 θ \theta θ表示模型的參數, ? J ( θ ; x j , y j ) \nabla J(\theta; x^j, y^j) ?J(θ;xj,yj)表示損失函數對參數的梯度, x j x^j xj y j y^j yj表示訓練集中的一個樣本及其對應的標簽
2、小批量梯度下降(MBGD):
θ = θ ? learning_rate × 1 m ∑ i = 1 m ? J ( θ ; x i , y i ) \theta = \theta - \text{learning\_rate} \times \frac{1}{m} \sum_{i=1}^{m} \nabla J(\theta; x^i, y^i) θ=θ?learning_rate×m1?i=1m??J(θ;xi,yi)
其中 (\theta) 表示模型的參數, ? J ( θ ; x i , y i ) \nabla J(\theta; x^i, y^i) ?J(θ;xi,yi)表示損失函數對參數的梯度, x i x^i xi y i y^i yi表示一個小批量樣本及其對應的標簽,m是批量大小

總結來說,SGD每次迭代使用一個樣本來計算梯度和更新參數,適用于訓練速度要求較高和在線學習的場景。MBGD在每次迭代時使用一小批樣本來計算梯度和更新參數,可以提供更穩定的更新,并且能夠充分利用硬件并行性。選擇哪種方法取決于數據

4.什么是學習率

學習率(Learning Rate)是機器學習中的一個超參數,用于控制模型在每次迭代中更新參數的步幅或速度。它決定了參數更新的大小,即每次更新時參數應該移動多遠,學習率的選擇對優化過程有重要影響。如果學習率太小,模型可能需要更多的迭代才能收斂,訓練時間會變長。而如果學習率太大,模型在參數空間中可能會出現震蕩甚至無法收斂,導致無法找到最優解。調整學習率是優化模型性能的關鍵之一。以下是一些常見的學習率調整方法:

  1. 固定學習率:將學習率設置為一個固定值,不隨迭代次數變化。這種方法簡單直接,但需要手動選擇合適的學習率,并不能自適應地調整
  2. 學習率衰減:隨著迭代次數的增加,逐漸降低學習率。常見的衰減策略包括:
    • 常數衰減:按照預定義的衰減規則遞減學習率。
    • 指數衰減:學習率按指數函數遞減。
    • 分段衰減:在訓練的不同階段使用不同的學習率。
  3. 自適應學習率:根據模型的表現自動調整學習率,常見的方法有:
    • Adagrad:基于參數梯度的歷史累積來自適應地調整學習率
    • RMSProp:除了考慮梯度的歷史累積外,還引入了指數加權平均來更新學習率
    • Adam:結合Adagrad和RMSProp的優點,同時對梯度的一階矩估計和二階矩估計進行自適應調整
  4. 學習率策略搜索:通過網格搜索或隨機搜索等方法,在一定范圍內嘗試不同的學習率,并選擇在驗證集上表現最好的學習率

調整學習率的目標是在訓練過程中保持較好的收斂性和穩定性。選擇合適的學習率取決于具體的任務和模型,需要根據經驗和實驗進行調整和優化

5.優化算法中的收斂性

在優化算法中,收斂性是指算法在迭代過程中逐漸接近最優解的性質。當一個優化算法收斂時,它會找到問題的局部或全局最優解(取決于問題的性質和算法的能力)。判斷一個優化算法是否收斂到最優解可以通過以下幾種方式:

  • 目標函數值的變化:觀察目標函數(損失函數)值隨著迭代次數的變化。如果目標函數值逐漸減小并趨于穩定,可能表示算法正在接近最優解。一種常見的停止條件是設置一個閾值,當目標函數值的變化低于該閾值時,認為算法已經收斂
  • 參數變化的大小:監測模型參數的變化程度。當參數的變化非常小,接近于零時,可能表示算法已經收斂。可以檢查參數的更新量是否低于某個設定的閾值來判斷收斂性
  • 梯度的大小:觀察目標函數的梯度大小,即參數對目標函數的導數。在梯度下降類算法中,當梯度的大小接近于零時,可能表示算法已經收斂。可以檢查梯度的范數(向量的長度)是否低于某個設定的閾值來判斷收斂性
  • 驗證集性能:在監督學習任務中,可以使用一個獨立的驗證集來評估模型的性能。當驗證集上的性能不再顯著提升時,可能表示模型已經達到最優解,算法收斂

需要注意的是,收斂并不意味著達到全局最優解,而是接近最優解。在實際應用中,很難保證找到全局最優解,特別是在復雜的非凸問題中。因此,有時候人們更關注的是算法是否達到了一個令人滿意的局部最優解,判斷一個優化算法是否收斂到最優解通常需要綜合考慮多個指標和評估方法,在實踐中需要進行實驗和驗證。

6.常用的數學優化算法

除了梯度下降,還有以下常用的數學優化算法在機器學習中廣泛應用:

  • 牛頓法(Newton’s Method):利用目標函數的一階和二階導數信息來迭代地逼近最優解。牛頓法在更新參數時需要計算并存儲Hessian矩陣,適用于小規模問題。應用場景包括邏輯回歸、線性回歸等。其優點是收斂速度快,但缺點是對于大規模問題,計算和存儲Hessian矩陣可能較困難
  • 共軛梯度法(Conjugate Gradient Method):用于求解解線性方程組的迭代法,在機器學習中常用于求解正則化的線性回歸問題。其優點是不需要計算和存儲完整的Hessian矩陣,僅需逐步迭代求解,減少了存儲和計算的開銷
  • LBFGS(Limited-memory Broyden-Fletcher-Goldfarb-Shanno):是一種基于擬牛頓法的優化算法,適用于大規模問題。LBFGS通過近似計算Hessian矩陣的乘積來更新參數,并利用有限的內存存儲歷史信息。在很多機器學習算法中都有應用,如支持向量機(SVM)和深度學習中的神經網絡訓練
  • AdaGrad(Adaptive Subgradient Methods):自適應梯度算法,根據歷史梯度信息調整學習率。AdaGrad適用于非稀疏數據集,對于那些稀疏特征出現頻率較低的情況,可能會導致學習率過大。它主要應用于優化神經網絡的參數
  • Adam(Adaptive Moment Estimation):結合了AdaGrad和RMSProp的優點。它通過估計梯度的一階矩和二階矩來自適應地調整學習率。Adam在深度學習中廣泛應用,可以加快收斂速度并提高模型性能

這些優化算法在機器學習中的具體應用取決于問題的特點和數據的性質。選擇合適的優化算法通常需要考慮問題規模、參數更新的穩定性、計算和存儲資源等因素,并進行實驗評估以確定最佳算法

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

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

相關文章

Photoshop 2025 性能配置全攻略:硬件選購與軟件優化指南

一、硬件配置核心建議 根據Adobe官方要求及實測反饋,Photoshop 2025對硬件的需求側重CPU、內存和存儲,顯卡需求相對寬松,但特定功能(如AI濾鏡、3D渲染)需關注顯卡性能。 硬件類別最低配置推薦配置(流暢運…

華為云Flexus+DeepSeek征文 | 華為云ModelArts Studio快速上手:DeepSeek-R1-0528商用服務的開通與使用

華為云FlexusDeepSeek征文 | 華為云ModelArts Studio快速上手:DeepSeek-R1-0528商用服務的開通與使用 引言一、ModelArts Studio平臺介紹華為云ModelArts Studio簡介ModelArts Studio主要特點 二、開通DeepSeek-R1-0528商用服務訪問ModelArts Studio控制臺DeepSeek-…

day53 神經網絡調參指南

目錄 一、引言 二、權重初始化:為何如此重要? (一)隨機種子:確保實驗的可重復性 (二)權重初始化的重要性 1. 神經網絡的對稱性問題 2. 避免梯度消失和梯度爆炸 (三&#xff0…

【大模型02---Megatron-LM】

文章目錄 Megatron-LM數據并行模型并行張量并行流水線并行 3D并行 Megatron-LM Megatron是當前大模型訓練時經常使用的一種分布式并行框架,它通過采用DP,TP,PP等來加速模型的訓練,反正就是一個字,好。 大模型在訓練的時候,顯存占…

魔百和網絡機頂盒CM211-1硬件解析

先來個正面照 背面照 核芯 無線網卡 支持WiFi與藍牙 硬盤 正面內存與背面內存

Kratos 與Golang Cms的關系

Kratos 與 Golang CMS 的關系 Kratos 是 Bilibili 開源的一款輕量級 Go 語言微服務框架,專注于構建高性能、可擴展的后端服務。雖然它本身并不是一個完整的 CMS(內容管理系統),但它可以用于開發 CMS 系統的后端或 API 服務。 我們的目標是提供全面的微服務開發技術。基于…

在vue3+vite中給 Video視頻 添加字幕

Video視頻 添加字幕 方式一: 使用 track標簽template標簽中css樣式修改方式二:直接讀取.vtt文件方式一: 使用 track標簽 參考1:https://blog.csdn.net/weixin_42321819/article/details/112442773 參考2:https://blog.csdn.net/foren_whb/article/details/80810552 template標…

UE4手動實現billboard效果讓物體始終面向相機正面

一個很簡單的需求,但在網上竟然沒查到。首先不能用FindLookAtRotation,因為這是用location算的,是讓物體朝向相機的方向,而不是朝向相機的正面。區別如下圖所示: 然后想用billboard component,不過這個原生…

在阿里云上搭建n8n

0.安裝docker 0.1 刪除Docker相關源 #刪除Docker相關源 sudo rm -f /etc/yum.repos.d/docker*.repo #卸載Docker和相關的軟件包 sudo dnf -y remove \ docker-ce \ containerd.io \ docker-ce-rootless-extras \ docker-buildx-plugin \ docker-ce-cli \ docker-compose-plug…

Qt中的OpenGL (4)[紋理]

文章說明 本文是學習OpenGL的筆記,主要參考大神JoeyDeVries的LearnOpenGL第六課《紋理》,并將教程中的代碼基于Qt進行實現。 學習目標 掌握紋理基本知識掌握紋理貼圖目錄結構 |- |-- HelloTextures|--- hello_textures.cpp|--- hello_textures.h|--- main.cpp|--- CMakeLi…

【Java多線程從青銅到王者】阻塞隊列(十)

阻塞隊列 阻塞隊列也是一種隊列,先進的先出 阻塞隊列就是對普通的隊列做出的拓展 阻塞隊列的特性 1.線程安全的,我們普通的隊列值線程不安全的 2.具有阻塞的特性: a》如果針對一個已經滿了的隊列進行如隊列操作的話,入隊列操作就…

Python打卡第52天

浙大疏錦行 作業: 對于day41的簡單cnn,看看是否可以借助調參指南進一步提高精度。 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import ma…

力扣100- 環形鏈表

方法一 遍歷 循環鏈表&#xff0c;查找鏈表節點是否重復出現 public boolean hasCycle(ListNode head) {Set<ListNode> set new HashSet<>(); if (head null) return false; while (head ! null) {if (set.contains(head)) {return true;}set.add(head);head …

Java + Spring Boot + Mybatis 插入數據后,獲取自增 id 的方法

在 MyBatis 中使用 useGeneratedKeys"true" 獲取新插入記錄的自增 ID 值&#xff0c;可通過以下步驟實現&#xff1a; 1. 配置 Mapper XML 在插入語句的 <insert> 標簽中設置&#xff1a; xml 復制 下載 運行 <insert id"insertUser" para…

Meta發布V-JEPA 2世界模型及物理推理新基準,推動AI在物理世界中的認知與規劃能力

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

觸覺智能RK3576核心板工業應用之軟硬件全國產化,成功適配開源鴻蒙OpenHarmony5.0

在全球科技競爭加劇和供應鏈安全日益重要的背景下&#xff0c;實現關鍵軟硬件的全國產化替代已成為國家戰略和產業共識。在這一背景下&#xff0c;觸覺智能推出RK3576核心板,率先適配開源鴻蒙OpenHarmony5.0操作系統&#xff0c;真正實現了從芯片到操作系統的全棧國產化方案&am…

前端基礎知識ES6系列 - 01(var、let、const之間的區別)

一、var 在ES5中&#xff0c;頂層對象的屬性和全局變量是等價的&#xff0c;用var聲明的變量既是全局變量&#xff0c;也是頂層變量 注意&#xff1a;頂層對象&#xff0c;在瀏覽器環境指的是window對象&#xff0c;在 Node 指的是global對象 var a 10; console.log(window…

Python Docker 鏡像構建完整指南:從基礎到優化

Python 是一門廣泛使用的編程語言,在容器化環境中,構建和使用 Python 鏡像是非常常見的任務。本文將提供一個完整的指南,包括選擇基礎鏡像、制作流程、不同場景下的應用、安全性最佳實踐以及鏡像優化策略。 1. 選擇合適的基礎鏡像 1.1 官方 Python 鏡像 Docker Hub 提供了…

【狂飆AGI】第1課:大模型概述

目錄 &#xff08;一&#xff09;大模型概念解析&#xff08;二&#xff09;大模型發展歷程&#xff08;三&#xff09;大模型發展現狀&#xff08;1&#xff09;OpenAI&#xff08;2&#xff09;微軟&#xff08;3&#xff09;谷歌&#xff08;4&#xff09;Meta &#xff08;…

vite ts 配置使用@ 允許js

1.vite.config.ts 配置 import { defineConfig } from vite import vue from vitejs/plugin-vue import { fileURLToPath, URL } from node:url import setup_extend from vite-plugin-vue-setup-extend// https://vite.dev/config/ export default defineConfig({plugins: …