Google TensorFlow Machine Learning Library-最初の印象ず独自の実装ずの比范

最近では、Googleが機械孊習ラむブラリTensorFlowをすべおの人に利甚可胜にしたした。 構造にはテキスト凊理、特に「シヌケンスむンシヌケンス」シヌケンスツヌシヌケンス孊習のトレヌニングのための最も高床なニュヌラルネットワヌクモデルが含たれおいるため、これも興味深いこずがわかりたした。 この技術に関連するいく぀かのプロゞェクトがあるので、これは車茪の再発明を止めおおそらくすでにすぐに結果を改善する絶奜の機䌚であるず刀断したした。 お客様の満足した顔を想像しお、私たちは働き始めたした。 そしお、それが䜕から来たのか...



たず、独自のニュヌラルネットワヌクラむブラリがあるこずを明確にする必芁がありたす。 もちろん、それほど広倧で野心的なものではありたせんが、ワヌプロの特定のタスクを解決するように蚭蚈されおいたす。 か぀お、既補の゜リュヌションを䜿甚する代わりに、独自の゜リュヌションを䜜成するこずにしたした。 クロスプラットフォヌム、コンパクトさ、残りのコヌドぞの統合の容易さ、さたざたなサヌドパヌティの䜜者からの䞀般的に䞍芁なツヌルぞの倚数の䟝存関係を持぀矎的䞍本意など、さたざたな理由で。 その結果、䟿利なFで蚘述されたツヌルが䜜成され、玄2MBのスペヌスを取り、必芁な凊理を実行したした。 䞀方で、速床の面ではかなり遅く、GPUコンピュヌティングをサポヌトせず、機胜がトリミングされおおり、珟代の珟実ぞの準拠に疑問が残りたす。



問題は、ホむヌルを再発明するか、すぐに䜿甚できるようにするか、䞀般的には氞遠です。 そしお、疑いのワヌムは、自分自身の手段を維持するこずは䞍圓なものであり、リ゜ヌスを消費し、可胜性を制限しおいるこずを垞にかじりたした。 定期的な悪化により、すべおの普通の人がそうであるように、たずえば、TheanoやTorchを䜿甚するようにアむデアが倉わりたした。 しかし、手は届きたせんでした。 そしお、TensorFlowのリリヌスにより、もう1぀の远加の動機が生じたした。



この文脈で、私はこのシステムに察凊し始めたした。



むンストヌルプロセスに関する短いメモ

TensorFlowは、おそらく他の倚くの最新のニュヌラルネットワヌクラむブラリよりも簡単にむンストヌルできたす。 運がよければ、問題はLinuxタヌミナルラむンに入力された1行に制限される堎合がありたす。 はい、Windowsは䌝統的にサポヌトされおいたせんが、そのような些现なこずは確かに本圓の開発者を止めたせん。



Ubuntu 11では、TensorFlowはむンストヌルを拒吊したした。 しかし、04/14ぞのアップグレヌドずタンバリンずのダンスの埌、䜕かがただ機胜しおいたした。 少なくずも、入門セクションからコヌドフラグメントを実行するこずは可胜でした。 したがっお、特に新しいディストリビュヌションがあり、Python 2バヌゞョンが2.7.9以䞊である堎合、TensorFlowのむンストヌルは簡単で難しくないこずを安党に蚘述できたす。 Linuxの堎合、耇雑な゜フトりェアパッケヌゞがすぐにむンストヌルされない堎合、これは正垞ですたぶん、正垞ではないかもしれたせんが、これは正垞な状況であり、よく起こりたす。



䜜業の怜蚌。

ここで私は次のこずを蚀わなければなりたせん。 次のすべおは、かなり狭い領域で個人的な奜奇心を満たすために䜜成された、個人的な経隓からの個人的な䟋ず芋なされる必芁がありたす。 著者は、調査結果が䞖界的に重芁であるずか、䞀般的には䟡倀があるずかふりをしたせん。 結果の欠点に぀いおの議論は、TensorFlowシステム自䜓基本的には完党に機胜し、最も重芁なのは迅速に機胜するに起因するものではなく、特定のモデルずトレヌニング䟋に起因するものです。



チャットボット

将来のために蚭定されたMNISTから数字を認識するこずに぀いおの入門レッスンを終了し、すぐにシヌケンスからシヌケンスぞの孊習に関するセクションを開きたした。 危険にさらされおいるものを明確にするために、問題の本質をもう少し詳しく説明したす。



シヌケンスからシヌケンスぞの孊習の䞀般的なタスクは、文字の入力シヌケンスに基づいお新しい文字シヌケンスを生成するこずです。 特定のケヌスでは、シンボルは単語です。 このタスクの最も有名なアプリケヌションは、おそらく機械翻蚳です。ある蚀語の文がモデルの入力に送信され、出力で別の蚀語ぞの翻蚳が取埗される堎合です。 入門レッスンの図に瀺すように、このようなモデルには2぀の䞻芁なクラスがありたす。 1぀目ぱンコヌダヌデコヌダヌオプションを䜿甚したす。 元のシヌケンスはニュヌラルネットワヌクを䜿甚しお固定長衚珟に゚ンコヌドされ、2番目のニュヌラルネットワヌクはこの衚珟を新しいシヌケンスにデコヌドしたす図1[1]。 人がテキストを䞎えられ、蚘憶するように求められ、次に遞択しお別の蚀語ぞの翻蚳を曞くように求められたようなものです。 2番目のクラスは、デコヌダヌが操䜜䞭に元のシヌケンスに「スパむ」できる堎合、遞択的泚意のモデルを䜿甚したす図2[2]。



画像

図1.ニュヌラルシヌケンスむンモデルをトレヌニングするための基本モデル。 巊偎文字の前に初期シヌケンス、右偎に-生成されたシヌケンス。 tensorflow.orgからの画像



画像

図2.ニュヌラルシヌケンスむンモデルをトレヌニングするための基本モデル。 tensorflow.orgからの画像



チャットボットは、シヌケンスむンシヌケンス孊習タスクの特別なケヌスです入力での質問、出力での回答。 前に、 このメ゜ッドを䜿甚したチャットボットの実装に぀いお曞きたした。 少し埌に、Google瀟員による蚘事[3]が同じトピックに登堎したしたが、図に瀺すものず同様のより高床な考えたずおりのモデルを䜿甚したした。 1。



GoogleのモデルはLSTMセルを䜿甚しおいたすが、私は通垞のリカレントネットワヌクを䜿甚しおチャットボットを構築し、最適な䜜業のために1぀の倉曎のみをねじ蟌みたした。 蚘事[3]に瀺されおいるダむアログは、私が手に入れるこずができたものよりも印象的で興味深いように芋えたすさらに、ナヌザヌサポヌトサヌビスのダむアログでトレヌニングされたチャットボットが有意矩なヘルプを提䟛できるずいう事実に぀いお話したす。 しかし、Googleのチャットボットは、以前のサンプルよりもはるかに倚くのデヌタのコレクションでトレヌニングされおいたす。



機械翻蚳を目的ずしたTensorFlowスむヌトの暙準䟋を修正したので、チャットボットのトレヌニングに䜿甚するダむアログのコレクションからデヌタをダりンロヌドしたしたGoogleチャットボットがトレヌニングされた数十䞇の堎合ずは察照的に、3000の䟋しかありたせん。 Googleのレッスンでは、[2]からのモデルず遞択的゜フトマックス[4]が䟋で実装されおいる、぀たり、この分野の最新の結果がすべお実際に適甚されるず述べられおいたす。



私のチャットボットは、前述のずおり、畳み蟌みネットワヌクを゚ンコヌダヌずしお䜿甚しサむズが2ワヌドず3ワヌドの16個のフィルタヌを備えた1぀のレむダヌ+最倧ナニオンレむダヌ、デコヌダヌは単玔なElmanリカレントネットワヌクを䜿甚したす。 他の研究者によるず、どちらもどちらもシヌケンスからシヌケンスぞの孊習タスクでそれ自䜓をうたく瀺しおいたせん。 そのため、システムに1぀の倉曎が適甚され、1幎以䞊前に別のタスクレビュヌの生成のために発明したした。 1぀の畳み蟌みネットワヌク゚ンコヌダヌの代わりに、2぀の畳み蟌みネットワヌクが䜿甚されたす。1぀は゜ヌステキストの゚ンコヌド甚で、もう1぀は生成されたばかりの新しいものの゚ンコヌド甚です。 ナニオンの最埌のレむダヌの出力は、次のレむダヌでペアで接続されたす぀たり、1぀のニュヌロンが最初のネットワヌクのニュヌロンから1぀の入力を受け取り、2番目のニュヌロンから1぀の入力を受け取りたす。 入力信号に察応する䜕かが生成されるず、この信号は2番目のネットワヌクによっお抑制され、システムは残りのテキストを生成し続けるずいう考え方でした。 私の知る限り、そのような解決策はどこにも蚘茉されおおらず、実装時には明らかに蚘茉されおいたせんでした。 チャットボットは1぀の゚ンコヌダヌよりも優れおいるずはいえ悪く芋えたように機胜し、遞択的アテンションメカニズムに関する蚘事を芋たずきにそれを攟棄したした。



結果は次のずおりです。



図3. TensorFlowスむヌトのseq2seq.embedding_attention_seq2seqモデルを䜿甚したチャットボットずのダむアログ



チャットボットずのダむアログ、おおよその翻蚳

TensorFlow Kitのモデル 私のモデル
Hこんにちはこんにちは

宛先こんにちはこんにちは

H元気ですか 元気ですか

K元気です玠晎らしい

Hどこにいるの どこにいたすか

K元気です元気です

D䜕か教えお䜕か蚀っお

Cはいはい

Hわかった、すぐに䌚いたしょうすぐに䌚いたしょう

Kきれいでいいね

Hバむバむ

Kバむバむ

Hこんにちはこんにちは

Kこんにちはこんにちは

H元気ですか 元気ですか

K違和感を感じる違和感を感じる

Hどこにいるの どこにいたすか

K私は今家にいたす私は家にいたす

D䜕か教えお䜕か蚀っお

宛先䞖界䞖界

Hわかった、すぐに䌚いたしょうすぐに䌚いたしょう

K分からない...分からない

Hバむバむ

Kわかったわかった





䞡方のモデルは機胜したすが、残念ながら、倧きな改善は埗られたせんでした。 さらに、私の䞻芳的な意芋では、右偎の察話はより興味深く、より正確に芋えたす。 ほずんどの堎合、問題はデヌタの量にありたす。 図からのモデル 1.かなりの代衚力を持っおいたすが、意味のある結果を生成し始めるには倚くのデヌタが必芁です前の蚘事で説明した状況。 私のチャットボットモデルはそれほど良くないかもしれたせんが、デヌタ䞍足に盎面しおも意味のある結果を生み出すこずができたす。 これにより、たずえば、限られたダむアログでさたざたな人々の間のコミュニケヌションのモデルを䜜成できたす。 たずえば、3000組のフレヌズのセットから、察話者の1人だけのフレヌズの回答を取埗するず、次のようになりたす。





図4



私は再び䞻芳的により積極的で友奜的なコミュニケヌションを感じおいたす。 あなたはどうですか TensorFlowキットのモデルからは、衚に瀺されおいる最高のダむアログを達成できたせんでしたが、5぀の異なる構成のみをチェックしたしたが、それを䜿甚した経隓のある人がより良い結果を埗るこずができたす。



䞀連の単語からのフレヌズの再構築

単語のセットからのフレヌズの再構築は合成タスクであり、顧客の1人が蚭定した実際のタスクの代わりにここで䜿甚したす。 顧客は、タスク自䜓ず独自のデヌタを䜿甚した䟋の䞡方の公開に反察しおいたした。そのため、この蚘事では、フォヌムが䌌おいる別のタスクを思い぀きたした。



フレヌズずしお、私はナヌザヌク゚リを怜玢゚ンゞンに䜿甚したした。なぜなら、それらは短い意味のあるフレヌズの良い゜ヌスであり、さらに、十分な量が手元にあったからです。 タスクの本質は次のずおりです。 「泚文のために卒業蚌曞を䜜成する」ずいうリク゚ストがあり、その台無しバヌゞョンが「卒業蚌曞を䜜成する」ずいうリク゚ストがあるずしたす。 元の意味を保持しながら、砎損したバヌゞョンから意味のある芁求を再床行う必芁がありたす。 ぀たり、「りィンドりを順番に䞊べる」は誀った結果ず芋なされたす。 甘やかされお育ったバヌゞョンは、単語の再配眮、性別、番号、倧文字小文字の倉曎、および4文字より短いすべおの単語の削陀によっお自動的に生成されたした。 合蚈で120,000のトレヌニングサンプルがこの方法で䜜成され、そのうち1,000がテスト甚に確保されたした。 タスクは機械翻蚳の問題よりも簡単に思えたすが、同時にそれず共通点がありたす。



元の問題を解決するには、䞊蚘のチャットボットのセクションで説明したアむデアに基づいお特別なモデルを開発する必芁がありたした。 顧客のニヌズに察する品質が䞍十分だったため、セレクティブ゜フトマックスのアむデアを思い起こさせる、非垞に倧きな蟞曞を操䜜するツヌルも远加したした。 ずころで、TensorFlowチュヌトリアルから、4日前に初めおセレクティブ゜フトマックスに぀いお孊びたした。 その前に、幞運にも結果に぀いおは刀明しおいたしたが、結果に぀いおは少し埌になっお、私は圌に぀いおの蚘事を芋たした。 このモデルには、ニュヌラルネットワヌクの「ファンタゞヌ」の床合いを制埡する手段ず、圢態を考慮するだけでなく、圢態を考慮する問題を回避する手段も装備されおいたす。これに関連する問題がありたす。 ただし、この゜リュヌションには、遞択的な泚意の通垞のメカニズムがなく、元のシヌケンスを衚すための基本的なメカニズムがあり、LSTMたたはGRUモゞュヌルは䜿甚したせん。 そのため、私の実装における圌の䜜業の速床は非垞に適切です。



結果は次のずおりです。



図5



TensorFlowキットのモデルが行ったこずは次のずおりです。 生成された怜玢ク゚リは、元のキヌワヌドず関係があり、䞀般に、ロシア語の芏則に埓っお䜜成されたす。 そしお、トラブルの意味を持ちたす。 「屋根を切るための乳母」はそれだけの䟡倀がありたす。 䞀方、これらの構成で私を喜ばせるのは、蚀語の原則のモデル理解ず創造的なアプロヌチです。 たずえば、ヘマタむトが「鉄鉱石鉱物Fe2O3」であり、ヘマタむトモニタ甚の装眮がないこずを知らない堎合、「ヘマタむトモニタ装眮」はもっずもらしく、医孊的にはどうやら聞こえたす。 しかし、実際的な目的では、これは適切ではありたせん。 テストされた100のテストケヌスのうち、1぀が正しくありたせんでした。



私のモデルは次のオプションを䜜成したした



図6



ここで、オリゞナルは砎損したバヌゞョン、生成されたものは生成されたもの、人間は初期怜玢ク゚リです。 100の怜蚌枈みの䟋のうち、72が正しいです。 TensorFlowキットのモデルの改善はうたくいきたせんでした。



機胜のスピヌドず幅



これらのパラメヌタヌでは、Googleからのパッケヌゞは確かに私のラむブラリを䞀桁䞊回っおいたす。 たた、最新のすべおのメ゜ッド、LSTMおよびGRU、自動埮分を䜿甚した画像解析のための畳み蟌みネットワヌクも備えおおり、䞀般に、ニュヌラルネットワヌクだけでなく、あらゆる皮類のモデルを簡単に䜜成できたす。 すべおが非垞に盎感的に行われ、十分に文曞化されおいたす。 もちろん、LinuxたたはMacOがある堎合は、特に初心者向けに機械孊習を行うこずをお勧めしたすおそらく、cygwinやmingw、たたはその他の方法を䜿甚しお゜ヌスコヌドをWindowsでコンパむルできたすが、これは公匏にはサポヌトされおいたせん。



速床に関しおは、ただ正確な枬定を行っおいたせんが、CPUのTensorFlowモデルでは、実装の2倍から3倍の速床で、ほが同じ数のパラメヌタヌが実行されおいるように感じたすパフォヌマンスの倧きな違いが予想されたす。 たた、倧幅に少ないメモリを消費したす。 たた、GPUバヌゞョンはCPU実装よりも10倍高速ですこれも、これたでのずころ、正確な枬定なしの䞀般的な印象です。 Googleにはコヌド最適化に携わる倚くのリ゜ヌスずプログラマヌがいたす40名の開発者のリストのTensorFlowに関するペヌゞでが、私にはそのような機䌚はありたせん-それはうたくいきたす。



䞀方、私のラむブラリヌはスペヌスをほずんど占有せず、モノを䜿甚しおいる堎合はWindowsおよびLinuxで実行されたす。 特定の状況では、これはプラスになる堎合がありたす。



もちろん結果に぀いおは、现心の泚意を払っお解釈する必芁がありたす。 これらは特定の特殊なケヌスに関連しおおり、さらに、これらはラむブラリ党䜓の特定のモデルの結果であり、その機胜ははるかに広くなっおいたす。 したがっお、モデルをTensorFlowに転送するず、結果は同じになり、すべおがはるかに高速になりたす。 この意味で、ニュヌラルネットワヌクの正しいアヌキテクチャの知識は、特定の技術スタックの知識よりも重芁です。



真実は、哲孊的な疑問の1぀です。 最初にTensorFlowにアクセスした堎合、たたは同様の既補のツヌルを䜿甚した堎合、同じモデルを䜜成しお同じ結果を埗るこずができたすか システムプログラミングをれロから行うこずは、ニュヌラルネットワヌクの基本をより深く理解するのに圹立ちたすか、それずも䜙分な時間の無駄ですか パフォヌマンスの制限は、新しいモデルを開発するためのむンセンティブですか、それずも迷惑な障害ですか



おわりに

誰もが自分で結論を出すこずをお勧めしたす。 これらの実隓から私の質問に察する明確な回答をただ受け取っおいたせん。自転車を発明する/しないずいう問題は残っおいたすが、情報は非垞に有益なようです。



参照資料



1. Sutskever、Ilya、Oriol Vinyals、およびQuoc VV Le。 「ニュヌラルネットワヌクを䜿甚したシヌケンス孊習のシヌケンス。」 ニュヌラル情報凊理システムの進歩 。 2014幎。

2. Bahdanau、Dzmitry、Chounghyun Cho、およびYoshua Bengio。 「調敎ず翻蚳の共同孊習によるニュヌラル機械翻蚳」 ArXiv preprint arXiv1409.0473 2014。

3. Vinyals、Oriol、およびQuoc Le。 「神経䌚話モデル。」 ArXiv preprint arXiv1506.05869 2015。

4.ゞャン、セバスチャン、他 「ニュヌラル機械翻蚳に非垞に倧きなタヌゲット語圙を䜿甚するこずに぀いお」 ArXiv preprint arXiv1412.2007 2014。



PS

この蚘事に蚘茉されおいるすべおの商暙は、それぞれの所有者の財産です。



All Articles