Behavioral Cloning
行動クローニングがAIの模倣学習を支える仕組みを学びます。主要な応用例や課題、Ultralytics YOLO26との統合方法をご紹介します。
行動クローニングは、模倣学習における基盤的な手法であり、AIエージェントが専門家によるデモンストレーションのデータセットを厳密に模倣することで、タスクの実行方法を学習します。複雑な報酬システムに依存する代わりに、モデルは逐次的な意思決定を標準的な教師あり学習の問題として扱います。人間のオペレーターの視覚フィードと、それに対応するジョイスティック操作など、何千もの状態と行動のペアを取り込むことで、エージェントは新しい観測を予測された行動に直接対応付ける方策を学習します。
行動クローニングと強化学習の違い#
強化学習では、エージェントが環境と相互作用し、報酬信号を最大化するために試行錯誤を通じて学習する必要があります。一方、行動クローニングは静的な事前記録データセットのみに依存します。環境との相互作用や明示的な報酬関数なしで動作するため、マルコフ決定過程の定式化に伴う複雑さを回避できます。ただし、この単純さにより、エージェントは専門家の性能を上回る新しい解決策を発見できません。近年のオフライン強化学習手法では、報酬によってさらに最適化する前に、初期のモデル学習を安定させるための堅牢な出発点として、行動クローニングを使用することがよくあります。
実世界での利用例#
行動クローニングは、数学的な報酬関数の設計が非常に難しい一方で、人間によるデモンストレーションデータの収集が比較的容易な分野で広く導入されています。
- 自動運転: NVIDIA DRIVEなどの最新の自動運転システムでは、エンドツーエンドの行動クローニングが広く利用されています。何千時間にも及ぶ人間の運転データで学習することで、モデルは入力されたコンピュータビジョンのフィードから、ステアリング角度と加速コマンドを直接出力する方法を学習します。
- ロボットマニピュレーション: 遠隔操作されるロボットアームは、行動クローニングを使用して、荷物の仕分け、製造部品の組み立て、洗濯物のたたみなど、複雑な物理タスクを学習します。人間によるデモンストレーションの正確な関節角度と視覚状態を記録することで、モデルは精密な運動技能を高い精度で再現できます。
累積誤差の問題#
この手法の最も重大な制限は、一般に累積誤差として知られる共変量シフトです。学習中、エージェントは完全な専門家軌跡からのみ学習します。実世界での閉ループ実行では、最初のごく小さなミスによって、エージェントは学習データに存在しない未知の状態へ移行します。回復に必要な知識がないため、その後の行動は急速に悪化し、最終的にはタスク全体の失敗につながります。この問題を軽減するには、大規模で多様なデータセットと、対象を絞ったデータ拡張が必要です。
最近の進展: 拡散方策とアクションチャンク化#
従来の制限を克服するため、最新のディープラーニングアーキテクチャでは生成手法が統合されています。拡散方策は、拡散モデルの数学的フレームワークを活用して、非常に複雑でマルチモーダルな行動分布を表現します。これにより、エージェントは曖昧な状況にも柔軟に対応できます。この概念は、近年のロボティクス研究で深く研究されています。同時に、アクションチャンク化により、エージェントは1ステップだけでなく将来の行動列を予測できるため、反応的なエラーの頻度を抑え、より滑らかな実行を実現します。
コンピュータビジョンによる実践的な実装#
実際には、行動クローニングは、環境の状態を抽出してから方策ネットワークに渡す、強力な知覚バックボーンに依存します。Ultralytics Platformを使用してデータセットを管理する場合、開発者は高速な物体検出モデルを、PyTorchなどのニューラルネットワークライブラリや、TorchRLなどの専門的な制御パッケージと組み合わせることがよくあります。
次の Python スニペットは、Ultralytics YOLO26を知覚レイヤーとして使用し、空間座標を抽出して、ステアリング操作を予測する基本的な PyTorch 行動クローニング方策に入力する方法を示します。
import torch
import torch.nn as nn
from ultralytics import YOLO
# Load an Ultralytics YOLO26 model as the perception layer
perception_model = YOLO("yolo26n.pt")
results = perception_model("robot_camera_feed.jpg")
# Extract the bounding box center to define the current environmental state
if len(results[0].boxes) > 0:
box = results[0].boxes[0].xywh.squeeze()
state = torch.tensor([box[0], box[1]]) # x, y center coordinates
# A simplified PyTorch Behavioral Cloning policy mapping states to actions
bc_policy = nn.Linear(in_features=2, out_features=1)
# Predict the expert-cloned action (e.g., a steering angle)
predicted_action = bc_policy(state)
print(f"Predicted cloned action: {predicted_action.item()}")OpenAIやAnthropicなどの組織による研究が、物理的知能のための基盤モデルに向けて進展する中、行動クローニングは、複雑な実世界環境を解釈して移動する方法を機械に教えるための中核であり続けます。






