iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
AI & Data

邁向成為語言資料科學家的偉大航道系列 第 14

【NLP】Day 14: 神經網路也會神機錯亂?不,只會精神錯亂...深度學習:前饋神經網路

  • 分享至 

  • xImage
  •  

在夜城,不要相信任何人,受到背叛也是自己的錯...
琦薇《電馭叛客:邊緣行者》

我很喜歡賽博龐克風格的相關作品,像是銀翼殺手、攻殼機動隊,都是我很愛的作品。最近在看《電馭叛客:邊緣行者》(好看,推薦大家去看),在動畫中,或是說在賽博龐克風格作品中的人物,為了要達到更高更強大的身體能力,會用電子零件(像是電子手臂,或是增快移動速度的軍事武器植入物等)將身體的一部分改造。而在電馭叛客中有個名詞:神機錯亂,意指若身上已經乘載過多改裝與植入,這些電子組件會侵蝕人性,並擾亂心智,到最後迷失自我。

最近在寫神經網路的我,突然覺得神經網路跟神機錯亂真像。在一開始,疊了一層兩層的神經網路,得到了還算可以(夠用)的結果,但為了要達到更高的準確度、更好的表現,疊了更多層的神經網路上去,卻在梯度下降找最佳解時,碰到梯度爆炸或是梯度消失的問題,最後就一直徘徊在局部最小值的谷底出不來,然後他就停止學習了,不就很像神機錯亂嗎?

扯遠了不可能每次都扯遠吧,今天首先要介紹的是前饋神經網路,若說機器學習的第一個模型是貝氏分類模型,那麼深度學習就一定要從前饋神經網路開始講起。首先會先從神經網路的基本結構開始,一直到自然語言處理實務上的操作,話不多說,就讓我們開始吧!

神經網路的結構

神經網路的基本架構大致上可以分成三個部分:

  • 輸入層(input layer):初步資料會先經過輸入層進行處理。在自然語言處理中通常會是傳遞給embedding layer的one-hot vector。
  • 隱藏層(hidden layer):隱藏層可以有一層以上,在隱藏層中,會透過「權重」計算輸出。通常隱藏層會篩選出多餘的資訊,並將所習得之重要資訊傳遞給下一層隱藏層。
  • 輸出層(output layer):學習成果,通常會是以機率的形式呈現。

神經元

這些神經層中,是由一個一個的節點組成,這些節點有時候也會被稱為 「神經元」(neuron) ,這些節點其實就是將特徵乘上權重,再加上一個偏項b,那麼很多個節點所組成的神經網路,事實上也就是很多個函式所組成的函式組!

有沒有覺得很熟悉,因為這個計算方式跟羅吉斯迴歸一模模一樣樣!!! 也就是當時在羅吉斯迴歸時所說的計算原始分數,再將我們計算的z值,也就是原始分數,放入激勵函數,將線性解轉換成非線性解,因為有些狀況之下,線性解並無法解決。

比如說像以上這種狀況,要畫一條線把藍點跟白點分開,左邊數過來第一張圖跟第二張圖都可以只利用一條線將兩者區別,但難保現實中會有第三張圖,這時候就會需要非線性解來幫助我們解決這種類型的問題。

激勵函數

我們在前幾天有討論過Sigmoid以及Softmax,這裡就先不贅述,若遺漏掉那部份的可以回去看我之前的文章。今天要來討論另外兩個激勵函數,也就是tanh 以及Rectified Linear Unit(ReLU)。

A圖是tanh,B圖是ReLU,一樣也是各有優缺點。

  • tanh函式:在接近上下界時也趨近於平,所以也能像Sigmoid一樣擅長處理離群值,另外一樣也可以微分,記得先前所說找最佳解時,可不可微是很重要的特性,通常我們希望可微啦,人稱欲可微
  • ReLU:結果可以非常接近線性。

但像是Sigmoid或是tanh這種上下界趨平的函式,一階導數很有可能接近於零,接近零的結果,就是在進行梯度下降時發現梯度不見,模型也停止學習了,這就是所謂的梯度消失(gradient vanishing)

梯度下降

詳見我先前的文章:【NLP】Day 12: 豬耳朵餅乾跟機器學習也有關係?機器學習:羅吉斯回歸

Error backpropagation

神經網路有另外一個優點是,如果發現錯誤,模型會往回修正。但這部分有點複雜,我們在之後的文章再詳細介紹。

自然語言處理的運作

自然語言處理上的神經網路又有一點不一樣,在這裡為了處理訓練資料中所沒有的資料,會再多一個嵌入層(embedding layer)。

  1. 輸入層(input layer):one-hot vector
    自然語言處理的第一層神經網路通常會是one-hot vector,通常是為了標注其在嵌入層中的位置,藉此幫助模型更好理解語意。假如說今天海賊王在embedding layer中的第三個位置,並假設embedding layer的矩陣維度為5,那麼one-hot vector就會是[0, 0, 1, 0, 0]
  2. 嵌入層(embedding layer)
    記得在講Word2Vec時(忘記的話可以回去複習 Day 9: 又是國王皇后的例子啦!Word2Vec、N-Gram,我這篇的點閱率低的可憐。)我們有提到可以訓練一個word embedding,讓電腦了解語意間的關係,但是要注意這裡的語意關係很吃訓練資料的領域跟品質。這麼一來,即使出現了模型先前沒「看」過的字,透過這個embedding也能較好地處理這類的問題。比如說:
    training data: 索隆/跟/龍馬/拿/劍/決鬥
    test data: 鷹眼/跟/比斯塔/用/劍/對決
    
    即使模型沒有在訓練資料看過鷹眼,但是因為Word embedding,我們可以推斷「索隆」跟「鷹眼」有很近的「語意關係」(可能因為都是劍客?),所以還是能推斷「鷹眼」後面可能會出現的字,跟「索隆」很接近。
  3. 隱藏層(hidden layer)
    再次乘上學習過後的權重。
  4. 輸出層(output layer):activation function
    同樣就是透過激勵函數輸出成機率,詳見前文。

就是這樣,明天見!

下一篇文章

➡️ 【NLP】Day 15: 跟你我一樣選擇性記憶的神經網路?深度學習:長短期記憶 LSTM

若你有空,也歡迎來看看其他文章

➡️ 【NLP】Day 13: 可不可以再深一點點就好?深度學習基礎知識:你需要知道的這些那些
➡️ 【NLP】Day 12: 豬耳朵餅乾跟機器學習也有關係?機器學習:羅吉斯回歸
➡️ 【NLP】Day 11: 什麼?妳男友有乾妹妹?那你很大機率被綠了!機器學習:貝氏分類器


上一篇
【NLP】Day 13: 可不可以再深一點點就好?深度學習基礎知識:你需要知道的這些那些
下一篇
【NLP】Day 15: 圓圓圈圈圓圓~深度學習:循環神經網路 RNN
系列文
邁向成為語言資料科學家的偉大航道30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言