2010年2月20日 星期六

Classification (ML) 和學英文都需要大量的訓練資料

最近聽 TED 練英文發覺有趣的事。TED上的題材五花八門,講者來自世界各地,讓我提早體會到不同發音的問題。若只在單家補習班練英文,大概無法體會到世界各地的腔調。體會歸體會,這樣聽下去能否一次通殺是另一個問題。

在練習聽力的同時,我同時觀察自己怎麼理解這些發音的。這實在是很奇妙的過程,有些音明明和標準發音差了十萬八千里,但是一連串的字彙連起來,卻能立即明白整句在說什麼 (比方 "William Kamkwamba: How I harnessed the wind" );有些字彙即使講得再標準,沒有相關知識也聽不懂 (即使是母語也是如此)。看來重點是前後文和背景知識。

以往學英文時總強調要多背單字,我試過幾次都失敗,我實在不是背書的料,但我深信有需求自然會用。回顧過去失敗的經驗,我發覺用不到的字背再多次也記不起來。更何況,既然 (幾乎) 用不到,背它們做什麼?投資報酬率太低了。反過來說,常用的字一再出現,有時不用查單字也能依上下文推論出它的意思。而且還會模糊地學會它在不同情況的差異,但要仔細地描述它是什麼意思,卻又說不上來。

這樣的學習過程中,我發覺若要增加我認識的字彙,我得聽讀更多內容,才能交差地認得這些單字。像我昨天讀 "2 China Schools Said to Be Tied to Online Attacks" 學到一些單字,其中一個單字是 specialist,意思是專家。今天重聽 "Ken Robinson says schools kill creativity" 又聽到 specialist,我自然就記得了。但若這幾天或幾週內沒再碰到 specialist,我可能會忘記。我得每天花上一小時以上的時間訓練英文能力,才能持續增長我的字彙。

想到這裡,忽然發現這和 classification 認得特徵 (feature) 的方式相似。提供大量的訓練資料和它們對應的分類,learning model 自然會從訓練資料中找到重覆的特徵,分辨出那些特徵和某些分類有關或是反相關。在同樣數量的訓練資料中,若訓練資料的內容相似、特徵類型集中,model 可以更精確地掌握特徵,但也會因此認得較少特徵;反過來說,若想認得更多特徵,得讓內容發散,但很可能學錯特徵。若想同時學得又準又多,只好提供更多訓練資料。

對應回英文字彙也是如此。若我想習得準確且多量的英文字彙,只好持續投入大量時間接觸英文。雖說是理所當然的事,想通後才更甘心地花時間練英文。話說回來,不同的 learning model 用不同方式掌握分類和特徵的關係。強的 model 可以用較少的資料學得又準又多。人腦這麼強大,應當能更有效率地學英文。雖說持續投入時間接觸英文是必要的,也要不斷摸索如何學得更有效率。目前的想法是當我能用自己的話用上這些字彙時,就能記牢它們。所以要試著用這些字造句,或直接重述一遍原文。很土法煉鋼的作法,總比過去坐在那唉唉叫都不動來得好。

附帶一提,人類學習語文時會不斷用上背景知識和前後文,classification 卻缺少這兩項東西,使得這類解法侷限在特定領域,被歸類到 applied AI。我還無法想像如何將人類的背景知識 (或稱常識?) 編入電腦,但至少待電腦的運算能力和記憶體更大之後 (這是可預見的發展),電腦可以認得更廣的前後文 (現今的作法最多只看三個字彙左右),配合更大量的訓練資料,也許會有出乎意料的進展。就像電腦在解決下棋之類的益智遊戲時,並無法如人類用較少的模式掌握情況,但能用較簡單的方式配合大量運算達到更好的效果。

2 則留言:

  1. 我覺得聽母語不是英文的人講英文也比較容易懂,就算是有口音。可能是用字上的差別吧

    回覆刪除
  2. 除用字簡單外, 還有說話速度較慢。我有聽過母語為英文但很好懂的, 也聽過非英文講得不好懂的。感覺上和是否為母語關聯不大。

    回覆刪除

在 Fedora 下裝 id-utils

Fedora 似乎因為執行檔撞名,而沒有提供 id-utils 的套件 ,但這是使用 gj 的必要套件,只好自己編。從官網抓好 tarball ,解開來編譯 (./configure && make)就是了。 但編譯後會遇到錯誤: ./stdio.h:10...