ニュヌラルネットワヌクを䜿甚しおメヌルボックスをクリヌンアップする方法。 パヌト2

画像



私たちのブログでは、我々は、䜜成に関する倚くの曞き蟌み、電子メヌル、郵送をしお電子メヌルを䜿甚したす。 珟代の䞖界では、人々は倚くの手玙を受け取り、完党に成長する䞭で、メヌルボックスの分類ず構成に問題がありたす。 米囜の゚ンゞニアAndrei Kurenkovがブログで、ニュヌラルネットワヌクを䜿甚しおこの問題をどのように解決したかに぀いお語っおいたす。 このプロゞェクトの進捗状況を匷調するこずにしたした-数日前、ストヌリヌの最初の郚分を公​​開し、今日はその継続を玹介したす。



ディヌプラヌニングはここでは適しおいたせん



Kurenkovが最初にKerasコヌドの研究を始めたずき、圌は間違っおテキストの実際の語順を反映したシヌケンスを䜿甚するず思いたした。 これはそうではないこずが刀明したしたが、これはそのようなオプションが䞍可胜であるこずを意味したせん。 機械孊習の分野で本圓に泚目に倀するのは、リカレントニュヌラルネットワヌクであり、倧量のデヌタを扱うのに最適です、ず著者は曞いおいたす。 このアプロヌチは、単語を扱う堎合、「準備」ステップが実行され、各単語が数倀ベクトルに倉換され、類䌌した単語が類䌌したベクトルになるようにするこずを意味したす。



これにより、文字をバむナリ蚘号のマトリックスに倉換する代わりに、文字の出珟頻床を䜿甚しお単語を数字に眮き換え、数字自䜓を各単語の「意味」を反映するベクトルに眮き換えるこずができたす。 次に、結果のシヌケンスを䜿甚しお、Long Short Term MemoryやGated Recurrentなどのリカレントニュヌラルネットワヌクをトレヌニングするこずができたす。 そしお、このアプロヌチは既に実装されおいたす 䟋を実行しお、䜕が起こるかを芋るこずができたす



 ゚ポック1/15
 7264/7264 [=================================]-1330幎代-損倱2.3454-acc0.2411-val_loss2.0348-val_acc0.3594
゚ポック2/15
 7264/7264 [=================================]-1333s-損倱1.9242-acc0.4062-val_loss1.5605-val_acc0.5502
゚ポック3/15
 7264/7264 [=================================]-1337s-損倱1.3903-acc0.6039-val_loss1.1995-val_acc0.6568
 ...
゚ポック14/15
 7264/7264 [==================================]-1350s-損倱0.3547-acc0.9031-val_loss0.8497-val_acc0.7980
゚ポック15/15
 7264/7264 [=================================]-1352s-損倱0.3190-acc0.9126-val_loss0.8617-val_acc0.7869
テストスコア0.861739277323 


粟床0.786864931846



孊習には氞遠に時間がかかりたしたが、結果はそれほど良くありたせんでした。 おそらく、その理由はデヌタがほずんどなく、シヌケンス党䜓がそれらを分類するのに十分効果的ではなかったためかもしれたせん。 これは、シヌケンスの孊習の耇雑さが増加しおも、テキストの単語を正しい順序で凊理する利点が埗られないこずを意味したすただし、送信者ずレタヌの特定の単語は、どのカテゎリに属しおいるかをよく瀺しおいたす。



しかし、远加の「準備」ステップは、単語のより広い衚珟を䜜成したため、゚ンゞニアにずっおは䟝然ずしお有甚であるず思われたした。 したがっお、圌はそれを詊しおみる䟡倀があるず考え、重芁な局所暙識を怜玢するために畳み蟌みを接続したした。 たた、準備段階を実行するず同時に、結果のベクトルをLSTM局ではなく畳み蟌み局ずサブサンプリング局に転送するKerasの䟋が芋぀かりたした。 しかし、結果は再び印象的ではありたせん



 ゚ポック1/3
 5849/5849 [==================================]-127s-損倱1.3299-acc0.5403-val_loss0.8268-val_acc0.7492
゚ポック2/3
 5849/5849 [==================================]-127s-損倱0.4977-acc0.8470-val_loss0.6076-val_acc0.8415
゚ポック3/3
 5849/5849 [=================================]-127s-損倱0.1520-acc0.9571-val_loss0.6473-val_acc0.8554
テストスコア0.556200767488 


粟床0.858725761773



理論的にはシヌケンスには文字自䜓に関する情報がより倚く含たれおいるため、゚ンゞニアはシヌケンスず準備ステップを䜿甚した孊習がN-gramモデルよりも優れおいるこずを本圓に望んでいたした。 しかし、ディヌプラヌニングは小さなデヌタセットに察しおあたり効果的ではないずいう䞀般的な信念は公平であるこずが刀明したした。



すべおの兆候のため、ばか



したがっお、実行されたテストでは90の粟床は埗られたせんでした。ご芧のずおり、最も䞀般的な2500の単語から属性を決定する珟圚のアプロヌチは適切ではありたせん。 「宿題」のタむプ。 しかし、人気のある単語を削陀したり、いく぀かの単語セットを拒吊したりするこずは危険です-おそらく、私はこの単語たたはその「単玔な」単語を他のカテゎリよりも頻繁に䜿甚するため、「個人」セクション。



ここでは、占いから機胜遞択方法を䜿甚しお、本圓に良い単語を遞択し、機胜しない単語を陀倖する必芁がありたす。 このためには、scikitずそのSelectKBestクラスを䜿甚するのが最も簡単です。これは非垞に高速であるため、ニュヌラルネットワヌクの操䜜に比べお遞択に最小限の時間がかかりたす。 だから、これは圹立ちたすか



凊理される単語の数に察するテストの粟床の䟝存性



画像



うたくいきたす-90



いいね 党䜓的なパフォヌマンスにはわずかな違いがありたすが、より倧きな単語のセットから始める方が明らかに優れおいたす。 ただし、このセットは機胜を遞択するこずで倧幅に削枛でき、パフォヌマンスを損なうこずはありたせん。 どうやら、このニュヌラルネットワヌクは再トレヌニングに問題はありたせん。 プログラムによる「最良および最悪」の単語の怜査により、十分に定矩されおいるこずが確認されたす。







「最良」および「最悪」の単語カむ2乗基準を䜿甚した属性の遞択scikitの䟋のコヌドに基づく



倚くの「良い」単語は、予想されるように、名前たたは特定の甚語たずえば、「コントロヌラヌ」ですが、Kurenkovは、「remember」や「total」などの単語を遞択しないず述べおいたす。 䞀方、「最悪」の単語は、䞀般的すぎるか、たれすぎるため、かなり予枬可胜です。



芁玄するず、単語が倚いほど、機胜が優れおおり、機胜を遞択するこずで仕事が速くなりたす。 それは圹立ちたすが、テスト結果をさらに増やす方法があるかもしれたせん。 芋぀けるために、゚ンゞニアは、 scikit learnから取埗した゚ラヌマトリックスを䜿甚しお、ニュヌラルネットワヌクがどの゚ラヌを匕き起こすかを調べるこずにしたした 。



画像



ニュヌラルネットワヌクの結果の誀差行列



玠晎らしい、ほずんどのカラヌブロックは斜めに配眮されおいたすが、他にも「迷惑なスポット」がいく぀かありたす。 特に、芖芚化では、カテゎリ「未読」ず「重芁」に問題があるずマヌクされたす。 しかし、埅っおください これらのカテゎリは䜜成したせんでしたが、システムがそれらず送信枈みカテゎリの䞡方をどれだけうたく凊理できるかは気にしたせん。 間違いなく、それらを削陀し、䜜成したカテゎリでニュヌラルネットワヌクが正確に機胜するこずを確認する必芁がありたす。



したがっお、すべおの䞍適切なカテゎリが存圚せず、属性の最倧数が䜿甚される最埌の実隓を実行しおみたしょう-4,000の最良の遞択で10,000ワヌド



 ゚ポック1/5
 5850/5850 [=======================================]-2秒-損倱0.8013-acc0.7879-val_loss0.2976- val_acc0.9369
゚ポック2/5
 5850/5850 [================================]-1秒-損倱0.1953-acc0.9557-val_loss0.2322- val_acc0.9508
゚ポック3/5
 5850/5850 [=======================================]-1秒-損倱0.0988-acc0.9795-val_loss0.2418- val_acc0.9338
゚ポック4/5
 5850/5850 [======================================]-1秒-損倱0.0609-acc0.9865-val_loss0.2275- val_acc0.9462
゚ポック5/5
 5850/5850 [===============================]-1秒-損倱0.0406-acc0.9925-val_loss0.2326- val_acc0.9462
 722/722 [===============================]-0s     
テストスコア0.243211859068 




粟床0.940443213296



画像



新しいニュヌラルネットワヌクの結果の誀差行列



行くぞ ニュヌラルネットワヌクは、94の粟床でカテゎリを掚枬できたす。 その効果は䞻に倚数の属性セットによるものですが、優れた分類噚scikitがパッシブアグレッシブ分類噚を孊習する自䜓は、同じ入力デヌタに察しお91の粟床を提䟛したす。 実際、この堎合、サポヌトベクタヌメ゜ッドLinearSVCも効果的であるずいう考えがありたす。これを䜿甚するず、玄94の粟床を埗るこずができたす。



したがっお、結論は非垞に単玔です。「トレンディな」機械孊習法は、小さなデヌタセットでは特に効果的ではなく、N-gram + TF-IFD + SVMなどの叀いアプロヌチは、最新のニュヌラルネットワヌクず同じように機胜したす。 ぀たり、文字数が少なく、䞊蚘の䟋ず同じように明確に゜ヌトされおいれば、Bag of Wordsメ゜ッドを䜿甚するだけで十分に機胜したす。



おそらく、Gmailでカテゎリを䜿甚する人はほずんどいたせんが、優れた分類子の䜜成が本圓に簡単な堎合、Gmailにワンクリックでメヌルを敎理するための各文字のカテゎリを定矩する機械孊習システムがあればよいでしょう。 この段階で、Kurenkovは自分の結果を20改善し、その過皋でKerasに䌚ったこずに非垞に満足しおいたす。



゚ピロヌグ远加実隓



実隓に取り組んでいる間、゚ンゞニアは別のこずをしたした。 圌は問題にぶ぀かりたした。すべおの蚈算は長時間にわたっお実行されたした。ほずんどの堎合、玠材の䜜者はGPUを䜿甚しお機械孊習を開始するずいう今では普通のトリックを䜿甚しなかったからです。 優れたリヌダヌシップの埌、圌はこれを行い、玠晎らしい結果を埗たした。







グラフィックプロセッサの有無にかかわらず、䞊蚘の90を達成するのにかかる時間。 玠晎らしい加速



94の粟床を瀺すKerasニュヌラルネットワヌクは、サポヌトベクトル法に基づいたネットワヌク孊習よりもトレヌニングおよび操​​䜜がはるかに高速であるこずに泚意しおください。 最初の詊みは、私が詊したすべおの最善の解決策であるこずが刀明したした。



゚ンゞニアは、゚ラヌマトリックス以倖の䜕かを芖芚化するこずを望んでいたした。 この点で、著者は芖芚化の問題に関する議論に出くわしたしたが、Kerasではほずんど達成されおいたせん。 これにより、孊習プロセスを衚瀺するための優れたオプションを備えたKerasの分岐点に至りたした。 圌はあたり効果的ではありたせんが、奜奇心が匷いです。 少し倉曎した埌、圌は優れたトレヌニングスケゞュヌルを䜜成したした。







わずかに倉曎された䟋を䜿甚したニュヌラルネットワヌクのトレヌニングの進捗状況倚数の凊理された単語を䜿甚



トレヌニングの粟床がどのように統䞀され、敎合する傟向があるかを明確に瀺しおいたす。



悪くはありたせんが、゚ンゞニアは粟床の向䞊をより懞念しおいたした。 以前ず同様に、圌が最初に尋ねたのは、「ニュヌラルネットワヌクを支揎するために文字の衚瀺をすばやく倉曎するこずは可胜ですか」テキストをマトリックスに倉換するKerasモゞュヌルには、バむナリマトリックスの䜜成に加えお、単語数、頻床、たたはTF倀を持぀マトリックスがいく぀かありたす-Idf。



行列に蚘号の圢で栌玍されおいる単語の数を倉曎するこずも難しくありたせんでした。そのため、Kurenkovは、蚘号の皮類ず単語の数がテストの粟床にどのように圱響するかを評䟡するサむクルをいく぀か曞きたした。 興味深いスケゞュヌルが刀明したした







特城のタむプず特城ずしお䜿甚される単語の数に応じたテストの粟床基本的な粟床は、最も近い「近傍」のkを考慮に入れたす



ここでは、単語の数を1,000を超える倀に増やす必芁があるこずが初めお明らかになりたした。たた、シンプルで最䜎の情報密床バむナリを特城ずする機胜の皮類は、デヌタに関する情報をより倚く送信する他の皮類よりも悪くなく、さらに良くなっおいるこずがわかりたした。



これはかなり予枬可胜ですが、おそらく「コヌド」や「グレヌド」などのより興味深い単語は文字を分類するのに圹立ち、文字内の1぀の出珟は、倚数の参照ず同じくらい重芁です。 疑いの䜙地なく、有益な機胜の存圚は有甚かもしれたせんが、再蚓緎の可胜性の増加により、テスト結果を䜎䞋させる可胜性もありたす。



䞀般に、バむナリ蚘号は他の蚘号よりも優れおいるこずがわかり、単語数を増やすず完党に87〜88の粟床が埗られたす。



゚ンゞニアはたた、基本的なアルゎリズムを調べお、k最近傍法 scikit のようなものが効率の芳点からニュヌラルネットワヌクに盞圓しないこずを確認したした-これは真実であるこずが刀明したした。 線圢回垰はさらに悪化したため、ニュヌラルネットワヌクの遞択には十分な根拠がありたす。



ずころで、単語数の増加は無駄ではありたせん。 キャッシュされたバヌゞョンのデヌタであっおも、毎回メヌルを解析しお属性を抜出する必芁がなかった堎合、これらすべおのテストの起動には倚くの時間がかかりたした。



画像



単語数に察する時間の増加の線圢䟝存。 実際には悪くない、線圢回垰ではずっず悪い



単語数の増加は助けたしたが、実隓者はただ90の望たしいしきい倀に到達できたせんでした。 したがっお、次の考えは2,500ワヌドに固執し、ニュヌラルネットワヌクのサむズを倉曎しようずするこずでした。 さらに、刀明したように、Kerasの䟋のモデルでは、隠れ局で50のドロップアりト正則化が行われおいたす。゚ンゞニアは、これによりネットワヌクの効率が本圓に向䞊するかどうかを確認したした。 圌はルヌプの別のセットを実行し、別の玠晎らしいグラフを埗たした



画像



さたざたなドロップアりト正則化オプションず非衚瀺レむダヌサむズの粟床グラフ



隠れ局のサむズは、すべおが正垞に機胜するのに十分な倧きさである必芁はないこずがわかりたした 隠れ局の64たたは124個のニュヌロンは、暙準の512ず同様にタスクを実行できたす。これらの結果は、5回の起動で平均化されるため、出力の小さな広がりは、小さな隠れ局の機胜ずは関係ありたせん。



したがっお、有甚な兆候を特定するためだけに倚数の単語が必芁になりたすが、有甚な兆候自䜓はそれほど倚くありたせん。そうでなければ、より良い結果を埗るには、より倚くのニュヌロンが必芁になりたす。 これは、小さな隠れ局を䜿甚するこずで倚くの時間を節玄できるためです。



画像



繰り返したすが、蚈算時間は隠れ局のニュヌロンの増加ずずもに盎線的に増加したす



しかし、これは完党に正確ではありたせん。 倚くの兆候のあるより倚くの実行を実行するず、゚ンゞニアは、隠れ局の暙準サむズ512ニュヌロンが小さい隠れ局よりもはるかに優れおいるこずを発芋したした。







それぞれ512および32個のニュヌロンを持぀レむダヌのパフォヌマンスの比范



すでに知られおいるこずを述べるこずだけが残っおいたす。蚀葉が倚ければ倚いほど良いです。



All Articles