iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0
佛心分享-SideProject30

打造台語發音檢測系統:可憐大四生的專題實錄系列 第 11

Day 11 揪出錯誤後呢?模型訓練終於有進展

  • 分享至 

  • xImage
  •  

前幾天把前面的錯誤揪出來之後,模型終於開始有比較明顯的進展。今天終於要來整理我的模型訓練紀錄啦。

先介紹兩個名詞 base modelpretrained model

Pretrained model 是我在進行微調前用的模型。 Base model 是 pretrained model 微調前的 model,有點像 pre-pretrained model。

我的 pretrained model 在前面幾篇有提過了。先來介紹 base model。

Base model — wav2vec2-large-xls-r-300m

Meta 在 2021 年發表的跨語言語音表示模型,建立在 wav2vec 2.0 架構上,共有約 3 億個參數。

它最大的特色之一是跨語言。XLS-R 使用來自 128 種語言、約 43.6 萬小時的未標註語音資料進行自監督預訓練,讓模型不需要每一種語言都從零開始學習,而是先從大量不同語言的語音中學習通用的語音表示。

另一個優點是不需要大量人工標註資料才能進行預訓練。XLS-R 使用 wav2vec 2.0 的自監督學習方式,先從沒有文字標籤的語音中學習語音特徵,之後再透過 Fine-tuning 將模型應用到語音辨識、語音翻譯或語音分類等下游任務。

此外,XLS-R 在論文中的多項語音任務上都展現了良好的跨語言能力。在語音辨識實驗中,相較於當時的既有方法,XLS-R 在 BABEL、Multilingual LibriSpeech、Common Voice 與 VoxPopuli 等資料集上都有明顯的錯誤率改善。

Pretrained model — wav2vec2-large-xls-r-300m-tsm-asr-v6

這是由 Eleanor M. Lin 針對台語進行微調的 Wav2Vec2 模型。她在 Columbia College 就讀 Linguistics。她的研究主要探討如何利用免費、公開的資料與模型來建立語言技術,最終開發出一套台語到英語的語音翻譯系統。

ASR 的訓練資料共有 10,949 筆,總長度約 9.57 小時,其中 69.4% 的語音資料來自 Common Voice,其餘資料則來自 TAT、SuiSiann 和 Taiwanese Southern Min Corpus D。

她選擇台羅作為 ASR 的輸出格式,是因為台羅是教育部推廣的台語羅馬字系統,而且相較於漢字,台羅能直接表現台語中具有區辨性的語音資訊,例如聲調、清濁與送氣。

最終,她透過模型錯誤分析指出,錯誤很大一部分來自台羅的連字號位置錯誤,以及鼻音、鼻化與聲調等問題,因此不能只用 WER 判斷模型的實際轉寫能力。

我目前就是在 Pretrained model 上使用教育部字典進行微調。

摸索期 v1–v6

前期我叫他摸索期,機器學習先備知識幾乎等於零。這個慘狀,大家從前面幾篇就應該看得到了。

我用目前建立的 239 筆沒經過訓練的 mini 驗證集測出了結果。

mini 驗證集分布

驗證集詞彙長度以二字為主,這個分布看起來滿有問題的。但是字典裡的資料很多,我前期完全不知道要保留什麼,就直接拿去訓練了。 但是在未來呢,我可能會找一個非字典的測試集來測。一想到,我就開始擔心了。就算有了清洗資料的流程,但是人工審查的流程真的很累阿。

然後就開始一路亂試。

下面是我的訓練設定,是我讓 AI 直接給出一個比較保守的設定來的。(畢竟沒經驗)

batch_size = 16
gradient_accumulation = 2
learning_rate = 1e-4
warmup_steps = 200
epochs = 4
seed = default
版本 訓練路徑 訓練資料 mini 驗證集結果
v1 pretrained → v1 按照台語音節分類的 5,014 筆單音節 3.77%
v2 v1 → v2 沒有變調的多音節資料 18,137 筆 未驗證
v3 v1 → v3 變調錯誤版本1的多音節資料 9,792 筆 7.95%
v4 v1 → v4 變調錯誤版本2的多音節資料 9,792 筆 60.25%
v5 v1 → v5 變調錯誤版本3的多音節資料 9,792 筆 58.16%
v6 v1 → v6 變調錯誤版本4的多音節資料 9,784 筆 77.82%

接下來我就拿 v1 當基礎,開始測不同的訓練資料。

v2 因為放在雲端上,所以沒有測。

陣痛期 v7–v16

這段時間大概是對機器學習處於一個半生不熟的階段了。(其實現在也還是半斤八兩)

至少我為了保護我的電腦,開始只敢拿幾百筆的資料去訓練了。

而且我的模型也開始有分支路線了。

只不過這個人工修正資料的過程,真的還是很苦啊。

模型分支路線圖

版本 訓練路徑 訓練資料 mini 驗證集結果
v7 v6 → v7 仍有些微錯誤的多音節資料 1,642 筆 76.57%
v8 v1 → v8 仍有少許錯誤的多音節資料 334 筆 8.79%
v9 v7 → v9 仍有少許錯誤的多音節資料 334 筆 79.50%
v10 v7 → v10 仍有少許錯誤的多音節資料 200 筆 81.59%
v11 v9 → v11 仍有少許錯誤的多音節資料 200 筆 80.33%
v12 v10 → v12 來自 5,014 單音節裡的聲調,每個聲調各 50 個,共 350 個 81.17%
v13 v12 → v13 仍有少許錯誤的多音節資料 334 筆 81.17%
v14 v6 → v14 目前沒有發現標註錯誤的多音節資料 200 筆 81.59%
v15 v14 → v15 目前沒有發現標註錯誤的多音節資料 333 筆 80.33%
v16 v13 → v16 來自 5,014 單音節裡的聲調,每個聲調各 50 個,共 350 個 82.85%

中間我也是做過不少資料分析,但是成效不太滿意,之後有機會再講。

不過我也是對未來下一步有了初步想法。

但首先我要把我目前的版本修理乾淨。現在版本到 v32 了,我留到明天講到底怎麼生出這麼多版本了。

還要慢慢找出合適的新非字典資料集當測試集,只要過完資料清洗的痛苦難關。還要真的把整理準確度大幅提升。

希望我的下一步計畫真的能實現。

今天先講到這裡,我是微微,明天見。


上一篇
Day 10 圖解大破程:Hugging Face 模型在訓練前資料被怎麼處理
系列文
打造台語發音檢測系統:可憐大四生的專題實錄11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言