簡體   English   中英

為什么我的模型精度停留在〜32%?

[英]Why does my model accuracy get stuck at ~32%?

編輯:我看到有人對這篇文章不滿意,請讓我知道我做了什么,以便將來避免這樣做。 謝謝

我對深度學習非常陌生,正在研究我的第一個基於非教程的RNN模型,但是結果卻很差。

我創建的專輯評論的數據集由安東尼Fantano用1-9(之間的分數各自的目標在這里 )。 我的目標是使用情感分析來根據輸入文本預測分數。

首先,我使用keras Tokenizer實用程序類對原始文本進行預處理,然后將基於令牌的文本填充/截斷為最大大小np.mean(num_tokens) + 2 * np.std(num_tokens) ,然后創建一個嵌入向量(使用keras Embedding類)

我正在對目標數據使用單編碼,長度為10的向量。

我的網絡使用softmax激活生成長度為10的向量,並且我使用categorical_crossentropy作為損失函數。 我已經任意選擇了我的GRU單元的單位大小(這是正確的術語嗎?),但是與它們一起玩並沒有為我帶來更好的結果。

model = Sequential()
model.add(embedding)
model.add(GRU(units=32, return_sequences=True))
model.add(GRU(units=16))
model.add(Dense(10, activation='softmax'))
optimizer = SGD(lr=0.01)
model.compile(loss='categorical_crossentropy',
              optimizer=optimizer,
              metrics=['accuracy'])
model.summary()
model.fit(x_pad, y_encoded,
          validation_split=0.05, epochs=5, batch_size=64)

這是我來自keras的網絡的摘要

_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
layer_embedding (Embedding)  (None, 2290, 8)           8000
_________________________________________________________________
gru_1 (GRU)                  (None, 2290, 32)          3936
_________________________________________________________________
gru_2 (GRU)                  (None, 16)                2352
_________________________________________________________________
dense_1 (Dense)              (None, 10)                170
=================================================================
Total params: 14,458
Trainable params: 14,458
Non-trainable params: 0
_________________________________________________________________
Train on 259 samples, validate on 14 samples

以0.01的學習率,我的准確性始終收斂於0.3166,但是我不確定為什么

259/259 [==============================] - 18s 68ms/step - loss: 2.2998 - acc: 0.2124 - val_loss: 2.2935 - val_acc: 0.4286
Epoch 2/10
259/259 [==============================] - 16s 63ms/step - loss: 2.2927 - acc: 0.2973 - val_loss: 2.2854 - val_acc: 0.3571
Epoch 3/10
259/259 [==============================] - 16s 61ms/step - loss: 2.2822 - acc: 0.2471 - val_loss: 2.2767 - val_acc: 0.3571
Epoch 4/10
259/259 [==============================] - 15s 58ms/step - loss: 2.2728 - acc: 0.2973 - val_loss: 2.2681 - val_acc: 0.4286
Epoch 5/10
259/259 [==============================] - 15s 58ms/step - loss: 2.2651 - acc: 0.3166 - val_loss: 2.2575 - val_acc: 0.4286
Epoch 6/10
259/259 [==============================] - 15s 58ms/step - loss: 2.2548 - acc: 0.3166 - val_loss: 2.2496 - val_acc: 0.4286
Epoch 7/10
259/259 [==============================] - 15s 57ms/step - loss: 2.2469 - acc: 0.3166 - val_loss: 2.2420 - val_acc: 0.4286
Epoch 8/10
259/259 [==============================] - 15s 58ms/step - loss: 2.2382 - acc: 0.3166 - val_loss: 2.2325 - val_acc: 0.4286
Epoch 9/10
259/259 [==============================] - 15s 58ms/step - loss: 2.2305 - acc: 0.3166 - val_loss: 2.2265 - val_acc: 0.4286
Epoch 10/10
259/259 [==============================] - 15s 58ms/step - loss: 2.2222 - acc: 0.3166 - val_loss: 2.2158 - val_acc: 0.4286

我有2種可能的原因,第一種是我的學習率過高(因為准確性似乎有所提高,表明出現了過沖)。 我曾嘗試將其降低到0.05,但是20個紀元后,我的精度無法達到0.2046。 我還嘗試了使用隨機梯度下降和亞當優化器,但均未產生完全不同的結果。

我可能想到的另一個可能的原因是我的數據集太小(僅259個樣本),但是我什至無法通過過擬合獲得高精度,所以我認為這不是問題嗎? 另外,我的實際特征數據(原始文本)非常大而廣泛。

如果有幫助,可以在此處找到我的完整源代碼文件。

無論是正確的方向還是對我的理解的糾正,任何幫助都將不勝感激。 謝謝

我認為您在濫用數據集。 您的評論等級從1到9,即使這不是一個連續范圍,但它的特點是您沒有使用嚴格的總訂單 為了更清楚地說明我的觀點,如果您的算法預測某條評論的評分為8分,而真實標簽為9分,則可能是錯誤的,但只是略有不同。 另一方面,如果它的預測為1,則將相去甚遠。 您當前的系統無法進行區分,因為您將所有10個離散類都視作彼此遠離。 我的建議是,盡管數據具有離散性,但仍應將目標函數轉換為MSE,並使用包裝器來測量准確性。 這無疑對培訓有幫助,以后您可以切換回交叉熵。

免責聲明:我沒有閱讀您的代碼,但是我經常遇到類似的問題,並且能夠按照我所描述的方式解決它們。

Konstantinos是絕對正確的-因為結果是一個數字化的結果,可以測量一定量的東西(在本例中為評論),因此您要使用MSE,並確保模型將數字視為“小數位數”,而不是個別班級。 如果您本質上是確定音樂流派(流行,嘻哈,搖滾等),則可以使用單個類,但是在這種情況下,存在一定程度的“良善”(9個非常好,1個非常好)。不好)。 通常,任何類型的評級問題都需要使用此“ MSE縮放”系統。

在我的關於DL和股票預測的書中的模型/算法中,是使用此方法的主要示例,您可以在此處閱讀更多內容。 它使用深度學習模型對股票進行評級(也稱為“買入評級”)。

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM