私が取り出したWikipediaのデータに基づいて記事分類器を作成しました。これは5つの合計分類に由来します。記事のクラシファイアの精度を改善する
彼らは以下のとおりです。
Finance (15 articles) [1,0,0,0,0]
Sports (15 articles) [0,1,0,0,0]
Politics (15 articles) [0,0,1,0,0]
Science (15 articles) [0,0,0,1,0]
None (15 random articles not pertaining to the others) [0,0,0,0,1]
私はウィキペディアに行って、私は自分のネットワークを訓練するために使用することができ、私のコーパスを構築するためにこれらの各カテゴリから約15かなり長い記事をつかみました。
すべての記事から集まった約1000語のレキシコンを作成した後、それぞれの記事をword vector
と、正しいclassifier
というラベルに変換しました。
単語ベクトルはhot array
であり、ラベルはone hot array
です。例えば
、ここでは1品を表現したものです:だから
[
[0,0,0,1,0,0,0,1,0,0,... > 1000], [1,0,0,0] # this maps to Finance
]
、本質的に、私は彼らの正しいclassifiers
にマッピングされたword vectors
のこのランダム化されたリストを持っています。
私のネットワークは、各レイヤに500のノードを含む3層の深いニューラルネットです。私は30エポック以上のネットワークを通過し、私のモデルがどれほど正確であるかを表示します。
今のところ、Imは約53%~55%の精度を得ています。私の質問は、これを90年代にするために何ができるのでしょうか?それは可能なのでしょうか、それとも私はこのことを訓練しようと夢中になりますか?
さらに、私の主要なボトルネックは何ですか?
ニューラルネットワークは、実際には単一のマシン上で最高を実行するように設計されていません
以下のコメントごとに編集されたクラスタ、または少なくとも生産グレードのマシンを持っている場合、彼らは非常に良い仕事。コーパスの「ロングテール」を排除することは非常に一般的です。用語が1つのドキュメントに1回しか表示されない場合は、それを排除することができます。また、同じ単語の倍数をキャプチャしないように、いくつかのステミングを適用することもできます。剪定前にコーパスにTFIDF変換を適用することを強くお勧めします。
ネットワークサイズの最適化は、それ自身の分野です。基本的には、より多くの/少ないノードを追加して、それがどこにあるのかを見てみましょう。技術的な議論については、以下を参照してください。 https://stats.stackexchange.com/questions/181/how-to-choose-the-number-of-hidden-layers-and-nodes-in-a-feedforward-neural-netw
私はストップワードを削除しましたが、何らかのタイプのフィルタリングを適用しない限り、レキシコンは膨大です。レキシコンは35000語以上です。私は全体を渡して1時間待たなければならないのでしょうか?私のmacbookプロハハを爆破しようとしている 残りについては、悪いことをして、何が起こるかを参照してください! – Kris
もう1つ質問があります。どのように私は隠れた層に入れなければならないニューロンの量を最適化するのですか?どのように多くのレイヤーを使用すべきか、私はどのように知っていますか?モデルの精度にも大きな影響を与えているようです。 – Kris
があなたのコメントごとに編集を追加しました。 – flyingmeatball