大語言模型中的嵌入模型

本教程將拆解什么是嵌入模型、為什么它們在NLP中如此重要,并提供一個簡單的Python實戰示例。

分詞器將原始文本轉換為token和ID,而嵌入模型則將這些ID映射為密集向量表示。二者合力為LLMs的語義理解提供動力。圖片來源:[https://tzamtzis.gr/2024/coding/tokenization-by-andrej-karpathy/]

什么是嵌入模型?

在LLMs的語境中,嵌入模型是一種神經網絡,旨在將文本(如單詞、短語、句子)表示為連續向量空間中的密集向量。這些向量表示能捕捉文本項之間的語義關系,是現代NLP系統的基石。

例如:

  • "king"和"queen"這兩個詞的嵌入向量可能在向量空間中非常接近。
  • "king"和"man"之間的向量關系可能與"queen"和"woman"之間的關系類似。

想象完這些語義關系在向量空間中的樣子后,我們可能會認為單詞直接變成了這些能保留語義關系的向量。這種想法在討論LLM處理流程中的令牌時可能會引起一些混淆。讓我們稍微澄清一下關于分詞的內容。

分詞器和嵌入模型有什么區別?

在使用BERT、GPT等大語言模型(LLMs)時,經常會遇到兩個關鍵概念:分詞器嵌入模型。雖然它們相關,但在處理單詞的流程中扮演著不同的角色。

LLMs處理原始文本的一般流程如下:

  1. 原始輸入文本:我們輸入給模型的純文本(例如“我愛機器學習”)。
  2. 分詞器:將原始文本拆分為更小的單元(令牌)并將其轉換為數字ID。
  3. 嵌入模型:將這些數字令牌ID映射到連續向量空間中的密集向量表示,捕捉語義含義。
  4. Transformer模型:使用自注意力層處理嵌入并生成預測(如下一個單詞、情感、分類等)。

現在我們對流程中的分詞器和嵌入模型有了更清晰的認識,讓我們進一步明確什么是分詞器,什么是嵌入模型。

什么是分詞器?

分詞器是流程中的第一個組件,負責:

  • 將文本拆分為令牌:一個令牌可以是一個單詞、子詞甚至是一個字符。例如,句子“我愛機器學習”可能被分詞為:

['我', '愛', '機器', '學習']

  • 將令牌轉換為ID:每個令牌被映射到模型詞匯表中的唯一數字ID。例如:

['我', '愛', '機器', '學習'] → [101, 2173, 5956, 3627]

分詞器使用預定義的詞匯表(在模型訓練期間構建)以確保訓練和推理之間的一致性。分詞器通常采用以下技術:

  • WordPiece(BERT使用):將罕見詞拆分為更小的子詞單元。例如,“unbelievable”可能被分詞為["un", "##believable"],其中##表示子詞。
  • 字節對編碼(BPE)(GPT使用):類似于WordPiece,但編碼方式不同。

推薦觀看Andrej Karpathy的這個視頻:https://youtu.be/zduSFxRajkE?si=KGKPLninpxnHu3jN

什么是嵌入模型?

嵌入模型在分詞之后發揮作用,其職責是:

  1. 將令牌ID轉換為密集向量:每個令牌ID被映射到連續向量空間中的一個固定大小的向量(例如,BERT-base的向量大小為768)。這些向量稱為嵌入。
  2. 捕捉語義含義:生成的嵌入表示令牌的含義,使得相似的單詞或令牌在向量空間中更接近。

例如:

  • "king"和"queen"這兩個詞的嵌入向量可能非常接近。
  • 子詞如“un”和“##believable”可能組合成“unbelievable”的有意義嵌入。

嵌入模型本質上是一個查找表,但它也可以編碼上下文信息(例如,在BERT等模型中,嵌入是上下文感知的)。

分詞器和嵌入模型如何協同工作

讓我們在LLM流程的更大背景下連接分詞器和嵌入模型:

  1. 分詞器:分詞器為模型準備輸入文本。例如:
輸入文本:"我愛機器學習" 
分詞器輸出:[101, 2173, 5956, 3627]

這里,[101, 2173, ...]是令牌ID。

2. 嵌入模型:令牌ID隨后傳遞給嵌入層,將其轉換為密集向量表示:

令牌ID:[101, 2173, 5956, 3627] 
嵌入向量:[[0.1, 0.2, ...], [0.4, 0.5, ...], ...]

這些向量在訓練期間學習,表示每個令牌的含義。

3. Transformer層:嵌入通過Transformer層(如自注意力)處理,計算上下文表示并生成預測。

為什么這種區分很重要?

理解分詞器和嵌入模型之間的區別至關重要,因為:

  1. 分詞器定制:在特定領域任務(如法律或醫學文本)中,可能需要自定義分詞器來處理專業術語(如“訴訟”、“MRI掃描”)。
  2. 預訓練嵌入:你可以微調嵌入層以適應你的領域。例如,在醫學文本上訓練的嵌入與在一般新聞文章上訓練的嵌入會有顯著差異。
  3. 錯誤調試:下游任務中的問題通常源于分詞問題,如詞匯表外(OOV)單詞或次優的分詞策略。

一個類比來澄清概念

將LLM想象成一個工廠:

  • 分詞器:分詞器就像原材料處理器,將文本拆分為工廠可以處理的單元。
  • 嵌入模型:嵌入模型是生產線上的第一臺機器,將這些原材料轉換為中間產品(密集向量),供工廠的其他部分處理。

沒有分詞器,嵌入模型就不知道要處理什么。沒有嵌入模型,Transformer層就沒有有意義的輸入。

分詞器和嵌入模型的實戰示例

from transformers import AutoTokenizer, AutoModel# 第一步:加載分詞器和模型
tokenizer 

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

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

相關文章

【從零實現Json-Rpc框架】- 項目實現 - 服務端主題實現及整體封裝

📢博客主頁:https://blog.csdn.net/2301_779549673 📢博客倉庫:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正! &…

AI與玩具結合的可行性分析

文章目錄 一、市場需求:教育與陪伴的雙重驅動(一)教育需求(二)情感陪伴需求(三)消費升級 二、技術發展:賦能玩具智能化(一)AI技術的成熟(二&#…

基于 RK3588 的 YOLO 多線程推理多級硬件加速引擎框架設計(代碼框架和實現細節)

一、前言 接續上一篇文章,這個部分主要分析代碼框架的實現細節和設計理念。 基于RK3588的YOLO多線程推理多級硬件加速引擎框架設計(項目總覽和加速效果)-CSDN博客https://blog.csdn.net/plmm__/article/details/146542002?spm1001.2014.300…

LeetCode Hot100 刷題筆記(7)—— 貪心

目錄 前言 一、貪心 1. 買賣股票的最佳時機 2. 跳躍游戲 3. 跳躍游戲 II 4. 劃分字母區間 前言 一、貪心:買賣股票的最佳時機,跳躍游戲,跳躍游戲 II,劃分字母區間。 一、貪心 1. 買賣股票的最佳時機 原題鏈接:121. …

SQL語句的訓練

DELECT FROM 蜀國 WHEHE name 劉玄德 AND 創業進度<0.5 AND 存活狀態 true&#xff1b; 基礎的sql語句 SELECT >選擇列FROM >確認數據源JOIN >聯合操作WHERE >篩選數據GROUP BY >分組 HAVING >過濾分組的數據DISTINCT >去重ORDEY BY > 排序…

汽車 HMI 設計的發展趨勢與設計要點

一、汽車HMI設計的發展歷程與現狀 汽車人機交互界面&#xff08;HMI&#xff09;設計經歷了從簡單到復雜、從單一到多元的演變過程。2012年以前&#xff0c;汽車HMI主要依賴物理按鍵進行操作&#xff0c;交互方式較為單一。隨著特斯拉Model S的推出&#xff0c;觸控屏逐漸成為…

基于51單片機的模擬條形碼識別系統proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1AtAry19X3BgavLqXcM4scg 提取碼&#xff1a;1234 仿真圖&#xff1a; 芯片/模塊的特點&#xff1a; AT89C52/AT89C51簡介&#xff1a; AT89C51 是一款常用的 8 位單片機&#xff0c;由 Atmel 公司&#xff08;現已被 Microchip 收…

CD22.【C++ Dev】類和對象(13) 流提取運算符的重載和const成員

目錄 1.流提取運算符>>的重載 知識回顧 重載方法 operator<<格式 operator>>格式 使用cin對日期類對象寫入數據 如果想指定格式輸入 方法1:getchar() 方法2:使用臨時變量接收字符 完善operator>>代碼(修bug) 2.類中的權限問題(const成員) …

Spring 核心技術解析【純干貨版】- XIX:Spring 日志模塊 Spring-Jcl 模塊精講

在現代 Java 開發中&#xff0c;日志是調試、監控和維護應用程序的重要工具。Spring 作為企業級框架&#xff0c;提供了 Spring-Jcl 作為日志抽象層&#xff0c;使開發者可以靈活切換不同的日志實現&#xff0c;而無需修改業務代碼。本篇文章將深入解析 Spring-Jcl 模塊&#x…

Hadoop集群---運維管理和技巧

一. daemon 守護進程管理 1. NameNode守護進程管理 hadoop-daemon.sh start namenode 2. DataNode守護進程管理 hadoop-daemon.sh start datanode 3. ResourceManager守護進程管理 yarn-daemon.sh start resourcemanager 4. NodeManager守護進程管理 yarn-daemon.sh st…

ngx_log_init

定義在 src\core\ngx_log.c ngx_log_t * ngx_log_init(u_char *prefix, u_char *error_log) {u_char *p, *name;size_t nlen, plen;ngx_log.file &ngx_log_file;ngx_log.log_level NGX_LOG_NOTICE;if (error_log NULL) {error_log (u_char *) NGX_ERROR_LOG_PATH;}…

網絡華為HCIA+HCIP 策略路由,雙點雙向

目錄 路由策略&#xff0c;策略路由 策略路由優勢 策略路由分類 接口策略路由 雙點雙向 雙點雙向路由引入特點: 聯系 路由回灌和環路問題 路由策略&#xff0c;策略路由 路由策略:是對路由條目進行控制&#xff0c;通過控制路由條目影響報文的轉發路徑&#xff0c;即路…

水下成像機理分析

一般情況下, 水下環境泛指浸入到人工水體 (如水庫、人工湖等)或自然水體(如海洋、河流、湖 泊、含水層等)中的區域。在水下環境中所拍攝 的圖像由于普遍受到光照、波長、水中懸浮顆粒物 等因素的影響&#xff0c;導致生成的水下圖像出現模糊、退 化、偏色等現象&#xff0c;圖像…

MySQL的數據目錄以及日志

1.MySQL數據目錄 MySQL服務器的管理信息、業務數據、?志?件、磁盤緩沖?件默認存儲在數據?錄下.數據目錄保存了我們用戶的信息,以及我們創建的數據庫和表的數據.維護了日志文件等.mysqld主要操作的就是我們的數據目錄. 如何查看數據目錄: ll /var/lib/mysql#ll 是查看指令 …

論文閱讀:Dual Anchor Graph Fuzzy Clustering for Multiview Data

論文地址:Dual Anchor Graph Fuzzy Clustering for Multiview Data | IEEE Journals & Magazine | IEEE Xplore 代碼地址&#xff1a;https://github.com/BBKing49/DAG_FC 摘要 多視角錨圖聚類近年來成為一個重要的研究領域&#xff0c;催生了多個高效的方法。然而&#…

32f4,串口1,usart.c.h2025

usart.c #include "sys.h" #include "usart.h" #include "led.h" // #include "stdlib.h" #include "stdarg.h" #include "stdio.h" //加入以下代碼,支持printf函數,而不需要選擇use MicroLIB #if 1#pragma…

C語言:一組位操作宏

解析協議時&#xff0c;取得位域的值是一種常見操作&#xff0c;這些宏可以輔助我們工作。 /* ** 將x的第n位置1 ** ** x 0x00000000 ** BIT_SET(x, 7) 0x00000080 */ #define BIT_SET(x, n) ((x) | (1 << (n)))/* ** 將x的第n位置為0 ** ** x 0x00000080 ** …

記一個使用BigDecimal所有類型變為整數的問題

場景 通過 Excel 導入數據&#xff0c;數據中包含金額。數據庫類型 decimal(18, 6) 問題 Excel 導入后所有的金額列都被四舍五入。經過測試&#xff0c;只有數據有整數時所有數據才會被四舍五入&#xff0c;全部為浮點類型沒有問題。 解決 強制設置小數位數 // RoundingM…

nodejs、socket.io、express + 實時線上聊天系統(自用筆記)

留個鏈接給自己參考用&#xff1a; socket.io官方文檔&#xff1a;介紹 | Socket.IO nodejs基礎語法&#xff1a;大前端技能講解&#xff1a;NodeJS、Npm、Es6、Webpack_nodejs webpack-CSDN博客 socket.io教學&#xff1a;半小時學會socket.io【中英字幕】Learn Socket.Io …

配置網絡編輯器

網絡斷開的原因 1.由于網絡未連接的情況 解決方法 方法1&#xff1a;檢查網卡配置 cd /etc/syscongfig/network_scripts vi ifcfg_ens31 方法2&#xff1a;打開虛擬機編輯--- 虛擬網絡編輯器 查看ip地址是否在可用的網段范圍內 修改后重啟網絡 systemctl restart netwo…