本編 - これが呪文の解読結果だ!
まずは呪文をもう一度おさらいしよう。
「キャリブレーション取りつつ、ゼロ モーメント ポイント及びCPGを再設定…、チッ! なら疑似皮質の分子イオン ポンプに制御モジュール直結! ニュートラル リンケージ ネットワーク、再構築! メタ運動野パラメータ更新! フィード フォワード制御再起動、伝達関数! コリオリ偏差修正! 運動ルーチン接続! システム、オンライン! ブート ストラップ起動!」
次に、用語を一つずつ見ていこう。
「キャリブレーション取りつつ」
ここでは、機械の動作結果をシステムでの設定値(理想値)に近づけること。
「ゼロ モーメント ポイント」
歩行運動における計算・設計上の重心点。この重心をどうやって移動させていくかを計算することでロボットを歩かせることができる。
「CPG: Central Pattern Generator」
中枢性パターン発生器。生物において、呼吸や鼓動など周期的な動作を作り出す神経網のこと。
とりあえず、ここまでで考えてみる。
用語からは、連続歩行の動作の修正をしているらしいことがわかる。言い直してみるとこんな感じ。
「この機体の動作値がシステムでの適正値の範囲に収まるように
運動計算用の重心点と
周期動作を管理する
で、最後に「チッ!」と言っているので、この設定は上手く行かなかったらしい。次の文を見てみる。
「疑似皮質の分子イオン ポンプに制御モジュール直結!」
イオンポンプには二種類ある。一つは工学的な分子イオン ポンプで、非常に高い真空状態を作るための機構を指す。もう一つは生物学的なイオン ポンプで、細胞膜にあるタンパク質だ。浸透圧に逆らって、低濃度の液から高濃度の液へ「原子」を輸送する。
工学ポンプは完全な閉鎖空間でガスを吸着して真空にする。生物ポンプの方は、不完全に閉鎖された半透膜上でイオンの流れに逆らってイオンを輸送する。この機構があるおかげで細胞内外で電位差が生まれ、神経信号を送ったり、筋肉を弛緩させたりできる。
運動機能を調整するのに真空ポンプが必要になる設計を思いつかなかったし、「疑似皮質」という言葉があったので生物ポンプの機能を採ることにした。
疑似皮質は、多分「皮質脊髄路」を指しているんだと思う。皮質脊髄路は、大脳皮質から脊髄を通って右脳からは左半身へ、左脳からは右半身へ伸びる神経である。生物の教科書で脳の表面に顔や手が描かれているホムンクルスの図を皆さんも見たことがあるだろう。あれは脳の運動に関する領域(運動野)へ与えた電気刺激が皮質脊髄路を伝ったときに、反応する身体の部分を見て描かれたものだ。
自然な状態では、皮質にあるイオン ポンプによって発生した電気信号が脊髄路を通って手足などに送られ、運動が発生する。
ガンダムには、この皮質内のイオン ポンプと脊髄路を模した機構があって、分子イオンを介して電気信号が送られ、運動が制御されると推測する。イオン伝導性ポリマーとか使ってるのかもしれない。
ということは、キラは重心点の再設定と、周期動作ニューラル ネットワークの再設定そのものには成功したのだが、ローカルに制御を渡す部分に失敗したのではないだろうか。
ガンダムほどの大きさのロボットになると、すべてのパーツを単一の CPU で動かそうとすると処理しきれないので、パーツごとに CPU が組み込まれていると想像する。
キラは、足腰を中心に制御しているローカル CPU に重心と周期動作の再設定を組み込もうとしたが、上手く行かなかった。その代わりに、中央 CPU の下で集中的に運動を管理している疑似皮質脊髄路に、歩行を制御する一連のプログラムからの出力を直結したのだろう。
まあ、足腰での個別設定が無理だったので、脳みそに設定したって感じだと思う。
「ニュートラル リンケージ ネットワーク、再構築!」
これは最初にこの台詞を書き起こした人が「ニューラル」を「ニュートラル」と聞き間違えたんだと思う。声優さんもちゃんと「ニューラル」と言っているように聞こえる。
ということで、ここは「ニューラル ネットワークを再構築」したということにする。ニューラルネットワークについては後述。
「リンケージ」という言葉が入っているのは、OS 名にもあったように「神経接続網」の「接続」の訳だからだろう。
「メタ運動野パラメータ更新!」
運動野というのは、前述の皮質脊髄路の話に出てきた脳内で運動を司る部分だ。
運動野に入力した刺激が運動として発現されるまでの過程をコンピュータ モデルで再現したときに、運動として入力する力の大きさ、方向などをパラメータと呼ぶ。ただ、ここには「メタ」と付いている。メタは「実際にやっていることを外から見た状態」を言う。画像認識などでは、パラメータの最適な設定を決めるために、メタパラメータが使われている。
ということで、ここでは運動野のパラメータを最適に設定するためのメタパラメータを更新したのだろう。ニューラル ネットワークを含め、制御の分野では、学習にかける時間を節約するために、意図したとおりの動きをさせる効率の良いモデルやパラメータを事前に設定しておくのが肝要なんだそうだ。
前述のニューラル ネットワークの再構築とこのメタパラメータ設定で、このガンダムはキラ仕様になってしまったんではないかと思う(後のエピソードで、この機体を動かせるのはキラだけになってしまったことが判明する)。
「フィード フォワード制御再起動」
この用語は、ニューラル ネットワークと合わせて考える必要がある。
ニューラル ネットワークは、コンピュータ上の知識を人間の神経に模して表現したものだ。入力されたデータはノードと呼ばれる要素で処理され、次のノードに送られる。これを繰り返して最後に結果が出力される。ノードとノードとの接続をシナプス(またはエッジ)という。シナプスには「重み」が付いていて、特定のノードとの関連が深いほど重みも増す。ノードでは、入力として受け取った数値をどのように出力するかを計算する「活性化関数」が実行される。関数の実行時には、その活性化関数を入力されたデータに合わせて調整する「バイアス」が考慮される。「重み」、「バイアス」、「活性化関数」の処理が繰り返されて、より正解に近い知識構成に近づいていく。
このネットワークで、データが一方向にだけ処理されることをフィード フォワードと言う(だから OS 名が「Unilateral: 単方向」なのである )。
逆に、処理を渡したノードから、「前回もらった結果に基づいて計算したら誤差がこれ位ありましたよ」とか何か反応が返って来て、シナプスの接続や重みが変わることもある。この処理をフィードバックと言う。フィードバックの例として機械翻訳がある。翻訳して出力した文を人間がより正確な訳に修正してコンピュータに返す。コンピュータはこれを学習して、次回同じような文では間違いが減る、という具合だ。
しかし、この方法を運動系のニューラル ネットワークに適用すると、処理に時間がかかったり、思わぬ動作につながることがある(初期の学習時には有効)。したがって、通常はフィード フォワードが使われ、誤差の修正などは別の方法で渡している。
フィード フォワードは処理の方式であって、それを単独で起動するものではないとは思うが、キラは個別の制御として再起動している。ガンダムでは機械の制御そのものは OS がして、ニューラル ネットワーク(AI)が動作学習や動作の調整をしているのだと仮定したら、AI を独立した処理エンジンみたいにとらえて「フィード フォワード制御」と呼んでいるのかもしれない……。
「伝達関数」
伝達関数というのは、システムの入力と出力の関係を表す数式のことだそうだ。入力としていろいろな値を与えたときに、出力がどう変わるかを見る。伝達関数を使うことで、システムがどんな動作をするかを予測することができる。つまりシミュレーションができるようになる。
ということは、キラは自分が書き換えた歩行設定を使ったときに、機械がどんな風に動作するかをここで論理的にチェックしているんじゃないかと思う。一秒くらいでできるのかどうかは別として。
「コリオリ偏差修正!」
コリオリ力は、理科で習った地球の自転によって運動の方向がずれていく力だ。ロボットの動作では、関節の制御にコリオリ力、慣性力、求心力、重力からの影響を考慮する必要があるらしく、特に動作が速くなるとこれらの力からの影響も大きいらしい。
キラが機械の動作を伝達関数で調べてみたところ、今のコリオリ力の設定だと結果が適正値から
「運動ルーチン接続!」
ルーチンは、メインのプログラムから派生して、定形の処理をするためのプログラムだ。ロボットは運動の制御がメインなんだから「運動ルーチン」とかで収まるものではないような気もする。もしかして、
「システム、オンライン!」
ここでオンラインになってるということは、この時点までシステムはネットワークから切られてたということだ。いつ切ったんだろう。ガンダムくらいになれば、gCloud とかあって、冗長システムを保持しながら常時バックアップを取ってそうな感じだけど、まだそうじゃなかったようだ。まあ、パトレイバーでも起動ディスク使ってることだし……。
「ブートストラップ起動!」
システムを再起動しています……。
ブートストラップは、システムが開始して最初に実行されるコード(プログラムの行)のことなので、正確には「ブートストラップ実行!」だな。
解読は以上である。
ここでもう一度キラの作業を振り返ってみよう。
1) 機体の動作値がシステムでの適正値になるように調整しようとした。
2) そのために「運動計算用の重心点」と「周期動作を管理するニューラル ネットワーク」を再設定した。
3) (多分)ローカル設定がうまく行かなかったので、疑似皮質のイオン ポンプに制御モジュールを直接繋げることで、中央管理に設定した。
4) 処理方法を変えたので、それを反映するためにニューラル ネットワークを再構築した。
5) ニューラル ネットワークを再構築したので、運動パラメータも変わる。運動パラメータを最適値にするために、そのパラメータを設定するメタパラメータを更新した。
6) ニューラル ネットワークを稼働させるためにフィード フォワード制御を再起動した。
7) 伝達関数を使って、機体が新しい設定でちゃんと動くか確認した。
8) 伝達関数を実行した結果、コリオリ力の設定が適正値からずれていることが判明した。それを手動で修正した。
9) なんらかの運動プログラムと接続した。
10) システムをオンラインに戻した。
11) システムを再起動した。
それなりに納得できるような解読結果になったことを祈る。
解読は、いままで知らなかった制御の世界を知るきっかけになって大変勉強になった。
このシナリオを書いた方はいろいろ勉強して大変だったと思う。多分、どなたか工学系の先生と相談しながら書かれたのではないかと思う。21 年経っても、古臭さを感じさせない台詞は作成陣の意気込みを感じさせる。今更ながらお疲れさまでした。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます