自動駕駛背后的數學:特征提取中的線性變換與非線性激活

在上一篇博客「自動駕駛背后的數學:從傳感器數據到控制指令的函數嵌套」—— 揭秘人工智能中的線性函數、ReLU 與復合函數中,我們初步探討了自動駕駛技術中從傳感器數據到控制指令的函數嵌套流程,其中提到了特征提取模塊對傳感器數據進行線性變換后應用 ReLU 函數的操作。今天,我們深入挖掘這一過程背后的數學原理,包括權重矩陣、偏置向量以及線性變換的相關知識,幫助大家更全面地理解自動駕駛系統中的特征提取機制。

一、傳感器數據與特征提取的背景

自動駕駛車輛依靠多種傳感器(如攝像頭、雷達、激光雷達等)獲取環境信息,這些傳感器數據包含了豐富的原始信息,但直接使用這些原始數據進行決策往往效率不高。因此,需要通過特征提取模塊對這些數據進行處理,提取出對決策更有用的特征。

二、線性變換的數學基礎

(一)權重矩陣 (W)

權重矩陣是神經網絡中用于連接輸入層和隱藏層的參數矩陣。假設我們有 n 個輸入特征,要映射到 m 個輸出特征,那么權重矩陣 W 的維度就是 m×n。矩陣中的每個元素 w_ij 表示第 i 個輸出特征對第 j 個輸入特征的權重,反映了輸入特征對輸出特征的貢獻程度。權重矩陣的元素值是通過訓練過程學習得到的。對于輸入的傳感器數據向量,權重矩陣中的每個元素表示該傳感器數據在某個特定特征維度上的權重,較大的權重值意味著該傳感器數據在這個特征維度上具有更大的影響力。

例如,在雷達數據處理中,假設我們有 3 個雷達輸入數據(如前方障礙物距離、后方障礙物距離、側方障礙物距離),要映射到 2 個中間特征,那么權重矩陣 W 可能如下:

(二)偏置向量 (b)

偏置向量是另一個重要的參數,它為每個神經元(或特征)提供了一個基礎值。無論輸入數據如何,偏置向量都會被加到線性變換的結果上。這相當于在神經網絡中引入了一個額外的可調節參數,使得模型能夠更好地擬合數據。偏置向量的值同樣是在訓練過程中確定的,它有助于提高模型的靈活性和適應性。

例如,對于上述的 2 個中間特征,偏置向量 b 可能為:

(三)線性變換過程

線性變換是通過權重矩陣和偏置向量對輸入數據進行的一種線性組合操作。數學上,對于輸入向量 x,線性變換的結果可以表示為 y = Wx + b。其中,W 是權重矩陣,b 是偏置向量。這個過程將輸入數據映射到一個新的空間,在這個新空間中,數據可能具有更好的可分性和代表性,有利于后續的特征提取和決策。

以障礙物檢測任務為例,權重矩陣可能呈現如下結構:

W = [ 0.2 0.5 0.3 0.6 0.1 0.3 0.4 0.4 0.2 ] W = \begin{bmatrix} 0.2 & 0.5 & 0.3 \\ 0.6 & 0.1 & 0.3 \\ 0.4 & 0.4 & 0.2 \end{bmatrix} W= ?0.20.60.4?0.50.10.4?0.30.30.2? ?

其中,第一行對應“碰撞風險指數”,更側重于距離(0.2)和速度(0.5)的權重;第二行對應“緊急制動需求”,距離(0.6)和角度(0.3)的權重較高。

偏置向量(b)用于補償線性組合的基準值,數學表達式為 m×1 維的向量。每個元素 b_i 表示第 i 個特征的基準偏移量。例如:

b = [ ? 1.0 0.5 0.0 ] b = \begin{bmatrix} -1.0 \\ 0.5 \\ 0.0 \end{bmatrix} b= ??1.00.50.0? ?

第一個特征設置負偏置,優先激活高風險特征;第二個特征設置正偏置,強化制動需求。

線性變換的完整數學公式為:

linear_output = W ? sensor_data T + b \text{linear\_output} = W \cdot \text{sensor\_data}^T + b linear_output=W?sensor_dataT+b

以輸入傳感器數據 [d, v, θ] = [20m, 15m/s, 0.2rad] 為例,計算過程如下:

linear_output 1 = 0.2 × 20 + 0.5 × 15 + 0.3 × 0.2 ? 1.0 = 3.66 linear_output 2 = 0.6 × 20 + 0.1 × 15 + 0.3 × 0.2 + 0.5 = 13.56 linear_output 3 = 0.4 × 20 + 0.4 × 15 + 0.2 × 0.2 + 0.0 = 14.04 \begin{align*} \text{linear\_output}_1 &= 0.2 \times 20 + 0.5 \times 15 + 0.3 \times 0.2 - 1.0 = 3.66 \\ \text{linear\_output}_2 &= 0.6 \times 20 + 0.1 \times 15 + 0.3 \times 0.2 + 0.5 = 13.56 \\ \text{linear\_output}_3 &= 0.4 \times 20 + 0.4 \times 15 + 0.2 \times 0.2 + 0.0 = 14.04 \end{align*} linear_output1?linear_output2?linear_output3??=0.2×20+0.5×15+0.3×0.2?1.0=3.66=0.6×20+0.1×15+0.3×0.2+0.5=13.56=0.4×20+0.4×15+0.2×0.2+0.0=14.04?

三、特征提取中的線性變換與 ReLU 激活

在自動駕駛的特征提取模塊中,我們首先對雷達數據進行線性變換,然后應用 ReLU 函數。具體來說,假設雷達數據為一個向量,我們通過權重矩陣和偏置向量對其進行線性變換,得到一個新的向量。這個新向量中的每個元素都是原始雷達數據的線性組合,反映了不同雷達數據在不同特征維度上的綜合影響。

接下來,應用 ReLU 函數對線性變換后的結果進行非線性處理。ReLU 函數的公式為: f(x) = max(0, x),它將輸入中的負值置為零,保留正值。這種非線性特性使得神經網絡能夠學習復雜的模式和特征。在自動駕駛中,經過 ReLU 激活后的特征向量能夠更好地表示環境信息,例如不同方向障礙物的距離經過處理后,可以更清晰地反映出車輛所處的環境狀態,為后續的路徑規劃和控制指令生成提供更準確的依據。

四、路徑規劃:線性函數的威力

路徑規劃是自動駕駛的核心任務之一,其目標是根據當前環境信息生成目標速度和轉向角度。這里我們使用線性函數來實現路徑規劃。

線性函數的數學定義

在這里插入圖片描述

在自動駕駛中的應用

在這里插入圖片描述

五、控制指令生成:復合函數的嵌套

控制指令生成模塊將路徑規劃的結果轉化為具體的控制指令(如剎車力度和轉向角度)。這一過程可以看作是一個復合函數的嵌套。

復合函數的數學定義

在這里插入圖片描述

在自動駕駛中的應用

通過復合函數的嵌套,我們可以將傳感器數據逐步轉化為控制指令:

  1. 傳感器數據 → 特征提取 → 路徑規劃 → 控制指令。
  2. 每一步都是一個函數的輸出作為下一步的輸入。

六、示例與代碼解析

為了更直觀地理解這一過程,我們可以通過一個完整的示例來說明,包括傳感器數據、特征提取、路徑規劃和控制指令生成。

import numpy as np# 1. 傳感器數據輸入
def get_sensor_data():return np.array([50.0, 10.0, 0.1])  # [障礙物距離, 車速, 車道偏離角度]# 2. ReLU 激活函數
def relu(x):return np.maximum(0, x)# 3. 線性函數
def linear_function(x, weights, bias):return np.dot(x, weights) + bias# 4. 特征提取模塊
def feature_extraction(sensor_data):weights = np.array([[0.1, 0.2, 0.3],[0.4, 0.5, 0.6],[0.7, 0.8, 0.9]])bias = np.array([0.1, 0.2, 0.3])return relu(linear_function(sensor_data, weights, bias))# 5. 路徑規劃模塊
def path_planning(features):weights_speed = np.array([0.5, 0.6, 0.7])bias_speed = 0.1target_speed = linear_function(features, weights_speed, bias_speed)weights_steering = np.array([0.3, 0.4, 0.5])bias_steering = 0.05target_steering = linear_function(features, weights_steering, bias_steering)return np.array([target_speed, target_steering])# 6. 控制指令生成模塊
def control_instruction(planning_result):target_speed, target_steering = planning_resultcurrent_speed = 10.0  # 假設當前車速為 10 m/sbrake_force = max(0, current_speed - target_speed) * 10  # 剎車力度計算steering_angle = target_steering  # 轉向角度return np.array([brake_force, steering_angle])# 7. 主函數:自動駕駛決策流程
def autonomous_driving():sensor_data = get_sensor_data()features = feature_extraction(sensor_data)planning_result = path_planning(features)control_vars = control_instruction(planning_result)return control_vars# 運行自動駕駛決策流程
if __name__ == "__main__":print("控制指令:", autonomous_driving())

在這個示例中,我們首先對傳感器數據進行線性變換,計算得到線性變換結果。然后,應用 ReLU 函數對線性變換結果進行非線性處理,得到最終的特征向量。接著,使用線性函數進行路徑規劃,得到目標速度和轉向角度。最后,通過復合函數的嵌套,將路徑規劃的結果轉化為具體的控制指令。通過這種方式,我們可以提取出對自動駕駛決策有用的特征,并生成相應的控制指令。

七、總結與展望

通過深入解析自動駕駛特征提取、路徑規劃和控制指令生成中的線性變換與 ReLU 激活過程,我們更清晰地理解了權重矩陣、偏置向量以及線性變換在其中的關鍵作用。這些數學工具和方法不僅在自動駕駛領域發揮著重要作用,也為更廣泛的人工智能系統提供了堅實的數學基礎。在后續的博客中,我們將繼續探索自動駕駛技術背后的數學原理,如路徑規劃中的優化算法、控制指令生成中的動態系統建模等,逐步構建起一個完整的自動駕駛技術數學框架,為讀者呈現更豐富、深入的技術內容。

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

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

相關文章

楊校老師課堂之編程入門與軟件安裝【圖文筆記】

親愛的同學們,熱烈歡迎踏入青少年編程的奇妙世界! 我是你們的授課老師楊校 ,期待與大家一同開啟編程之旅。 1. 輕松叩開編程之門 1.1 程序的定義及生活中的應用 程序是人與計算機溝通的工具。在日常生活中,像手機里的各類 APP、電…

DeepSeek 3FS 與 JuiceFS:架構與特性比較

近期,DeepSeek 開源了其文件系統 Fire-Flyer File System (3FS),使得文件系統這一有著 70 多年歷時的“古老”的技術,又獲得了各方的關注。在 AI 業務中,企業需要處理大量的文本、圖像、視頻等非結構化數據,還需要應對…

Coco AI 智能檢索 Hugo Blog 集成指南

在此前的文章中,我們介紹了如何使用 Coco Server 連接 Notion,實現智能內容檢索。本次,我們將進一步探索如何在 Coco Server 最新版本 中集成 Hugo Site,以便對 Hugo 站點 進行高效檢索。 Coco Server 部署方式 要在本地或服務器…

Mobile-Agent-V:通過視頻引導的多智體協作學習移動設備操作

25年2月來自北京交大和阿里巴巴公司的論文“Mobile-Agent-V: Learning Mobile Device Operation Through Video-Guided Multi-Agent Collaboration”。 移動設備使用量的快速增長,迫切需要改進自動化以實現無縫任務管理。然而,因缺乏操作知識&#xff0…

電魚智能EFISH-RK3576-SBC工控板已適配Android 14系統

EFISH-RK3576-SBC工控板此前已提供了Linux 6.1.57系統,為了滿足更多客戶的需求,電魚智能近日又為其成功適配了Android 14系統——硬件性能卓越的核心板與Android 14的深度組合,將為用戶帶來更加流暢、開放、智能的使用體驗。 一、高性能處理器…

正點原子[第三期]Arm(iMX6U)Linux移植學習筆記-5.1 uboot頂層Makefile分析-VSCode工程創建

前言: 本文是根據嗶哩嗶哩網站上“Arm(iMX6U)Linux系統移植和根文件系統構鍵篇”視頻的學習筆記,在這里會記錄下正點原子 I.MX6ULL 開發板的配套視頻教程所作的實驗和學習筆記內容。本文大量引用了正點原子教學視頻和鏈接中的內容。 引用: …

java 使用命令創建jar的常用參數整理

在Java中,創建JAR文件的命令是jar。以下是常用參數的表格展示: 參數信息含義使用場景使用示例c創建新的JAR文件用于創建一個新的JAR文件當需要打包類文件和資源文件時jar cf myapp.jar MyClass.classt列出JAR文件內容顯示JAR文件中的內容列表查看JAR文件…

無線頭戴式攝像頭系統:無需標記點攝像頭智能捕捉人臉表情

AH-T無線頭戴式攝像頭系統是一款可以精準捕捉人臉面部細微表情的設備,基于單目無標記點攝像頭智能識別算法,無需在臉上粘貼標記點即可實現真人細微臉部表情的精準捕捉,采用頭盔,面捕攝像頭一體式人性化設計,可以讓使用…

Cursor IDE 入門指南

什么是 Cursor? Cursor 是一款集成了 AI 功能的現代代碼編輯器,基于 VSCode 開發,專為提高開發效率而設計。它內置強大的 AI 助手功能,能夠理解代碼、生成代碼、解決問題,幫助開發者更快、更智能地完成編程任務。 基礎功能 1.…

Tailwind CSS 中的 spacing 詳解

🔍 Tailwind CSS 中的 spacing 詳解 spacing(間距)是 Tailwind CSS 里的一個核心概念,它主要用于控制 padding(內邊距)、margin(外邊距)、width(寬度)、heig…

go語言學習教程推薦,零基礎到做項目

一、基礎入門階段 官方教程(免費) ? A Tour of Go:交互式入門教程,邊學邊練 ? Go by Example:通過300代碼片段學習語法 入門書籍 ? 📘《Go語言圣經》中文版(免費在線閱讀)&#…

STM32---FreeRTOS內存管理實驗

一、簡介 1、FreeRTOS內存管理簡介 2、FreeRTOS提供的內存管理算法 1、heap_1內存管理算法 2、heap_2內存管理算法 4、heap_4內存管理算法 5、heap_5內存管理算法 二、FreeRTOS內存管理相關API函數介紹 三、 FreeRTOS內存管理實驗 1、代碼 main.c #include "st…

常見的前端安全問題

前端安全是 Web 開發中至關重要的一環,以下是常見的前端安全問題及對應的防御措施: 1. XSS(跨站腳本攻擊) 攻擊原理 攻擊者向頁面注入惡意腳本(如 JavaScript),在用戶瀏覽器中執行,…

【VUE】ant design vue實現表格table上下拖拽排序

適合版本&#xff1a;ant design vue 1.7.8 實現效果&#xff1a; 代碼&#xff1a; <template><div class"table-container"><a-table:columns"columns":dataSource"tableData":rowKey"record > record.id":row…

深入解析ES6+新語法:復雜的迭代器與生成器

一、迭代器&#xff08;Iterator&#xff09;&#xff1a;數據遍歷的統一協議 1. 迭代器協議的本質 **迭代器協議&#xff08;Iterator Protocol&#xff09;** 是一種標準化的數據訪問接口&#xff0c;它要求對象實現一個 next() 方法&#xff0c;每次調用返回包含 { valu…

LangChain介紹(開源大語言模型LLM應用構建框架,提供完整工具和組件,使開發者能夠創建復雜、交互式且上下文感知的LLM應用)LangServe

文章目錄 LangChain&#xff1a;構建LLM應用的強大框架引言LangChain核心理念- 超越模型訓練數據的局限性- 訪問最新信息- 與外部系統交互- 執行復雜推理鏈 核心組件體系1. 模型&#xff08;Models&#xff09;- **LLMs**&#xff1a;如OpenAI、Anthropic、Cohere等提供的完成型…

微軟 System Center Configuration Manager(SCCM)的組件文件

微軟 System Center Configuration Manager(SCCM) 或 Microsoft Endpoint Configuration Manager(MECM) 的組件文件,屬于企業級設備管理工具的一部分。以下是具體說明: C:\Windows\CCM\smsswd.exe C:\Windows\CCM\tsmanager.exe smsswd.exe 和 tsmanager.exe 是 Micros…

Java設計模式建模語言面向對象設計原則

設計模式 設計模式的概念 設計模式最初用于建筑領域的設計中。 軟件的設計模式&#xff0c;又稱設計模式&#xff0c;是一套被反復使用&#xff0c;多數人知道的&#xff0c;經過分類編目的&#xff0c;代碼設計經驗的總結。 它描述了在軟件設計過程中的一些不斷重復發生的…

uniapp 實現微信小程序電影選座功能

拖動代碼 /*** 獲取點擊或觸摸事件對應的座位位置* 通過事件對象獲取座位的行列信息* param {Event|TouchEvent} event - 點擊或觸摸事件對象* returns {Object} 返回座位位置對象&#xff0c;包含行(row)和列(col)信息&#xff0c;若未找到有效位置則返回 {row: -1, col: -1}*…

Docker - 切換源 (Linux / macOS)

文章目錄 Linux 系統macOS 系統 Linux 系統 修改配置文件&#xff1a;/etc/docker/daemon.json "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com"]驗證是否修改成功&#xff1a; docker info重啟 …