付録 2: 制御を知らない人のためのフィードフォワードとフィードバック入門
前回書いたものを読み直していたら、「ガンダムをダム端末にする」という下りを見つけて、「しまった!『ガンダムをダム端末にする(ガンダムだけに……)』って書いておけば良かった」と思いました。わざわざ追加するのも恥ずかしいので、ここで発表するだけに留めておきます。
「ガンダムをダム端末にする」と言ったのは、ダム端末(自分でいろんな処理を実行しない端末)にしておけば、データを盗まれることが無いだろうと思ったからでもあります。キラとアスランが戦った際に、アスランが自爆して脱出するシーンがありますが、あれがパトレイバーだったら放射能防護服に身を包んだ内海さんが茂みに隠れていて、アスランが乗っていたイージスガンダムからこれまでの戦闘についてのデータが詰まったブラックボックスを盗んでいくことでしょう。
ただ、ダム端末にしてしまうと、ガンダム(デバイス)、コントローラー(オペレーター)、データ センターと 3 箇所でデータを繋ぐ必要が出てきて、ますますデータ遅延が深刻になります。そう思って調べていたら、エッジ コンピューティングという構成があることがわかりました。これはデバイスに近いところ(ネットワークの
ガンダムは素早く動かなければならない機械なので、設計者としてはデータ遅延を最小に留めたいところでしょう。前回で言ったデータをリレーするためのハロにエッジ サーバーとしての機能も持たせれば、遅延の問題も多少は解決できるのではないでしょうか。ただ、この場合は、ますますハロの重要性が高まるので、ハロを守るための迎撃機はより強力にする必要がありそうです。ハロもかなり厳つい感じの直径 1 メートルくらいは行くハロになるでしょう。
さて、なぜかブックマークを付けてくださっている皆様、大変ありがとうございます <(_ _)>。
後はつまらないよ、と言ってるにも関わらずブックマークを付けていただいているということは、何か期待されていらっしゃるのだろうか、だったらフィードフォワードとか伝達関数の説明とか書いたら悪いかなという気になってきましたが、初志貫徹。
ここからは、呪文を解読するときに集めた知識をメモしてあります。
私が「すごい面白い!」と思っていても、全く同意されない目で家族から見られることがよくあるのでそんな程度の内容です。
制御を知らない人のためのフィードフォワードとフィードバック入門
フィードフォワードとフィードバック
そもそも、呪文を解読しようと思ったのは、ガンダムがフィードフォワードなのはなんでだろう? と思ったからだ。機械が動けるようになるには、フィードバックを受けて学習する必要があるんじゃないだろうかといかにも素人の疑問を持ったのだ。
本編では、「フィードフォワードをニューラル ネットワークと併せて考える必要がある」と言ったのだが、厳密に言うと、ニューラル ネットワークと併せて考えなくてもよい。フィードフォワードやフィードバックは元々「制御」に関連する概念で、ニューラル ネットワークは制御の一種なんだそうだ。
ここでは、ニューラル ネットワークについては一旦置いておいて、まずは「制御におけるフィードフォワードやフィードバックとはなんぞや?」ということについて考えてみたい。
フィードフォワードとかフィードバックについて調べていたら、湯沸かし器の例を見つけた。これがわかりやすかったので、より単純化して引用する。
https://www.itomic.co.jp/topix/topix-10328/
湯沸かし器は、冷水の入水口、ガス ヒーター、温水の出水口で構成されている。
フィードバック制御の場合、温水の出水口に温度センサーが設置されている。このセンサーが検知した温度と設定温度が同じになるように、湯沸かし器がガス火の強さを制御する。しかし、水が冷たいことを検知してから、湯沸かし器がガス火を強くしても、後追いの処理になるため、蛇口から出てくる水はしばらく冷たいままになってしまう。
② ガスを強くしてね! ←―――― ① ここで温度を測る
↓ ↓
[冷水の入水口] ― [ガス ヒーター] ― [温水の出水口] ― [センサー] ― [蛇口]
🙁 処理が後追いになってしまう
図 1: フィードバック制御
フィードフォワード制御の場合、センサーは冷水の入水口にあって水温を検知する。水がガス火を通る前に水温がわかるので、事前に火の強さを調節することができる。
① 温度を測る ―→ ② ガスを強くしてね!
↓ ↓
[冷水の入水口] ― [センサー] ― [ガス ヒーター] ― [温水の出水口] ― [蛇口]
🙂 事前に処理を制御できるので結果が早い!
図 2: フィードフォワード制御
なんだか、ちょっとわかったような、そうでないような……。
しばらく考えてやっと理解したのは、フィードフォワードとかフィードバックとかいうのは、要は「事前に動くか」、「事後に動くか」ということだった。
……日本語で言えや!
(フィードフォワード制御は日本語で「先行制御」とも言うらしい。後で見つけた。フィードバック制御を「後行制御」というのかはわからない)
ただ、上の例で行くと、フィードバックだけだと制御が遅くなるし、フィードフォワードだけだと実際にお湯が暖かくなったかどうかわからない。ということで、実際には、フィードフォワードとフィードバックは併せて使うらしい。……こんな感じ?
④ ↙¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯↖
① 温度を測る → ② ガスを調節してね! → ③ 温度を測る
↓ ↓ ↓
[冷水の入水口] ― [センサー] ― [ガス ヒーター] ― [温水の出水口] ― [蛇口]
図 3: フィードフォワードとフィードバックの複合制御
さて、ここでガンダムのニューラル ネットワークに戻ろう。
ガンダムのニューラル ネットワークはフィードフォワード(単方向)だ。
上の「図 2: フィードフォワード制御」を見て欲しい。処理の流れはすべて左から右へと進んでいる。「図 1: フィードバック制御」のように右から左へと戻る処理がない。だから単方向なのだ(多分!)。
正しく言うと、線形化とか私の脳みそでは理解できない領域に入っていくので、良い子の皆さんは素知らぬふりをして読み進めていただきたい。
バック プロパゲーション(後方伝播)
フィードフォワードとフィードバックの違いは分かった(なんとなく)。でも、ガンダムのニューラル ネットワークだって試行錯誤はあるはずだ。でなければ、見たことのない新しいタイプの敵とは戦えないだろう。ニューラル ネットワークでの誤差修正はどうするのか。
これを行うのがバック プロパゲーションという方法らしい。
バック プロパゲーションでは、予測された出力と実際の出力の間の誤差が計算されて、その誤差を埋めるために「重み」(シナプスの結びつきの強さ)と「バイアス」(出力の調整)が調整される。
まあ、例えて言えば、「縦方向に運動してね!」と入力されたときには、横方向の運動ノードへ繋がる「重み」は少なくていい。それでも斜め運動は必要なので、まるっきり横運動が無いのは困る。そこで横運動ノードからの出力を少なめにするために「バイアス」は負の方向に加算される、とかそんな感じだと理解した。それが一回目の縦方向運動では横ブレが激しく出てしまったとする。それを調整するために、更に横方向運動ノードへの「重み」や「バイアス」を減らす、といったイメージだと思う。
ニューラル ネットワーク内の実際の処理は、全部グラフ(関数)で計算されているので、出力された値が期待値のグラフに沿うかどうかで判断されるらしい。私は数学がちんぷんかんぷんなので、見つけたほとんどの説明は「???」だった。
「バイアスは関数を右方向や左方向に動かすものである」
こんな説明で「なるほど!」と思う人がいたら教えて欲しい。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます