Chapter Content
えーと、今回はね、えっと、第5章っていうことで、「異なる種類の解決策」っていう、まあ、そんな感じのタイトルなんですけど。
「見たら間違い」っていう、ちょっと面白い見出しから始まってますね。グローブ、雪だるま、ルービックキューブって、章4でも話したように、難易度が上がっていく問題の例ですよね。で、これらは全部、解決策を見つけるアプローチは同じで、高度なプロセスとヒューリスティクスを組み合わせて、可能性の空間を効率的に移動していく、と。問題が難しくなればなるほど、その問題の可能性の空間にある複雑さを乗り越えるために、より多くの探索が必要になるわけですね。
解決策っていうのは、問題を解決するために使う内部プロセスを実装する物理的なもの、っていう定義でしたよね。手袋は、暖かい手っていう必要な出力を生み出す、因果的につながった部品でできた物理的な物体だから、解決策だと。ルービックキューブの解決策(人が見つけるやつ)は、紙に書き留められた一連のルール、と。
でも、ディープラーニングによるルービックキューブの解決策は、全然違うんですよね。書き出すことができない。人間が見つける解決策は解釈可能だけど、ディープラーニングの解決策は、本質的にブラックボックスなんです。どれだけ頑張って構造を剥がして調べてみても、ディープラーニングが具体的に何をしているのか、解読することはできないんですよね。
なんか変な感じしません?人間の脳は、私たちが知っている中で最も複雑なものなのに、完全に解読可能な解決策を生み出した。ディープラーニングは真の複雑さに近づいてるのに、その解決策は不透明で解読不可能。人間とディープラーニングは、似てないよりは、もっと似たような解決策を生み出すはず、って思っちゃいますよね、普通。
実際、ディープラーニングは人間の解決策と似たような解決策を生み出すことはあるんです。でも、それは解決しようとしてる問題が、カテゴリー的に難しい場合に限られるんですね。ルービックキューブは、カテゴリー的に難しい問題じゃない。ルービックキューブは、状態と状態間の移行が固定されていて、管理可能な数のパズルなんですよ。ルービックキューブの可能性の空間が大きいのは、より単純な問題に関連する空間と比較した場合だけ、っていう。
ルービックキューブは、カテゴリー的に難しい問題じゃないから、単純な解決策か、複雑な解決策のどちらかになりうるわけですね。単純な解決策は、解読可能なルール版。複雑な解決策は、ディープラーニングが生み出す解読不可能なバージョン。じゃあ、ディープラーニングはなぜ、単純な解決策ではなく、複雑な解決策を生み出すのか?
それは、ディープラーニングが、変化、反復、選択っていう外部プロセスを使ってモデルを構築するから、なんですね。前に話したように、これは複雑さを生み出すレシピなんです。このプロセスは、解決しようとする問題の複雑さに近い解決策を生み出すことが期待される、と。ルービックキューブの可能性の空間には、ある程度の複雑さが内在してるから、ディープラーニングの解決策は、自然にその複雑さに触れることになるんですね。
だから、ディープラーニングの解決策は不透明だけど、パフォーマンスの面では、可能な限り最高の解決策なんです。ディープラーニングの解決策は、1秒以内にルービックキューブを解くことができる。これは、世界最速の人間ですら、かなわない速さですよね。これは、ロボットの器用さとか、機械の集中力だけの問題じゃないんです。この速さは、慎重な分析や説明責任よりも、試行錯誤を重視するシステムが生み出す優れた計算能力によるものなんですね。人間も同じですよね。人間が見つける速いアルゴリズムは、遅い初心者向けのアルゴリズムよりも、多くのヒューリスティクスとパターン認識に依存している。上級キューバーは、より多くの直感を使ってキューブを解き進めていく。微妙な手がかりとか、繰り返されるパターンを使って、現在の動きを実行しながら、次の動きを予測する、と。
人間は、きちんとしたルールを探してる。それは、最高のアップルパイを偶然焼いちゃって、どうやってそこにたどり着いたのか、覚えておきたいのと同じなんです。でも、人間がそうするのは、今日のパラダイムが、私たちに説明とか、タスクを確実に達成する方法を教えることを期待してるから、なんですね。説明可能な解決策が、最もパフォーマンスが高いとは限らない。むしろ、そうじゃないことの方が多い、って思っておくべきですね。特に、ゲームから離れて、現実の世界に向かうにつれて。
ディープラーニングは、ルービックキューブの問題に内在する複雑さに触れる。キューブの位置を表すデータの中の複雑なパターンとか、関係性を捉えるんですね。単純なルールでは表現できない非線形の関係性も含む、と。ディープラーニングは、後から解読することが不可能な方法で複雑さを利用する戦略を発見する。これは、人間の脳が、現実世界の問題に直面したときに行うことと同じなんですね。戦場で相手に槍を完璧に投げ当てることができても、どうやってやったのか説明できない、みたいな。槍投げを、バラバラの動きを組み合わせたテクニックに分解しようとすると、めちゃくちゃ下手な槍投げになっちゃう、と。
ディープラーニングは、学習したパラメータの中に、ある種の暗黙の知識をエンコードしてるんですね。暗黙の知識は、複雑な環境では常に優れている。なぜなら、それは潜在的だから。潜在的なものは、勝手に具現化される。意図的に組み合わされるものではない、と。この真実は非常に基本的なことなので、説明可能性自体が、現実世界を過度に単純化したことの証拠だと考えられるべき、ってことなんですよね。
本当に難しい問題を解決するには、本当に複雑な解決策が必要になる。複雑性の時代に私たちが構築するものは、よく考え抜かれた部品とか、相互作用の単純な集合体(つまり、複雑なもの)であってはならない。私たちの発明が使用する内部プロセスが何であれ、それが解読不可能である、と覚悟しておくべきなんですね。複雑なものが内部でどのように機能するかを定義しようとする説明は、おとぎ話でしかないし、私たちの革新を制限するだけ、と。
えーと、次ですね。「自然は近似ではない」と。
難しい問題を解決するために使われるアプローチは、常に近似だと考えられてきた、と。近似っていうのは、答えにたどり着くために使うプロセスが、問題に直接アプローチした場合よりも、良くない、または正確じゃない場合に起こる、と。ディープラーニングは、ヒューリスティクスと数学的最適化に依存して、解決策にたどり着く。前に述べたように、このような方法は、従来のコンピューティングで使用される、より直接的なルールベースのアプローチの、よりソフトなバージョンなんですね。だから、よりソフトな形式のコンピューティングとか、推論は、より近似的である、と言われるわけです。近似で見つかったものは、最適ではない、と考えるべきだ、と。
これは、人間と機械の両方に当てはまる。人間の側では、ヒューリスティクスは、私たちの個人的な判断とか、直感に依存するので、意思決定プロセスにバイアスとか、「エラー」、ばらつきが生じる。人によってヒューリスティクスの適用方法が異なる場合があるから、同じ状況でも結果が異なる可能性がある。ヒューリスティクスは、精度よりもスピードを優先する。最高のものを見つけるために時間とリソースを費やすよりも、十分に良い解決策を迅速に見つけることを目指す、と。機械版も基本的には同じなんですね。ヒューリスティクスの使用は、本質的なものをスキップして、より迅速に解決策を得るようなものとして現れる、と。
ソフトなアプローチを近似として考えるのは、現在の科学と工学のパラダイムにおける、中核的な誤謬の1つだと、私は信じてる、と。ヒューリスティクスの使用を近似と考えるのは、問題の解決に最適な方法は決定的である、と信じている場合だけ、と。システムの詳細に触れて、個々の部品がどのように連携して結果を生み出すかを正確に把握することだけが、私たちのアプローチを厳密にする、と。
これは、解決策の発見と適用の両方に当てはまる。演繹的で、ルールベースの推論を使って解決策を見つけることは、可能性の空間を飛び回り、高レベルのパターンに基づいて意思決定をするよりも、より細心の注意を払って、正確であると見なされる。そして、きちんとしたルールベースのシステムを展開する方が、内部方法を解読できない不透明なモデルよりも、より合理的で慎重であるように思える、と。
でも、複雑さっていうのは、そういうもんじゃないんですよね。複雑さは、単純なシステムで見られるものの、スーパーチャージ版ではない。複雑さは解読不可能なんです。詳細とか、ルールが多すぎて、はっきり見えないからじゃなくて、複雑なシステムが物質とか、情報を処理するメカニズムが、全く異なるから、と。複雑なシステムで見られる統計的なスメアリングは、離散的なもののあいまいなバージョンではなく、問題を解決するために現れるものそのもの、なんですね。中を覗き込んで、決定論的な方法で機能する小さな部品を見つけようとするのは、そこにないものを探してるようなもの、と。確かに小さな部品はある。そして、それらは相互作用する。しかし、因果関係の直線的な連鎖としてではない。複雑なシステム内の相互作用は、より小さいスケールでは存在しない構造を具現化する、と。
自然の解決策は、難しい問題に対する近似的な解決策ではなく、必要な答えを正確に計算するものなんです。自然は、現在の知識を定義するために私たちが使う、縮小された分離された部品ではない、と。分子を調べて、その構成原子を定義できるからといって、分子の構造とか、挙動を原子を使って説明できるわけではない。細胞に特定の役割を担っているように見えるオルガネラがあるからといって、オルガネラを使って細胞機能を(正しく)説明できるわけではない、と。
自然の計算構造は、解決策が存在するすべてのスケールで、それ自体のものとして現れる。人間が、入力を出力に変えるために実行される一連の機械的操作以外のものとして、処理を想像するのは難しい。でも、処理っていうのは、物質とか、情報が変換されていることを意味するだけで、機械的または因果的な手段で発生する必要はない、と。
次に、「柔軟な決定論」についてですね。
第1章では、決定的プロセスと非決定的プロセスの違いを見ましたよね。決定的プロセスっていうのは、結果が予測可能で、同じ入力からは常に同じ出力が得られるプロセスのこと。非決定的プロセスっていうのは、結果が完全に予測可能ではなく、同じ入力から毎回異なる結果が得られるプロセスのこと。決定的プロセスは、通常の動作の中でランダム性を許容しない。非決定的プロセスは、それを活用する、と。
でも、自然の解決策となると、物事はそれほど単純じゃないんですね。自然の解決策には、決定論と非決定論の両方がある。自然の解決策には、私が「柔軟な決定論」と呼ぶものがある、と。物事が柔軟に決定的であるっていうのは、再現可能な動作と、再現不可能な動作の両方がある場合のこと。ビーバーを考えてみましょう。ビーバーには明らかな再現性がたくさんある。なぜなら、私たちはビーバーを見れば、いつもビーバーだとわかるから、と。ビーバーには、明確に定義された外見と一連の行動がある。ビーバーは、その入力に対して、全く異なる出力を生み出すことはない、と。
でも、ビーバーは、非常に非決定的でもある。そうでなければならない。なぜなら、その数々の課題は、厳格な決定論を使って解決することは絶対にできないから、と。捕食者、食料、テリトリー、気温の変動、干ばつ、寄生虫っていう入力を、常に同じことをするルールエンジンを使って変換しようとすることを想像してみてください、と。捕食者は数え切れないほどの角度から近づいてくる可能性があるし、気温の変動は非常に予測不可能だし、寄生虫はいつでも感染する可能性がある。決定論的なシステムでは、ほぼ無限の数のシナリオにわたる多数の要因を考慮することは絶対にできない、と。
それでも、ビーバーは生き残る。任意の、偶発的な、不規則な、計画外の入力が複雑に絡み合っているにもかかわらず、ビーバーは毎回、同じ少数の出力を確実に変換する。このような多対少の変換は、抽象化によってのみ可能になる。山の中の構造、川床、ビーバーは、物質、エネルギー、情報を少数の信頼性の高い出力に短縮する物理的な抽象化であるから、機能する。物理的な抽象化は、自然の計算の中核的な構造である。なぜなら、これこそが、その特徴的な柔軟な決定論を達成できる唯一の方法だから、と。
顔認識は、詳細な分析とか、丸暗記の手順によってではなく、変化する角度とか、照明に対してロバストな、高レベルの不変パターンを検出することによって、人間によって達成される。私たちが見ている人が頭を動かしたり、顔に影が落ちたり、雨でずぶ濡れになったりしても、私たちはその人を認識できる。これこそが、抽象化の作用。顔の本質は、分析とか、冗長な説明を使って表現することはできない。なぜなら、顔を識別できる正確な決定論的メカニズムは存在しないから。心が、はるかに抽象的なものに固定することによってのみ、顔認識の問題を解決することができる、と。
顔のような高レベルのパターンに気づくためには、強力なレベルの情報圧縮が存在しなければならない。目の間の距離、鼻の幅などの詳細はすべて、心の高レベルの信号に圧縮されて、誰かのアイデンティティを割り当てることができるようにならなければならない、と。これこそがまさに、抽象化なんですね。情報を、行動を起こすことができる少数のアンカーに圧縮すること、と。
自然界のすべての問題は難しい。それらは、ゆっくりとした分析によって解決される状況ではない。難しい問題は、ヒューリスティクスとパターン認識という形での高レベルの抽象化に依存しているから、迅速に解決される、と。解決に時間がかかる問題は、実は単純な問題なんです。これは、私たちが日常会話で「難しい」っていう言葉を使うのとは逆の意味に聞こえるけど、計算の観点からすると、これは真実なんですね。単純な問題だけが、還元主義的な意味で分析して分解できる。本当に難しい問題は、そのような手段では解決できない。難しい問題を解決するには、高レベルの構造が必要になる。内部の詳細を、より高次のものに抽象化することによってのみ、難しい問題を管理することができる、と。明確にしておくと、これは、初めて解決策を見つけることについて話してるのではない。ここでは、すでに発見された解決策の実装について話してるんですね(例えば、展開されたモデルとか、顔を識別する人間の脳)。難しい問題の解決策を見つけるには時間がかかるけど、見つかった解決策を実装するには時間がかからない、と。
私たち人間が作ったものでも、柔軟な決定論の例はある。ディープラーニングモデルによって生成された解決策は、事実上決定的であると見なせるほど信頼性が高いにもかかわらず、実装時には難しい問題を解決できるほど柔軟性がある。これは、ディープラーニングのトレーニングフェーズと、展開フェーズの違いについて話してるのではない。これは、展開された解決策についてのみの話。運用化されたディープラーニングモデルで見られる決定論は、従来のエンジニアリングの決定論とは全く共通点がない。従来のエンジニアリングは、出力が完全に予測可能な解決策を生み出す。エラーとか、制御不能な環境要因が、純粋な予測可能性を軽減する可能性はあるけど、単純なシステムの内部機能は、完全に決定論的な機械になるように設計されている、と。
でも、ディープラーニングは、静的な形式でも柔軟性がある。入力を出力に変換するパラメータの構成は固定されているけど、多くの情報をはるかに少ない情報にマッピングすることによって、極端な柔軟性をもたらす、と。これこそが、自然界で見られる決定論。ルールによって達成されるのではない決定論なんですね。
ルールは、より低いレベルでは、まだ関与する可能性がある。アリとか、シロアリは、ローカルなインタラクションルールを持っていて、それによって相互作用の方法が決まる。しかし、決定的に重要なのは、これらのインタラクションから、出現する行動への直接的な線がないこと。ローカルなインタラクションルールは、複雑なシステムが利用する相互依存関係を設定するだけ。それらが、より高レベルの問題を解決する出力につながるものではない、と。入力を出力に変換してるのはルールではない。その変換は、物理的な抽象化のより高いレベルで起こっている、と。
だから、ディープラーニングモデルの内部動作を明示的に説明しようとする試みは、完全に非合理的、なんですね。ディープラーニングが計算するメカニズムは、内部の因果的な意味では説明できない。しかし、この真実は多くの科学者とか、エンジニアには伝わってない。ディープラーニングモデルが何をしているのかについて、より「科学的な」説明を試みようとしてる研究者はたくさんいる。彼らの見当違いの具体性は、私たちの還元主義的な科学と工学のパラダイムから生まれてる、と。ディープラーニングが内部でどのように機能するかについての説明が提供されるとすれば、1)それが間違っているか、2)ディープラーニングが実際には複雑ではないかのどちらか、と。すべての兆候は、1番が当てはまることを示している、と。
ディープラーニングシステムは、決定論的な意味では設計されることはない。なぜなら、それらが持ってるどのようなレベルの決定論も、明示的にそこに置かれたものではないから。ディープラーニングには、入力から出力へのパスはない。なぜなら、ディープラーニングモデルが具体化するものは、ルールでは変換できない方法で情報を変換する創発的なメカニズムだから、と。
もちろん、これはディープラーニングだけじゃない。ディープラーニングは、私たちが自然界で見ているものの、人間が作ったバージョンなんですね。これは、ディープラーニングが自然と同じくらい有能だと言ってるのではない。ただ、自然の解決策に見られる柔軟な決定論を達成するために必要な複雑さの種類を私たちに示してるだけ、なんですね。人間の脳は、もちろん、すべてのものの中で最高の例。人間の脳は、ニューロンの数、接続、創発的な特性を考えると、私たちが知っている中で最も複雑なものなんですね。人間の脳は、極端な柔軟な決定論を備えたオブジェクトであり、それによって、私たちは環境の複雑さを非常に一般的に乗り越えることができる、と。
多くの科学者とか、エンジニアは、複雑なシステムで発生する不確実性は、外部の妨害とか、ノイズ、システムのダイナミクスにおける固有のランダム性などが原因であるかのように話す。これは、決定論的なシステムには当てはまるけど、複雑なシステムには当てはまらない。繰り返しますが、複雑さっていうのは、決定論の乱雑なバージョンではなく、根本的に異なる方法で動作する。システムが単純から複雑に移行するときには、急激な移行がある。この移行中に何が起こってるのかは、パート2で見ていく、と。
次に、「創発を設計する必要がある」についてですね。
私たちはもはや、歴史を通じて行ってきたのと同じ方法で解決策を設計することはできない、と。必要な出力は、創発によって得られなければならない。そして、複雑なオブジェクトだけが創発を達成できる、と。既知の結果を生み出す特定の部品とか、接続について特定の選択をすることはできない。むしろ、自然がするように、私たちが作成するシステムの内部から一歩離れる必要がある、と。
複雑性の時代に構築するには、私たちのプロセスが自然選択と深い類似点を共有する必要がある。その場合、変化、反復、選択が主な関心事であり、ソリューションの内部構成は自然に生まれる、と。
テクノロジーを構築するっていうのは、具体的なもので問題を解決すること。これは常に、次のレベルの物理的抽象化を作成するために、設計に依存してきた。しかし、私たちが構築するものの内部になければならない部品とか、相互作用の数は、設計の概念を完全に排除する。私たちの創造物の内部にあるパラメータは、明示的に設定することはできない。それらの詳細を設定するために必要な種類の内部情報にアクセスすることはできないし、仮にあったとしても、これは自然が機能する方法ではない、と。設計に基づくアプローチは、還元主義的な考え方に根ざしており、複雑さの下で機能する実行可能な創造物につながる還元主義的な哲学は存在し得ない、と。
しかし、物を構築するには、建設に関与する原理、材料、プロセスに関する知識がまだ必要。さまざまなものは、さまざまな条件下で異なる動作をするし、合理的な意思決定を行うには、このような知識が必要になる、と。従来のエンジニアリングと同様に、機能する複雑なものを構築するには、構造的完全性、安全性、機能性、効率が、私たちが作成するものを配置する環境でどのように作用するかを理解する必要がある、と。
今の違いは、そのような知識を、私たちの創造物の内部の詳細に基づいて持つことができないこと。これは、今日の科学と工学の運営方法に真っ向から反する。構造的完全性を備えたオフィスビルを建設するっていうことは、建物内の荷重がどのように分散されるかについての知識を使用することを意味する。梁、柱、基礎などの特定の構造コンポーネント間の因果的相互作用は、実行可能な構造を設計し、作成するために使用される。
安全基準を満たすオブジェクトを作成するっていうことは、構造内のさまざまな要素がどのように相互作用し、さまざまな状況でどのように故障する可能性があるかを理解することを意味する。潜在的な危険を予見し、リスクを軽減するために、どの部品を使用し、それらをどのように接続するかについて、意識的な決定を下す必要がある、と。今日の建物の中の耐火壁、スプリンクラーシステム、避難経路を考えてみてください、と。私たちの創造物は、構造の内部動作を最適化することによって効率化されてきた。改善の余地がある領域を特定するために、私たちは部品間の因果関係について推論し、その知識を使ってプロセスを合理化し、無駄を最小限に抑え、コストを削減しなければならなかった、と。私たちの創造物が意図したとおりに機能することに関しては、内部メカニズムと出力が生成されるプロセスを理解することによって、そのような機能は常に可能だった、と。
これらの例はすべて、物事がどのように機能するかについての内部知識に基づいている。複雑性の時代に移行するにつれて、私たちは原理、材料、プロセスに関する知識を単に捨てることはできない。違いは、私たちは今、そのような知識を、物事を機能させる材料とプロセスに関する外部特性の観点から再構築しなければならないこと。自然選択が内部知識に依存せずに真の洗練にたどり着くのと同じように、私たちもまた、私たちが作成するシステムの外に出て、そこに私たちの基準を置かなければならない、と。
これを行うには、創発が何であるかを理解していることを確認する必要がある。因果関係を介して小規模と大規模を結びつけようとする還元主義的な断片的なストーリーを使用するのではなく、情報、計算、進化の普遍的な特性に関する知識を使用することによって、と。
自然がその創発的な構造と行動を達成するために何をしているのかを、一歩引いて見てみることによってのみ、私たちは自然がどのように計算するかを理解することができる、と。これは、科学の記録の中には見られないもの。他の人が試みなかったからではなく、彼らの試みが、複雑さを理解しようとする知的誠実な試みを妨げる古い還元主義の名残があるから、と。必要なのは、自然がその解決策を作成するために、情報、計算、進化をどのように使用しているかを客観的に見ること。現在のパラダイムから一歩離れて、自然をあるがままに見ることによってのみ、私たちは時代遅れの還元主義的なレンズを手放し、自然がどのように機能するかに関する否定できない真実をもたらすことができる、と。
ふう、長かったですね。ちょっと言い足りない部分もあるかもしれないけど、まあ、こんな感じでどうでしょうか。