compcogneuro/web: turing-machine
このページは外部資料の日本語訳です。原文の見出し順と本文順を保ち、コード・URL・出典表記はできるだけ原形のまま残しています。
出典とライセンス
原典: https://github.com/compcogneuro/web/blob/main/content/turing-machine.md
ライセンス: Text: CC BY 4.0; code: BSD 3-Clause。このページは日本語翻訳であり、変更点は翻訳とサイト内整形です。
+++
Categories = [“Computation”]
bibfile = “ccnlab.json”
+++
{id=”figure_turing-machine”}

脳内で CPU のような機能をサポートするにはどのような神経機構が必要かを理解するために、コンピューターを動作させるために必要な驚くほど単純なメカニズムから始めます。最も抽象的なレベルでは、アラン チューリングとジョン フォン ノイマンは、1930 年代と 1940 年代に 万能計算装置 (原理的には「何でもできる」もの) の基本原理を考案しました ([[@Turing36]]、[[@VonNeumann45]])。 驚くべきことに、このデバイスに必要な必須コンポーネントは 3 つだけです ([[#figure_turing-machine]])。
-
メモリ システム (チューリングによって テープ として概念化された) から情報を読み書きする方法。
-
読み取りと書き込みの間にこの情報がどのように変換されるかを決定する プログラム。
-
プログラムが参照するために一時的にキャッシュできる アクティブ メモリ。
これらの要素は、史上最も重要な未発表論文の 1 つ ([[@VonNeumann45]]) でフォン ノイマンによって詳しく説明され、現代のデジタル コンピューターの基礎を築きました。私たちは今、コンピュータがほとんど何でもできることを当然のことと考えていますが、これは少し前までは単なる理論にすぎませんでした。
{id=”figure_mental-mult”}

複数桁の演算を実行するための従来の戦略 ([[#figure_mental-mult]]) を考慮することで、コンピューターがどのように動作し、なぜ何でもできるのかをよく理解できます。 これらの大きな数字をただ見つめて、数字が頭に浮かぶことを期待するのではなく、問題を一連の単純で個別のステップに分割します。 その一連のステップが「プログラム」またはアルゴリズムであり、それぞれの「操作」には、1 桁の数値の加算または乗算、後で使用するためにいくつかの数値を書き留める (つまり、チューリング マシンでテープに保存する)、適切なタイミングでそれらの数値を読み込む (次の数値列に移動するとき) など、さまざまなプロセスの小さなセットの 1 つが含まれます。
この種の逐次的、離散的、段階的な処理は、私たちのニューロンの働きとはまったく異なります。 ニューロンも問題をより単純なコンポーネントに分解しますが、決定的な違いは、ユニバーサル コンピューターに必要な基本的に逐次的な_シリアル_処理ではなく、すべてのニューロンが_並列_で連携して動作することです。シリアル処理の主な利点は、はるかに柔軟であることです。任意の操作の集合を時間の経過とともに次々にシーケンスできますが、並列計算では同じことが当てはまりません。一部の操作は相互に互換性がないか、相互に依存しており、同時に並行して実行することはできません。
実際、現代のコンピュータ サイエンスの大きな課題の 1 つは、適度に使用可能な並列計算フレームワークを考え出すことです。また、従来の逐次計算の普遍的な柔軟性が並列領域に拡張されていないことは明らかです。並列計算は一般に、ケースバイケースでセットアップする必要があります。たとえば、複数桁の掛け算の場合、最初に問題の十の位の部分を実行してから、上位の桁にどれだけ繰り越すべきかを知る必要があります。すべてを一度に実行することはできません。
より一般的に言えば、並列システムは、同じ種類のことを何度も何度も非常に高速に実行することには長けていますが (たとえば、脳内のニューロンが相互作用している場合にネットワークを介してパターンを検出する)、ランダムで任意の「異なる」ことを実行することはあまり得意ではありません。これはまさにシリアル計算が優れている点です。ただし、シリアル計算は本質的に (一度に 1 ステップずつ) かなり遅くなります。並列計算と直列計算の間のこれらの基本的なトレードオフは、両方を実行できるシステムが両方の長所を実現できることを意味します。これが人間の脳が達成した魔法のレシピです。私たちの脳は、個々のニューロンおよびニューロンのネットワークのレベルでは並列ですが、脳のより大きな「システム」レベルでは、柔軟なシリアル計算の形式を実現できます。
心理レベルでこれら 2 つの異なる計算形式が存在することを示す強力な証拠があります。たとえば、車の運転を初めて学んだときなど、新しいタスクに取り組むときは常に、「精神的な CPU」のような能力を使用する必要があると私たちは予測します。当時、あなたはすべての注意を消費する連続的で意図的なプロセスに依存していました。各時点で、自分が何をすべきかを思い出し続けなければなりませんでした。ただし、時間をかけて十分な練習を続けると、これらの遅くて労力のかかるプロセスが徐々に自動化され、今や、楽に実行している基本的な手順をほとんど意識せずに高速道路を運転していることに気づくかもしれません。
最初の労力を要する制御された処理とその後の自動処理の違いは、Walter Schneider と Richard Shiffrin による非常に影響力のある 2 つの論文 ([[@SchneiderShiffrin77]]; [[@ShiffrinSchneider77]]) に記載されています。これと同じ区別は、後に [[@^Kahneman11]] によって、システム 1 (自動、高速) 対 システム 2 (制御、低速) という観点から説明されましたが、これはおそらく最も有用なラベルではありません。