リカレントニューラルネットのチューリング完全性に関するいくつかの論文(例:ニューラルネットを使用したチューリング計算可能性、Hava T.SiegelmannおよびEduardoD。Sontag、1991)を読んでいると、そこで与えられた証明は実際にはそうではないと感じました。実用的。たとえば、参照されている論文には、ニューロンの活動が無限に正確でなければならないニューラルネットワークが必要です(信頼できる有理数を表すため)。他の証明には、無限のサイズのニューラルネットワークが必要です。明らかに、それは実際にはそれほど実用的ではありません。
しかし、私は今、チューリング完全性を求めることがまったく意味があるのかどうか疑問に思い始めました。厳密な定義によれば、無限のテープをシミュレートすることができないため、今日のチューリング完全なコンピューターシステムはありません。
興味深いことに、プログラミング言語の仕様は、チューリング完全であるかどうかにかかわらず、ほとんどの場合オープンのままです。つまり、常により多くのメモリを割り当てることができるのか、関数呼び出しのスタックサイズが無限であるのかという問題です。ほとんどの仕様は実際にはこれを指定していません。もちろん、利用可能なすべての実装はここで制限されているため、プログラミング言語のすべての実用的な実装はチューリング完全ではありません。
つまり、すべてのコンピューターシステムは、有限状態マシンと同じくらい強力であり、それ以上ではないということです。
そしてそれは私に質問をもたらします:チューリングという用語は完全にどれほど有用ですか?
そしてニューラルネットに戻る:ニューラルネット(私たち自身の脳を含む)の実際の実装では、無限の数の状態を表すことはできません。つまり、チューリング完全性の厳密な定義によって、チューリング完全ではありません。 ニューラルネットがチューリング完全であるかどうかという質問はまったく意味がありますか?
それらが有限状態マシンと同じくらい強力であるかどうかという質問は、すでにずっと以前に回答されており(1954年、ミンスキーによる回答、もちろん:はい)、回答も簡単なようです。つまり、少なくとも理論的には、それはすでに他のコンピュータと同じくらい強力であるという証拠でした。
私が本当に知りたいことについてのいくつかの他の質問:
コンピュータの計算能力についてより具体的なことを言うことができる理論用語はありますか? (限られたメモリスペースを考えると)
ニューラルネットの実際の実装の計算能力をコンピューターとどのように比較できますか? (チューリング完全性は、上記で議論したように役に立ちません。)
数学モデルがチューリング完全であると述べることのポイントは、任意の計算を実行するモデルの能力を明らかにすることです十分な量のリソース(つまり無限)が与えられた場合、の特定の実装がモデルにはそれらのリソースがあります。チューリング完全でないモデルは、特定の計算セットを処理できません。十分なリソースがあっても、2つのモデルの動作方法の違いを明らかにするもの限られたリソース。もちろん、proveこのプロパティには、モデルが無限の量のリソースを使用できると想定する必要がありますが、モデルのこのプロパティはリソースが制限があります。
チューリング-リカレントニューラルネットワークの完全性とは、次のことを意味します。(有限状態ヘッドと無限テープを備えた)すべてのチューリングマシンの(有限)遷移表は、有限リカレントニューラルネットワーク(有限数のニューロンと有限数のニューロン)によってモデル化できます。状態、特に2つの状態のみ)。遷移表は3つの機能を定義します。
next-state(current-state、current-symbol)
next-symbol(current-state、current-symbol)
方向(現在の状態、現在の記号)
これは、リカレントニューラルネットワークがこのタスクを実行する方法です(非常に生のスケッチです)。
緑のニューロンは現在のセルのシンボルを読み取り(バイナリ表現で)、灰色のニューロン(最初はミュート)は現在の状態を決定し、赤のニューロンは新しいシンボルを現在のセルに書き込み、黄色のニューロンは左または右に移動するかどうかを決定します。青いニューロンは内側のニューロンです(最初はミュート)。
主張は、thatチューリングマシンごとに、そのようなリカレントニューラルネットワークが存在するということです。
与えられた遷移表からそのようなネットワークを構築する体系的な方法があるのだろうか。
現代のコンピューターがチューリング完全と言われると、説明されている無限ストレージデバイスチューリングには暗黙の例外があります。これは明らかに有限の物理計算デバイスでは不可能です。計算デバイスがチューリングマシンが実行できるすべてのことを実行できる場合(無限ストレージに耐えられない)、それはチューリング完全すべての実用的な目的と目的のためです。 チューリング完全性のこのそれほど厳密ではない定義により、はい、多くのニューラルネットワークがチューリング完全性である可能性があります。
もちろん、チューリング完全ではないものを作成することは可能です。
2番目の質問に部分的に対処するには:
ニューラルネットワークには、 普遍近似 -であるという特性があります。つまり、任意の関数を任意の精度で近似できます。ニューラルネットワークが無限である必要がないようにするのは「精度」の部分です。
通常のフィードフォワードニューラルネットワークはチューリング完全ではありませんです。これらは、事実上、非常に多くの計算を実行する可能性があるが、ループやその他の制御フロー操作を実行する機能を持たない単一の複雑な数学関数と同等です。
ただし、ステートフル環境にアクセスするための何らかの方法でニューラルネットワークを接続すると、それはチューリング完全なマシンにすることができます。
最も簡単な例として、次のようなクラシックスタイルのチューリングマシンを再現できます。
次に、ニューラルネットワークをトレーニングして、任意のチューリングマシンの状態テーブル/構成のアクションをエミュレートできます(おそらく、別のチューリングマシンのアクションに関する教師あり学習によって?)
注:何らかの形式の状態フィードバックを使用してフィードフォワードネットを繰り返し実行するという考え方は、本質的にリカレントニューラルネットワークと同等です。したがって、リカレントニューラルネットワークplusを繰り返し実行するロジックは、チューリング完全であると考えることができます。チューリングの完全性を確保するには、終了、繰り返し、IOなどを処理する必要があるため、(ネットワーク自体に加えて)追加のロジックが必要です。
チューリング完全性の概念は、特定のコンピューターが特定のタスクを実行できるかどうかを示すことを意図したものではないと思います。
むしろ、特定の言語が特定のタスクを表現できるかどうかを判断することを目的としています。つまり、それは本当に表現するアルゴリズムではなく実行するそれについてだと思います。
ニューラルネットワークには言語がないため、そのネットワークの機能ではなく、ニューラルネットワークの観点からアルゴリズムを表現することが問題になります。だから私はあなたの質問の最後のビットへの答えを知りません!
何年も経って、この質問に自分で答えさせてください。
int64
メモリアドレスの制限などについて衒学者にならないようにしましょう。これらは技術的な制限であり、たとえば大きなintなどで解決できます。)したがって、次のように言うことができますthe PCの概念はチューリング完全です。よく引用される論文は ニューラルネットの計算能力について、Siegelmann&Sonntag、1992 であり、RNNはチューリング完全であると述べています。この論文では、分母/分母に制限のない有理数があることを前提としています。つまり、無限メモリは有理数、または無限精度の浮動小数点数としてエンコードされます。 ここ も参照してください。通常、有理数(無制限)で動作する方法でNNをモデル化することはありません。有限の精度の重みとアクティベーションを持つ(R)NNに制限すると、論文の証明は適切になり、適用されなくなります。したがって、このペーパーはそれほど関連性がありません。
より最近の論文 言語認識のための有限精度RNNの実用的な計算能力について、Weiss et al、2018 があり、これは正確にこれに対処しています。
ほとんどの標準NNが 普遍近似定理 であることはよく知られています。これは、任意の関数(非定数、有界、連続)が与えられ、許容されるしきい値が与えられると、この関数を許容されるしきい値内で近似するNNを作成できることを示しています。これは、有限次元のベクトル空間についてです。計算可能性について話すとき、シーケンスについて話すので、無限の次元のベクトル空間があります。したがって、このプロパティはそれほど関連性がありません。
したがって、明示的に述べると、外部メモリがない場合、標準のRNN、および [〜#〜] lstm [〜#〜] はチューリング完全ではありませんです。また、オンデマンドでメモリを追加できるRNNの概念を定義する簡単な方法もありません。 RNNのメモリは、最新の非表示のアクティベーションです。メモリを追加するとは、NNを変更することを意味します。つまり、新しいニューロンを追加して、その内部動作を追加します。これは、プログラム自体を変更するようなものです。
ニューラルチューリングマシン(NTM) と、ある種の外部メモリを備えたいくつかの同様のモデルがあります。ここでは、オンデマンドでメモリを追加するNTMの概念について考えるのは簡単です。したがって、NTMの概念はチューリング完全であると言えます。
頭の中で使用される注意のタイプのようないくつかの詳細があり、それはいくつかの適応が必要です。モデルのフォローアップがあります 微分可能ニューラルコンピューター(DNC) これは明示的にこれに対処し、メモリを追加するための明示的なメカニズムもあります。
私たちは主に理論的な計算能力について話しました。非常に異なる質問は、NNがそのような機能を学習できるかどうかです。つまりトレーニング(勾配検索)が計算可能関数を学習したNNにつながるかどうか。
人間の脳(または任意の脳)を一種の複雑なニューラルネットワークとして解釈するかもしれません。人間の脳(モデル)がチューリング完全であるかどうかという質問もできます。たとえば、 ここ 。この質問は難しい質問です。直感的には、あらゆる種類の計算を実行できると言えます。したがって、人間の脳はチューリング完全です。ただし、ここで概説した議論は、RNNがチューリング完全ではないことを示しています。ここでも重要なのはメモリー効果です。ある時点で、人間の脳の記憶容量は、ある入力を操作するのに十分ではありません。したがって、外部メモリが必要になります。ですから、人間の脳と外部記憶は明らかにチューリング完全です。
ただし、人間の脳の記憶には、標準のRNNとは少し異なる側面があります。それは高度に一般化でき、特定のアクティベーションにアクセスするためのアドレス指定メカニズムが異なります。また、ある種の適応重みがあります(ただし、有限の情報しか格納できません)。
チューリングマシンの重要なポイントは、与えられた入力とプログラムの場合、マシンがしばらく停止すると仮定すると、必要なテープの量は限られているということです。そのため、「チューリング完全」という用語が役立つと思います。特定の入力で1つの特定のチューリング完全プログラムを実行するために必要なメモリは有限です(プログラムが停止した場合)。ただし、チューリング完全ではないマシン/言語/テクノロジーを使用している場合は、追加するメモリの量に関係なく、特定のアルゴリズムをシミュレートできません。
システムがチョムスキー階層のどのクラスであるかを知ることは、ほとんどの場合素晴らしいことです。これは、正規言語/有限オートマトンと文脈自由言語など、より制限されたクラスで特に重要です。また、解決しようとしている問題がどのクラスにあるかを認識するスキルも重要です。そうしないと、HTMLやXMLを正規表現のみで解析するなど、ばかげたことをしようとする可能性があります。これは不可能です。
あなたの形式主義またはシステムが完全にチューリングしているという知識を持っていることは、あなたがそれであなたが望むものを何でも構築することができるという声明を出します。それは実用性については何も述べておらず、問題を解決する可能性または不可能性についてのみ述べています。チューリング陥穷を考えるとき、これは痛々しいほど真実ですが、生産現場での汎用作業に誰も使用することを夢見てはならないニッチな目的のために特別に作られたチューリング完全システムもたくさんあります。
つまり、チョムスキー階層に関する十分な知識は、適切なタイプのパーサーを選択するだけでなく、非常に多くの状況で役立ちます。正規表現、プッシュダウン、CFG、またはそれ以上の強力な機能だけでなく、プロセス全般を表現するための適切なタイプのマシンまたは形式を選択するためにも使用できます。