【深度學習】通俗易懂的基礎知識:指數加權平均

一、什么是指數加權平均?

????????指數在數學中表示一個數的冪次運算(如a?中的n),而在統計學中特指隨時間變化的幾何衰減系數,加權指對不同數據賦予不同權重,使重要數據對結果產生更大影響。指數加權平均指是一種時間序列數據的加權計算方法,其特點是隨著時間推移,數據權重呈指數級衰減——近期數據具有更高權重,而早期數據影響逐漸減弱。該方法的核心在于"動態平衡歷史與當前數據,同時突出近期信息的可靠性"。

二、什么叫數據權重呈指數級衰減?

? ? ? ? 我在之前寫過的一篇文章【人工智能】神經網絡的優化器optimizer(一):Momentum動量優化器中有所提及,現在先把神經網絡中指數加權平均的公式貼出來:

? ? ? ? 展開推導如下:

?????????基于以上公式,我們可以假設下:

??????????可以看到,越遠的梯度權重呈現指數級衰減

三、數學推導?

????????拋開神經網絡單純講指數加權平均的核心公式為:

????????v_{t}=β?v_{t-1}+(1?β)?x_{t}

其中:

  • v_{t}:當前時刻的加權平均值
  • v_{t-1}:上一時刻的加權平均值(初始值?v_{0}=0
  • x_{t}:想要觀察的時刻?t 的值
  • \beta:衰減因子(0<β<1),控制歷史數據的權重分布?

?????????推導過程?

????????遞推展開?(假設?v_{0}=0):

v_{1}=(1?β)?x_{1}

v_{2}=β?v_{1}+(1?β)?x_{2}=β(1?β)x_{1}+(1?β)x_{2}

v_{3}=β?v_{2}+(1?β)?x_{3}=β^{2}(1?β)x_{1}+β(1?β)x_{2}+(1?β)x_{3}

??

??

v_{t}=(1-\beta)[x_{t}+\beta x_{t-1} + \beta^{2} x_{t-2} + ...... +\beta^{t-1} x_{1}]

?????????權重系數規律?:
????????從展開式可見,歷史數據?x_{k}的權重為?(1?β)β^{t-k}。權重隨?k(時間距離)增大而?指數衰減?:

  • 當前時刻?x_{t}:權重?=(1?β)
  • 前一時刻?x_{t-1}:權重?=(1?β)β
  • 前?n 時刻x_{t-n}:權重?=(1?β)β^{n}
  • 權重總和收斂于1?:\sum_{k=0}^{t-1}(1-\beta)\beta^{k}=(1-\beta)^\frac{1-\beta^{t}}{1-\beta}=1-\beta^{t}\rightarrow 1??(當?t→∞)?

四、權重的取值

? ? ? ? 那么我們的權重究竟取多少是合適的呢?其實并沒有一個具體的值可以確定,需要根據不同的情況確定不同的值,大概的范圍如下:

β?值平滑性響應速度典型曲線特征
0.98(最大)?極高??極慢?平坦,滯后實際變化
0.9(適中)中等中等平衡平滑與響應,歷史數據權重衰減慢,平均結果更平滑,但響應延遲明顯。
0.5(較小)?極低??極快?抖動明顯,緊跟最新數據,近期數據主導,對波動更敏感,但噪聲抑制弱。

? ? ? ? 以下通過一個例子:正弦波加噪聲數據,來對比β=0.1/0.5/0.9/0.98 時的平滑效果:

? ? ? ? 可以觀察到以下幾個規律:

β=0.1(藍線):幾乎跟隨噪聲波動,響應快但平滑效果差

β=0.5(橙線):平衡噪聲抑制與趨勢跟蹤

β=0.9(綠線):極度平滑但明顯滯后原始信號峰值

β=0.98(紅線):滯后嚴重

????????β越小曲線越貼近原始數據,β越大平滑效果越強但滯后越明顯。

? ? ? ? 代碼如下:

import numpy as np
import matplotlib.pyplot as plt# 生成模擬數據(正弦波+噪聲)
np.random.seed(42)
t = np.linspace(0, 10, 100)
data = np.sin(t) + np.random.normal(0, 0.2, 100)def ewma(data, beta):v = [0]  # 初始化v0for x in data:v.append(beta * v[-1] + (1 - beta) * x)return v[1:]  # 去掉初始v0# 計算不同β值的EWMA
beta_list = [0.1, 0.5, 0.9,0.98]
results = {f'β={beta}': ewma(data, beta) for beta in beta_list}# 可視化
plt.figure(figsize=(10, 6))
plt.plot(t, data, 'k.', label='data')
for label, result in results.items():plt.plot(t, result, label=label, linewidth=2)
plt.legend()
plt.grid(True)
plt.show()

五、指數加權平均和普通平均的區別

? ? ? ? 我們通過一個簡單的例子說明:

(一)假設你連續10天記錄的氣溫數據為:[22, 23, 24, 25, 26, 27, 28, 29, 30, 31]℃:

普通平均:將所有溫度相加后除以天數
(22+23+24+25+26+27+28+29+30+31)/10 = 26.5℃
這種方法賦予每天相同權重,但會稀釋近期溫度變化的影響。

指數加權平均(衰減因子β=0.5):
第10天權重:50%(31×0.5=15.5)
第9天權重:25%(30×0.25=7.5)
第8天權重:12.5%(29×0.125≈3.6)
...
最終加權值≈15.5+7.5+3.6+1.8+0.9+0.4+0.2+0.1+0.05+0.02≈30.1℃

????????對比可見:這種計算明顯更貼近近期升溫趨勢(第10天31℃),而普通平均則被早期低溫數據拉低。由此可知指數加權平均對短期變化更敏感,適合捕捉天氣趨勢;普通平均則更適合分析長期穩定狀態

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

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

相關文章

c++-list

C-list std::list是C標準模板庫(STL)提供的雙向鏈表容器&#xff0c;它提供了高效的插入和刪除操作&#xff0c;特別適合頻繁修改的序列。定義在 <list> 頭文件中&#xff0c;屬于 std 命名空間。該類的接口與常規容器接口基本一致。 模板原型&#xff1a; template <…

【筆試真題】2024秋招京東后端開發崗位-第一批筆試

31.牛牛與切割機 有一個序列 a1,a2,...,ana_1,a_2,...,a_na1?,a2?,...,an? &#xff0c; 牛牛將對這個序列切割一刀&#xff08;劃分分成兩個不相交的非空序列&#xff0c;一個序列為 a1,...,apa_1,...,a_pa1?,...,ap?&#xff0c;另一個序列為 ap1,...,ana_{p1},...,a_na…

【整數轉羅馬數字】

思路計算數字的位數&#xff1a; 通過 while(x) 循環計算輸入數字 num 的位數 n。提取各位數字&#xff1a; 將數字 num 的每一位分解并存儲到 nums 數組中&#xff0c;順序為從高位到低位。羅馬數字映射&#xff1a; 使用固定數組 Roman 存儲羅馬數字符號&#xff1a;Roman {…

spring Scheduled注解詳解

spirng Scheduled注解詳解 用于標記需要安排執行的方法的注解。必須指定 cron、fixedDelay 或 fixedRate 中的恰好一個屬性。 被標注的方法必須不接受任何參數。它通常會具有 void 類型的返回值&#xff1b;如果不是這樣&#xff0c;那么在通過調度器調用該方法時&#xff0c;返…

新升級超值型系列32位單片機MM32G0005

靈動微推出的新型MM32G0005系列基于ArmCortex - M0內核&#xff0c;具備高可靠性、低功耗、高性價比等特性。Flash升級至64KB&#xff0c;SRAM為4KB&#xff0c;還有1KB Data Flash。Flash全溫擦寫次數超過10萬次。采用24Pin封裝&#xff0c;最多有22個IO。QFN20和TSSOP20封裝與…

Spark SQL 的詳細介紹

Spark SQL 是 Apache Spark 生態系統中用于處理結構化數據的模塊&#xff0c;它將 SQL 查詢與 Spark 的分布式計算能力相結合&#xff0c;提供了一種高效、靈活的方式來處理結構化和半結構化數據。以下是對 Spark SQL 的詳細介紹&#xff1a;1. 核心定位與優勢結構化數據處理&a…

【FreeRTOS】空閑任務與鉤子函數原理、實現與功能詳解

一、FreeRTOS空閑任務概述FreeRTOS中的空閑任務(Idle Task)是系統自動創建的一個特殊任務&#xff0c;具有最低優先級(優先級0)。當沒有其他更高優先級的任務運行時&#xff0c;調度器就會運行空閑任務。空閑任務的主要功能系統資源回收&#xff1a;自動清理被刪除任務的內存和…

imx6ull-驅動開發篇6——Linux 設備樹語法

目錄 前言 設備樹 設備樹概念 DTS、 DTB 和 DTC DTS 語法 .dtsi 頭文件 設備節點 /根節點?? 節點命名與標簽 節點層次結構? 屬性數據類型? 標準屬性 compatible 屬性 model 屬性 status 屬性 #address-cells 和#size-cells 屬性 reg 屬性 ranges 屬性 n…

ansible簡單playbook劇本例子2

1. 準備主機組[rootansible-master ansible_quickstart]# vim inventory/hosts[web:vars] ansible_port22 ansible_passwordAdmin123456[web] 192.168.100.1822.準備劇本 vim hello.yml--- - hosts: webremote_user: roottasks:- name: Ping the target hostsping:- name: 獲取…

EmpService 和 EmpMapper接口的作用

在這個項目中&#xff0c;EmpService 和 EmpMapper 都定義接口&#xff0c;是基于面向接口編程&#xff08;Interface Oriented Programming&#xff0c;IOP&#xff09;的設計思想&#xff0c;這兩種接口在項目中承擔著不同的職責&#xff0c;具體說明如下&#xff1a; EmpSer…

【語音技術】什么是動態實體

目錄 動態實體的定義和維度 1.1 動態實體的資源 1.2 生效維度 1.2.1 應用級 1.2.2 用戶級 1.2.3 自定義級 2. 動態實體的上傳及使用 2.1 WebAPI 2.1.1 授權認證 2.1.2 上傳資源接口 2.1.2.1 參數說明 2.1.2.2 返回說明 2.1.3 查詢打包狀態 2.1.3.1 參數說明 2.1.…

STM32學習記錄--Day3

今天了解了下I2C&#xff1a;1.I2C電路結構I2C通信示意圖&#xff1a;數據傳輸階段????主→從模式??&#xff08;寫操作&#xff09;&#xff1a;主機控制SCL時鐘&#xff08;把SCL拉低&#xff09;主機向SDA線發送數據&#xff08;每次8位1位ACK&#xff09;??主←從模…

裂變數據看板:5個核心指標決定活動生死?

數據是裂變活動的“指南針”。本文詳解曝光量、轉化率、裂變系數等5大核心指標&#xff0c;結合工具與案例&#xff0c;教你用數據驅動活動優化&#xff0c;避免“自嗨式裂變”。?為什么數據是裂變的“生死線”&#xff1f;&#xff08;認知重構&#xff09; 很多企業裂變活動…

iOS 類存儲 與 C# 類存儲 的差異

C# 中類的代碼&#xff08;包括方法、屬性等成員&#xff09;的存儲機制與 Objective-C 有顯著差異&#xff0c;其核心依賴于 ?CLR&#xff08;公共語言運行時&#xff09;的方法表&#xff08;Method Table&#xff09;和虛擬方法表&#xff08;vtable&#xff09;機制&#…

Selenium自動化:輕松實現網頁操控

selenium自動化 1 什么是 Selenium 自動化 Selenium 是一個用于 Web 應用程序測試的工具&#xff0c;支持多種瀏覽器&#xff08;如 Chrome、Firefox、Edge 等&#xff09;。WebDriver 是 Selenium 的核心組件&#xff0c;用于控制瀏覽器行為并執行自動化操作。元素定位是通過…

又開發了一個優雅的小工具!

在開源項目中&#xff0c;Issues是一個強大的功能&#xff0c;用于跟蹤bug、功能請求和任務。然而&#xff0c;隨著項目的發展&#xff0c;Issues可能會變得難以管理&#xff0c;特別是當你需要離線訪問或進行深入分析時。 當然GitHub Issues除了上述功能以外&#xff0c;做在線…

【安裝教程】Docker Desktop 安裝與使用教程

文章目錄一、環境要求二、安裝步驟2.1 安裝 WSL 2&#xff08;適用于非專業版 Windows 10 及 Windows 11&#xff09;2.2 安裝 Docker Desktop2.3 漢化 DDocker Desktop2.4 卸載 Docker Desktop三、使用 Docker3.1驗證安裝3.2. 拉取鏡像3.3. 運行容器3.4. 查看容器3.5.更改容器…

Hutool 的 WordTree(敏感詞檢測)

package cn.hutool.dfa;WordTree 繼承自 HashMap<Character, WordTree>&#xff0c;表示一個字符到子樹的映射&#xff0c;構成一顆“詞樹”&#xff08;類似 Trie 樹&#xff09;&#xff0c;用于快速匹配字符串中的詞語&#xff08;敏感詞檢測、關鍵詞匹配等&#xff0…

Makefile 從入門到精通:自動化構建的藝術

引入 在軟件開發的世界里&#xff0c;“編譯” 是繞不開的環節&#xff0c;但手動編譯大型項目時&#xff0c;重復輸入編譯命令的痛苦&#xff0c;相信每個開發者都深有體會。Makefile 作為自動化構建的基石&#xff0c;能讓編譯過程“一鍵完成”&#xff0c;甚至智能判斷文件變…

利用DeepSeek將Rust程序的緩沖輸出改寫為C語言實現提高輸出效率

在前面多語言測試中&#xff0c;遇到一個難以置信的問題&#xff0c;rust的輸出到文件比c語言還快&#xff0c;這是不合情理的&#xff0c;通過對兩者輸出語句的比較&#xff0c;發現了不同。 rust程序在輸出到stdout前有這么一句 let mut writer BufWriter::with_capacity(6…