iT邦幫忙

2021 iThome 鐵人賽

DAY 30
0
自我挑戰組

新手也想開始認識機器學習系列 第 30

Day 30 關於這次的鐵人賽,那些沒能提到的事情

終於到最後一天了,可喜可賀可喜可賀!其實我也知道在這30天的期間內還有很多沒能講到的東西,既然都到最後一天了,那今天就來大概介紹一下那些沒能提到的事情吧!

然後在國慶連假時我們小組裡有人忘記發文,明明都寫到26天結果卻因此斷賽了,哭阿

1.N元語法(N-gram)

其實現在想想,在介紹自然處理(Natural Language Processing,簡稱 NLP)的方法時,也許應該先提一下這個方法的...畢竟 N-gram 是一種基於機器學習的語言模型。要知道所有的語言模型 (Language Model)在做的其實都是一件事,那就是「預測一個句子/詞的機率」說。比方說:

  1. 情緒分類就是預測輸入的句子/文章的情緒為正面/負面的機率
  2. 語言翻譯就是預測A語言的某個辭彙翻譯成B語言時,哪個詞彙機率比較高
  3. 搜尋結果就是根據我們輸入的搜尋內容來進行預測
  4. 預測文字就是在我們輸入的時候,預測我們接下來的輸入內容

眾上所述,而 N-gram 模型是一種語言概率模型,它的輸入是一句話,輸出則是這句話出現的概率。常用的有二元語法 Bi-gram(n=2)和三元語法 Tri-gram(n=3),它會將文本里面的內容按照字節進行大小為 N 的滑動窗口操作,形成了長度是 N 的字節片段序列。

舉個例子,假設我們輸入的句子是『 I am a student 』,則:
Bi-gram:{(I,am),(am,a),(a,stuedent)}
Tri-gram:{(I,am,a),(am,a,student)}

而每一個字節片段稱為 gram,我們會對所有 gram 的出現頻率進行統計。之後假設第 N 個詞的出現只與前面 N-1 個詞相關,而與其它任何詞都不相關,則整句話的機率就是各個詞出現機率的乘積。

TF-IDF

既然都提到 N-gram 了,那就順便來介紹一下 TF-IDF 好了。因為 TF-IDF 很常和 N-gram 搭配在一起來做像是文章的關鍵字提取或是文章的相似度比較、文章分類之類的任務。

TF-IDF 是一種統計方法,主要是用來評估一個詞對於一篇文章的重要程度。TF-IDF 演算法包含了兩個部分:詞頻(term frequency,TF)跟逆向文件頻率(inverse document frequency,IDF)。

  • 詞頻指的是某一個給定的詞語在該文件中出現的頻率,第 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 個詞出現在第 https://chart.googleapis.com/chart?cht=tx&chl=%24d%24 篇文件的頻率記做 https://chart.googleapis.com/chart?cht=tx&chl=%24tf_%7Bt%2Cd%7D%24%20
  • 而逆向文件頻率則是指一個辭彙出現在語料庫內的頻率。假設詞彙 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 總共在 https://chart.googleapis.com/chart?cht=tx&chl=%24d_t%24 篇文章中出現過,則詞彙 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 的 IDF 定義成 https://chart.googleapis.com/chart?cht=tx&chl=%24idf_t%20%3D%20%7Blog(%7BD%20%5Cover%20d_t%7D)%7D%24
    如果辭彙 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 在很多篇文章內都出現過,則 https://chart.googleapis.com/chart?cht=tx&chl=%24d_t%24 會很大,而 IDF 就會很小。

我們將第 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 個詞彙對於第 https://chart.googleapis.com/chart?cht=tx&chl=%24d%24 篇文件的 TF-IDF 權重定義為 https://chart.googleapis.com/chart?cht=tx&chl=%24w_%7Bt%2Cd%7D%24 = https://chart.googleapis.com/chart?cht=tx&chl=%24tf_%7Bt%2Cd%7D%24 x https://chart.googleapis.com/chart?cht=tx&chl=%24idf_t%24 。當辭彙 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 很常出現在文章 https://chart.googleapis.com/chart?cht=tx&chl=%24d%24 內卻不常出現在其他文章內時, https://chart.googleapis.com/chart?cht=tx&chl=%24tf_%7Bt%2Cd%7D%24https://chart.googleapis.com/chart?cht=tx&chl=%24idf_t%24 相乘起來就會很大,我們就能夠知道說辭彙 https://chart.googleapis.com/chart?cht=tx&chl=%24t%24 對於文章 https://chart.googleapis.com/chart?cht=tx&chl=%24d%24 而言非常重要了。

卷積神經網路 CNN


因為傳統的神經網路只能處理一維資料的緣故,因此它有個問題就是他往往會忽略資料的形狀。如果我們使用傳統的神經網路去做圖像識別的話,就需要將2維的圖片打散成1維。而 CNN 就是為了處理這類問題而被開發出來的架構。
(還記得我們在介紹 Self-Attention 時有提到,有人打算用 CNN 的架構來處理 RNN 的問題嗎? 這下你就知道 CNN 的架構有多靈活了吧)

CNN 相較傳統的架構多了 Convolutional layer(卷積層)及 Pooling layer (池化層),用來維持形狀資訊並且避免參數大幅增加。其中,卷積層主要負責做特徵擷取;池化層負責降低參數。在加入此兩層後,最後再加入全連結層並搭配 Softmax 函式來決定輸出結果。

reference

https://zhuanlan.zhihu.com/p/32829048
https://taweihuang.hpd.io/2017/03/01/tfidf/
https://chtseng.wordpress.com/2017/09/12/%E5%88%9D%E6%8E%A2%E5%8D%B7%E7%A9%8D%E7%A5%9E%E7%B6%93%E7%B6%B2%E8%B7%AF/

結尾

不知不覺30天就過去了,雖然我們介紹的東西可能很簡單,但是我其實也不過是個嫩嫩的學生,可能很多東西的內容介紹的並不完善,還可能講錯,但是透過這些回顧,我也理解了自己哪些地方不足,也算是一次難能可貴的經驗。


上一篇
Day 29 BERT
系列文
新手也想開始認識機器學習30

尚未有邦友留言

立即登入留言