機器學習 -- 梯度下降算法加深

梯度下降算法

在機器學習中,梯度下降算法常用于最小化代價函數(或損失函數),以此來優化模型的參數。代價函數衡量的是模型預測值與實際值之間的差異。通過最小化這個函數,我們可以找到模型預測最準確的參數。

代價函數

代價函數(Cost Function)或損失函數(Loss Function),是用來衡量模型預測值與真實值之間差異的一個函數。在回歸問題中,一個常見的代價函數是均方誤差
在這里插入圖片描述

其中n是樣本數量,yi是樣本的真實值,被減去的則是預測值,這個值越小,說明預估越接近真實值。

實際案例:從簡單線性回歸理解梯度下降算法

假設我們有一組數據,表示房屋的大小與其價格的關系。我們想要構建一個簡單的線性回歸模型來預測房價,模型形式為
y=wx+b,其中 y 是房價,x 是房屋大小,w 是斜率,b 是截距。
第一步要做的是:初始化模型參數:隨機選擇w 和 b 的初始值,比如 w=0 和 b=0。計算代價函數的梯度:首先,我們需要定義代價函數,這里我們使用均方誤差。然后,計算代價函數關于每個參數的梯度。
我們隨意給出一組數據:
(1,2),(2,4),(3,6)
我們的目的是盡量用y=wx+b去擬合這些數據。w梯度計算公式是:
在這里插入圖片描述

b的則是
在這里插入圖片描述

w=0,b=0得出得梯度分別是: -56/3和 -8。
這個線性模型是一條 y=0的直線,顯然無法擬合這些數據.我們此時設置 w=0.1,b=0.1來擬合,又得到了兩個梯度,可能這次的線性模型擬合度會好一些,那么再設置w=0.2,b=0.2,會不會又好一點呢?我們每次選用w,b都會得到一個預測值,然后我們可以算出他的代價函數(誤差)值,我們就可以畫出這樣一張圖。
在這里插入圖片描述

其中我們要找的點就是誤差最低的那一個點,我們可能會從任何地方出發,去找那個點,這個過程運用到的就是梯度下降算法

正式介紹

通過上面那個小例子,我們已經知道了,梯度下降算法常用于最小化代價函數(或損失函數),以此來優化模型的參數。代價函數衡量的是模型預測值與實際值之間的差異。通過最小化這個函數,我們可以找到模型預測最準確的參數。

抽象

我們可以抽象這個過程:想象一下,你在山頂,目標是以最快的速度下到山腳。因為你被蒙上了眼睛,看不見周圍的環境,所以你只能通過感覺腳下的坡度來判斷下一步該往哪個方向走。這個“感覺坡度”的過程,就有點像梯度下降算法的工作原理。

梯度的含義

“梯度”(Gradient)其實就是指函數在某一點上的斜率,或者說是這一點最陡的上升方向。梯度告訴你,如果你想讓函數值增加得最快,應該往哪個方向走。相應地,梯度的反方向就是函數值下降最快的方向。

梯度下降的工作原理

梯度下降算法的核心思想就是:在當前位置計算梯度(即斜率),然后沿著梯度的反方向走一小步,重復這個過程,直到到達山腳(即找到函數的最小值點)。

梯度下降–專屬案例

假設我們有一個函數
y=x^2這個求最小值,這個案例不是讓你使用高中數學去解答,你可以不假思索回答是0,但是不是我想要學習的。
讓我們以梯度下降的方式求解,初始化: 假設我們隨機選擇一個起點,x=2。計算梯度: 對f(x) 求導得到它的梯度 f(x)=2x。在x=2 處的梯度是4。此時我們更新x,我們假設我們走一小步,0.1那么此時x應該是:x = x - 學習率 * 梯度 = 2 - 0.1 * 4 = 1.6 計算此時的梯度,重復這個過程,直到x的更新值很小很小,無限趨近于0,此時實際上x的值(在y=x^2中)也無限趨近于0,y也趨近于0了。

注意事項

學習率的選擇:學習率太大可能導致“跨過”最低點,甚至發散;學習率太小又會導致收斂速度很慢。因此,選擇一個合適的學習率非常關鍵。收斂條件:通常會設置一個閾值,當連續兩次迭代的x值變化非常小(小于這個閾值)時,我們就認為算法已經收斂。

結束

我們計算房價,假設線性模型,求w,b,我們使用均方誤差(MSE)作為代價函數,來衡量模型預測值與實際值之間的差異,我們使用梯度下降模型計算w,b的梯度,得到了誤差,我們通過控制迭代次數和學習率,不斷的修改w,b,以使得誤差越來越小,誤差越來越小,即w,b的變化非常小或達到一個預設的迭代次數。這就是梯度下降算法。對于不同類型的機器學習問題,成本函數的選擇也會不同。例如:回歸問題:常用的成本函數是均方誤差(Mean Squared Error, MSE),它計算的是預測值與實際值之間差異的平方的平均值。這個值越小,表示模型的預測越準確。分類問題:對于二分類問題,一個常見的成本函數是交叉熵(Cross-Entropy),它量化的是實際標簽與預測概率之間的差異。
在梯度下降算法中,我們的目標是找到模型參數的值,這些參數值能使成本函數的值最小化。換句話說,我們希望找到的參數能讓模型的預測盡可能接近實際情況,從而最小化誤差。通過迭代地更新模型參數,梯度下降算法能夠逐步逼近這個最優參數組合,實現成本的最小化。

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

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

相關文章

數字快速增長動畫插件vue-countupjs

使用場景: ①頁面加載時實現數字從0開始滾到指定數字 ②大屏數字的滾動增長 1.安裝vue-countupjs npm install vue-countupjs --save 2.使用 ①全局使用 main.js引入 import VueCountUp from vue-countupjs Vue.use(VueCountUp) Vue.component(VueCountUp, Vue…

Mybatis-Plus-快速整合

Mybatis-Plus 依賴 依賴選擇 <!-- 最新版本 --> <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.5</version> </dependency>配置 分頁 分頁攔截器配置…

易毅出席成套低溫烘干裝備在發酵行業的節能創新應用

演講嘉賓&#xff1a;易毅 總經理 廣東芬藍環境科技有限公司 演講題目&#xff1a;成套低溫烘干裝備在發酵行業領域的節能創新應用 會議簡介 “十四五”規劃中提出&#xff0c;提高工業、能源領城智能化與信息化融合&#xff0c;明確“低碳經濟”新的戰略目標&#xff0c;熱…

Unity2023.1.19_Socket-TCP_ 服務端與客戶端通訊基礎

Unity2023.1.19_Socket-TCP_ 服務端與客戶端通訊基礎 目錄 Unity2023.1.19_Socket-TCP_ 服務端與客戶端通訊基礎

python-分享篇-根據出生日期判斷你的星座出生日期判斷生肖

文章目錄 根據出生日期判斷你的星座出生日期判斷生肖 根據出生日期判斷你的星座 sdate[20,19,21,20,21,22,23,23,23,24,23,22] # 星座判斷列表 conts [摩羯座,水瓶座,雙魚座,白羊座,金牛座,雙子座,巨蟹座,獅子座,處女座,天秤座,天蝎座,射手座,摩羯座] signs[?,?,?,?,?…

測試計劃(詳細版)

測試計劃Testing plan&#xff0c;描述了要進行的測試活動的范圍、方法、資源和進度的文檔&#xff1b;是對整個信息系統應用軟件組裝測試和確認測試。 [1] 它確定測試項、被測特性、測試任務、誰執行任務、各種可能的風險。測試計劃可以有效預防計劃的風險&#xff0c;保障計…

JPEG support not enabled.

報錯&#xff1a; ECCODES ERROR : JPEG support not enabled. ECCODES ERROR : unable to get values as double array (Functionality not enabled) ECCODES ERROR : Unable to create iterator bFunctionality not enabled 在linux中運行python代碼的時候報錯了&…

Baumer工業相機堡盟工業相機如何聯合GAPI SDK和OpenCV實現相機圖像將圖像轉換為Mat格式再轉為Bitmap圖像進行顯示(C#)

Baumer工業相機堡盟工業相機如何聯合GAPI SDK和OpenCV實現相機圖像將圖像轉換為Mat圖像格式再轉為Bitmap圖像進行顯示&#xff08;C#&#xff09; Baumer工業相機Baumer工業相機的圖像轉換為OpenCV的Mat圖像的技術背景代碼分析第一步&#xff1a;先引用OpenCV庫第二步&#xff…

貪心 Leetcode 56 合并區間

合并區間 Leetcode 56 學習記錄自代碼隨想錄 以數組 intervals 表示若干個區間的集合&#xff0c;其中單個區間為 intervals[i] [starti, endi] 。請你合并所有重疊的區間&#xff0c;并返回 一個不重疊的區間數組&#xff0c;該數組需恰好覆蓋輸入中的所有區間 。 示例 1…

C++的繼承和多態

繼承和多態 繼承繼承的權限繼承的子父類訪問派生類的默認成員函數菱形繼承&#xff08;C獨有&#xff09;【了解】虛擬繼承什么是菱形繼承&#xff1f;菱形繼承的問題是什么&#xff1f;什么是菱形虛擬繼承&#xff1f;如何解決數據冗余和二義性的繼承和組合的區別&#xff1f;…

揭秘Android Tombstone:崩潰位置的秘密研究-Crash Location

由于一些工作原因&#xff0c;最近對Android系統發生crash的Tombstone展開了一定的研究。 這里我談一下關于對于Android Libstagefright 整數溢出漏洞的crash Tombstone的研究。看一下在包含整數溢出功能的MP4文件從PC傳輸進Android的時候造成的Tombstone0_0。 1、研究頭部信…

雙通道 40V 160mΩ車規級高側電源開關帶診斷功能反向電池保護功能

概述 PC8916是雙通道、高功率具有集成NMOS功率FET的開關&#xff0c;以及電荷泵。該設備集成了高級 保護功能&#xff0c;例如負載電流限制&#xff0c;通過功率限制進行過載主動管理帶可配置閉鎖的超溫停機。全面診斷和高精度電流感應這些功能實現了對負載的智能控制。有源漏…

[C++] 統計程序耗時

一、簡介 使用clock()函數記錄程序開始、結束時間戳。然后將開始結束時間戳差除以CLOCKS_PER_SEC得到程序的耗用的時間&#xff08;秒數&#xff09;。 二、代碼示例 #include <iostream> #include <time.h> #include <math.h> int main(int, char **) {clo…

JetPack 5.1編譯mish_cuda

1.查看jetpack版本:sudo jtop 自帶的就有cuda11.4和cudnn8.X以及python3.8,我的cudnn就沒有是后期自己安裝的 2.安裝torch PyTorch for Jetson - Announcements - NVIDIA Developer Forums 選擇對應的cuda版本和torch版本,我下載的是:torch-2.1.0a0+41361538.nv23.06-cp…

ETL數據倉庫的使用方式

一、ETL的過程 在 ETL 過程中&#xff0c;數據從源系統中抽取&#xff08;Extract&#xff09;&#xff0c;經過各種轉換&#xff08;Transform&#xff09;操作&#xff0c;最后加載&#xff08;Load&#xff09;到目標數據倉庫中。以下是 ETL 數倉流程的基本步驟&#xff1a…

2024中國5G隨身WiFi十大品牌排行榜,20245G隨身口碑排行榜,5G隨身WiFi2024最新款!5G隨身WiFi推薦測評

【中國品牌網中國3C質量評測中心權威榜單聯合發布】 第一名&#xff1a;格行5G隨身WiFi&#xff1a; 優點&#xff1a;隨身WiFi行業的頭部和領跑品牌&#xff0c;15年專業物聯網行業經驗&#xff0c;格行在技術研發、產品創新和客戶服務方面具有很高的口碑&#xff0c;被業內…

通過一篇文章讓你了解數據結構和算法的重要性

通過一篇文章讓你了解數據結構和算法的重要性 前言一、 什么是數據結構&#xff1f;二、什么是算法&#xff1f;三、數據結構和算法的重要性在校園招聘的筆試中&#xff1a;在校園招聘的面試中&#xff1a;在未來的工作中&#xff1a; 四、如何學好數據結構和算法4.1 死磕代碼&…

基于React全棧Sora AI視頻案例展示項目

花了一天時間基于React Next全棧開發的Sora AI 演示項目 Preview: https://sora.langchat.cn/ Github&#xff1a;https://github.com/tycoding/lang-sora 歡迎大家star、fork呀&#xff01; 這是一套完整的React & Next.js項目&#xff0c;包含前后端交互、路由、數據庫…

crc16計算

crc16計算&#xff0c;以生成式G(x)x16x15x21,為例 1、函數如下&#xff1a; //crc&#xff1a;G(x) x16x15x21 #define POLY 0x8005 //對應的生成式的多項式&#xff0c;可以查&#xff08;在在線計算crc工具下查&#xff09; unsigned short crc16_2(unsigned char *da…

CBAM注意力機制詳解(附pytorch復現)

簡介 論文原址&#xff1a;1807.06521.pdf (arxiv.org) CBAM&#xff08;Convolutional Block Attention Module&#xff09;是一種卷積神經網絡模塊&#xff0c;旨在通過引入注意力機制來提升網絡的表示能力。CBAM包含兩個順序子模塊&#xff1a;通道注意力模塊和空間注意力…