在夜城,不要相信任何人,受到背叛也是自己的錯...
琦薇《電馭叛客:邊緣行者》
我很喜歡賽博龐克風格的相關作品,像是銀翼殺手、攻殼機動隊,都是我很愛的作品。最近在看《電馭叛客:邊緣行者》(好看,推薦大家去看),在動畫中,或是說在賽博龐克風格作品中的人物,為了要達到更高更強大的身體能力,會用電子零件(像是電子手臂,或是增快移動速度的軍事武器植入物等)將身體的一部分改造。而在電馭叛客中有個名詞:神機錯亂,意指若身上已經乘載過多改裝與植入,這些電子組件會侵蝕人性,並擾亂心智,到最後迷失自我。
最近在寫神經網路的我,突然覺得神經網路跟神機錯亂真像。在一開始,疊了一層兩層的神經網路,得到了還算可以(夠用)的結果,但為了要達到更高的準確度、更好的表現,疊了更多層的神經網路上去,卻在梯度下降找最佳解時,碰到梯度爆炸或是梯度消失的問題,最後就一直徘徊在局部最小值的谷底出不來,然後他就停止學習了,不就很像神機錯亂嗎?
扯遠了不可能每次都扯遠吧,今天首先要介紹的是前饋神經網路,若說機器學習的第一個模型是貝氏分類模型,那麼深度學習就一定要從前饋神經網路開始講起。首先會先從神經網路的基本結構開始,一直到自然語言處理實務上的操作,話不多說,就讓我們開始吧!
神經網路的基本架構大致上可以分成三個部分:
這些神經層中,是由一個一個的節點組成,這些節點有時候也會被稱為 「神經元」(neuron) ,這些節點其實就是將特徵乘上權重,再加上一個偏項b,那麼很多個節點所組成的神經網路,事實上也就是很多個函式所組成的函式組!
有沒有覺得很熟悉,因為這個計算方式跟羅吉斯迴歸一模模一樣樣!!! 也就是當時在羅吉斯迴歸時所說的計算原始分數,再將我們計算的z值,也就是原始分數,放入激勵函數,將線性解轉換成非線性解,因為有些狀況之下,線性解並無法解決。
比如說像以上這種狀況,要畫一條線把藍點跟白點分開,左邊數過來第一張圖跟第二張圖都可以只利用一條線將兩者區別,但難保現實中會有第三張圖,這時候就會需要非線性解來幫助我們解決這種類型的問題。
我們在前幾天有討論過Sigmoid以及Softmax,這裡就先不贅述,若遺漏掉那部份的可以回去看我之前的文章。今天要來討論另外兩個激勵函數,也就是tanh 以及Rectified Linear Unit(ReLU)。
A圖是tanh,B圖是ReLU,一樣也是各有優缺點。
但像是Sigmoid或是tanh這種上下界趨平的函式,一階導數很有可能接近於零,接近零的結果,就是在進行梯度下降時發現梯度不見,模型也停止學習了,這就是所謂的梯度消失(gradient vanishing)
詳見我先前的文章:【NLP】Day 12: 豬耳朵餅乾跟機器學習也有關係?機器學習:羅吉斯回歸
神經網路有另外一個優點是,如果發現錯誤,模型會往回修正。但這部分有點複雜,我們在之後的文章再詳細介紹。
自然語言處理上的神經網路又有一點不一樣,在這裡為了處理訓練資料中所沒有的資料,會再多一個嵌入層(embedding layer)。
海賊王
在embedding layer中的第三個位置,並假設embedding layer的矩陣維度為5,那麼one-hot vector就會是[0, 0, 1, 0, 0]
。training data: 索隆/跟/龍馬/拿/劍/決鬥
test data: 鷹眼/跟/比斯塔/用/劍/對決
即使模型沒有在訓練資料看過鷹眼,但是因為Word embedding,我們可以推斷「索隆」跟「鷹眼」有很近的「語意關係」(可能因為都是劍客?),所以還是能推斷「鷹眼」後面可能會出現的字,跟「索隆」很接近。就是這樣,明天見!
下一篇文章
若你有空,也歡迎來看看其他文章
➡️ 【NLP】Day 13: 可不可以再深一點點就好?深度學習基礎知識:你需要知道的這些那些
➡️ 【NLP】Day 12: 豬耳朵餅乾跟機器學習也有關係?機器學習:羅吉斯回歸
➡️ 【NLP】Day 11: 什麼?妳男友有乾妹妹?那你很大機率被綠了!機器學習:貝氏分類器