<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      分詞器模型

      中文分詞是NLP中一個獨特且富有挑戰性的任務,因為中文文本沒有像英文空格那樣的天然詞語邊界。

      現代分詞器模型(尤其是基于Transformer的模型如BERT、GPT等使用的中文分詞器)主要采用子詞分詞算法,但其處理方式與英文有顯著不同。

      特性傳統中文分詞器 (如Jieba, HanLP)現代模型分詞器 (如BERT的分詞器)
      目標 將文本切分成語言學意義上的詞。 將文本切分成對模型訓練最有效的單元。
      輸出 詞的序列。[“我”, “喜歡”, “讀書”] 子詞/字符的序列。[“我”, “喜”, “歡”, “讀”, “書”] 或 [“我”, “喜歡”, “讀”, “書”]
      歧義處理 需要復雜的算法(如HMM、CRF)來解決分詞歧義(如“乒乓球拍賣完了”)。 將問題拋給模型。模型在預訓練過程中通過上下文自行學習消歧。
      與模型關系 獨立于下游的NLP模型,是預處理步驟。 深度集成,是模型的一部分,分詞方式與模型架構共同設計。

       

      主流的中文分詞器(如BERT、ERNIE等使用的)并不像傳統中文分詞器那樣先進行“詞”的切分,而是將句子切分成更小的、更靈活的單元。主要有兩種策略:

      1. 字符級分詞

      這是最簡單直接的方法。

      • 做法:將每個漢字或標點符號視為一個獨立的Token。

      • 示例:

        • 文本: "我喜歡讀書"

        • 分詞結果: [“我”, “喜”, “歡”, “讀”, “書”]

      • 優點:

        • 非常簡單,無需復雜的分詞算法。

        • 詞匯表很小(幾千個常用漢字就足以覆蓋絕大多數文本)。

        • 完全避免了分詞歧義問題。

      • 缺點:

        • 序列長度會很長。

        • 模型需要從零學習詞語和短語的語義,增加了學習負擔。例如,模型需要自行理解“喜歡”是一個整體,而不是“喜”和“歡”的簡單相加。

      • 使用模型:很多早期的中文BERT模型(如Google官方發布的bert-base-chinese)就采用這種方式。

      2. 子詞分詞(主要是WordPiece)

      這是目前更主流、效果更好的方法。它結合了字符級和詞級的優點。

      • 做法:

        1. 首先,它會有一個通過大量中文語料訓練得到的詞匯表。這個詞匯表中不僅包含常用漢字,也包含常見的詞語和詞綴。

        2. 對于一個句子,它首先嘗試匹配最長的、在詞匯表中存在的單元。如果找不到,就把詞拆分成更小的子詞,直到所有部分都在詞匯表中。

      • 示例:

        • 詞匯表包含詞語:

          • 文本: "人工智能很強大"

          • 分詞結果: [“人工”, “##智能”, “很”, “強大”]

          • 說明: “人工智能”被拆成了“人工”和“##智能”,其中##表示這是一個詞的后續部分。“強大”作為一個整體詞存在于詞匯表中。

        • 詞匯表不包含詞語:

          • 文本: "韮菜盒子"

          • 分詞結果: [“韮”, “##菜”, “盒”, “##子”]

          • 說明: “韮菜”可能不在詞匯表里,所以被拆成“韮”和“##菜”。“盒子”被拆成“盒”和“##子”,這是一種常見的子詞組合。

      • 優點:

        • 平衡了詞匯表大小和語義:常見詞保持完整,生僻詞或新詞可以拆解。

        • 更好的泛化能力:模型能通過“##子”理解“盒子”、“鞋子”、“孩子”等有共同詞綴的詞。

        • 效率更高:序列長度比純字符級短。

      • 使用模型:很多后續優化的中文模型(如ERNIE, RoBERTa-wwm-ext)都采用了這種更智能的子詞分詞。

       

      BERT(Bidirectional Encoder Representations from Transformers)分詞器是 BERT 模型預處理的核心組件,其主要作用是將原始文本轉換為模型可理解的 token 序列。以下從輸入、輸出、模型結構及處理流程四個方面詳細敘述:

      一、輸入

      BERT 分詞器的輸入是原始自然語言文本,可以是單句、句子對(如問答中的問題和上下文),或段落文本。
      • 對于單句輸入:直接輸入單個字符串(如 “我愛自然語言處理”)。
      • 對于句子對輸入:輸入兩個字符串(如(“What is BERT?”,“It is a language model.”))。

      二、輸出

      分詞器的輸出是經過處理的token 序列及輔助信息,具體包括:
      1. input_ids:將 token 映射為整數索引的序列(模型輸入的核心)。
      2. token_type_ids:用于區分句子對中不同句子的標記(單句時全為 0,句子對時第一句為 0、第二句為 1)。
      3. attention_mask:用于標記有效 token(1 表示有效,0 表示填充的 padding token)。
      4. tokens(可選):分詞后的原始 token 列表(如 ['[CLS]', ' 我 ', ' 愛 ', ' 自然 ', ' 語言 ', ' 處理 ', '[SEP]'])。

      三、模型結構

      BERT 分詞器采用WordPiece 分詞算法,其核心結構包括:
      1. 基礎分詞器(Basic Tokenizer):
        • 負責預處理:將文本按標點、空格分割為 “詞片段(word pieces)”,處理大小寫(統一轉為小寫)、去除重音符號等。
        • 例如,英文中 “don't” 會被拆分為 “do” 和 “n't”,中文則按字符初步分割(因中文無空格)。
      2. WordPiece 分詞器:
        • 基于預定義的詞表(vocab.txt),將基礎分詞器的輸出進一步拆分為 “子詞(subword)”,規則是 “盡可能保留完整詞,無法匹配時拆分為更小單位”。
        • 詞表包含:基礎詞、子詞(以 “##” 前綴表示非詞首的子詞,如 “##ing”)、特殊符號(如[CLS][SEP][PAD][UNK])。

      四、處理流程

      以句子對(“我愛 NLP”,“它是一個模型”)為例,詳細流程如下:
      1. 文本預處理(基礎分詞器):
        • 轉換大小寫(中文無此步)、去除特殊符號,將句子按字符 / 空格分割為初始片段。
        • 示例:第一句分割為 ["我", "愛", "NLP"],第二句分割為 ["它", "是", "一", "個", "模", "型"]。
      2. WordPiece 子詞拆分:
        • 對每個初始片段,查詢詞表,若存在則保留,否則遞歸拆分為子詞,直到匹配或拆分為單個字符(若仍不匹配則標記為[UNK])。
        • 示例:“NLP” 在詞表中存在,直接保留;中文詞匯通常按單字拆分(因 BERT 中文詞表以單字為主)。
      3. 添加特殊符號:
        • 在序列開頭添加[CLS](用于分類任務的聚合特征)。
        • 在句子對之間及序列末尾添加[SEP](分隔句子)。
        • 處理后序列:[CLS] 我 愛 NLP [SEP] 它 是 一 個 模 型 [SEP]
      4. 生成輔助信息:
        • input_ids:將每個 token 映射為詞表中的整數(如[CLS]→101[SEP]→102,“我”→2769 等)。
        • token_type_ids:[CLS]到第一個[SEP]為 0(第一句),之后為 1(第二句),即[0,0,0,0,0,1,1,1,1,1,1,1]
        • attention_mask:若序列長度不足模型最大長度(如 128),用[PAD]填充,對應位置 mask 為 0,其他為 1。
      5. 輸出結果:
        • 最終輸出 input_ids、token_type_ids、attention_mask,作為 BERT 模型的輸入。

      BERT 分詞器通過 “基礎分詞 + WordPiece 子詞拆分” 實現對文本的細粒度處理,既緩解了未登錄詞(OOV)問題,又保留了詞的語義完整性,同時通過特殊符號和輔助信息適配模型的雙向編碼需求,是 BERT 模型性能的重要保障。

      image

       

      BERT 詞匯表中每個詞(token)對應的向量

      BERT 詞匯表中每個詞(token)對應的向量(即詞嵌入,Word Embedding)并非固定的預定義向量,而是通過模型訓練動態學習得到的,其生成過程與 BERT 的預訓練任務緊密關聯。具體來說,可分為以下幾個關鍵環節:

      1. 詞匯表與初始向量的初始化

      BERT 的詞匯表(vocab.txt)包含約 30k 個 token(不同版本可能略有差異,如基礎版 30522 個),涵蓋子詞、特殊符號([CLS][SEP]等)和常見詞。在模型訓練開始前,每個 token 會被隨機分配一個初始向量(維度與 BERT 的隱藏層維度一致,如基礎版為 768 維)。這些初始向量是隨機生成的(通常服從正態分布),不攜帶任何語義信息,僅作為訓練的起點。

      2. 詞嵌入的動態學習過程

      BERT 的詞嵌入是在預訓練過程中通過反向傳播不斷更新的,其學習目標與模型的預訓練任務直接相關。BERT 的核心預訓練任務包括:
      • 掩碼語言模型(MLM):隨機掩蓋輸入序列中的部分 token(如 15% 的 token),讓模型預測被掩蓋的 token。
      • 下一句預測(NSP):判斷兩個句子是否為連續的上下文。
      在訓練過程中,模型通過以下方式優化詞嵌入:
      • 對于 MLM 任務,當模型預測被掩蓋的 token 時,其輸出會與真實 token 的嵌入進行比對(通過交叉熵損失計算誤差),誤差會反向傳播到詞嵌入層,更新對應 token 的向量。
      • 對于 NSP 任務,模型通過[CLS] token 的向量進行分類,其誤差同樣會影響所有 token 的嵌入更新(因為[CLS]的向量依賴于整個序列的編碼結果)。
      通過海量文本(如 Wikipedia 和 BookCorpus)的預訓練,詞嵌入會逐漸捕捉到 token 的語義信息:
      • 語義相近的 token(如 “貓” 和 “狗”)的向量會在高維空間中距離更近。
      • 子詞的向量會攜帶其在完整詞中的語義貢獻(如 “##ing” 的向量與動詞的進行時態相關)。

      3. 詞嵌入的最終形態

      預訓練結束后,詞匯表中每個 token 的向量被固定下來,成為模型權重的一部分。這些向量的特點是:
      • 上下文無關的基礎向量:BERT 的詞嵌入層輸出的是 “基礎向量”,但最終輸入 Transformer 編碼器的是 “基礎向量 + 段嵌入 + 位置嵌入” 的總和(段嵌入區分句子對,位置嵌入編碼 token 的位置信息)。
      • 動態適配語境:盡管基礎向量是固定的,但 Transformer 編碼器會通過自注意力機制對其進行動態調整,最終輸出的是上下文相關的向量(即 BERT 的核心能力)。但詞匯表中存儲的仍是預訓練得到的基礎向量。

       

      MLM網絡結構詳細分解

      1. 輸入表示 (Input Representation)

      輸入是一個經過處理的句子(或一對句子),其中部分Token被特殊處理。

      • 原始Token: [CLS] 我 愛 自然 語言 處理 [SEP]

      • MLM處理后的Token(如圖):

        • 隨機選擇15%的Token作為待預測候選。

        • 在這15%中:

          • 80%的概率替換為 [MASK]:例如 “愛” -> [MASK]

          • 10%的概率替換為隨機Token:例如 “語言” -> “蘋果” (但此例中我們仍展示為更常見的[MASK])

          • 10%的概率保持不變:例如 “語言” -> “語言” (但此例中我們仍展示為更常見的[MASK])

        • 最終輸入模型的是: [CLS] 我 [MASK] 自然 [MASK] 處理 [SEP]

      每個Token的輸入表示由三部分相加構成:

      • Token Embeddings: 詞嵌入,[MASK] 有自己對應的嵌入向量。

      • Segment Embeddings: 句子分段嵌入,用于區分兩個句子。

      • Position Embeddings: 位置嵌入,表示每個Token在序列中的順序。

      2. BERT主干網絡 (Backbone Network)

      • 結構: 一個多層的(例如12層或24層)Transformer編碼器堆疊而成。

      • 核心機制: 每一層都包含一個多頭自注意力機制和一個前饋神經網絡。

      • 功能: 通過自注意力機制,每個位置的Token都能與序列中的所有其他Token進行交互,從而生成一個上下文感知的編碼向量。

      • 輸入輸出:

        • 輸入: 序列的嵌入表示 (batch_size, sequence_length, hidden_size)

        • 輸出: 經過深層Transformer編碼后的序列表示,形狀與輸入相同。圖中的 [MASK] 位置對應的輸出向量,已經包含了來自全局上下文的信息,用于預測原始詞。

      3. MLM輸出層 (MLM Head)

      這是MLM任務特有的部分,它只應用于被Mask的位置(或其候選位置)。

      • 輸入: BERT最后一層輸出的、對應被Mask位置的上下文向量(例如,圖中“愛”和“語言”位置對應的輸出向量 T_[MASK]1 和 T_[MASK]2)。

      • 結構:

        1. 一個線性層: 通常是一個前饋網絡,使用GELU激活函數。這一步的作用是進行特征變換和降維(有時)。

        2. Layer Normalization: 對輸出進行標準化,穩定訓練過程。

        3. 輸出權重矩陣: 這是最關鍵的一步。使用BERT輸入嵌入矩陣 W_embedding 的轉置 作為輸出層的權重矩陣。

          • 動機: 這被稱為 權重綁定,可以減少模型參數,并被認為能使輸入和輸出空間保持一致,提升模型性能。

      • 輸出: 一個大小為 vocab_size(例如30522)的概率分布。通過Softmax函數計算,表示該被Mask位置是詞匯表中每個詞的可能性。

        • 對于第一個 [MASK],模型會輸出一個分布,其中 “愛” 的概率應該最高。

        • 對于第二個 [MASK],會輸出另一個分布,其中 “語言” 的概率應該最高。

      4. 損失計算 (Loss Calculation)

      • 計算方式: 使用交叉熵損失。

      • 范圍: 僅計算被Mask的那些位置的損失。圖中未被Mask的位置(如“我”、“自然”、“處理”等)的輸出不參與MLM的損失計算。

      • 目標: 通過優化這個損失,BERT學會了如何根據上下文來預測被遮蓋的詞語,從而深入理解語言的內在規律。


      訓練模式 vs. 推理模式的重要區別

        • 訓練: 如上所述,模型可以同時看到多個被 [MASK] 的Token,并并行地預測它們。因為訓練時我們有真實標簽,計算損失不需要依賴上一個預測結果。

        • 推理: 標準的BERT本身并不直接用于像傳統語言模型那樣逐詞生成文本。如果需要用MLM方式進行預測,通常做法是:

          1. 每次只Mask一個Token(或少量Token)。

          2. 讓模型預測這個Token。

          3. 用預測出的詞替換掉 [MASK],再預測下一個。
            但這種方式效率很低。所以BERT通常用于完形填空(一次預測一個Mask)或作為特征提取器,而不是自回歸文本生成。

      posted @ 2025-10-22 17:55  wangssd  閱讀(16)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 97在线视频人妻无码| 91精品国产免费人成网站| 亚洲av无码成人精品区一区| 97精品久久久大香线焦| 亚洲中文字幕日产无码成人片| 国产一区二区三区色噜噜| 无码国产偷倩在线播放| 日本深夜福利在线观看| 免费大片黄国产在线观看| 龙胜| 久久国产精品99久久蜜臀| 国产首页一区二区不卡| 久久精品亚洲中文无东京热| 免费看黄色亚洲一区久久| 亚洲欧美日韩在线码 | 国产成人无码区免费内射一片色欲| 乱码午夜-极品国产内射| 亚洲区综合中文字幕日日| 久久精品国产热久久精品国产亚洲| 国产日韩精品中文字幕| 中文字幕在线无码一区二区三区| 窝窝午夜色视频国产精品破| 国产不卡一区二区在线| 欧美激欧美啪啪片| 亚洲AV日韩AV高清在线观看| 最新国产精品中文字幕| 国产精品美女免费无遮挡| 亚洲成人动漫在线| 中文字幕人妻中文AV不卡专区| 线观看的国产成人av天堂| 亚洲中文久久久精品无码| 国产精品久久久久久福利| 成人亚洲av免费在线| 内射极品少妇xxxxxhd| 亚洲av第一区二区三区| 欧美和黑人xxxx猛交视频| 自拍亚洲一区欧美另类| 久久国内精品自在自线91| 亚洲色拍拍噜噜噜最新网站| 男女一边摸一边做爽爽| 99在线 | 亚洲|