Seq2Seq理解

Seq2Seq理解

寫在前面:學習Seq2Seq由于前面底子沒打好導致理解起來非常困難,今天索性全部搞懂邏輯部分,后續我會把所學的一些算法全部以理解+代碼的形式發布出來,課程代碼內容全部來自李沐老師的視頻,再次感謝!

直入主題

當前只有理解,沒有概念等內容

Seq2Seq的核心是編碼器和解碼器,以下例子為中文“我愛你”翻譯成英文“I love you”

在這里插入圖片描述
1.先輸入中文“我愛你”,拆解成“我”,“愛”,“你”的三個嵌入詞,在編碼器Encoder中分別變為三個詞向量[詞向量1],[詞向量2]和[詞向量3]。

2.將[詞向量1],[詞向量2],[詞向量3]一起丟給GRU1去學習,GRU1對簡單的詞的特征進行處理記憶的結果作為輸入丟給GRU2

3.GRU2繼續從更高層次的捕獲句子的時間依賴和上下文信息,
然后將結果作為輸入再丟給GRU3

4.GRU3提取更深層次的語義特征;而通過三層GRU學習后的結果也就是隱藏狀態被叫做context(上下文向量)。
在這里插入圖片描述
3.將解碼器的最終隱藏狀態context貫穿解碼器當中。

4.[start] + context → GRU1 → “I”
剛開始直接通過GRU1學習上下文,得到第一個英文單詞"I"

5.“I” + context → GRU → “love”
將已經得到的結果作為輸入結合上下文進行學習,得到第二個單詞"love"

6.“love” + context → GRU → “you”
前兩個的結果作為輸入結合上下文進行學習,得到第三個單詞"you"

7.最后通過拼接函數將"I ",“love”,“you”->“I love you”

核心理解

一.隱藏狀態:隱藏狀態就是神經網絡記住信息的“記憶”

輸入:X = [“I”, “am”, “happy”]

經過embedding后,每個詞變成的向量為:

X = [v_I, v_am, v_happy]

GRU一步步讀取向量的操作為:

時間步1: 輸入 v_I → 生成隱藏狀態 h_1(理解了"I")

時間步2: 輸入 v_am + 上一個隱藏狀態 h_1 → 得到 h_2(理解了"I am")

時間步3: 輸入 v_happy + h_2 → 得到 h_3(理解了"I am happy")

二.Dropout:防止過擬合的方法,在訓練時,隨機“丟掉”一部分神經元,讓模型不要太依賴某些特征。

神經網絡的輸出為:[0.8, 0.5, 0.3, 0.9]

drop=0.5,訓練時會隨機把一半的值變成0

[0.8, 0.0, 0.0, 0.9]

好處:
1.模型更加魯棒,不依賴單一神經元
2.更難死記硬背訓練數據,防止過擬合

三.repeat():將 state[-1] 擴展成每個時間步都用同一個上下文向量:
為了每個時間步都能獲得編碼器的上下文信息,所以要在時間維度上復制。

四.context上下文: 是編碼器最后一層最后一個時間步的隱藏狀態

context = state[-1]

編碼器讀完整句后,對整句的“理解壓縮”結果。

五.num_hiddens:是 GRU(或 LSTM、RNN)中隱藏狀態的“向量維度”,不是處理句子長度,而是控制模型對每個時間步輸入的“記憶能力”或“抽象表達能力”

可以類比成大腦的記憶容量,隱藏狀態越高,人能記住的東西就越多

假設你有一個 GRU:num_hiddens = 4

每個時間步輸入詞向量后,GRU 輸出隱藏狀態,比如:

h_t = [0.35, -0.21, 0.10, 0.78] ← 隱藏狀態的維度 = 4

對“到當前時間步為止”的所有輸入,GRU 試圖總結成一個 4 維向量

六.batch_size:批量大小,指的是一次訓練處理幾句話,每句話有一個隱藏狀態

七.num_layers:表示GRU有幾層,就有幾個隱藏狀態

例如:
你用 2 層 GRU (num_layers=2)

一次處理 3 句話 (batch_size=3)

每個隱藏狀態是一個 4 維向量 (num_hiddens=4)

那么你最終的 state 長這樣:state.shape == (2, 3, 4)

state[0][0] 是:第1層,第1句話的隱藏狀態 (一個4維向量)
state[1][2] 是:第2層,第3句話的隱藏狀態 (一個4維向量)

2*3=6,一共有6個隱藏狀態向量

第1層
第1句話的隱藏狀態: [0.1, 0.2, -0.5, 0.7]
第2句話的隱藏狀態: [0.4, -0.1, 0.9, 0.0]
第3句話的隱藏狀態: [0.3, 0.8, -0.2, -0.1]

第2層
第1句話的隱藏狀態: [0.1, 0.2, -0.5, 0.7]
第2句話的隱藏狀態: [0.4, -0.1, 0.9, 0.0]
第3句話的隱藏狀態: [0.3, 0.8, -0.2, -0.1]

八.Seq2Seq并不是通過直接對應詞匯翻譯得到的,而是通過一步步根據上下文和自己組成的詞,預測下一個詞

九.num_hiddens 和 state 的關系:

num_hiddens 決定了每個隱藏狀態向量的“維度”(表達能力有多強), state 是具體的隱藏狀態“內容”(一組向量),它的形狀受num_hiddens 控制

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

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

相關文章

旅游規劃智能體之ReAct Agent實戰

引言 本文將系統性地介紹如何運用ReAct框架構建旅游規劃智能體,通過LangChain的create_react_agent方法實現智能決策和多步驟任務處理。ReAct框架作為現代AI Agent開發的核心技術之一,為構建具備復雜推理能力的智能系統提供了重要的理論基礎和實踐指導。…

組合模式深度解析:Java設計模式實戰指南與樹形結構處理架構設計

組合模式深度解析:Java設計模式實戰指南與樹形結構處理架構設計 🌟 嗨,我是IRpickstars! 🌌 總有一行代碼,能點亮萬千星辰。 🔍 在技術的宇宙中,我愿做永不停歇的探索者。 ? 用…

PHP設計模式實戰:領域驅動設計與六邊形架構

在前三篇關于電子商務系統、API服務和微服務架構的基礎上,我們將深入探討如何運用領域驅動設計(DDD)和六邊形架構(Hexagonal Architecture)構建更加清晰、可維護的業務系統。隨著業務復雜度增加,傳統的分層架構往往難以清晰地表達業務邏輯,而DDD提供了一套方法論來解決這一問…

為什么在1080p的屏幕下,通常觀看4K視頻要比1080p的視頻來的清晰?

一、分辨率與像素密度的底層邏輯 4K與1080p的像素差異 4K分辨率通常為38402160(約830萬像素),而1080p為19201080(約207萬像素),4K像素數量是1080p的4倍。當4K視頻在1080p屏幕上播放時,需要將4倍…

C++ Json-Rpc框架 項目邏輯設計

Server ? RpcServer&#xff1a;rpc功能模塊與?絡通信部分結合 RpcServer分為兩部分 1.提供函數調用服務的服務端 2.提供服務注冊的客戶端 對內提供好rpc服務的路由關系管理map<method,服務描述對象>&#xff0c;以及rpc請求消息的分發處理函數。給Dispatcher提供onRpc…

Agent開發相關工具

LangChain LangChain LangGraph LangGraph LangSmith GraphRAG RAGFlow what-is-graphrag Dify n8n vLLM Model Context Protocol AutoGen CodeMirror Milvus Chroma

進程管理(一)

一. 進程的基本信息 1.1 進程的概念、組成及信息 1.1.1 概念 進程的概念與程序相對&#xff0c;程序是靜態的而進程是動態的&#xff0c;一個程序執行多次會有多個不同的進程 1.1.2 組成 PCB&#xff08;程序控制塊&#xff09;&#xff1a; 是一種保存下列信息的數據結構&…

k8s 中 cpu 核數的理解

物理核還是邏輯核 在 Kubernetes&#xff08;k8s&#xff09;編排文件&#xff08;如 Pod 或 Deployment 的 YAML 文件&#xff09;中設置的 CPU 核數&#xff0c;針對的是邏輯核數&#xff08;Logical Cores&#xff09;&#xff0c;而非物理核數&#xff08;Physical Cores&…

arcpy數據分析自動化(2)

數據處理 在提取數據后&#xff0c;我們需要對字段進行標準化處理&#xff0c;例如統一土地利用類型的命名。 # 定義字段映射字典 field_mapping {"Residential": "居住用地","Commercial": "商業用地","Industrial": &q…

在VMware虛擬機集群中,完成Hive的安裝部署

Hive是分布式運行的框架還是單機運行的&#xff1f; Hive是單機工具&#xff0c;只需要部署在一臺服務器即可。 Hive雖然是單機的&#xff0c;但是它可以提交分布式運行的MapReduce程序運行。 我們知道Hive是單機工具后&#xff0c;就需要準備一臺服務器供Hive使用即可。 同…

Linux運維新人自用筆記(部署 ??LAMP:Linux + Apache + MySQL + PHP、部署discuz論壇)

內容全為個人理解和自查資料梳理&#xff0c;歡迎各位大神指點&#xff01; 每天學習較為零散。 day19 簡單搭建網站 下載apache服務 #下載阿帕奇服務 [rootxun ~]# yum install httpd -y#關閉防火墻 [rootxun ~]# iptables -F#啟動服務 [rootxun ~]# systemctl start http…

Kubernetes架構解析

Kubernetes 技術棧的深度解析&#xff0c;涵蓋架構設計、核心組件、生態工具及二次開發實踐&#xff0c;結合實戰案例說明其內在關聯&#xff1a; 一、Kubernetes 架構設計 核心分層模型 #mermaid-svg-CnFwJbuzaABZpTBr {font-family:"trebuchet ms",verdana,arial…

langchain4j整合springboot

langchain4j整合springboot 1.搭建項目架子配置文件Controller測試測試結果![在這里插入圖片描述](https://i-blog.csdnimg.cn/direct/35b8bd04f3034bd990861f065bc73d2f.png) 1.搭建項目架子 配置文件 參考官網配置引入 <?xml version"1.0" encoding"UTF…

408第一季 - 數據結構 - 平衡二叉樹

平衡二叉樹 定義 縮寫記一下 AVL 還有下面這些&#xff0c;can you try&#xff1f; 平衡二叉樹的插入 LL平衡旋轉&#xff08;右單旋轉&#xff09; 怎么理解&#xff1f; 首先我們可以看見啊&#xff0c;b圖A左邊和右邊的不平衡的&#xff0c;非常的難受 于是我們可以這…

VR 地震安全演練:“透視” 地震,筑牢企業安全新護盾?

與傳統的地震安全教育方式相比&#xff0c;VR 地震安全技術具有無可比擬的優勢。在過去漫長的歲月里&#xff0c;我們主要依賴書本、講座和視頻等較為常規的手段來了解地震知識和逃生技巧。? 書本上密密麻麻的文字以及靜態的圖片&#xff0c;雖然能夠較為系統地傳遞理論性的信…

30-Oracle 23ai-回顧從前的Flashback設置

配置和測試了Oracle 23 ai的Flashback Log Placement后&#xff0c; 剛好身邊11g,19c的環境都在&#xff0c;還是把從前的flashback整理下&#xff0c;溫故知新&#xff0c;循序漸進。 一、閃回技術 Flashback Database 允許將整個數據庫回退到過去的某個時間點/SCN&#xff…

Gartner《Reference Architecture for Federated Analytics》學習心得

研究背景 隨著分析平臺越來越易于被廣泛用戶使用,以及組織內用例的不斷增多和多樣化,分析架構的去中心化給專注于架構的分析專家帶來了混亂。組織在交付一致、可復用和可信的分析方面面臨挑戰,分布式分析架構需要在控制和敏捷之間取得平衡,然而許多組織在這方面的控制力不…

Windows下Docker一鍵部署Dify教程

Windows環境下Docker部署Dify完整指南 &#x1f4cb; 目錄 系統要求Docker安裝驗證Docker安裝Dify部署訪問Dify常見問題管理命令 &#x1f5a5;? 系統要求 在開始安裝之前&#xff0c;請確保你的Windows系統滿足以下要求&#xff1a; 硬件要求 CPU: > 2核心內存: >…

idea maven打包很慢,怎么提速-多線程

作為一個技術運維人員&#xff0c;經常要更新程序然后重新打包發布jar包。由于程序子模塊多&#xff0c;需要相互引用每次打包的時候都需要很久&#xff0c;怎么可以讓打包快一點呢&#xff1f;可以啟動打包的多線程。請參照下圖設置&#xff0c;線程數量應該和cpu內核數量要能…