Up 「現実世界の揺らぎ」 を入れる 作成: 2026-05-30
更新: 2026-06-02


    NN の実機搭載では,NN の入出力インタフェースに対し,データ変換の調整が必要になる。
    この調整は,実際のところ,容易ではない。

    困難のおおもとは,シミュレーションの仮想現実と現実のギャップ。
    その内容は:
      遅延(Latency)
      ノイズ(Noise)
      帯域幅(Bandwidth)
      物理モデルの不一致(Reality Gap)

    そこで,つぎの考えが出て来る:
      訓練時に「現実の揺らぎ」を入れることで、
      実機適応性を高める

    方法として,特につぎの3つを用いる:
      ドメインランダム化
        世界の揺らぎに強くする
      ノイズ注入
        センサ誤差に強くする
      遅延補償
        実機の遅延に強くする


    ① ドメインランダム化(Domain Randomization)
    現実世界の不確実性に強い NN を作る方法として,
      「毎回違う世界で歩行訓練をする」

    ・「現実世界の不確実性に強い」 の中身:
      実機の不確実性に強くなる
      多少の誤差では転ばなくなる
      「現実世界の揺らぎ」を学習できる

    ・何をランダム化するか
      摩擦係数(床の滑りやすさ)
      ロボットの質量
      関節の摩擦
      モータのトルク特性
      センサのオフセット
      地面の傾き
      重力(微妙に変える)
      ノイズの量


    ② ノイズ注入(Noise Injection)
    実機のセンサは必ずノイズがある。
    ノイズ無しで学習した NN は,実機で誤作動する。
    センサ誤差に強い NN を作るため,訓練の中にノイズを入れる。

    ・何にノイズを入れるか
      IMU(姿勢センサ)
      関節角度
      足裏接地判定
      トルク指令
      観測ベクトル全体


    ③ 遅延補償(Latency Compensation)
    実機の遅延に強い NN を作る。

    ・「遅延に強い」 の中身:
      推論の遅れを見越して行動できる
      (「今の状態」ではなく「数ミリ秒前の状態」を見て動く)

    ・補償の対象となる遅延:
      NN 推論の遅延(2〜10ms)
      通信遅延(1ms)
      モータ応答遅延(1〜3ms)

    ・訓練の方法
      観測を過去の値にずらす(遅延を再現)
      未来予測を NN に学習させる
      遅延をランダム化する(ドメインランダム化の一部)


    この訓練は,NN の
      ロバスト性(実機で壊れない強さ)
    を上げる訓練ということになり,必須のものに見える:
      実機の不確実性に強くなる
      多少の誤差では転ばない
      「どんな世界でも歩ける」の要件

    しかし,良いことは悪いこととのトレードオフ。
    実際,「現実のゆらぎ」 を訓練に入れることは,
      学習効率(学習の速さ・安定性)
    とのトレードオフである。
    対現実の強さを求めるほど,学習は難しくなる:
      最適解がぼやける
      収束が遅くなる
      必要な試行回数が増える

    この学習困難の構造は:
      毎回違う世界で学習
       →「世界の法則」をつかみにくい