• 沒有找到結果。

第三章、 研究方法

第三節、 研究限制

1 資料量

在理想情況下,比如說調用模型的原始資料約為數萬行問句。本研究輸入 約為數千個,當神經網絡在面對數據太少時還是會繼續訓練,可以比喻說放棄 嘗試理解正在發生的事情,而是嘗試閱讀資料而將資料通過記憶而不是學習如 何運用規則來解決問題來進行輸出。

目前自然語言可使用的公開的語料庫有著名的電子書發布商古騰堡以及 Google 的萬億字語料庫,可用於各項應用,比如手寫辨識、拼寫校正、語音辨 識、機器翻譯等,而一般的文本生成比如詩歌、文章等因為有作者歷年作品累 績才能有足夠的原始資料。本研究使用的廣告文案原始資料並無大型資料庫可 支援研究而是靠爬蟲自行至網路蒐集資料而成。

而在資料量不夠的前提下,模型訓練也需特別注意觀察loss 的變化。我們 可觀察loss 的變化來確認資料學習的完整性。當發現模型的 loss 持續呈下降的 趨勢,可以觀察到神經網路訓練有產生效果。但若太早停止學習 (曲線呈現長 時間的平緩) 則有可能是發生過度擬合的現象。

2 Overfitting (過度擬合)

基於上述的研究限制會直接造成過度擬合的訓練結果。過度擬合是指模型 的預測值與觀察到的(真實)值相匹配的程度。而學習Noise(雜訊)而不是資料 的模型被認為是“過度訓練”,因為它適合於訓練數據集,但與新數據集的擬

合度差。

圖3.3.2.1 過度擬合模型-黑線代表較好的配合數據,綠線則是過度配合 資料來源:Ben Hamner. (2014, April 4). Top searches on YouTube: August - November 2014 [Video file]. Retrieved from

https://www.youtube.com/watch?v=tleeC-KlsKA

評估學習情況可觀察loss 訓練圖,損失應該要是一條慢慢減小的曲線,最 後的值要趨近於 0,在現實情況,太趨近於 0 我們會認為是過度擬合,但如果 損失曲線到最後沒有平滑趨近一個數值,表示訓練不夠可以加大次數,如果loss 還是持續很大,表明學習使用的演算法不太理想。

一般來說判斷過度擬合會用到訓練集與測試集的 Loss 及 Accuracy 的表現 來判斷,這通常是由於測試級有標準答案的狀況下來比較,比如說文本分類、

圖像分類、情感辨別….等。以文本生成來說我們使用定量分析方法與實際訪談 文本可用性的角度來看,輸出結果是沒有絕對的正確性,即Accuracy 來進行判 斷,但我們可用訓練集的樣本數與loss 的曲線來觀察歸納模型的表現。

圖3.3.2.2 模型一使用資料大小 407KB 的損失視覺化 資料來源:本研究整理,使用工具Thensorborad

由上圖可以看到在第450 步跟 550 步的時候 loss 已經減緩,表示模型已經 沒有再學習到東西了。模型設置每 50 部記錄一次 loss 資料如下表,可以觀察 loss 在不同 Learning Rate(學習速率)和每 50 步的變化,學習速率通常為第一個 去調整的參數因為同樣的模型套用不同的學習速率可能表現完全不一樣。

表3-3-2-1

Loss data 變化表

Loss data

Step Learning Rate=0.01 Learning Rate=0.005 0

50 100 150 200

0.303696 0.21959 0.023129 0.02036 0.012273 0.010458 0.008109 0.006516 0.006338 0.005177

250

0.005296 0.004711 0.004612 0.004504 0.004188 0.004371 0.003907 0.004296 0.003716 0.004217 0.00358 0.004134 0.00347 0.004067 0.00338 0.004013 0.003292 0.003962 0.003213 0.003921 0.003147 0.00389 0.003093 0.003864 0.003045 0.003838 0.003008 0.003807 0.002975 0.003757

當 loss 已經減緩且長時間沒有變化,表示模型已經沒有再學習到東西了。

在神經網路學習裡需要考慮到追求泛化來防止模型過度的擬合。防止模型過度 的擬合通常有下列幾個方法。

1. 提前終止訓練

2. 加入 Dropout,訓練時 dropout 層中保留結點比例 設為 1, 這裡的 keep_prob 是保留的比例,tensorflow 建議的語法是將其作為一個 placeholder(暫存器),在當需要時再傳入, 當 keep_prob=1,即 100%

保留Dropout 沒有起作用。keep_prob=0.5 時,只保留一半。

Dropout 是指在模型訓練時隨機丟棄部分節點資料以減輕過擬合,不 工作的節點只是暫時不工作但權重還是有保留,下一次輸入可能會工 作。

3. Data Augmentation(數據增加)意味著增加數據點的數量。就圖像而言,

這可能意味著增加數據集中圖像的數量。就傳統的行/列格式數據而言,

這意味著增加行或對象的數量。

4. 調整參數: 把 Learning Rate(學習速率)設定為較小的數值; 把每一次的 batch_size(反向傳播訓練樣本數) 設定為較小的數值。

5. 選擇其他optimizer(優化器)

本研究調用模型使用的啟動函數Relu (Rectified Linear Unit) 正線性單元會 把部分神經元的輸出設為 0,減少了參數的相互依存關係,由此使網路變得稀 疏,也直接減少參數之間的相互關係,間接緩解過度擬合的問題而 Yann 、 Yoshua 和 Hinton (2015)也認為 ReLU 是深度學習中最受歡迎的一種啟動函數。

更容易瞭解網路稀疏性的直觀解釋是Lennie (2003)發現人類的大腦在同一 時間被啟動的神經元約只有 5%以下,這表示神經元在同一個時間的時候會刻 意地忽略大量信號,選擇少部分輸入信號來作回應,證實神經元網路工作的稀 疏特性。以生物學來說這是大腦作為人體最為耗能的器官要可能節省能量,而 生物運算正是消耗了大量成本的主要原因。

相關文件