[0:04:39] 然後,我開始錄字了,可以了,要嗎?OK,好,我們這堂課是九點開始上課了,所以我們就開始。上次其實忘記講就是說,因為是三節課連續,本來研究所課我大概會以中間休息一段時間,不過因為好像有蠻多同學有Xclass的關係,所以我還是照著原來的這個課堂的時間去下課這樣子。好,那我們今天就進行這個介紹的部分,就是簡介。那這理論上應該是在上禮拜要帶一些,不過這部分會主要涵蓋在整個自然語言處理,以前在上這門課的時候會講的大概maybe一半的東西這樣子。那我們大概用三小時的時間把它濃縮這樣子。那主要也是說有些細節大概你大概知道,或是聽過那些名詞。但是你現在的做法可能不太需要這樣子去做這樣子,不過你大概要知道 [0:06:12] 這些東西,而且有些技術可能現在你在用大型語言模型,你要做在地的model去做IG的時候,你可能也會用到這樣子。對,我上次也忘記提,這門課的設計的概念比較像是自然語言處理跟Deep Learning,就是說在Deep Learning時代的自然語言處理該怎麼做,而不是就是在唇講自然語言處理。所以它其實會跳直接就跳進Deep Learning的部分。那大家也可以看一下那個Stanford的這樣的一個課程。那其實NLP這個跟Deep Learning結合的時候,他們的設計課程的內容這樣子。對,這的確對電子學院來講,很多課程其實在AI在Deep Learning的年代,其實都會需要有點這樣的調整。尤其是一些研究所的課。他大概可能一半內容都要換掉這樣子。這是我們上次有提到的第一個Week 1的投影片的Outline,那我就skip掉。這上次有提到這個進程。就是以前的做法跟現在做法的差別。那再提示一下就是說這個這個後面的這樣的概念比較像是說 [0:07:44] 我們我們擁有了自己的資料越來越多的時候,所以我們就希望能夠用訓練的方式用用AI,用機器學習訓練的方式,讓模型去理解這些東西,而不是我們告訴他一些規則告訴他一些我們人類看得懂的一些知識的表示。所以其實這個圖的一些一個很大差別就是說這以前的東西其實做出來,even他是有統計有計算過的東西但是其實這些人都比較容易理解但是越來越到後面的資料量越大,模型越來越大,參數越來越大做出來的關係越來越複雜的時候其實人其實不太能夠理解比如說你能夠打開這個BERT的模型,每一層的Transformer的參數你知道它是什麼嗎?你能你能夠把Wall Embedding的每一個字的向量的數字拿出來解釋嗎?其實是不太行的就是當然也有類似的研究但是那部分的一些量化的表示其實比較是讓機器去看已經不是人可以很容易去理解說他這個向量為什麼長這個樣子當然現在我們也是有希望能夠去看懂說這個這麼大的幾個B列的參數到底哪些是代表什麼不過這個不太容易 [0:09:15] 那今天主要會以介紹的角度就是有點像讓大家看看以前的做法然後看看一些歷史一些故事所以比較不見得會牽扯到太多的技術的細節好那我想這個什麼是NLP?那基本上就是把Human Language然後用這個電腦的運算的角度因為我們要所謂的要處理它要要去整個去計算要去讓用Computational的方式去理解這件事情那當然我們會希望能夠從以前的語言學的這種Linguistic的角度來切入然後靠著一些更更多的大量的運算能力的導入能夠讓這些應用能夠做得更落地這樣子我想這個大概大家都可以理解好那我先舉一個例子啊比如說以前在在這個做剛剛你說的NLP那時候最紅的應用可能是這個做翻譯呀或是做這個資訊檢索那大概就像搜尋引信那資訊檢索主要有點像你要管理這個大量的文字的資料比如說你現在拿到這個這個新聞的資料那你拿到這些資料你要做什麼事其實非常多事情 [0:10:45] 以NLP的角度你可能要做縮影因為你沒辦法把它存在一個檔案然後要的時候再去找你一定要知道說這個每一篇新聞裡面到底包含哪些字這樣你才能以後快速的找到你要的東西那當然我們也希望對我們的來源資料做一些分類呀或者是說我能夠找到現在發生什麼事情今天發生什麼是重要的事情那或者是說這些東西他的影響力是什麼這個新聞發佈出去他造成什麼樣影響因為現在這個也快要選舉了所以這個這樣的東西其實大家都很想做但是其實這邊通常都會加入所謂的這種Social的這些分析這樣子當然現在可能摘要這件事情可能大家不覺得他是一個重要功能因為好像Trivial但是以前在做摘要就一篇很大文章你不用三句話告訴我這樣子或是說幫我畫重點這個以前做Summarization還是非常重要大概在五年前還是一個重要題目OK那這個資料跟資料之間的相關性或是說我們常常想知道說這個上面的Sentiment情緒的表達到底是什麼這個情緒的表達有各式各樣的應用尤其是有時候會做到醫學領域 [0:12:15] 希望能夠網路上看到一些是不是有些人的言論已經有一些特殊情緒的表達像之前就有人去研究那個犯罪者他在做他的這個犯罪之前他其實有PO一些文章那些文章其實如果能夠事先能夠detect出來的時候其實是能夠有機會能夠去遏止一些犯罪的行為所以這種東西的研究其實一直都還有只是說現在可能他就是靠著AI靠著大語言模型的導入能夠讓他更厲害這樣子那這邊最後一項是這個非監督式的訓練語料庫這個我們可能以後再講大語言模型訓練的時候你就會發現說這個是一個非常重要的部分就是說以前大家學機器學習當然就說我們一定要有訓練資料訓練資料通常指的是監督式訓練學習的資料就是你一定要有input跟output所以你才能做所謂的supervised training但是呢其實大家做過機器學就知道那個成本相當高而且當你的訓練資料有一些雜訊的時候其他效果就會受到影響但是在大語言模型他怎麼靠著這種 [0:13:45] 我不太可能去標註東西啊所以他一定是用一些非監督式的方式讓整個模型先了解所謂的人類的知識人類的語料那這件事情呢其實也跟前陣子一個臺大英語系的教授說這個學英語啊這個不能背不能背文法背文法就是學不好這有點這道理有點相信就是背文法有點像是說你一定要能去標註一些訓練資料用聽的就對了你不管你聽得懂聽不懂你用聽的聽久你就會這個語言沒有人告訴你那句話是什麼意思沒有人告訴你那個主持動詞授詞是什麼但是你聽久了就是一個非監督式的學習他就可以告訴你這個語言就是會是這個樣子應付第一個新的語要進來有時候新的說法出來之後你那個字典就out of that那另外說你跨語要怎麼辦那另外一個就是說同樣的說法他其實有可能很多種寫法說那個字典要怎麼涵蓋這樣所懂這其實問題都OK我我們現在就是想用那我們用大語言模型來做這個老師都在講就的東西我們用新的東西新的方法做看看比如說我就叫Cloud做這件事情就就叫他做你去收集今天的這些股市的資料外資買超 [0:15:15] 買賣資料超前大前10名然後剛好去抓他的新聞然後整理報表給我這件事情是非常容易的對現在AI來講雖然他他會一直去網路上找資料然後會會要你授權一些東西啊他能夠去SS不過基本上他都做的做得到那如果你不太清楚他做什麼事你可以你可以控制他的action然後一步一步的去做這樣子那你可以瞭解他他做這些東西的過程以前在沒有大語言模型的時候我們必須自己做我們必須自己把這些流程串起來然後這流程的只要有一個步驟做不好後面幾乎都免談這樣子那這些事情的現在的AI大概沒有問題他去抓資料幫你整理幫你彙整幫你排序找到重要的東西整理報告這件事情他現在其實做得非常好其實這要跑出來的結果那我是沒有去驗證他的結果好壞啦不過這種比較數字型的而且有有資料可以reference他的錯誤機率是蠻低的這樣子好那只是說現在有人就會做這些那我們還去管他怎麼做嗎有時候的確你要知道他怎麼做你才知道說哪邊他可能會出問題那我我用 [0:16:45] 這個整理一下叫AI幫我畫一個圖就是以前的做法其實大概就這個流程這個流程其實現階段你大概要先了解一下才知道說原來大語言模型其實幫我做掉哪些部分比如說像他剛才去抓所謂的這個買賣超差距的前10名他一定要去網路上的網頁啊去Cloud Information然後他還要知道這些買超賣超的值在哪裡單單這些事情以前以前就不太容易做如果你不是人告訴他去抓這些東西讓他自己去判斷這個過程其實就很難那當然他排序完資料排序完之後他就知道我死家公司拿去抓新聞所以當一個新聞進來之後呢我們要做什麼事其實你可能需要以前啦以前的做法是你需要做段子做token action做詞性的tagging會說這個新聞裡面的到底主持在哪裡這個形容詞是什麼這樣子然後呢你還需要做所謂的NER就是我要切出臺積電這三個字這三個字我不能把它變成這個積電這兩個字因為積電其實頻率也很高所以我必須把臺積電切出來這樣子那切出來之後呢我要算一些權重啊就這邊文章裡面講了這麼多字哪些字才是重要 [0:18:16] 其實這個盜墓這這前三個步驟其實在以前做在這個應該說在bert還沒出來之前甚至在bert出來的後面的一兩年其實都還是很重要還是很重要所以大概你可以想像大概在四年前這三個步驟其實還是一個標準的動作SOP後面就比較像是應用就說好吧那這個文章我算完全重之後我能不能做一些應用我做摘要那摘要這邊其實有兩個兩個這邊沒有改到就是一般我們會摘要會有所謂的畫重點式的摘要跟跟這個這個所謂的Uptractive Summary就是他會濃縮他會以三句話來表示這樣子那這樣的摘要其實以前有些方法但是現在大語言模型做得非常好那你也可以做情緒分析啊然後你也可以做所謂的topic modeling就是說好吧今天跟臺積電有關的新聞怎麼分成兩大群一個可能是他的財務報表另外一個可能是他要去哪裡建廠的事情你就可以把新聞分成分群然後去看說這兩群所造成的影響是什麼然後再做一些一些BI的系統出來這樣子我想這件事情其實以前的SOP就是這樣然後每一個步驟其實都有一些 [0:19:47] 研究的議題可以切入但是你要想像這些東西他就是一條龍這樣子所以其中有一個步驟沒做好後面就很爛比如說你這個新聞根本沒把公式都tag好時間也沒tag出來該有的東西你沒有把它標示出來的時候後面幾乎沒有用所以以前就是一步一步把好好的一個一個模組做好然後串起來這樣子但是你現在可以想像大語言模型進來之後其實他就是把中間的這些整個做掉了包含其中的理解的部分包含深層的部分他就一次做掉當然這中間為什麼這麼厲害這個我們以後看一看你可能還是不會知道為什麼這麼厲害因為其實不太容易瞭解但是你可以想像如果我現在叫LM做這些事情其實我自己人工要做這麼多的事情但這麼多事情當然不見得是最佳解但是是我們人類理解的應該是要這樣做但是大語言模型為什麼靠著幾十個b連的參數他就有辦法把這件事情一次做到為中間的過程是什麼你可以好好思考說這個原來他只是運氣好還是真的有他的道理 [0:21:17] 好那這件事情當然你會覺得說好像詞性就詞性嘛反正都有一些工具好像也不會太難那我們就來解析一下每個步驟他其實可能會遇到一些困難那當然說這個我把這個這個文章切成句子然後找到一些POS tagging的工具去切然後可以切到一些子句啊然後去算一些就是該有的關鍵字這些工具套一套好像人去看一看非常容易但是其實電腦來做這件事情挺複雜的挺複雜因為你會發現我這邊列一個詞性表這詞性表就是說以我們學英語來講我們知道所謂動詞主詞名詞受詞這些東西看起來想想大概不會超過10種但是真的你要去細分他所代表的意義或者是說他能夠影響其他字的範圍非常多這個詞性非常多所以如果你以前用過所謂的CKIP或是或是結巴這種斷字或是算Pos tagging的工具的時候你會發現他怎麼出來一堆這到底是不是動詞就動詞為什麼還有這麼多種不一這樣子OK好那個當然是說我們可以做得更細那效果就會更好以前的以前的做法會是這樣所以你就知道以前我們從語言學角度來切入的時候 [0:22:50] 我們都要care這些東西那其實就算找到詞性的時候其實有很多的問題一直是困擾的做NLP的人那我這邊就舉幾個例子第一個是這個這個磁這叫詞性起義就是這個有不同的解釋的方式就是WSA這樣的一個問題那我常舉這個例子WATCH FOR KIDS這三個字是你把WATCH當然是名詞還是動詞其他的解釋是不太一樣的這是一個名詞的解釋這是一個動詞的解釋那你說那我是不是要看前後文這三個字如果在文章的前後文我才能知道說這個原來WATCH FOR KIDS這三個字其實在講什麼沒錯做語言處理其實你重點就是要看所有的東西你看到前後文所以為什麼大語言模型的context window這麼重要那現在的這些LM尤其是雲端上的LM它的context window其實都相當的大相當大就是足夠把你一篇paper丟進去或是把你一篇報告丟進去都有辦法所以它可以看的全部的東西它可以全部東西一起算一些attention所以它比較能比較不會出錯但是大語言模型其實在做context很大的時候其實它有其他的缺陷 [0:24:20] 以後我們有機會再講那這個三個字如果你現在問AI其實他他不知道在幹什麼他其實已經不太懂我的問題不過這個其實他就是我問得不夠好所以如果我用你要用這個角度詞性奇異的角度來解釋這三個字的時候他就知道了就像一個學生知道說老師在講這個考古題我知道他其實應該有讀過相關的文獻就是知道說這個你要從磁力奇異的角度來看這件事情所以他就分析的非常透徹這樣子好那當然這個例子我覺得他是應該有看過相關的解釋文獻並不是他真正去reasoning出來自己去trump soul去推出來的不過他其實是有機會可以做這件事情就是在他沒有看過相關解釋的情況底下他是有辦法做這件事情所以這是AI可以做的事那這個前後文的模糊度其實也會造成你的問題的理解我通常會舉這個例子不過這例子其實有點久了一般我們以前在做聊天機前面的文獻的時候其實以前都是規則式的方式就是Lure Bass就是這個問什麼我就去FAQ找 [0:25:51] 然後找到相對應的答案再回答這樣子那像這個是在Siri上的一個例子就是這個我並沒有問他任何天氣的事情但是他知道傘傘其實是跟下雨有關下雨就跟天氣有關那你在手機上問要不要帶傘其實就是一個天氣的一個查詢所以他就把這個歸類在這樣的情境底下他就找到對應的資訊OK所以這件事情你的你以前如果在大語言模型還沒出來之前你能夠做到這個地步就非常厲害就是你能夠瞭解使用者的意圖你能知道他想要幹什麼所以這個這個必須要知道在什麼地方什麼應用做什麼事情他所要表達是什麼所以這個會差很多當然你在手機上問這個大概不外乎就是天氣或是說他他大概也只有天氣可以查OK但是呢其實你可以發現他其實是也是規則只是他的規則是比較聰明一點所以比如說我就亂問就是明天學生的口是有點擔心我沒有問他任何情形我也沒告訴他我現在要幹嘛但是呢他其實是看到明天他覺得這是一個時間所以他就去我的行事曆裡面去找跟時間有關的任務應該要做什麼事情所以他其實也是相當複雜他也是說我要找到情境 [0:27:21] 然後跟時間有關情境的應該對應到什麼樣的的Tour use做這件事情所以他會說你的schedule裡面沒有這件事情他甚至不太管後面是什麼所以這個是當然我舉這個例子對思域是不太公平因為這例子很久了這個搞不好是五年前舉的例子不過以前設計的應用的精神就是這樣就是幾乎是一個字典比對他聰明一點有稍微在情境的這種融入這樣子但是還是這個掛一漏腕就是你把一條規則做好隨便問就掛掉所以在大語言模型還沒出來之前的所有這種線上的AI curve或是聊天機器人通常大家都不太愛用因為因為就問個兩三句就就不就覺得他沒有什麼用這樣子OK那這個應該我有舉過這個例子就是說閱讀理解那閱讀理解其實等我們第一個第二個作業做完之後也許你們可以回過頭來自己做這件事情就是我們來做做閱讀理解這件事你把這個東西轉成項鍊四個選項轉成項鍊然後跟原來這個文章的項鍊去算算相似度說用你你不要用大語言模型你用這種比較 [0:28:51] embedding的方式直接去算這種語意相似度看你能不能找到正確答案那重點你要能夠解釋的話這個這個就要做生成的部分那又是不一樣的所以這件事情其實是以你把大語言模型的角色拿掉之後你會發現你根本做不出來這件事情好那大家可能覺得說那詞性剛才列出來的詞性很多都好像是很複雜而且是中文比較會遇到問題但是英文其實也是很難做那像這一句話這句話是個英文非常簡簡潔但是省略掉很多一些這個let或是什麼東西的這些詞所以很難去知道他原來到底想表達什麼所以以前英文老師都告訴我們啊這個學生你們開始學英語的時候了不要一開始就把英文寫得非常簡單因為別人會看不懂在說什麼所以盡量複雜所謂盡量複雜你就發現底下這些句子都變得比較長但是比較知道他在說什麼而且非常精確這樣子那為什麼會有這麼多句子呢其實我就把它丟到Google的翻譯翻成中文然後再用中文再把它翻回英文它就會產生不同的翻譯或是說 [0:30:21] 我把這句英文翻成比如說什麼烏克蘭語再把烏克蘭語翻回英文它就會產生多樣性的翻譯這個動作這個動作這個以前在做NLP的人非常常用因為用這種方式我就可以產生如果這個翻譯是功能是好的我就可以產生同樣的意義但是說法不同的句子對做NLP來講這個就是一個多樣性的語調不過這樣的做法你會發現我把它翻成中文就發現好像意思都不太一樣那你說當然就是要看這個這個Telescope到底是形容前面的I還是形容這個man這個不同的形容形容的方式呢它其實就是代表不同的東西所以就是去算它的詞性做這個Dependence Tree出來這就是那個那個詞性的Tree做出來之後我就知道它形容誰的這樣子然後就覺得這個應該很容易但是你要想像做這個Tree呢就跟你要去理解這個句子的意思其實是同樣的道理它一樣不知道你在講什麼所以它只能跟根據它的語料它的計算的方式統計的Base或者是一些語言學的Base做出這個Tree所以這個Tree呢不唯一啊 [0:31:51] 不唯一就是它換一個統計的基底之後做出來的Tree就不一樣所以會有不同的表示啊就是這個長出來的Tree長得不一樣它其實就不一樣這是AI幫我畫其實這個人應該站在山上但是我不知道這一張就把它放在下面的這樣子就是山上那個人拿著望遠鏡還是我在看他拿著望遠鏡是不一樣這個這兩個字有點小這兩個所形成的這個Passing Tree或者是磁跟磁之間的Dependency就不一樣那你說那是不是這個Passing的工具不好也不是因為你的句子就是長這個樣子不管什麼Pass這幾種說法都不能說錯OK那你可以想像我們一般讀到文章或是一般的對話來講其實就都充斥著這種模糊啊這個你到底想表達什麼但是你跟人對話你不會跟他說那你這個你這個字是形容什麼你可不可以再講一下不太會這樣我們就會根據更多的前後文去理解這件事情但是也許有些理解會是錯誤的好那這個就是前面那個例子我把它拉到後面就是其實有一些是Tagging的問題NER的Tagging就是除了詞性之外 [0:33:21] 你還要知道這是一個財經新聞所以我要知道這個Media Tag是一個公式名稱是一個組織名稱然後日期名稱相當重要然後裡面一些相關的數字就是說整篇文章我可以只看這三個東西我就知道他想要表達的概念跟他所要論述或是說我要把它做分類分群我就知道應該放在哪裡但是我不用看其他字我不用看其他字因為其他字可能就在描述細節或是一些Redundant的東西那我除了Tag這些之外說老師這很簡單啊我只要設計規則這個這個跟Compiler一樣把這些路寫出來之後我就知道了但是你怎麼知道這些公司名稱是什麼你如果有去判斷這些東西那他的邦德率也是一個問題這以前這個老師的實驗室有兩位博士生都靠著做這樣的題目然後博士學位所以你就知道以前我們人類的有點以現在角度來看真的是井底之蛙這樣在這樣的問題裡面搞那麼久不過在那個年代這的確是一個很難的問題以前我們就只有這種VirusDM啊或是這種機率模型的CRF的方式來做這件事情但這個通常都需要一點supervised training data [0:34:51] 才能做得好好那另外這些還有所謂的推理的問題就是他看懂意識之後他到底能不能理解他到底能不能推理這是一個做做這個語言讓這個華語文能力測驗的題目啦那我不知道這個這個其實可能要找一下不過我覺得好像不可考我覺得考外國人看這種中文字有點有點那個很故意這樣子就這件事情其實你要怎麼去pass找到這兩個答案那當然你會說那我就把passing tree做出來然後好好的去看他的子句的部分這件事情其實LM做得很好這是LM告訴我的推理的過程所以他會去推理但是我覺得他其實應該是有看過考古題所以還可以分析的這麼透徹這樣子所以他可以做出最後的推理的過程當然你現在你也可以自己重新設計然後你用類似叫他推理或是說你給他一些Chain of thought的Rule然後你就他有辦法做這件事情OK然後還有情境理解同樣的一句話當然他必須要知道前後文在描述什麼東西他的概念就不一樣這件事情其實以前我們都做不好所以我們都只能拿來當成笑話來說這個同樣的句子其實概念不同這樣子 [0:36:27] 網路上你都可以找到這些例子有非常多種同樣的同樣的敘述但是在講不同的事情這是AI的解釋所以他知道這個是有一點諷刺的位置但他知道情境他知道不同的情境所以你可以想像在大語言模型裡面他對冬天的理解跟夏天的理解不是隻有兩個不同的Token他後面還跟隨著當初他透過Pretrend Data學到的冬天相關的詞彙什麼東西跟冬天會一起出現的的詞他就把這樣的情境濃縮在冬天這個概念裡面所以他知道這兩個情境其實他所代表的含義是很大差別所以這個句子在不同情境下的解釋是會完全不同當然這個這樣解釋是很合理但是當你回去當我們講完Transform講完這個他怎麼Pretrend之後就覺得說難道做做褐漏字就能夠理解冬天跟夏天的情境嗎這個也是蠻神奇的那最後這個這是另外做語音的都會講這個例子就是叫記記記記記那這五個字呢其實我這樣一念你大概知道什麼意思就是這個這其實是 [0:37:57] 來自於這位語言大師這個當然網路上也有人一些說法說這個不可考好像不見得是來自於他但是大部分人都覺得是從他的一個一個例子來就是他當時就是因為有一些人希望把中文改成比較拉丁拼音的方法因為中文實在太難學了所以用拉丁的拼音的做法來改這個把文字改成那個樣子但是他就說當我們要描述一段一段敘述這一段敘述如果都是這樣如果你沒有文字你只用拼音的方式你根本不知道這句話在講什麼這個當然是很很特意的去設計這樣的句子但是這樣的句子其實也可以想像當我要做語音識別或是說甚至文言文的理解其實也非常困難但是大語言模型知道這些字都有所謂的生母育母這些東西所以他不是隻是文字本身Token的東西他有所謂的唸的東西他的概念也進去了當然他可以理解這件事情呢並不是他真的知道這個念音而是他有讀過相關的語料在解釋生母育母這些東西哪些字是生母哪些字是育母所以他反而能夠推敲出來他並不是真正知道這個念法是這樣 [0:39:28] 以我目前的解釋會是這個樣子這是叫他再重做一個例子他其實做得出來他可以做這樣的推演他可以做得出來拿來給解釋那這件事情其實我剛才有一個解釋其實通常我們都想知道說大語言模型為什麼會知道這件事情當他回答這樣的時候我們會覺得說他好像知道什麼叫生母什麼叫育母其實不盡然不盡然就像以前LM剛出來的時候就有人用問他因為你知道大語言模型前面我還沒有問過他會有所謂的這個Token Relation所以我就問他說這個Strawberry就是英文這個Strawberry這個字呢裡面有幾個R裡面有幾個字母R這樣子那如果以大語言模型的設計概念他理論上應該不懂的這個字裡面的每個字母的拼法但是他可以回答出Strawberry這個字裡面有三個R是不是Strawberry你可以自己算算看他可以自己回去再推這樣子那當你去理解前面的LM或是BERT這種東西他裡面前面那一端的Token Relation的步驟之後你就覺得他怎麼會知道裡面有幾個R那其實有很大的原因有很大的可能性是來自於 [0:40:58] 有很多的資料本來就會把Strawberry這個字一個一個字母的寫出來就是他在訓練資料或是他在在人類的文章中有看過說原來Strawberry就是第一個字母是S然後第二個字母是T這樣一路的寫下去所以他就有這樣的東西啊所以你可以想像他其實是看過非常多的東西然後把他記錄下來那這是另外的例子那我們再回過頭來看一下說以前的應用就是你會覺得說那以前這個能力這麼弱那以前都在幹什麼以前能夠做什麼事情我們先來看這個Siri跟小平以前這一塊其實是相當難做就是一個像對話機器人一樣這個是微軟當初做的一個一個對話機器其實那個年代差不多十年前相當的紅因為非常的人性化他可以跟你對話可以跟你那個這個當初是被選為這個這個大學生的最佳的讀書伴侶因為他會統計那個使用的頻率就是在晚上10點到半夜2點這之間使用率非常高就是一堆的大學生就會跟他聊天就聊一些功課上啊一些生活上啊甚至還會跟他說這個跟女朋友吵架啊那怎麼辦啊 [0:42:28] 小平的人設是一個女生啊他會跟他安慰幹嘛幹嘛幹嘛那以前就可以做這麼厲害他的做法是什麼他其實就靠著大量的網路上的對話語料去訓練出來的至於細節可能有很多的是模型有很多的是字典的方式去做那以前他鬧了非常多新聞啊因為我這邊沒有擺喔他以前因為被他哄嘛然後就有記者去直接跟他對談就跟他說一些話這樣那就問他說你這你這輩子最最期待的事情是什麼然後小平就回答活著這樣子就聽起來毛骨悚然我看記者趕快把電腦關掉這樣子就是當然當然這個猜測都是說因為網路上有這樣的Q跟A的的對應啊所以他就這樣回復但是他是不是能他是不是有自己思考能力或是他回答出來這個答案真的很符合他是一個對話機器人的角色這個相當厲害我10年前的一個作品當然當然以前以前要做出那樣東西你可以想像現在用大語言模型來做非常容易直接包起來不叫ABI就做做好了這樣子所以這個10年人類的變化技術變化其實相當高那以前我們在NLB會做相當多這樣的比如說把資料抓來然後去分析啊比如說做 [0:43:58] 假新聞偵測啊情緒的偵測啊翻譯啊或者是說在醫療上的建議啊或是股票這種東西摘要這種東西或者說這個Deep Web Mining就是你們這個接下來中秋節這個國慶假日要去搶高鐵票就是寫一個程式去去抓抓那個買票的東西啊其實就就是用Deep Web Mining探討的東西啊就是你怎麼靠著這種Clouding的技術去了解這家公司後面的資料庫是什麼這樣子你可以自動下一堆查詢啊然後去把整個資料庫撈出來這樣子其實有很多各式各樣的應用像我剛才前面舉到那個新聞的切取就是公司啊然後一些數字啊這些東西就是屬於資訊擷取的範疇那這些東西也許你現在覺得那用大語言模型其實這個非常容易啊這個隨便就可以做出來這樣子沒錯因為我們不太需要像以前從段字詞性然後做NER NEN這個步驟做下來所以其實整個模型做掉很多事情那以前這些應用啊大家可以想像一下看看就像看去博物館看看以前這些人都在幹什麼這樣子以前我們會有很多資料來源來自於Twitter那我們會做Tax Mining這是一個很有趣的應用啊就去預測颱風的走勢啊 [0:45:29] 你怎麼預測颱風的走勢就去看Twitter誰在發布說現在目前外面風很大雨開始下很大就知道說颱風中心目前到他那邊了爆風圈已經到他那邊了這樣子所以他就根據Twitter的這些敘述描述這些颱風的敘述然後呢去因為Twitter有位置跟時間他就把這個做出來這樣子那這個紅色是代表那是真正颱風的路徑那這個兩條綠色跟紫色是不同的方法發現至少方向一致至少方向一致因為不會有人在海上發Twitter所以他這邊沒辦法做但是陸地上的軌跡其實還蠻合的這樣子就說當你有了這些文章資料之後其實要做什麼事情是你的想像你其實現在也可以叫大語言模型來做這一個研究這樣子雖然現在你可能Twitter可能比較少你可能要來自不同的資料來源可能要IG或是shred這樣子OK那,這件事情其實你就要去判斷情境在描述風雨的情境這樣子那這件事情臺灣那時候也有人繼續做但是臺灣因為區域範圍小然後資料來源少而且臺灣其實Twitter用的人比較不多在Twitter那時候有另外一個叫 [0:47:00] 叫撲浪在座我聽過撲浪可能都有用過但是後來就消失了這樣子那那就是這種東西用的人少的時候你其實能夠做到的事情就就少很多這樣子不過其實你現在可以來自不同的Data Source你都可以做類似這樣很有趣的應用那這是他們做這個蓋洛普調查蓋洛普調查現在這怎麼做我可能不太清楚但以前是真的去打電話用電話直接這個訪談這樣子不過現在你可以想像然後那個那個機器人的語音說要做什麼問卷調查大概就立刻掛掉這樣子不過他們用Twitter的Sentiment跟蓋洛普調查做個align發現其實是蠻可以蠻可以align在一起的這樣子不過這個這可能在臺灣不太準因為臺灣很多這種韓類投票的情況這樣子就是你不喜歡這個但是你還是會投給他這樣子這是一篇這樣看不出什麼啦不過他就是這是一篇發表在Science的paper他就是去分析所有網路上的文章然後根據他的發佈的時間從禮拜一到禮拜天然後工作什麼時間然後看他的情緒他就是情緒他得到一個結論其實大家都知道結論星期一大家心情都不太好因為要上班這樣子 [0:48:34] 那這篇paper他做的這樣你會覺得到底幹了什麼事這麼簡單的事情只是說他因為他資料來源很多他有去分析不同的人種吧就是那他paper是這樣寫白種人黃種人這種不同的人種不同的區域啊大家都同樣的這個所謂的這個Boundary Blue的這種狀況這樣那這是股票的分析啊這個這個搞不好現在還有這個app不過現在可能更厲害了就是靠著情緒靠著財報做股票的分析跟建議這樣子那這是也是用Twitter然後去分析所謂的流感當他們做流感就是去去看說這個跟剛才那個颱風很像就是你可以去放他說這個他的症狀啊他的症狀是什麼接近的重感冒症狀是多少然後標出這些這樣子因為會做這個其實是當初Google就有用他們的一些Query的資料去去做一些趨勢Google有一個叫Google Trend我不知道現在這個服務還在不在就是你可以看到現在大家查詢的趨勢然後就發現在一個時間點一個區域大家在查的一些跟感冒有關跟流感有關的字變多了然後就是推論說那邊已經有 [0:50:05] 這個這個,這個流感的的這個已經開始大量的發生了那那這件事情的公告比真的這個疾病管制局公告的還要早我就是用統計的方式可以做到更更快速的部分那這是網路的評論啊就是這個這個他也是用Twitter啊也是用日本的食物的那就是大家對食物的好評這樣子這是一個也是這樣情緒的Mining那這是一個也蠻早的是臉書剛開始有個研究啊就是在這個更久了大概14 15年PNS是一個很好期刊他就去研究臉書的使用者的按讚就是那個那個Sounds of那個那個動作他的表示就是說你這個人對這件事情同意那你代表代表是什麼所以他就用這些資料呢就可以做這幾種的分類這幾種分類甚至他可以知道你的你的宗教傾向啊你的性別傾向這個gender猜的蠻準他就可以預測就可以根據你在按讚的過程中他就可以知道你是你有這些東西那這些東西當然你覺得我有大量的資料 [0:51:37] 因為臉書有些人還是會挺蠻多仔細的資料我就可以做一個Supervised Training我就可以去勸這樣的東西但是今天發現在這種Big Data情況底下這些東西其實可以做的蠻準其實很多都到八成以上當然可能有些東西還蠻好猜的但是有些東西其實你會嚇到說這個也都猜得出來所以當年我看完這邊Paper的時候我就去網路上隨便按讚就是破壞我的個人資料這樣子就讓他搞不懂我這個人這樣子所以這個反正走過必留下痕跡啊所以很多的網路上的Tracing你都要知道你已經把你的資料送出去了那當然我們現在很希望做到很多Medical的部分就是做這種可以輔助醫生做這個病例的判斷啊或者是診斷的一些預測或者是看看醫生寫的有沒有錯誤啊這個是一些Medical不過這個可能有更細的資料我再放在這邊因為這是以前的一個比賽資料那以前我們會希望拿到這個東西然後就要電腦去判斷說這個裡面你要怎麼檢索我有一堆這個以前的病例啊以前的醫組東西然後我現在要做一個病人來問我這些事情你要找相關的病患出來這樣子 [0:53:09] 這樣的以前這樣的研究其實最難的地方就是這些專有名詞這些症狀這些醫學上名詞他其實有很多種寫法然後你要怎麼對得起來這樣子這一切都在搞這些事情但這些事情其實現在LM他對這種專有的醫學名字其實瞭解是蠻夠的好那其實你可以想像我們剛才從這邊講了講這麼多的應用其實都是一些做非結構化的資料管理的方式就是結構化的東西我們很好做因為我就知道這個column這個資料數字什麼意思但是非結構化的東西出來的時候他有各式各樣的解釋這個我可以這樣解釋可以這樣解釋並不是說他沒切好而已是說他有千奇百怪的解釋那而且這個coverage又很大很多資料其實都是說非結構化所以當你要把非結構化資料去做到結構化資料能夠做的應用時候你就需要做這樣的nlp的一個process那這個其實也會面對到說你是做資料你可以想像這個是結構化資料這是非結構化資料那在結構化資料我們可以說我可以下C code問他說這個資料欄位是什麼這個班上這個這個住在臺北市然後怎麼樣 [0:54:39] 的人是哪些這樣子你就可以用C code的方式去查出這些東西但是如果是一個非結構化沒有建立這些metadata或是根本不瞭解裡面東西的時候你其實不太有這樣的action可以做所以你可能要處理或者說你可能要面對的應用是不太一樣的這張圖其實我之前有show過就是在Silibus有show過我們在做nlp的分析的結構是這樣的一個步驟從構制學語法語意這樣做下來那這是以前我們在做nlp分析的步驟所以你可以看到前面的這些PoStagging或是這些Passing Tree就是在Syntax Label的東西那你可以想像當這些Deep Learning出來之後我們還是這樣的一個process在做這件事情只是每一塊每一個步驟他其實做的事情方法都跟以前不一樣所以這些大家都把它重做一遍NER也把它重做一遍這些Relational Extraction也把它做一遍這樣子甚至Tagging也重做一遍但是後來做的時候發現LM其實不太需要Tagging所以有很多研究都繼續在做像我自己也有在做斷字在兩年前也有發表一個斷字的用這種LM的概念來做做斷字的那接下來我就很快秀一下說這個每個步驟 [0:56:11] 其實在Deep Learning之後其實就很快的其實LM的出來並不是最最讓研究學者感到很大差別其實在Deep Learning出來之後大家就突然如獲自保就覺得這個工具非常厲害所以我們就把所有的這樣的問題都用都用大型的NN再做一次這樣那時候其實還沒有所謂的Pretrained Language Model可能就是一個其實已經有但是可能是比較BERT或之前的東西但是並沒有像LM這麼厲害的東西但是我們有很大的NN的模型我們可以讓這些東西做得更好那比如說構制學構制學其實基本上就可以拆解這樣的東西以前我們會說啊那我們就學會所謂的PRE學會IN學會ABLE的概念那怎麼去學怎麼去學這些東西以前就是用統計的方式就是你前面看到或是後面看到ABLE它其實就是一個形容詞或者是什麼所以我們會去建所謂這種PrefixSurface這種這種的Table跟它的一些統計或是機率的關係來做這樣的事情那但是呢後來我們瞭解說那我就讓他學會說你就把它變成一塊向量然後去學 [0:57:41] 它的表示比如說前面加UN的他可能在學的過程最後這個這個字所表達的意思通常帶有所謂的負面或者是反向的意思的時候那我就學會了這個UN的表示應該是要怎麼做這個就就回應到我們剛才這份投影片的第一頁那個例子就是說直到後來我們雖然學會這裡面的數字而且很好用我把這個append進去的時候發現我就可以把這個字呢原來原來這個字的意思我加這個embedding之後它就變成反向的意思但是我都不知道我們不知道說這些數字為什麼可以讓它變成一個反向的概念基本上就是訓練出來就是用這樣的表示這樣的表示去組出來這個字的時候然後進去整個訓練所以就知道說為什麼為什麼NVIDIA的股價這麼高因為我們就需要大量的算力去算出這些東西好我想我們就先休息一下我們10分鐘後再回來這樣子就先到這邊下課 [1:08:43] 好那個就繼續上課說實在我今天講的東西都非常的簡略啦而且非常快主要並不是要探討裡面的細節而是一個看看故事這樣以前人做過這些事這樣子不然老實說像每一個這樣的東西比如說這一頁的東西它其實就是一片paper的技術那當然有興趣的你可以自己找一下這個paper做看一下裡面的不過這都是還蠻久以前的就是deep learning出來之後大家怎麼導入這種大量一點的的表示然後去學會這個語彙的東西那這個其實也是做這個研究的的痛苦因為我剛才講那個Stanford那門課其實就是就是NLP然後後面加deep learning這樣子那我們這個我覺得志工系很多尤其是研究所課應該都需要做一點這樣的變化就是你原來主題在在AI或是在deep learning的情況之下該重視什麼這樣子對啊這個其實是我覺得志工系蠻可憐的地方就是這樣像如果是如果是中文系可能就不需要去說什麼紅羅夢在深度學習下的的分析與探討那個可能也許啊也許有另外一種角度來分析但是 [1:10:13] 課程內容的本質是不太會變的但是我大概有一半甚至三分之二的教材是要一直被update這樣子好那之前也有同學有問說這門課如果他沒有學過機器學習或是AI相關課會不會很吃力以寫作業來講我是覺得可能還好啦但是以這種的課程內容理解來講可能你沒有學過機器學習或是AI你可能體會到部分就跟有學過的或是有做過Training的人可能感受會不太一樣這個這個大概是這樣因為這個因為這邊都沒有講到細節怎麼Train這個東西但是如果你有學過機器學習或是這種Deep Learning的學生你可能看到這個圖你就知道他們在幹什麼事情這樣子好不過我想就這邊就比較像是一個Overview的介紹了那Syntax的部分其實詞性的部分以前的做法比較是Linguistic的做法然後再加一些統計的方式那當然這些東西都可以用類成金網路然後用訓練的方式再重做這樣子那像底下這個紅色框起來是原來的句子 [1:11:45] 這個Tree的結構就是它的這個詞性所分析出來這個語法的結構這構成了Tree這樣子它有了Tree的結構我就比較知道說這個從最Top的Root下來我應該怎麼切會有兩塊的重點然後那裡面這個名詞片語的形容的方式是什麼以前都必須要這樣去理解句子的構造去理解才能知道它從Syntax再長出所謂的Semantics不過這個有時候需要人工一些介入所以當時其實中研院有蠻多在做這一塊的語料那這個大家可以去看一下不過Anyway這個其實挺複雜挺多的這樣子那因為現在的整個技術的翻新所以這樣的語料集它通常都會在前面的訓練資料就看過就用掉了所以你大概不太會再去Reference這樣的東西是還是有機會的只是說這個現在比較少用那這樣做法其實以前老實說幾乎到一個瓶頸雖然Google出來之後有一些用統計大量資料的方式統計做法又可以往上推了一把但是一直到這個10年前大概那個那個等級大概又停在那裡大概有太多的是 [1:13:15] 不是靠著大量資料就可以做的那這邊講幾個就是說怎麼去去Identify是這個名詞片語的角色這個名詞片語它到底是是形容哪個東西的或它整個句子所代表的意思那整個句子的這種concept這個抽象的概念到底是什麼這個其實如果你有做過摘要就知道說一句話一句話的概念大概知道兩句話三句話這三句話如果把它變成一個概念這件事情就越來越複雜然後另外當然一些混淆很久這種同義字同義字怎麼做就一個字有相同的意思不同的意思或是不同的字有相同的意思這樣子OK那那這個我們其實當然還是based on所謂的語法學但是但是這個東西其實你換一個語言其實概念又不一樣這整個整個的解釋方式整個的分析不同語言學家就是會做不同的語言所以有時候當一個稀少資源的語言要做的時候其實不太容易因為比較少人研究的時候可以reference的東西就相對的少這樣子 [1:14:47] OK那從linguistic的角度的時候呢我們其實就不會去把一個文章試成是所謂的back of wordback of word後面會再提就是以前在做搜尋以前的時候會把一篇句子一個句子或是一篇文章當成一堆的字詞袋就是如果你聽過一個中文叫做詞袋就把一堆的詞放在一個袋子裡這樣子因為就把所有的語法所有的這種前後文的關係都把它打爛這樣子語法學就不會這樣做統計的比較會這樣做了但是那是基本的統計複雜一點其實你還是會有前後文的關係這樣子OK所以其實那時候的研究到後來大家都覺得說我們要去擷取出所謂的text的concept就是你這句話講的的意思到底是什麼而不是隻是靠著這個幾個字所構成的向量來表示這樣子當然你會說老師現在大語言模型不就是靠著字的embedding的向量來算嗎那重點就在於是說他那個字的embedding其實都把這些學進去不再只是單字上的方式而是所謂的前後文的concept都有embed在那個這個他的vector裡面好 [1:16:17] 這句話其實是是從Stanford的那個結錄出來的啦Stanford那個課程就是Crystal他的他其實是主講但是他其實後面的課程都是他學生在講就是說現在NLP其實是一個需要結合CSAI跟Linguistic語言學的一個重要的領域當然重點是把AI放進去就是你要完全的去Fully understanding跟怎麼去表示這個語言的意思其實是個困難的事情那當然他他下一個結論就是Perfect language understanding是AI complete當然這個詞並不是很formal去定義啊只是說他有去講這些事情然後通常大師講的就有道理這樣子而且因為Crystal是一個是一個蠻有名的他以前在做資訊檢索領域是一個幾乎就是他說了算這樣子而且他也非常厲害有很多系統這樣子如果如果大家有用過以前啦就是word2vec的時候或是用所謂的這個Grow Vector有一個做Wall Embedding的Grow Vector非常有名的這個Wall Embedding的一個做法就是他們實驗室做的這樣子當然他的他是非常厲害在 [1:17:48] IR領域在NLP領域非常厲害的一個對忘記了我擺一個照片在這裡這是我跟Crystal在2023年的中間是我學生啦對我不知道為什麼他跑到我們中間去所以把他臉遮掉我不知道沒有爭取他的同意這樣雖然我也沒爭取Crystal的同意OK不過他是一個很Friendly的一個人OK所以鼓勵大家念博士班就是常常可以出國這樣子可以見見這些大師的風采這樣子OK好那其實AI的加值之後我們就發現以前我們做這些應用了你說老師以前要做斷字啊做NE啊這些東西也是要做啦只是說手法換手法換在資料處理上手法換我們會用Wall-to-Vector這個就是我剛才講的Grow Vector就是史丹佛拉姆做的當然在後期一點的就會用到這AIRMOD可能可能大家有聽過後來其實也不太用了BERT就是這個一代一代宗師啊就是那個年代非常重要的大概在201920202021這三年所有做NLP的全部不是全部啦幾乎都是用BERT當成是一個大的核心的角色出發 [1:19:18] 那當然這些東西都可以在在這些NDR年上去去發揮這樣子他只是說中間我們會在嫁接一些模型有點像是說以前的應用比較是一個規則式的人工介入式的甚至字典的方式極少用訓練的但是後來我們就是還是覺得因為算力起來資料起來了我們就用Model Training的方式來做這件事情那但是用Model Training厲害歸厲害但是其實它可解釋性就很差雙方學生做出來說老師我這個效果起來那我說為什麼不知道這樣子反正就是模型的功勞這樣子就是這個模型可以把這個問題fit的相當的好但是並不代表你解決這個問題而是說他記住了以前的所有的資料這樣子不過這大概是一個抽象的概念的一個flow當然你現在現在可能也不用全部就是LM這樣子好那接下來我可能會花一個小時到Maybe今天就把時間花在這裡就是我們來看一下文字啊怎麼去做就是說我們現在先不要拿出厲害的武器不要用LM就是說以前用在做文字的時候會做怎麼樣的步驟怎麼去處理這樣子那 [1:20:48] 你可以想像以前NLP雖然翻譯很重要啊雖然這個好像做一個對話機器的很重要但是他的需求性跟他他所看的問題一直到所謂internet起來這個World Wide Web起來之後那個時候才被重視大概在1998 99的時候真的蓬勃發展起來之後大家覺得這一塊非常重要然後到2000年2000年大概可能各位剛出生吧就是那時候網路泡沫化什麼一大堆申請一個Domain Name也可以變成是一個股票非常高的公式這樣子那時候就一大堆因為那時候World Wide Web剛起來一大堆的網站網頁啊然後一大堆部落格那時候部落格非常紅然後呢Google也是在那個年代才一炮而紅慢慢取代掉Yahoo變成是一個網路的資訊的霸主這樣子那它的起家就是資訊檢索因為那時候的網路的資料實在太多了如何做一個有效的文字的Assets理解跟存取跟提供給有用的資訊給使用者就是他賣的東西所以那時候資訊檢索的問題就跟NLP的問題幾乎畫上等號了以前我們來看就是我怎麼在大量資料裡面找到我要的部分這樣子 [1:22:20] 所以以前處理文字很大眾都是在做資訊檢索那資訊檢索其實你可以想像如果現在給你一個一個billionsize的文章好幾好幾篇一個billion個數的文章然後叫你去做一個快速的解鎖快速的解鎖系統這樣子那你怎麼做你說老師我把它丟到大語言模型這樣做個RAG這樣子不錯如果你可以想到RAG他其實資訊檢索他這些技術就是都會用到我們現在在做RAG的問題上以前資訊學者會遇到問題現在你在做RAG也會遇到同樣的問題當然手法可能會不太一樣但是以前在做資訊學者會一開始會遇到就是資料量很大你可以想像這個20年前那個電腦的等級是什麼那個根本沒有這麼大的的運算力跟memory其實都沒有這麼沒有那麼快速怎麼有效率去asset這麼大量的東西所以以前講究的是說我怎麼快速的把資料鑑索引找到我要的然後跟呈現出使用者的的需求的的答案這樣子所以通常我會需要做index如果你學過database你就知道說index相當重要如果我不做鎖引我那個大量資料根本找不到 [1:23:50] 那index就會牽扯到一堆資料解構的技巧如果你有一些概念就知道說鎖引相當重要我可以把一個暴力法搜尋的東西可以變成一個比較login的搜尋的方式另外一個重點是排序Google當初之所以有名ATOP有一個叫Patch rank就是不是看關鍵字而是看這個網頁被多少的人所asset被多少人放了連結他的網頁就相當的重要這樣子所以他有一個排序的方式可以排序的很好這樣子不過這個這些由於是排序都是比較像時代的眼淚這樣就是現在的技術雖然以前很紅但現在也不太會用到這樣子OK那以前其實Google還沒出來之前其實Yahoo那時候做什麼事情他其實是用人工的方式去分類就是把所有全世界的網頁呢用人工的方式整理出來政治類的運動類的經濟類然後細分很多category所以你現在也可以找到一個Open directory那裡面有一些分類其實就是源自於那樣的一個精神DMOZ那這樣的分類其實還蠻有效可以找到有用的東西但是這個資料量漲得太快了他沒有辦法做這樣一件事情 [1:25:21] 所以其實這也是後來Yahoo慢慢的消失的原因就是Google的東西大家越來越愛用所以很多東西只有第一名不會有第二名就這樣消失了這樣子Yahoo就慢慢的不見好那我們在做索引的時候呢我們會做這個名詞可能大家就記一下因為這個是博物館會出現的名字叫Inverted index就是中文叫什麼就是你可以看到就是反反字的索引他其實這個只是告訴你等下我們看一個圖你就知道什麼叫Inverted index就是說你要從大量的文章裡面去知道哪一個字在哪幾篇文章你要做一個這樣的索引這樣子就會做一個這樣的索引然後呢我們當時這個做這個索引會會有兩個名詞第一個是ton這個ton呢其實就是你可以想像就是一個字或是一個片語或是一個關鍵字有點像你現在用的一個Token的概念以前叫ton那以前有所謂的Vocabulary這個Vocabulary跟現在的Vocabulary其實意思是一樣只是以前會更去更去在意這件事情因為以前這是要人去見的以前這個字典我說這個我的錢不夠我們就做常用字就好3000個常用字 [1:26:51] 所以我的字典大小就是3000這樣子但是如果一般你英文要做的好大概是要到萬可能要做負文大概是3萬你的字典大小大概是3萬這個字典意思就是所有所有你會處理到的這些字或是表示或是片你就把它放進去這樣子那這個東西其實網路上有像Google當時都release一個data其實是n-gram的data就是各式各樣的一字詞二字詞三字詞四字詞更長的都有它所構成的這些但那個那個大小就不止3萬所以我們會有一個Vocabulary就是我現在要處理到的Vocabulary那這邊剛好我就對應到這個Vocabulary我們講一下我們現在大語言模型看到的Vocabulary意思是一樣就是LM在做Token來循環之後會建立他現在學的過程所看過的Token有哪些的Vocabulary你也會有一個Vocabulary那一般來講大語言模型大概就是在這個3萬到更多大概這麼多啦你不會再更大說老師我們現在錢很多更大一點不會而且不太需要那這邊大概有一些數字供大家參考其實連這個LM1跟LM2都有這樣的Size [1:28:21] 那就是說那為什麼不放大一點感覺越大越好啊其實沒有各有利弊小有小的好處大有大的好處這樣子那當然你如果這個模型的你公司Service你的算力夠你的Power夠你想Cover更多東西的確是大一點是比較有利的但是以後當我們再介紹Transformer之後你會知道說這個Vocabulary Size那個VR它會影響到參數量影響到你模型參數量所以他到時候的參數量其實會V跟一個你的Model的那個Dimension相乘所以那個是一個直接線性的關係所以這個越大你的Model要處理的東西就越多所以也不能無限制的擴大這樣子而且Vocabulary代表什麼Vocabulary就是說你到時候在Decode的時候你其實是要針對所有Vocabulary去看說我現在有三萬個Token我要知道每一個TokenDecode出來的Probability是多少因為你是矩陣相承一次出來所以你這個Vocabulary越大你就一次要算越多字的Probability那當然有利有弊啊不過這個大概是供大家參考一個數字 [1:29:51] 那這個大小跟我們當以前在做Index的時候概念有點像只是以前我們Index是在建的過程會漲慢慢漲有點像現在Tornazion在做BP的時候也是漲出來的這樣子這個就是我剛才講的是不見得越大越好在在RN裡面應該說有利有弊也不是說大得不好或大得很好這樣子好那我們先來看這個圖你比較知道什麼叫Import index這是你拿到的文章然後文章你就去Parsing你就去斷字然後斷字完之後比如說你就知道Computer這個字呢在第2片的第83個位置第3片第79個位置這樣子你就會有一個這樣的一個一個Bucket的List那這就是你的你可以說是你的致電那這樣的一個東西就是一個Invert index所謂Invert index就是說我從字在反索引到我的文章這叫Invert index其實你在Database做Index本身也有隱含的這個Invert index概念好所以你一篇一篇文章進來你就可以Parsed字然後呢Parsed完之後你就知道某個字出現在第幾篇第幾個字你就用那個Linux的把它串起來做下去這樣子 [1:31:23] 當然你會覺得這個好像很複雜其實現在也不會啊你叫你寄vibe coding叫AI幫你寫這個程式其實也蠻容易的這樣子而且這種程式他大概不太會出錯但是他會有一些效率上的問題如果你直接暴力這樣做從第一篇文章開始你可以想像這邊都空的這邊也空的就算你用vibe coding程式很好寫寫出來然後跑一下發現這個前一百篇非常快一百篇秒做完這個index做完但發現一千篇好像不是十倍的時間好像是一百倍的時間一萬篇幾乎跑不動跑不太動那你就問AI說為什麼會這樣那他就會給你唬爛一些東西這樣子沒有他可能會找到重點但是可能不是這麼或者是說他你就告訴他你要很快速或是說你要告訴他一些關鍵字你一定要用Hash因為你想像如果你這個這個東西是沒有一個快速解鎖的方式或是這個這個table沒有一個快速解鎖的方式我們剛才說我們的vocabulary size會多大三萬那你這個文章一進來你的字你切到一個字你要去這個三萬個一個list裡面做搜尋你會做搜尋為什麼要搜尋你要找到這個頭你要找到這個point的頭 [1:32:54] 你要搜尋有時候可能找到沒有沒有你就要create一個新的有時候你就要繼續穿下去這是link list的做法那這個搜尋其實是成本很高的一個字就要scan一個三萬長度的table一次這樣所以這邊一定要快速的縮影甚至你要用Hash的方式Constant time直接進來不然你會發現當你做到第兩萬篇文章的時候你的你的電腦幾乎跑不太動因為他就在不斷的在搜尋不斷的在搜尋這當然是一個處理這種大量資料會遇到問題的技巧那當然vibe coding他現在也許可以告訴你基本的做法但是你可能要給他更多的情境你要告訴他說我現在資料量很大這邊的搜尋的成本你可能要考慮一下為什麼你可以用什麼樣的方式甚至你直接告訴他這邊要怎麼做他可以幫你寫更好的程式那這樣來做下來之後呢我的所有的文章我就做出這一個index跟他所對應到這個位置所以使用者的query進來我就可以找到說比如說使用者查這個這個Security那我就知道他在第一篇出現這兩個位置第三篇出現這個位置我就可以把這些document給使用者說你要找的東西在這裡這樣子 [1:34:24] 當然你說老師那使用者如果輸入多個字呢那我就把這整個bucket整合一下排序一下看出現最多字的排在前面這樣子這是最簡單的一個搜尋引擎的做法這樣你就可以做一個非常simple而且是可以關鍵字比對的這樣的一個搜尋引擎這樣子所以他其實裡面有很多技術性的細節包含是說這個document id你大概不會覺得document id是一個很大的問題就是這個文章編號這邊是21呀3呀但是你真正要allocate多少的的size比如說一個byte兩個byte或是一個integer那你會發現說當我的文章如果是billion size的label幾十億個文幾十一篇文章我原來integer存不下去那我要用更長更長之後你會發現你這個中間的bucket非常的大而且很好資源所以這邊每每個都是一堆那個窮人家就是要這樣這邊要省一點那邊要摳一點你的系統才跑得起來當然現在也許不見得這麼在意這些事情但是以前很care這些小地方的壓縮這樣子OK那這樣的搜尋引擎做出來會有什麼問題 [1:35:54] 其實就是關鍵字比對就是找這個字它就出現在這個字它少了一個字少了一個字母或是一樣的意思它不見得找得到這是以前在做搜尋引擎比對的時候就有這樣的問題那你說老師不會啊Google現在沒有那麼笨他還會告訴我哪個字拼錯這樣子那個都是眼鏡一步一步眼鏡下來的以前最簡單的搜尋引擎就是找這個樣子只是當初大家的重點不是在這個字而是在我如果找到了有一篇一百篇文章都有這些字我要怎麼排序啊以前一開始的重點會在那個後面的排序但是後來大家想知道說我有一些意識一樣但是不是跟關鍵字一模一樣的字的時候該怎麼找到所以就不同樣的層面的問題所以這件事情就回到我前面就是你要你要從這個這個字呢Map到一個的一個字到Bucket去通常其實也都會有一堆的Hash當然HashHash的精神就是用空間換取時間這大概是以前你要做資訊檢索你前面就要做一段這樣的index的但這一塊呢現在有很多套件你只要把文章 [1:37:24] 餵給他他就幫你做好所有的縮印啊然後連搜尋你的介面都做好這樣子其實是不用自己做沒錯啦但是呢很多蠢事情都是要自己做過你才知道裡面的問題點在那裡好那這個我們再看一下一些以前會做的事情那文章進來我們要做所謂的Lesson就是第一個要做Tokenization這個Tokenization其實跟現在LM前面的Tokenization做的事其實是差不多啦但是以前我們講的是有點像做Segmentation做斷字的有點像是說把文章中的turn把它接取出來現在在LM前面那一段Tokenization也是這個意思沒錯但是可能現在大家對Token賦予比較大的意識但以前沒有就是turn就一大堆有意義的詞然後以前會做所謂的StemmingStemming就是詞詞幹那以前有一個很有名的叫Portal Argument這個大概從比較從Compiler的角度去找出詞的原型然後能夠找出說這個字的root的形態是什麼什麼叫root其實就是比如說docs [1:38:55] 加s之後它的root是什麼就是原來的dog沒有加s但是它的root其實不見得是一個存在的英文單字等一下我們有個例子我這邊沒有秀了就是它會把它變成一個特殊的所有的詞都會變成一個特殊的root但是特殊的root它其實不是一個有意義的英文字但是這樣的好處是什麼我可以把所有的變形變成歸宗成一個字這樣子Stemming它的原名叫Stem我蠻想說這個中文到底叫什麼這是Google翻譯我不知道為什麼他罵人這樣子他就直翻就是詞幹的意思其實是中文叫詞跟詞幹的意思就是我要回到我要回到這個root form這樣子那以前有個步驟很重要但是現在一點都不重要也不會去做以前會做一個叫做stop words就是stop words的中文可以叫做停用詞也不叫停用詞反正就是沒有意義的或是可以省略的詞那你如果搜尋英文stop words去網路上搜尋它會告訴你大概二三十個字可能是一些貫詞啊介系詞這些東西可以不需要被索引因為你不會去Google搜尋T-H-E你要叫Google給你什麼東西這樣那就一堆沒有意義的東西這樣子 [1:40:26] 就像這些貫詞啊介系詞啊這些東西那為什麼要做這一次因為以前以前空間記憶體很貴所以我這樣拿掉之後我當時在做這些索引啊我可以少掉百分之二十到三十的索引的空間當然你會說這二十到三十但是搞不好有一些很重要的東西被拿掉沒錯所以怎麼去拿這件事情也是當時的一個學問那TokenH呢以前其實沒什麼大的學問就是以前拿到的都是網頁所以你會做所謂的把HTML拿掉啊然後拿去一些不重要的啊然後去把它變成全部都是小型的寫的啊以前會做這樣的有點像去Uniform你的資料的形態但是老實說這樣的動作其實會跑掉很多的資訊或是說有很多資訊會模糊掉就是變得一樣但其他可能有些微的差別這樣子那這個以前Stemming這個Portal的概念其實就是把詞性的東西降低或是有一些很簡單的規則比如說我們把這個加ING的把它拿掉就變成圓形這樣子 [1:41:56] 那我們就可以把Fish跟Fisher變成同樣一個字FishFish呢就把它拿掉也變成Fish這樣子但是當這個釣竿這個磁你把ING拿掉之後呢這兩個FishLow就不是釣竿了就在意義上就不一樣這樣子所以Stemming的時候其實它也會有一些問題但是沒辦法因為記憶體不夠所以我還是把大家都變成一樣字會比較好做這樣子那如果大家有興趣可以去看一下這個Portal的Stemming Argue這個考古學家會去看一下這個演算法到底寫什麼如果你寫過Compiler你大概一看這個演算法就知道這是用Compiler的角度在看這個磁的圓形的作法那相對於Stemming還有一個叫做Lemmatization這個磁其實大家可能要稍微瞭解一下因為它還蠻有用的一樣是回到磁的圓形當然圓形會不太一樣它的圓形就是我這邊做個比較啦這是這是如果你在文章中看到這個Study然後變IES這個字呢如果照Stemming的做法它就是暴力把它變成磁根就把ES拿掉就變這個字所以我說Stemming常常會產生一堆不是英文字的字但是但是所有跟Study長出來的字我都可以靠著一些規則 [1:43:29] 把它變成這個SDUDI我都知道說喔這都長出來它的Root就是SDUDI但是Lemmatization它其實會考慮到一些Semantic你這邊應該是個動詞你這邊應該是個名詞它會把它轉換成適合這個詞性的一個圓形所以它會稍微複雜一點就是說如果你現在要跑Stemming的演算法跟Lemmatization的演算法你會發現這個Lemmatization跑好久啊因為它算的東西很多OK但是它做出來的東西比較有點區分有點你可以想像Stemming就是暴力反正就是什麼東西都是一樣那Lemmatization就是我還會稍微細分一下這邊該擺什麼樣的字比較是對的它的Root是比較對的所以它做出來是比較合理的東西所以如果你看一些Paper他可能會說我把我的來源字做一些Lemmatization之後會比較乾淨比較LN比較不會犯錯他其實在做這樣的動作OK但基本上就是有點把多樣性的詞性的變化或是磁的變化把它稍微Uniform一點這樣子這樣有什麼好處這樣你對應到整個大語言模型的那個Token的表示呢就不會這麼發散 [1:44:59] 當然通常現在有時候也不太去管這些反正LN越來越強有些事情就交給LN去理解就是了那stop words呢這是用stop words做出來的Tech Cloud但是你可以看到THETO,IN,AND這些東西都會STARBOARD以前就是這個東西審太多而且你去統計一下英文字的STARBOARD剛才說可以省掉20%你就知道這個量有多少但是STARBOARD有很多問題像這些句子裡面我如果把這些STARBOARD這些都把它拿掉雖然有些關鍵字會留下來沒錯但是它整個語意稍微有點偏了會不知道我到底本來的意圖是什麼但是以前沒辦法因為記憶體擺不下這個INDEX TABLE擺不下所以STARBOARD能不管就不管這樣子那通常在STARBOARD的問題上我會探討什麼是STARBOARD如果老師就這些啊不同語言是不是STARBOARD也不一樣這個把它翻成中文不就好了那你就知道這個不同語言的差異不同語言的STARBOARD也不一樣甚至你的應用的比如說我現在做一個運動新聞的檢索或是新聞的檢索 [1:46:29] 那所有的新聞裡面都會有什麼什麼什麼記者報導所以報導這兩個字呢在你的應用裡面幾乎每一篇都會出現了它其實已經不是有意義的詞所以它可以在你的應用裡面歸類為STARBOARD你說在意這麼多幹什麼大語言模型會幫我做就好了沒錯現在現在人們其實都知道這些事情那什麼時候要把它拿掉你說一開始就拿掉了還是等處理完一些事情把一些詞呢意義把它搞懂之後再把它拿掉也是一樣各有利弊的因為像剛剛那個釣竿你把詞性轉換之後又把STARBOARD拿掉之後你可能那個詞就不見了所以什麼時候該怎麼拿這個都是不同的應用會有不同的做法我這邊舉一個例子以前我們常常說to be or not to be這是一個很有名的的句子但是to呢在裡面是STARBOARDbe也是o也是not也是not可能可以把它當成是一個negation的turn但是後面發現整個句子都STARBOARD你就把它拿掉這個句子就消失了這麼有名的句子就不見了這樣子所以其實到後來當然我們寧願多買一點記憶體讓整個東西跑得起來寧願不要做STARBOARD這件事這個當然這個有一些歷史的因素 [1:48:01] 但是呢你要想一想啊這有時候尤其是像你現在在寫LM PLUM的時候你的每一個PLUM的每一個字的LM都非常的在意都非常Sensitive所以你會覺得那個不重要但是你多了點多了那個字多了沒有那個字的你發現結果好像不太一樣當然不見得是因為那個字的關係但是其實這些字在算的時候它所造成的影響是會PROPAGATE的會ATTENTION算起來就會不太一樣那這件事情表示什麼我們現在就讓LM去幫我們計算什麼叫做句子裡面的STARBOARD好那我們再看一下這些做完之後你的你的比對我們剛才說那個INDEX TABLE做出來的時候我就是下這個關鍵字有出現這個文章我就把它抓出來但是如果使用者下了十幾個字呢或是使用者給你一篇文章叫你找相似的文章你要怎麼做那你也可以用同樣的做法然後把所有的字出現的字的文章把它Aggregate在一起然後Report出去但是當時大家就希望說那我們用一個向量的空間Vector Space Model的方式來表示一個Document這個其實當然可能你覺得很Trivial但是其實這個概念還蠻重要的 [1:49:33] 就是文章寫成字就是一堆Sequential的符號那我們怎麼樣讓電腦去理解這個Sequential的符號我們一定要有一個表示的方式你說把每個字都寫出來也是一種表示方式沒錯但是我們有一個Uniform的我有一個固定長度的Vector然後告訴他文章就是代表這001111什麼什麼的這是一種固定的表示方式對電腦的理解來講是比較有利的所以以前在做那個年代在做搜尋的時候基本上都是Batch on這個Vector Space Model就是把所有文章都映射在一個高維的空間中的一個點它就是一個向量向量跟向量之間就有所謂的相似度雖然假假雖然相似度所以在做Document Representation的時候這最暴力的做法就是現在通常你會拿來做Base Line的做法就是Vector Space Model好那我就在一個什麼樣的空間就是所有字所構成的空間裡面去表示這個文章這個文章比如說我現在的Vocabulary為什麼Vocabulary這麼重要我們當初定了3萬個字出來之後我的空間就是3萬維度就是我只看這3萬個字那每一個字呢就代表了一個Dimension就代表一個Dimension [1:51:03] 所以這個字如果有出現它在那個維度就表示它有1就是有出現沒有這個文章沒有那個字那個維度就是0這樣子所以我會用這種方式來表示一個Document但這個寫法其實不是喔這個寫法其實是說我會把每一個Word用一個這樣的1-Half Vector來表示我的這個這個字的Vector然後再把它組成起來那其實它如果是把它O起來之後其實就是我剛才講的這麼多維度的一個Document的向量這樣子所以你可以想像就是我們一篇文章中了不起就是1000個字那1000個字在我3萬的裡面1000個字還算多了很多文章都只有重複字不重複字大概就只有兩三百個字那它的它的表示是非常稀疏的就是這個向量雖然有3萬個這麼這麼長但是呢可能只有300個是有出現的意義這樣子所以是個非常Sparse的一個VectorOK那有了Vector之後呢我們希望其實我不再只是出現一次就是ER那出現兩次能不能給它不同的權重所以我就做了一個叫做Term Frequency [1:52:34] 就是這個字的出現次數它搞不好很重要如果這篇文章一直在出現什麼大股強品就表示在講這個運動員在幹嘛幹嘛如果大股強品只出現一次然後可能又一大堆的這個到期的球員那可能不是在跟大股強品不是這麼有關的字所以這個Term Frequency每一個字的Term Frequency其實會Highlight出這個字在這個文章的重要性所以我們就會對不同的字所出現的頻率給它賦予不同的權重這個第一個關係就是Term Frequency就是隻要它出現越多那它的權重就越大這個NiJ這個index是這樣就是DDJ一個TemDJ一個Tem在DIB一篇文章中的出現次數然後這是NiJ就是它在這篇文章出現幾次然後會正規化處理處理整個文章所有的Term為什麼要做這件事情因為如果一篇文章只有三個字跟一篇文章有三萬個字你這個NiJ是一個絕對值啊Term Frequency是一個Count一個出現次數的量你一定要Normalize不然會被大文章所Dominate所以這個一般來講Term Frequency就是一個正規化後的一個出現的次數的統計這是TF那大家為什麼要講出現這個 [1:54:04] 大家可能常聽到一個TF IDFTF就是裡面TF IDF的前面那一項就是出現的次數的相似那後面有一個IDF呢它的全名叫做Inverse Document Frequency我們先看Document FrequencyDocument Frequency就是說我現在所看的文章裡面這個字總共出現幾次啊就是我現在找了一萬篇的新聞這一萬篇新聞裡面呢都是什麼什麼記者報導所以這個報導幾乎一萬篇都有出現所以這個報導這個字呢在我的Dataset裡面它的Document Frequency非常高幾乎跟我的大N這個大N就是Total Number就是總共有多少個Document是一樣的那我做一個Inverse意思是說我要讓那個出現比較少次的這個值會變得更高那NZ就是說我總共出現的次數所以如果我那個什麼報導這兩個字的在一萬篇裡面每個字都有出現那這個NZ就跟N是一樣的這邊就是1這邊就是1那就是0所以IDF就是最小IDF值的最小值就是0就是它完全沒有權重幾乎可以被濾掉所以IDF是一個很重要的工具用來鑑別一個字詞的重要性 [1:55:34] 所以我們叫做一個Discriminator就是一個鑑別器你說老師這個這個重要嗎有任何判斷重要性就好了沒錯但是如果你在算自己要做一個檢索尤其是你現在要做REG你自己要查向量的時候或是要查字字的時候你會發現我如果直接用embedding來算相似度其實效果不會很好因為通常你轉成句子的embedding它其實會有點模糊度如果你在加上一些這些從Dense Vector加上這個Sparse Vector你會發現用TFIDF所構成的效果有些關鍵字所構成的效果它效果會變得很好所以它還是有用雖然它是很古老的東西但是它是一個非常Strong的Baseline那大家知道大家就要記住IDF是用來幹嘛它其實就是一個用來鑑別一個字詞在我這個Document Say的一個鑑別性如果一萬篇裡面都有這個字那對我來講我查詢這個字沒有什麼意義啊我就等於是把所有結果都給使用者沒有什麼鑑別性但是如果有一個字它只出現一次那表示說當使用者查詢這個字的時候我就知道是在那篇文章我就 [1:57:04] 把那篇文章的結果給使用者就好所以當這個是1的時候就是它非常的稀有非常罕見字只有在一篇文章出現一次的時候那這個值就是你的你的最大值所以通常我們IDF有時候也會正規所謂正規化就是我這個Log是取N的是取N所以我會從IDF值會從0變到1這是正規化後的IDF右邊這個圖其實是沒有正規化就直接取10 Log所以我的這個N越大的時候我的IDF就越大這樣子所以它就沒有Upper Round但因為取Log其實也不會太大這樣子那這個圖大概是一般統計下來的結果就是一般在文章中統計的時候字詞的頻率跟它算出來的IDF因為是取Log所以就是在Log的Label是線性的關係OK那這個圖可能大家可以思考一下就是說因為這個IDF是一個非常Huristic所謂Huristic就是以前某個某個厲害的學者算出這個權利這種告訴你這很有用用就對了這樣子沒錯用的時候發現很好用這樣子但是其實IDF有一些理論的基礎它其實跟Entropy會有點關係 [1:58:36] 以後我們機會會再講到不過這個東西你會發現在我的應用裡面做出來的分佈長這樣那你說那它到底好不好它到底能不能當成我的Discriminator就是說我想要區分的字呢如果都集中在中間這一塊那表示我這個演算法不好我算一算之後發現我想區分的字其實它的算出來IDF值都差不多那就我可能要改一下但是如果我想區分這幾個字跟這幾個字的差別那IDF就是一個很好的鑑別的工具我就可以拉大這些事情所以有時候當你自己經驗法則設計出一些變形之後你可以看一下你的分佈到底貢獻會是長什麼樣子不過IDF畫出來通常都比較像這樣因為大家頻率不會差太多除了這些stop wordsstop words在這裡這大概出現一次啦這是稀有字或專有名詞但是我們通常都希望先把這些拿掉因為IDF很低的它TF IDF一層它就掉下來這樣子所以我們有了剛才的表示之後我們再把TF IDF加上去之後那每一個Document的表示呢 [2:00:06] 就是變成是一個如果有正規化之後它就是一個分數的表示字典有三萬個字那就是一個三萬維度然後都是一大堆零點零幾零點幾的表示這樣子每一篇每一個Document就是一個Vector那Vector跟Vector之間如果是長得一模一樣就是向量完全一模一樣它就是沒有夾角沒有夾角cos出來是多少所以我們就用cos的方式來評估兩個向量兩個文章間的相似度cos兩個向量之間算cos就是這個公式常常會有同學搞不清楚說cos算夾角跟算內積差別是什麼其實你會發現分子就是算內積嘛就是兩個Vector之間的內積但是分母多了一個除以它的長度它就是兩個單位向量再算它的它的之間的夾角cos公式是這樣但是內積不太管長度啦內積就是看同樣Dimension的有值這樣把它整在一起OK所以當你的文章你的Document的Vector是正規化所謂正規化是你所有Document都是都是分佈在一個這個半徑為1的球上面就是多維空間的球體上就是長度都是1的時候 [2:01:37] 你這都是1呀所以在算相似度在算cos夾角的時候其實就是兩個向量的內積就是兩個向量的內積所以為什麼以前你不知道說就是把這兩個向量做內積你就知道它們有多像它其實概念就是這樣但是因為這個向量很大因為就是跟你的Vocabular size有關嘛就是3萬維度跟3萬維度在做內積這樣子當然有一些快速它其實就是Scan就是有值的把它抓出來然後所以它就是Scan過一遍所以大概它的它的order就是跟向量有字的多少字有關這樣子OK那這件事情其實還蠻重要的尤其是到時候現在你說做LM做REG你會建所謂的Vector Database就是向量資料庫建一大堆向量那你要算相似度嘛其實你就在做這些事情如果最標準的簡單的做法就在做這件事情你現在要檢索的東西你覺得LM不知道我要去我的Database去找一下就是把這個這個詞轉成向量之後在你的向量資料庫裡面去比對這樣子我就來做這件事情那你就要想像一下你這樣算出來到底到底1跟0是什麼樣的句子到底它的中間有向的東西是什麼樣子 [2:03:08] 因為你的向量資料庫通常不是Wandhar Vector不是這種Sparse Vector通常是Dense Vector通常是模型轉換後的壓縮後的向量那那個東西其實虎虎的虎虎的以後不會知道會再解釋什麼叫虎虎的反正就是就是很多概念會會黏在一起的時候有時候很難去用那個Vector來算向量的相似度那我這邊秀一個變形以前我們在做TFIDF你就知道這些研究學者整天閒閒沒事就在做這件事情這個TFIDF夠好我們來改變一下那怎麼變呢這個就各式各樣變形TF可以這樣變這個IDF的DF可以這樣變正規化有不同的變法因為你就知道NORMAL ENGINE有很多不同NORMAL ENGINE的方式OK我把這個講完下課那一般來講TF最簡單的就是出現幾次嘛在這個句子在這邊文章出現幾次有時候我們不再做IDF直接TF當權重這樣子那也不做正規化的這是最最偷懶的方法那有時候會做一件事情像這樣這樣會做什麼就是你的文章很大有些很大的時候那個出現一萬次兩萬次 [2:04:39] 跟有些只出現一次兩次的我不做長度的正規化我直接取LOG直接取LOG或者是說做壓縮當你看到這種公式的時候你就知道了他們的他就是把原來從0到1的RANGE壓縮到0.5到1的RANGE就是不要大家差這麼多本來是0到1的差別現在把它變0.5到1的差別你說這不是一樣嗎這不是大家都只是把它壓扁而已壓扁的差別就是可能以前有人只有拿到0.01啊本來只有0.1他現在可以變0.5這個差別就差一點點差很多了所以什麼樣的公式你一看就知道說他是大概處理什麼樣的問題當然這也不叫作弊這是有點像說我就希望說在我的應用裡面有些非常稀少數的東西他也能夠得到一點權重而且是權重不會被dominate掉的權重我就可以這樣說那其他的你可能自己思考其實不只啦不只這些啦所以以前呢有query有查詢的跟我要查詢的document的我都有tf idf計算所以以前會做什麼事情呢這是query的ltn代表是我這邊用ltn [2:06:10] 這樣子query用這個演算法然後呢document用lnc這樣子lnc就是我我編輯我的查詢因為查詢的話比較短所以有時候演算法會不一樣文章通常比較大會用比較大的作法所以不同的計算方式再把它做內積有時候不過你現在看不到的啦這可能要去博物館再看有些paper會分析這些東西好那就是代表什麼你的query跟document長相不一樣的時候你可能需要有不同的權重計算的方式這個你說老師我又不做資訊檢索用不太到其實你在做reg的時候就會用到這些想法那這個當然就有不同的計算那你說老師這有沒有道理這個好像就硬湊沒錯因為就是非常heuristic非常heuristic只是說他可以prove說這個在我應用裡面我想要強調的東西可以拉得出來這樣子好休息一下我們下一節就從BM25開始講 [2:16:39] 我們繼續喔剛才slide上有同學問一些問題那因為這個space model基本上蠻古老的蠻基本不過我可能要講的比較快一點這樣子那我們再從這邊看這個圖啦這個圖你可以想像就是說我現在的vocabulary就是3就是三個字W1 W2 W3我的字典就是三個字所以我每一篇的文章它就是一個在這三維空間的一個向量所謂三維空間就是這個字有出現W1有出現就是1沒有就是0這樣子所以如果在一個我們可視的這種三維空間裡面去表示的話它就是一個Vocabulary size為3的一個向量然後它上面就是010啊100這樣子有出現這個字就是1沒有就是0這樣子這個向量那為什麼叫做space呢因為我們這個字典通常很大通常很大就是這個字典我們做出來之後其實你會發現我們文章一直進來我們一直Parse出來的字就會一直累積在這個這個Table裡面雖然它只是一個Index的頭但是基本上我們可以對應出所有的Vocabulary的東西雖然這個它可能有STEMI或是其他Limitation處理過的東西不過基本上它的Size就跟Vocabulary差不多 [2:18:14] 這個字這個Table處理完我們可以把它固定在一個範圍裡面當然就是說不見得是這麼固定或是說你可以拿現成人家已經做好的這種標準常用字三萬個字的字典然後建法在那裡我來一本沒有抓到畫面,對吧現在現在就是可以可以動就不要再去動它反正這個字典其實當然如果你是一個空的你就會從一堆的Document進來之後Parse完就建立出你的Vocabulary所以你自己應用可以建立出你自己的Vocabulary沒錯但是我們通常會拿一個已經人家做了常用字的一個字典三萬個字的字典 [2:19:44] 來做這件事情沒什麼差別一個是自己建一個是一個是標準用的用法這樣子因為這個字典三萬個字你可以想像你當初在做這個當初在做這個Vector的時候你一篇文章可能就20個相異字所以三萬個字這個是三萬這個只有20個字當然是個係數就是一個項量有三萬個長度的項量裡面只有20個是1其他都是0就是一個Parse的概念這樣子OK這樣應該現在投影是對的吧那至於有同學問說imprtindex跟index差別是什麼其實imprtindex比較是一個他的概念就是我現在是反著去索引我不是索引這個文章中的字形式方向而已啊就是我不是索引這個文章有哪些字這樣子而是這些字出現在哪些文章這當初為什麼叫imprtindex的概念但是你會覺得說Database index不就是這樣嗎沒錯如果你真的以技術來講你的索引其實就是建這個東西但是如果以概念上來講我會想說那我建索引這篇文章有哪些字你可以告訴我就這篇文章的字有哪些 [2:21:15] 但是我現在是反向所以我的pointer是指回來的所以當初為什麼叫imprtindex的概念其實是這樣好謝謝同學的提問有同學問有沒有字幕啦那好像YouTube自動可以打上字幕不過我通常回看以前我的影片好像老師的發音不太標準那個字幕有時候怪怪的不過你大概就自己自己理解一下我念的東西這樣好那有同學說要不要教材不然都看不懂然後有同學回說這一頁看不懂沒有關係的確是沒有什麼太大關係那但是你要知道你要知道TF是這個算出現次數算它在一篇文章中出現的次數IDF是在算它在整個dataset裡面所出現的document次數的一個reversedinverse的一個term你要知道這個概念只是說這個概念的演算法有很多種變形為什麼要這麼多種變形就是適應在你的應用上去做的變形有可能是因為你的文章大小不一樣啊或是你的字詞的分佈不太一樣啊所以才需要做一點這樣的調整 [2:22:47] 至於哪一種調整哪一種適應你的通常就是暴力法都是組合一下或是你自己看一下你的自己的分佈大家就知道要怎麼做這樣子這些說實在沒有什麼道理沒有什麼可以推導出來的證明只是一般我們在設計權重的時候的一種經驗法則但這些經驗法則其實是有些是有一些道理可循又有道理就像我剛才講的這個就是就是他把我的這個TF本來是一個從0到1的變化量壓縮到0.5到1的變化量為什麼我這麼熟呢每次期末在調班上成績的時候就要做這件事情就是有些人考的低分那個只有只有10分他100分的一堆怎麼辦Normalize一下從10開始就是這樣做的最簡單的做法就是這樣做就是把數值的分佈做Compression但是他的排序還是一樣的只是數字的大小不一樣OK但是呢這樣的壞處是什麼本來你的數字的分佈是0到1他的敏感度其實是比較比較大但是你等於是前面都沒有啊0.5前面都沒有都壓到0.5到1 [2:24:18] 所以後面就會比較大家比較擠一點那個鑒比解析就比較差一點但是如果這個是你要的那其實就就沒有關係好那的確這個公式不用去記不太需要去記你大概就是活用不用記怎麼活用我好像不能碎念那我們來看一下搞不好這一頁還比較重要就是BM25BM25其實是一個非常強的一個Base Line如果你不相信你可以翻到這一份投影片的最後一頁有一個應該是去年前年的一個做向量資料庫的一家公司的老闆講的話BM25還是非常好用的他是一個非常古老的東西啊你看這個年份這個非常古老那BM是什麼呢Base Matching那25呢25就是裡面的參數的東西那我們現在不管他是什麼啦反正你看一下他在算什麼東西他在算我的Document跟Query的Score其實就是兩個句子或是兩篇文章的分數有多像一樣在算相似度那我們剛才前面算的相似度是什麼 [2:25:49] 反正Document跟Query都可以把它變成TFIDF的向量那我就可以算TFIDF向量cosine那你可以仔細看一下這個公式看起來很複雜很多說但基本上他就是在算兩個TFIDF的cosine的東西只是他有些東西把它Normalize的不見的有些東西把它化解了或是把它變複雜所以他其實你可以想像BM25就是一個複雜版的TFIDF的表示的這種相似度的計算過程那為什麼叫TFIDF呢因為它裡面有一些參數K跟B的參數那K跟B的參數呢在以前這些Paper的實驗裡面發現K設2B設0.75是最好的這樣子他設一設發現這個在大多數的應用呢用這樣的演算法其實效果都不錯所以他就變成這個BBM系列的老大這樣子所以大家提到就是BM25其實基本上就是就是TFIDF的的進階版我這樣講可能有一點誤導因為TFIDF只是用來描述Document Vector的一個權重的描述方式他是描述單一向量的描述方式那BM25是在算相似度的演算法 [2:27:21] 所以他是算兩個向量之間的相似度的演算法但是他其實是變形的TFIDF然後他的內積的公式也不太一樣有興趣你可以回去看一下他們當初怎麼推這些的不過我覺得你可以內化就是覺得他就是一個很複雜版的TFIDF然後在向量空間裡面算相似度所以你現在看到RAG裡面的Paper可能有提到BM25他其實就是在這個世界上在SPARTSMETRICS裡面去用這樣計算方式得到的相似度的那又回到這個SPARTS VECTOR這SPARTS VECTOR其實我們等下之後會講就是為什麼跟現在常提到的所謂Dense Vector不一樣因為SPARTS VECTOR就是我有多少字我就有多少個Dimension所以三萬個字我就有三萬個Dimension這是一個非常大的向量但是現在你你用BERT或用什麼其他Embedded Model做出來的向量大概都不會超過1K都不會超過1000都不會用這麼大的向量來做這件事情所以這個就是差別但是有好有壞當然這個以後再提到好這是BM25其實你也不用記公式說實在的我也沒有不知道公式會長這麼複雜不是我知道怎麼長這麼複雜但是我寫不出來啦 [2:28:54] 就是你不用去記這些啦基本上你叫LiveCoding幫你算一下就好了這樣子BM25他知道怎麼算OK甚至你還可以叫他做這種11的15的其實就是這個參數不一樣這樣子OK那基本上這個我都講了非常的大概如果你對這個BM25為什麼這麼簡單就可以搞這麼厲害你有興趣可以再回去看其實有些地方都蠻有趣可以做一點改變的好BM25這個就是一路的我們用Vector Space Model這種1TB的結構然後在TFIDF出來之後有更不一樣的權重的表示方式跟相似度計算的方式的衍生出來的一個東西好好吧現在為止你可能就可以想像說好吧那我文章我可以算頻率可以算它的鑑別度我就可以用一個向量來表示雖然是一個很Sparse的向量但是好歹也是一個電腦可以處理的向量就3萬維度這樣子但是3萬維度其實它會有一些問題就是第一個那我如果說貓跟狗像不像貓跟卡車像不像基本上都不像因為它是不同維度這個維度有1 [2:30:24] 沒有就是理所以貓跟狗相似度是理貓跟卡車也是理但是你會覺得說貓跟狗應該比較像啊對至少這是活的啊卡車是死的你就覺得應該相似度不要這麼的Discrete我希望能夠連續一點所以我們就希望能夠做一個比較聰明的所謂的這種字的表示就是World Reputation的概念然後你要做什麼連續一點嘛你不要這麼像就是1不像就是0能不能告訴我一個0.6的數字然後我至少能夠整個空間中的字所有人類的知識的概念在你這個向量分佈裡面不要集中在一起不要說大家都很像希望能夠分佈在一起我給你的值就是0到1但是你怎麼算出來每次都是0.6到0.7這對我來講1.1沒有所以我們要讓他Disputed就是我希望能夠學到一個表示是把所有人類的字的概念映射在一個空間然後我可以知道概念跟概念之間的連續的相似度然後他是能夠有效的鑑別出來這些概念的差別這就是當時在延伸出來用了其實應該提那個Bangio那邊paper不過大家比較 [2:31:54] 覺得一個重點的Milestone就是O2Bect的那個年代之前那個幾年大家希望能夠做出這些東西但是呢我們來想像一下當時的這些這些科學家想法以前就是就是雖然向量歸向量但是有時候做法還是暴力啊就是詞袋Bag of War就是一篇文章其實他就是這樣這個出現三次這出現兩次雖然他有向量你雖然用向量但是向量雖然有順序他排在第一維度排在第二維度但是有差嗎反正就是比同個維度有沒有向而已啊所以基本上就是Bag of War的概念我們並沒有去管說這兩個字三個字這樣排列跟換個方向排列意思是不同比如說這句話錢不是問題不錢是問題當你斷完字之後都是這三個Token啊如果把4拿掉啊這三個Token他就出現一次這樣所以相似度是1所以這兩句話一模一樣所以你用剛才Vector Space Model做出來就是那一回事這樣子OK剛有同學問到Tokenization的確以前的你講的問題其實有點複雜這個可能講完會下課以前在做斷字其實第一個要分語言英文語言的跟這種 [2:33:24] 我們這種亞洲語系的居多的語言其實斷字的方式不一樣英文其實相對的容易就是用空白所以以前以前不太做英文的斷字因為空白就可以斷但是現在在有任的時候不太會這樣做因為到時候我們講到BPE就知道說他其實會用字母的方式來做因為如果用空白的斷字其實他有些字詞太特別或是有些字詞新的字他沒辦法認別的出來所以他他們會做所謂的calculable的segmentation然後再去merge根據frequency去merge這以後我們會再提但中文更複雜中文有這種一個方塊字方塊字然後你沒辦法斷所以會有所謂的一字詞二字詞三字詞甚至有所謂的長詞優先所謂長詞優先就是他可以組出四個字的就不要去看他兩個字這種Huristic這個不見得對但是基本上成功機率非常高的一種斷字方法就是以前在做斷字的時候有很多這樣當然很多都是用機率的model來做所以你剛才提到的在slides上問說有些會斷字沒錯現在有的的確會斷像StrawberryStrawberry因為Berrys也本來是一個字所以他本來也會出現所以他本來在Vocabulary table裡面就會出現後面那個Berry的詞所以Strawberry他可能會有兩個頭字 [2:34:54] 他可能去拼湊出來是有可能的不過這個就看整個分佈當初他Pretrain的時候分佈的狀況好那這個例子大家一看應該就知道說不能用back over因為這個但是他其實很好用啊其實基本上不會差那麼多啦如果你用這個概念來做一些以前簡單的應用就是就是這樣就是就把評論做成斷字啊然後把變成這是一個Positive這是Negative但是我如果一個人說這些字這些字以前沒出現過怎麼辦所以其實你看這例子就知道我其實是想講說這個東西其實怎麼拉近詞跟詞之間的相似度而不是說完全不一樣就是零分要完全一樣才一份這樣子這段影片實在太醜了應該用AI換一下沒關係我們把剛才那個例子呢做成一個叫叫做One-Half Factor這其實應該前面講但是在這邊講比較有點感覺是說我們比如說好我們現在現在的系統裡面的Vocabular Space就是我現在系統只認只認這八個字就是我的電腦只看懂這八個字就是我在八維空間的一個表示然後你所有的字所有的文章進來就是一個長度微八的向量就是Vocabular Space意思就是這樣 [2:36:24] 然後我們這邊的先把所有的字呢用一個這樣的One-Half Factor所謂One-Half就是Dimension有出現就是1其他都是0這個One-Half Encoding基本上是在通常在做機器學習在做特徵工程的時候會提到的就是就比如說這個班上同學的血型我們會寫A型B型O型但是如果我們會用這樣對模型來講對模型來講其實很麻煩所以我們會把它改成One-Half Encoding那我就有一些feature叫做A型血型B型血型O型血型那這個人是A型我就在A型血型是1其他都是0這樣子Anyway就是他就是在其中一個欄位會是1其他都是0這個叫One-Half Encoding那這個概念其實用在非常多地方啊所以這個這個One-Half Encoding其實不只是我們在做機器學習啊還是這邊提到還是什麼其實很多概念只要你可以想像就是反正有個地方1其他都0都會用這個這個詞來解釋這樣子好所以我們這邊呢這個單一的Vector就是長這樣它的Vector就是這樣子便宜啊有名就是這樣子那只是說我們去組出這篇文章他有這四個字的時候我就把這四個的Vector呢這樣把它O起來我就得到這個Document Vector [2:37:54] 這個樣子所以就在我剛才的Vocabulary Space裡面八維的空間裡面有一個有一個點構成這樣一個向量我四個出現四個字是1其他都是0這樣子當然這邊要講一句說其實字沒有出現在這邊了就Hit不到了因為根本不落在我的Vocabulary Space裡面好那我們現在用個想法這想法其實我覺得不是很好因為原來的Vocabulary不是很大我們把它變成一個World Embedded這個叫Dense Space那這個就是我把它寫成叫Concept Space我現在有八個概念這八個概念是不知道也不需要知道就是我用來描述所有形容餐廳好壞的東西我用八個維度來表示就好了這八個維度呢你可以想像可能是一個Maybe是跟價格有關的跟食材有關的你可以自己腦補這些東西但是其實不重要就是反正我用這八個Dimension就能夠用來區分我的文字所以我的所有的字裡面呢他就在我的Concept Space裡面構成了這樣的一個字出來就不會是隻有1號這個便宜也許在價格裡面得到分數比較高在食材那邊可能會變低這樣子類似但是我們就不太需要去管這些 [2:39:24] 的確以前有人做做做出BERT之後在Transformer Label之後就會去算說這個每一個Token這個300多維度到底每個維度在幹什麼有人的確有去分析過那個Token每一個Token的All Embedding的分佈他把同樣的字的概念的去看看他們的Embedding有沒有一些共同之處不過我覺得這個都比較是一廂情願的說這樣子雖然有資料可以佐證但是的確可以呈現一些分佈但是我們其實不太在意說到底我當初給你的Dent Space的大小每一個Dimension到底是什麼概念我只有Budget的概念就是我現在的成本我現在算力夠大的時候我把這個Concept Space變大一點從8變到20看會不會能夠更有效的去鑑別我所有的字這樣子OK所以這個跟剛才的差別雖然都是8這個例子不是很好應該這個應該更長一點因為他是一個1號而且是比較Sparse你可以想像到可能到80 800這樣子但是我會用一個很壓縮的方式去把它變成比較小的小的Dimension然後每一個都有用到每一個Dimension都要用到你想就是把它壓縮把它壓縮這樣子那大家概念上就覺得 [2:40:54] 你有壓縮應該會變差吧但是其實上是不會而且是能夠更Aggregate共通的Concept在裡面所以我在算相似度的時候這邊算相似度的時候這8個字完全都不像但是至少便宜跟讚應該有點像所以理論上我這數字也沒有我這數字亂寫的這便宜跟讚理論上在Concept Space裡面算像樣的相似度他應該要比便宜跟差更像所以我就可以在Dense Space裡面把這種距離的概念學起來所以說那我要怎麼學這些香料你就叫人去標嘛就是說這個便宜跟太貴是不像的便宜跟讚是比較像的然後就在一個NN Model裡面的Transform Scratch去學這八個數字就學這整個表示這樣子你就可以學會說原來我這個字Token應該這樣表示就在你的標註底下他們應該要這幾個Feature來形容說他們這些比較Positive的字呢應該是比較接近那一群那Negative的字呢應該是比較自己比較接近但是要跟Positive的字比較disjoint的一群那至於這邊數字的意義或是說能不能去解釋單一的Feature我覺得這個就是另外的議題 [2:42:24] 也可能也不是這麼重要的議題這樣子OK這個就是從SPAS的Metrics到Wall Embedding用Dense Space的概念這概念其實還蠻重要的因為在現在NLP的處理的概念裡面我們其實基本上都是在Embedding的Label其實以前在做NLP至少是我啦我其實不太知道為什麼用Embedding這個字是因為後來到NN Deep Learning這個階段有太多的Paper都用這樣的字詞然後從這個這個Wall Embedding開始那這個詞呢就一路的用到現在的大語言模型中文可以說這個叫詞遷入有點像說我們用一個比較壓縮的東西把它遷在這個字詞的表示上去表示這個字這樣子OK那重點並不在於它是比較Dense而是說重點在於是說它這些字它這些上面的Dimension的數字是學出來的而不是當初根據Vocabulary根據這個文章的分佈去Count出來而是經過某種Unsupervised或Supervised的方式去Change出來的這樣子OK好我比這個例子是說 [2:43:54] 大家如果都玩過三國字就知道了就是我們如果要區分這幾個五項呢這樣會不會有些人不知道我在講什麼應該不會吧這應該大家都會玩就是一般你在玩這個遊戲的時候我們去描述一個人比如說宇步跟張飛跟關羽基本上我這邊用V排序所以你會發現這幾個這不知道哪一代的出現象棋Anyway不要管他反正就是這幾個人的武力都很接近沒錯但是我們希望能夠看到至少這個武將能夠多帶一點兵這樣子有些太笨的可能很容易中計這樣子像張飛跟呂布就很容易中計這樣子對所以我就可以用統帥武力自立政治來區分這幾個Instance所以這幾個你可以想像就是Facial Splash只是說我們現在不太管這八個Dimension是什麼但是實際上比較更更可解釋的就是想像我就是用這幾個來描述這幾個人只要只要這幾個屬性都能夠區分我這幾個角色的描述的時候那他會比One Heart好很多啊我這One Heart可能就是變成是有出現呂布就是0其他都是0我沒辦法去比對到底呂布跟張飛比較像還是呂布 [2:45:24] 跟趙宇比較像所以這個概念是這樣我不知道舉這個例子會不會更好還是大家更看不懂我在講什麼Anyway就是Facial Splash的精神就是希望我能夠透過固定長度空間的這比較是Uniform的描述呢然後對於我整個Space的Instance做一個統一的描述那如果這些描述是我滿足我剛才前面講的可以連續可以分散式的去敘述這些事情的時候他就是一個很好的Representation所以當初定義的這樣的Space就對我來講就是一個很有用的東西這樣子好那我們這一這一個部分的投影片最後會講到這個Wall Embedding那也會帶出我們第一個作業所以剛有同學問我們第一個作業什麼時候出應該下禮拜就出了這樣子其實今天晚你應該就可以回去看其實我在Github我們那個課程的Github的網站其實你可以點回2025年或2024年其實作業不太改變但是基於有同學要求難度我們應該會稍微調高一點難度了對不然現在vibe coding這麼容易其實你把作業餵進去真的就出來了對對 [2:46:54] 我一直有在挑戰當然AI說到底他能夠什麼東西是他不會做的但是我失敗這樣子不管我怎麼問他都有辦法做得出來這樣子所以Anyway就是重點還是在於你能夠吸收AI給你的做法因為基本上我們不太可能會叫你做一個Open的Problem不太做一個很難的東西那以作業Label來講以現在AI要做都不難不難但是你們務必要自己自己搞懂他在幹什麼好那再講這個World Embedding我們來看一下這個其實為什麼要帶1HR跟Dense Factor其實因為就是說以前有太多這種這種所謂的Synonymy跟Palsymy的問題同義詞跟一詞多義的問題就是就是不同的字但是他有同樣的意思像這三個字都是盜賊的意思所以我當我在query這個時候你沒有辦法給我這兩個字的時候你的RuCode就會降低所以RuCode就是說有些該找的找不到啊所以你的RuCode會降低那一詞多義呢一詞多義是什麼我這個字在不同的地方的描述意思是不一樣的比如說像蘋果這最常拿來舉一詞多義的就是蘋果在講公司跟講水果的時候意思是不同的 [2:48:26] 就是一詞多義那教科書都會用Bank就是他講銀行跟河岸這兩件事就是越common的字他其實又有越地方組起來的意思越不同那這東西你的準確率就會下降你可能我要找我現在要去買蘋果哪裡新竹買賣蘋果最好吃他告訴我那個小吃部那個賣蘋果店雖然隔壁有賣蘋果這樣子Anyway所以這樣你的準確度就下降告訴他不同意思的文章所以這就是以前一直一直困擾NLP的問題因為你沒辦法去只能靠人工去界定所以當如果我們可以做出一個比較Continuous然後又能夠算出算出兩兩之間相似度的我其實可以發現這兩個向量也許比較接近雖然不完全一樣但比較接近然後同樣的字他在不同的句子能夠得到不同的embedding這件事情我就可以得到一詞多義這件事情所以這不是兩個雖然很難但是你會覺得好像很簡單的問題但是你可以想像如果你現在用LM的角色來看這件事情他要怎麼做他要怎麼知道Apple在這句話的表示是不一樣雖然以後我們會講他在算attention的時候他會看到說你其實是買一臺Mac那這個 [2:49:56] Apple在算attention的時候的Apple的概念就會不太一樣那如果你你前面有所謂的這個什麼營養成分那這個Apple他在算attention的時候又得到不一樣的的比重所以他的字詞的表示會隨著不同的不同的Layer慢慢的Propagate算attention的過程中慢慢的改變他就利用這種方式那同一詞的方式他其實可能本身在做All Embedding的時候他在Change出來的Embedding就可以拉出他的相似度跟差距所以就靠著這些東西的現在的模型可以做的比以前好就是這些道理只是說這些問題呢現在都是Ivory你可能一個句子裡面有同一詞也有一詞多義的問題那只要是混在一起的時候你的你的東西就不是很好這也是為什麼我常會說你們直接轉那個向量杯一句話轉轉成一個向量大家都會接近你會發現那個向量都會接近尤其是越長的句子向量都會越接近這是本身大語言模型的一個BIOS也是他的一個也不算缺陷啦應該是他的特性這個以後我們有機會再談那以前呢轉換成One Heart跟轉換成Thanks其實差別就比較像是Concept Matching跟Term Matching [2:51:26] 因為因為不太容易比因為query的話很短那如果我要做Term Matching沒有比對到就沒有中了因為有時候我會在不同用的詞不同比如說繁簡體的比對就是一個很大的問題就是這是計程車啊出租車啊這些不要說寫的不一樣你單單你把出租車寫成寫成繁體他的概念也是不同的當然你可以試著把他轉成OriBetting算算他們的像不像所以不同語言在同樣的概念的時候我如果只是Concept Matching的時候他其實也是比對不到的那或者是說有不同Domain的Let's Con我學電腦的跟學電機的跟學物理的模樣出一件事情都不太一樣比如說一般人講手機我們會說智慧行動運算裝置這其實要講什麼就是我們如果各位計劃說我要買設備手機不行這個是一般民生用途不是做研究但是我寫智慧行動運算裝置就過了我也不知道為什麼然後更扯的是我們計劃書寫運算伺服器然後後來廠商給我們的發票是AI伺服器學校說不行這跟這跟你當初計劃寫的不一樣這個就是拿來運算的不然還拿來幹什麼所以品名不叫運算伺服器學校就不準這樣子 [2:53:00] 這個有錄影好啦不要去查我的帳我覺得這個都OK啊只是舉這個例子不能買冰箱沒關係我寫高效能溫度調節器好像蠻科學就過這樣子那這個現在電視其實都都很便宜啊那有時候你覺得你去買一個投影機又礙於空間你不如買個電視然後就可以討論我們就寫互動多媒體視訊就過了這樣子好我只是舉例啦並不是發生在我身上的例子反正呢我覺得這是不同Domain的Let's continue你用的詞彙描述一個概念那其實你用單字去比對就不太一樣但是你可以回去試試你用embedding的角度他其實也不見得OK這樣子那當然有一些是最蠻常發現的問題就是因為這種這個字詞啊新詞啊或是概念變化的快就是一個詞的概念會隨著時間有改變像COVID-19新冠或是這些這些重要名詞都會一直改變他本來應該跟誰很像現在可能變得不像就像現在保麗達BU也不知道為什麼會跟那個那麼像這樣子就是一個東西的turn他會隨著時間而改變那這就是concept [2:54:30] 這個東西其實為什麼有時候你拿一個很早以前勸好的embedding model其實不見得符合現在時是所要用到的embedding有時候你可能要拿新一點的概念是這樣或是說重新再用你自己的語調再重新tune一下這樣子OK好那以前的做法就是以前做法比較比較人工一點的去建立所謂的這樣的觀點那這個這個其實是Python的code你可以直接從WordNet這個以前做NLP的人大概都會用到他其實是人工建的非常精準非常乾淨的一個所謂的字詞關係的一個對照表那這個當然也有中文版的不過你可以再去找一下這樣子那WordNet他就會建一個像這樣的關係同義詞的關係然後也有所謂的反義詞像這個SIMSET一個SIMSET是同義的那也有反義之類的你可以透過一個字的反義之間推出別的字詞之間的反義的關係這樣子所以透過這樣的一個WordNet你可以去query你可以用這個WordNet的package然後去導出這些字的關係這是以前會這樣用的但是說實在現在 [2:56:01] 教育人們來判斷就好因為這個這個都在他的Training Data裡面這樣子他都有看過這些東西但是他的確用這個WordNet其實他可以告訴你字詞之間的Relation這樣子OK不過因為基本上他是人工建的有關係就有關係反義就是反義所以是一個非常非常這個Discrete的一個Relation然後也是一個One Heart的關係這樣子OK那我們希望是做成這樣子比如說就算只有兩個空間我也希望能夠表述貓跟狗的向量是近一點貓跟卡車是比較分開一點這樣子這例子其實是之前我在騰空智慧學校舉的例子不過我現在都用這樣的例子來舉我們希望不要第一個不要是One Heart不要是狗一個向量貓一個向量卡車一個向量比如說我們這樣兩個維度就好了然後呢又希望說在我這裡面的Instance能夠的Relation他們的接近度能夠符合我的概念至少在這個例子裡面貓跟狗比較接近卡車要比較遠一點你自己就可以寫你自己就可以寫這個數字但是如果現在有100個Instance那你就要怎麼Change你要怎麼寫出這兩個數字老師我就可以訓練一下用Constructive Learning來幹什麼 [2:57:31] 所以接下來就會是一種當你定義好這樣的空間之後接下來你會有所謂的對比資料訓練資料然後呢訓練出每一個字詞該用什麼樣的數字來表示使得這些表示在你的映射的空間裡面能夠滿足你當初定義好的關聯所以接下來在做RepresentationWorld Representation就是在做這些事情包含我們要提到的word2vec或是GloVe不過我們不會提到GloVe大概是講word2vec而已那就來算這些事情那怎麼ChangeModel長什麼樣子然後怎麼去Define這個Dimension就是在做World Representation的會去會去細分的東西所以我們今天呢就到這邊我們下禮拜就會從這邊開始帶然後就會告訴你說當年這個年代為什麼可以用NN找出貓跟狗比較接近跟卡車比較厲害OK好有問題就在Recall是什麼這個要講又是好啦下次再補充就一般基本上在算所謂的Precision Recall尤其是在做資訊檢索的時候通常Recall非常重要 [2:59:02] 那一般進行學習會講所謂的Accuracy但是基本上基本上是接近的東西也許我下次再補充一點東西這樣子Github的連結在NTU COOL上找不到好不過好像在slide上有啊這個這個上面這個Live Announcement有Github連結這樣子好啦剩下的我就在offline回應的我就在offline回應好我們今天就上到這OK好謝謝謝謝