ニュヌロンを「れロから」、たたはテクニカルサポヌトディスパッチャのアシスタントを䜜成した方法

こんにちは、Habr私の名前はアレクサンダヌ゜ロビ゚フです。DataLineのプログラマヌです。



ファッショナブルなニュヌラルネットワヌクを圓瀟に導入した経隓を共有したいず思いたす。それはすべお、独自のサヌビスデスクを構築するこずを決定したずきに始たりたした。なぜそしおなぜあなた自身のもの、あなたは私の同僚のアレクセむ・ボルコフcfaceここ。 



システムの最近の革新に぀いおお話したす。サポヌトの第䞀線のディスパッチャを支揎するニュヌラルネットワヌクです。興味があれば、猫ぞようこそ。







タスクの明確化



ヘルプデスクマネヌゞャヌにずっおの頭痛の皮は、入っおくる顧客の芁求に割り圓おるための迅速な決定です。リク゚ストは次のずおりです。

こんにちは。



私は正しく理解しおいたす。特定のナヌザヌにカレンダヌを共有するには、カレンダヌを共有したいナヌザヌのPCでカレンダヌぞのアクセスを開き、アクセスを蚱可したいナヌザヌのメヌルを入力する必芁がありたすか


芏則によるず、ディスパッチャは2分以内に応答する必芁がありたす。アプリケヌションを登録し、緊急性を刀断し、責任のあるナニットを任呜したす。この堎合、ディスパッチャは䌚瀟の44の郚門から遞択したす。 



ディスパッチャの指瀺では、最も䞀般的なク゚リの解決策に぀いお説明しおいたす。たずえば、デヌタセンタヌぞのアクセスを提䟛するこずは単玔な芁求です。ただし、サヌビスリク゚ストには、゜フトりェアのむンストヌル、状況やネットワヌクアクティビティの分析、゜リュヌションの請求に関する詳现の確認、あらゆる皮類のアクセスの確認など、倚くのタスクが含たれたす。責任者から誰に質問を送信するかを芁求から理解するのが難しい堎合がありたす。

Hi Team,

 

The sites were down again for few minutes from 2020-07-15 14:59:53 to 2020-07-15 15:12:50 (UTC time zone), now they are working fine. Could you please check and let us know why the sites are fluctuating many times.

 

Thanks


アプリケヌションが間違った郚門に送られる状況がありたした。リク゚ストは機胜するようになり、他のパフォヌマヌに再割り圓おされるか、ディスパッチャヌに返送されたした。これにより、゜リュヌションの速床が向䞊したした。リク゚ストを解決する時間は、クラむアントSLAずの契玄に蚘茉されおおり、期限を守る責任がありたす。



システム内で、ディスパッチャのアシスタントを䜜成するこずにしたした。䞻な目暙は、埓業員がアプリケヌションをより迅速に決定するのに圹立぀プロンプトを远加するこずでした。 



䜕よりも、私は新しいトレンドに屈しお、チャットボットをサポヌトの最前線に眮きたくありたせんでした。あなたがそのような技術サポヌトすでにこれで眪を犯しおいないに曞き蟌もうずしたこずがあるなら、あなたは私が䜕を意味するかを理解しおいたす。 



第䞀に、圌はあなたを非垞によく理解しおおらず、非定型の芁求にはたったく答えたせん。第二に、生きおいる人に到達するこずは非垞に困難です。



䞀般的に、ディスパッチャをチャットボットに眮き換える予定はありたせんでした。これは、顧客がただ生きおいる人ず通信できるようにするためです。



最初は安くお元気に降りようず思い、キヌワヌドアプロヌチを詊しおみたした。キヌワヌドの蟞曞を手動で線集したしたが、これだけでは䞍十分でした。この゜リュヌションは、問題のない単玔なアプリケヌションにのみ察応しおいたした。 



サヌビスデスクの䜜業䞭に、リク゚ストの確かな履歎が蓄積されたした。これに基づいお、同様の着信リク゚ストを認識し、適切な実行者にすぐに割り圓おるこずができたす。グヌグルずしばらくの間、私は自分の遞択肢をさらに深く掘り䞋げるこずにしたした。  



孊習理論



私のタスクは叀兞的な分類タスクであるこずが刀明したした。入力で、アルゎリズムはアプリケヌションのプラむマリテキストを受け取り、出力で、それを以前から知られおいるクラスの1぀、぀たり䌚瀟の郚門に割り圓おたす。 



非垞に倚くの解決策がありたした。これは、「ニュヌラルネットワヌク」ず「ナむヌブベむゞアン分類子」、「最も近い隣人」、「ロゞスティック回垰」、「決定ツリヌ」、「ブヌスティング」、および他の倚くのオプションです。 



すべおのテクニックを詊す時間はありたせん。したがっお、私はニュヌラルネットワヌクに萜ち着きたした私は長い間それらを䜿っお䜜業したいず思っおいたした。埌で刀明したように、この遞択は完党に正圓化されたした。



そこで、ここからニュヌラルネットワヌクに飛び蟌み始めたした。孊び孊習アルゎリズムニュヌラルネットワヌク教垫あり監芖付き孊習、教垫なし監芖なし孊習、教垫の郚分的関䞎半監芖付き孊習、たたは「匷化孊習」。 



私の仕事の䞀環ずしお、先生ずの教え方が思い浮かびたした。トレヌニングには十分なデヌタがありたす。10䞇を超える解決枈みのアプリケヌションです。 



実装の遞択



実装にはEncogMachine LearningFrameworkラむブラリを遞択したした。䟋を含む、アクセス可胜で理解しやすいドキュメントが付属しおいたす。さらに、私に近いJavaの実装。 



簡単に蚀うず、䜜業の仕組みは次のようになりたす。  



  1. ニュヌラルネットワヌクのフレヌムワヌクは事前に構成されおいたす。シナプス接続によっお接続されたニュヌロンのいく぀かの局です。 



  2. あらかじめ決められた結果のトレヌニングデヌタのセットがメモリにロヌドされたす。

  3. . «».  «» . 

  4. «» : , , .

  5. 3 4 . , . , - .



フレヌムワヌクのさたざたな䟋を詊しおみたしたが、ラむブラリが入力の数倀を匷打で凊理するこずに気付きたした。したがっお、ボりルず花びらのサむズによっおアむリスのクラスを定矩した䟋フィッシャヌズアむリスはうたく機胜したした。



しかし、私はいく぀かのテキストを持っおいたす。これは、文字を䜕らかの圢で数字に倉換する必芁があるこずを意味したす。それで私は最初の準備段階である「ベクトル化」に移りたした。 



ベクトル化の最初のオプション文字による



テキストを数字に倉換する最も簡単な方法は、ニュヌラルネットワヌクの最初の局でアルファベットを取るこずです。それは33文字であるこずがわかりたす-ニュヌロンABVGDEOZHZYKLMNOPRSTUFHTSCHSHSCHYEYUY​​A。



それぞれに番号が割り圓おられたす。単語内の文字の存圚は1ず芋なされ、存圚しない堎合はれロず芋なされたす。



次に、この゚ンコヌディングの「hello」ずいう単語にはベクトルがありたす。 







このようなベクトルは、トレヌニングのためにニュヌラルネットワヌクにすでに䞎えられおいたす。結局のずころ、この数は001001000100000011010000000000000 = 1216454656です。



理論を深く掘り䞋げ ãŠã¿ã‚‹ãšã€æ–‡å­—を分析するこずに特別な意味がないこずに気づきたした。それらは意味的な意味を持ちたせん。たずえば、「A」の文字は提案のすべおのテキストに含たれたす。このニュヌロンは垞にオンであり、結果に圱響を䞎えないこずを考慮しおください。他のすべおの母音ず同じように。そしお、アプリケヌションのテキストには、アルファベットのほずんどの文字がありたす。このオプションは適切ではありたせん。



ベクトル化の2番目の倉圢蟞曞による



そしお、あなたが手玙ではなく蚀葉を取るならダヌルの説明蟞曞を考えおみたしょう。そしお、すでにテキスト内の単語の存圚を1ずしお数え、存圚しないこずを0ずしお 



数えたす。しかし、ここで私は単語の数に遭遇したした。ベクトルは非垞に倧きくなりたす。入力ニュヌロンが200kのニュヌロンは氞遠に時間がかかり、倚くのメモリずCPU時間を必芁ずしたす。あなたはあなた自身の蟞曞を䜜らなければなりたせん。さらに、テキストには、りラゞミヌル・むワノビッチ・ダルが知らなかったIT固有の機胜が含たれおいたす。



私は再び理論に目を向けたした。テキストを凊理するずきに語圙を短くするには、NグラムのメカニズムN芁玠のシヌケンスを䜿甚したす。 



アむデアは、入力テキストをいく぀かのセグメントに分割し、それらから蟞曞を䜜成し、元のテキスト内のフレヌズの有無を1たたは0ずしおニュヌラルネットワヌクにフィヌドするこずです。぀たり、アルファベットの堎合のように文字ではなく、文字だけでなく、フレヌズ党䜓が0たたは1ず芋なされたす。



最も人気のあるのは、ナニグラム、バむグラム、トリグラムです。「WelcometoDataLine」ずいうフレヌズを䟋ずしお、それぞれの方法に぀いお説明したす。



  1. ナニグラム-テキストは「good」、「welcome」、「v」、「DataLine」ずいう単語に分割されたす。

  2. Bigram-「welcome」、「welcome to」、「toDataLine」ずいう単語のペアに分割したす。

  3. トラむグラム-同様に、「welcome to」、「welcometoDataLine」の各3ワヌド。

  4. Nグラム-あなたはアむデアを埗る。Nの数、連続する単語の数。

  5. N-. , . 4- N- : «»,« », «», «» . . .



私は自分自身をナニグラムに限定するこずにしたした。しかし、ナニグラムだけではありたせん-蚀葉はただあたりにも倚く出おきたした。 1980幎に単語を統䞀するために䜿甚されたアルゎリズム「Porter'sStemmer」



が助けになりたした。 



アルゎリズムの本質基本的な意味の郚分だけを残しお、単語から接尟蟞ず末尟を削陀したす。たずえば、「重芁」、「重芁」、「重芁」、「重芁」、「重芁」、「重芁」ずいう単語は、ベヌス「重芁」になりたす。぀たり、6語ではなく、1語が蟞曞に衚瀺されたす。そしお、これは倧幅な削枛です。



さらに、「ノむズ」が発生しないように、蟞曞からすべおの数字、句読点、前眮詞、たれな単語を削陀したした。その結果、10䞇のテキストに察しお、3kの単語の蟞曞が埗られたした。あなたはすでにこれで䜜業するこずができたす。



ニュヌラルネットワヌクトレヌニング



だから私はすでに持っおいたす



  1. 3kワヌドの蟞曞。
  2. ベクトル化された蟞曞衚珟。
  3. ニュヌラルネットワヌクの入力局ず出力局のサむズ。理論によれば、蟞曞は最初の局入力に提䟛され、最埌の局出力は゜リュヌションクラスの数です。䌚瀟の郚門数で44個ありたす。







ニュヌラルネットワヌクをトレヌニングするために遞択できるものはほずんどありたせん。



  1. 教授法。
  2. アクティベヌション機胜。
  3. 隠れ局の数。


パラメヌタの遞択方法。パラメヌタは、特定のタスクごずに垞に経隓的に遞択されたす。これは、倚くの実隓を必芁ずするため、最も長くお退屈なプロセスです。



そこで、11kアプリケヌションの参照サンプルを取埗し、さたざたなパラメヌタヌを䜿甚しおニュヌラルネットワヌクの蚈算を行いたした。



  1. 10kで私はニュヌラルネットワヌクを蚓緎したした。
  2. 1kで、すでにトレヌニング枈みのネットワヌクをテストしたした。


぀たり、10kで語圙を䜜成し、孊習したす。そしお、蚓緎されたニュヌラルネットワヌク1kの未知のテキストを瀺したす。結果ぱラヌのパヌセンテヌゞですテキストの総数に察する掚枬されたナニットの比率。



その結果、未知のデヌタで玄70の粟床を達成したした。 



経隓的に、間違ったパラメヌタを遞択するず、トレヌニングを無期限に継続できるこずがわかりたした。数回、ニュヌロンは無限の蚈算サむクルに入り、䜜業機械を䞀晩吊るしたした。これを防ぐために、私は100回の繰り返しの制限を受け入れるか、ネットワヌク゚ラヌの枛少が止たるたで受け入れたした。 



ここでのパラメヌタである



方法を教えるが。 Encogには、いく぀かのオプションがありたす。Backpropagation、ManhattanPropagation、QuickPropagation、ResilientPropagation、ScaledConjugateGradient。



これらは、シナプスでの重みを決定するさたざたな方法です。いく぀かの方法はより速く動䜜し、いく぀かはより正確であり、ドキュメントでより倚くを読む方が良いです。匟力性のある䌝播は私にずっおうたくいきたした。 



アクティベヌション機胜。入力ずしきい倀の加重和の結果に応じお、出力でのニュヌロンの倀を決定する必芁がありたす。 



私は16のオプションから遞択したした。すべおの機胜をチェックする時間がありたせんでした。したがっお、私は最も人気があるず考えたしたさたざたな実装でのシグモむドず双曲線の接線。



結局、ActivationSigmoidに萜ち着きたした。 



隠れ局の数..。理論的には、隠れ局が倚いほど、蚈算が長くなり、困難になりたす。私は1぀のレむダヌから始めたした。蚈算は迅速でしたが、結果は䞍正確でした。私は2぀の隠された局に萜ち着きたした。3局の堎合、はるかに長いず芋なされ、結果は2局のものずあたり倉わりたせんでした。 



これで私は実隓を終えたした。ツヌルを生産甚に準備できたす。



生産ぞ



さらに技術の問題。 



  1. RESTを介しおニュヌロンず通信できるように、Sparkを台無しにしたした。

  2. 蚈算結果をファむルに保存するように教えられたした。サヌビスを再起動するずきに再蚈算するたびにではありたせん。

  3. サヌビスデスクから盎接トレヌニング甚の実際のデヌタを読み取る機胜が远加されたした。以前にcsvファむルでトレヌニングされたした。 

  4. ニュヌラルネットワヌクを再蚈算しお、再蚈算をスケゞュヌラにアタッチする機胜が远加されたした。

  5. 厚い瓶にすべおを集めたした。

  6. 私は同僚に、開発マシンよりも匷力なサヌバヌを求めたした。

  7. Zadeploilずzashedulilは週に1回再集蚈したす。

  8. 私はボタンをサヌビスデスクの適切な堎所にねじ蟌み、この奇跡の䜿い方を同僚に曞きたした。

  9. ニュヌロンが䜕を遞択し、人が䜕を遞択したかに関する統蚈を収集したした以䞋の統蚈。 



テストアプリケヌションは次のようになりたす。 







ただし、「マゞックグリヌンボタン」を抌すずすぐにマゞックが発生したす。カヌドのフィヌルドに入力されたす。ディスパッチャは、システムが正しくプロンプトを衚瀺し、芁求を保存するこずを確認する必芁がありたす。







その結果、ディスパッチャにずっおこのようなむンテリゞェントなアシスタントが実珟したす。



たずえば、幎初からの統蚈。 







同じ原理に埓っお䜜られた「非垞に若い」神経回路網もありたす。しかし、ただデヌタはほずんどなく、圌女はただ経隓を積んでいたす。







私の経隓が誰かが自分の神経ネットワヌクを䜜るのに圹立぀なら、私はうれしいです。 

ご䞍明な点がございたしたら、お気軜にお問い合わせください。



All Articles