我的答案是基於假設爲作者的數據集添加至少100個否定樣本並且有1000個正樣本對於該問題的作者是可接受的,因爲我還沒有回答我對作者的問題
由於這種情況下有檢測具體話題看起來就像話題分類的特例我會建議使用兩種簡單的課程分類方法1類 - 你的主題和另一個 - 開始的所有其他主題
我成功地採用了同樣的方法進行人臉識別任務 - 在開始時我用一個輸出神經元面部檢測的輸出水平較高,如果沒有檢測到臉部,則輸出較低
儘管如此,這種方法給我的準確性太低 - 小於80%但是,當我嘗試使用2個輸出神經元 - 一個類用於圖像上的臉部存在,在圖像上沒有檢測到臉部,那麼即使不使用CNN,它也可以爲MLP提供超過90%的準確性,即使不使用CNN
這裏的關鍵是將SoftMax函數用於輸出層。它顯着提高了準確性。從我的經驗,它增加了MNIST數據集的精度甚至MLP從92%到97%的同型號
關於數據集。至少從我的經驗來看,大多數使用培訓師的分類算法對於訓練數據集中每個類的等量樣本更有效。事實上,如果我有一個班的平均數量少於其他班的10%,那麼這個模型幾乎沒有用來檢測這個班。因此,如果您的主題有1000個樣本,那麼我建議創建1000個樣本,儘可能多的不同主題
或者,如果您不想爲數據集創建如此大的負樣本集,可以爲您的數據集創建一組較小的負樣本,並使用批量大小的批量訓練= 2倍負樣本數量。爲了做到這一點,在正塊與每個塊的大小分割你正樣本〜陰性樣品量,並且當由N個批次訓練過程的每次迭代與陽性樣品和所有的陰性樣本的[I]塊訓練你NN爲每批。請注意,較低的準確性將是此折衷的價格
此外,您可以考慮創建更通用的主題檢測器 - 找出可能出現在您的模型應分析的文本中的所有可能的主題,例如 - 10個主題,並創建一個訓練數據集,每個主題有1000個樣本。它也可以提供更高的準確性 關於數據集還有一點。最佳實踐是僅使用數據集的一部分來訓練模型,例如 - 80%,其餘20%用於交叉驗證。未知的這種交叉驗證之前爲模型數據會給你模型精確度的良好估計在現實生活中,而不是訓練數據集,並允許以避免過度擬合問題
關於模型的構建。我喜歡通過「從簡單到複雜」的方式來完成它。所以我建議從簡單MLP開始,使用SoftMax輸出和1000個正數和1000個負數樣本的數據集。在達到80%-90%的準確率後,您可以考慮爲您的模型使用CNN,而且我會建議增加訓練數據集數量,因爲深度學習算法對於更大的數據集更高效
回答你的問題之前,我需要更多的信息: 1. \t是否使用Doc2Vec,Word2Vec或其他一些算法來表示文本矢量? 2. \t您是如何創建負樣本的?你有沒有檢查他們是否定的或他們是隨機生成的?負樣本的數量是多少? –
1.我正在使用word2vec 2.原問題中沒有負樣本。我添加了一些嘗試構建具有傾斜數據的分類器。這些負面樣本,當我使用它們時,來自完全不同的主題。謝謝,斯捷潘! – JAC
感謝您的澄清,我認爲您的案例中分類ML算法效率低下的關鍵原因是訓練數據集中每個類別的樣本數量存在很大差異。根據我的經驗,每個班級的樣本數量相等時可以達到最佳的準確度。你能創造1000個負面樣本嗎? –