Actor-Critic の DDPG 強化学習アルゴリズムを使用した二重関節ロボット アームの制御
この記事では、Unity ML-Agents ツールキットを使用して開発された Unity ベースのシミュレーション プログラムである Reacher 環境で二重関節ロボット アームを制御するインテリジェント エージェントのトレーニングを紹介します。私たちの目標は、高精度でターゲット位置に到達することです。そのため、ここでは、連続状態およびアクション空間用に設計された最先端の Deep Deterministic Policy Gradient (DDPG) アルゴリズムを使用できます。
実世界への応用
ロボット アームは、製造、生産施設、宇宙探査、捜索救助活動において重要な役割を果たします。ロボットアームを高精度かつ柔軟に制御することが非常に重要です。強化学習技術を採用することで、これらのロボット システムはリアルタイムで動作を学習して調整できるようになり、パフォーマンスと柔軟性が向上します。強化学習の進歩は、人工知能の理解に貢献するだけでなく、産業に革命を起こし、社会に有意義な影響を与える可能性があります。
Reacher は、制御アルゴリズムの開発とテストによく使用されるロボット アーム シミュレーターです。ロボット アームの物理的特性と運動法則をシミュレートする仮想環境を提供し、開発者は実際のハードウェアを必要とせずに制御アルゴリズムの研究と実験を行うことができます。
Reacher の環境は主に次の部分で構成されます:
- ロボット アーム: Reacher は、固定ベースと 2 つの可動ジョイントを含む二重関節ロボット アームをシミュレートします。開発者は、ロボット アームの 2 つの関節を制御することで、ロボット アームの姿勢や位置を変更できます。
- 目標点: ロボット アームの移動範囲内で、Reacher が目標点を提供します。目標点の位置はランダムに生成されます。開発者のタスクは、ロボット アームの端が目標点に接触できるようにロボット アームを制御することです。
- 物理エンジン: Reacher は物理エンジンを使用して、ロボット アームの物理的特性と動作パターンをシミュレートします。開発者は、物理エンジンのパラメーターを調整することで、さまざまな物理環境をシミュレートできます。
- ビジュアルインターフェイス: Reacher は、ロボットアームと目標点の位置、ロボットアームの姿勢と移動軌跡を表示できるビジュアルインターフェイスを提供します。開発者は、ビジュアル インターフェイスを通じて制御アルゴリズムをデバッグおよび最適化できます。
Reacher シミュレーターは、開発者が実際のハードウェアを必要とせずに制御アルゴリズムを迅速にテストし、最適化するのに役立つ非常に実用的なツールです。
シミュレーション環境
Reacher は Unity ML-Agents ツールキットを使用して構築されており、エージェントは二重関節ロボット アームを制御できます。目標は、アームをターゲット位置に向けてガイドし、ターゲット領域内でその位置をできるだけ長く維持することです。この環境には 20 の同期エージェントがあり、それぞれが独立して実行されるため、トレーニング中の経験を効率的に収集できます。
状態空間とアクション空間
状態空間とアクション空間を理解することは、効果的な強化学習アルゴリズムを設計するために重要です。 Reacher 環境では、状態空間は、ロボット アームの位置、回転、速度、角速度などの情報を提供する 33 の連続変数で構成されます。アクション空間も連続的で、ロボット アームの 2 つの関節にかかるトルクに対応する 4 つの変数があります。各アクション変数は、-1 から 1 までの実数です。
タスク タイプと成功基準
リーチャー タスクは断片化されているとみなされ、各断片には固定数のタイム ステップが含まれます。エージェントの目標は、これらのステップでの合計報酬を最大化することです。アーム エンド エフェクタは、目標位置を維持するために必要なステップごとに 0.1 のボーナスを受け取ります。エージェントが 100 回の連続操作で 30 ポイント以上の平均スコアを達成した場合、成功とみなされます。
環境を理解したところで、DDPG アルゴリズムとその実装、そしてこの環境で継続的な制御の問題を効果的に解決する方法を見てみましょう。
連続制御のためのアルゴリズムの選択: DDPG
リーチャー問題のような連続制御タスクに関しては、アルゴリズムの選択が最適なパフォーマンスを達成するために重要です。このプロジェクトでは、DDPG アルゴリズムを選択しました。これは、DDPG アルゴリズムが連続状態およびアクション空間を処理するために特別に設計されたアクタークリティカル手法であるためです。
DDPG アルゴリズムは、2 つのニューラル ネットワークを組み合わせることで、ポリシー ベースの手法と値ベースの手法の利点を組み合わせています。アクター ネットワークは現在の状態を考慮して最適な動作を決定し、クリティカル ネットワークは状態の動作を推定します。値関数 (Q 関数)。どちらのタイプのネットワークにも、更新プロセス中に固定ターゲットを提供することで学習プロセスを安定させるターゲット ネットワークがあります。
Critic ネットワークを使用して q 関数を推定し、Actor ネットワークを使用して最適な動作を決定することにより、DDPG アルゴリズムはポリシー勾配法と DQN の利点を効果的に組み合わせます。このハイブリッド アプローチにより、エージェントは継続的な制御環境で効率的に学習できます。
<code>import random from collections import deque import torch import torch.nn as nn import numpy as np from actor_critic import Actor, Critic class ReplayBuffer: def __init__(self, buffer_size, batch_size): self.memory = deque(maxlen=buffer_size) self.batch_size = batch_size def add(self, state, action, reward, next_state, done): self.memory.append((state, action, reward, next_state, done)) def sample(self): batch = random.sample(self.memory, self.batch_size) states, actions, rewards, next_states, dones = zip(*batch) return states, actions, rewards, next_states, dones def __len__(self): return len(self.memory) class DDPG: def __init__(self, state_dim, action_dim, hidden_dim, buffer_size, batch_size, actor_lr, critic_lr, tau, gamma): self.actor = Actor(state_dim, hidden_dim, action_dim, actor_lr) self.actor_target = Actor(state_dim, hidden_dim, action_dim, actor_lr) self.critic = Critic(state_dim, action_dim, hidden_dim, critic_lr) self.critic_target = Critic(state_dim, action_dim, hidden_dim, critic_lr) self.memory = ReplayBuffer(buffer_size, batch_size) self.batch_size = batch_size self.tau = tau self.gamma = gamma self._update_target_networks(tau=1)# initialize target networks def act(self, state, noise=0.0): state = torch.tensor(state, dtype=torch.float32).unsqueeze(0) action = self.actor(state).detach().numpy()[0] return np.clip(action + noise, -1, 1) def store_transition(self, state, action, reward, next_state, done): self.memory.add(state, action, reward, next_state, done) def learn(self): if len(self.memory) </code>
上記のコードでは再生バッファーも使用されており、学習効率と安定性を向上させることができます。リプレイ バッファは基本的に、ステータス、アクション、報酬、次のステータス、および完了情報で構成される、一定数の過去のエクスペリエンスまたは遷移を保存するメモリ データ構造です。これを使用する主な利点は、エージェントが連続するエクスペリエンス間の相関関係を解除できるため、有害な時間的相関関係の影響が軽減されることです。
バッファからエクスペリエンスのランダムなミニバッチを引き出すことにより、エージェントはさまざまな変換セットから学習でき、学習プロセスの安定化と一般化に役立ちます。また、リプレイ バッファーを使用すると、エージェントは過去のエクスペリエンスを複数回再利用できるため、データ効率が向上し、環境との限られたインタラクションからより効果的な学習が促進されます。
DDPG アルゴリズムは、この環境では重要な要素である連続アクション スペースを効率的に処理できるため、適切な選択です。アルゴリズムの設計により、複数のエージェントによって収集された並列エクスペリエンスを効率的に利用できるようになり、学習が高速化され、収束が向上します。上で紹介した Reacher と同様に、同時に 20 個のエージェントを実行できるため、この 20 個のエージェントを使用して経験を共有し、まとめて学習し、学習速度を向上させることができます。
アルゴリズムが完了したら、以下にハイパーパラメータの選択とトレーニングのプロセスを紹介します。
DDPG アルゴリズムは Reacher 環境で動作します
環境におけるアルゴリズムの有効性をより深く理解するには、学習プロセスに含まれる主要なコンポーネントと手順を詳しく調べる必要があります。
ネットワーク アーキテクチャ
DDPG アルゴリズムは、Actor と Critic という 2 つのニューラル ネットワークを使用します。どちらのネットワークにも 2 つの隠れ層が含まれており、それぞれに 400 のノードが含まれています。隠れ層は ReLU (Rectified Linear Unit) 活性化関数を使用し、アクター ネットワークの出力層は Tanh 活性化関数を使用して -1 から 1 までの範囲のアクションを生成します。クリティカル ネットワークの出力層には、q 関数を直接推定するため、活性化関数がありません。
次はネットワークのコードです:
<code>import numpy as np import torch import torch.nn as nn import torch.optim as optim class Actor(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim, learning_rate=1e-4): super(Actor, self).__init__() self.fc1 = nn.Linear(input_dim, hidden_dim) self.fc2 = nn.Linear(hidden_dim, hidden_dim) self.fc3 = nn.Linear(hidden_dim, output_dim) self.tanh = nn.Tanh() self.optimizer = optim.Adam(self.parameters(), lr=learning_rate) def forward(self, state): x = torch.relu(self.fc1(state)) x = torch.relu(self.fc2(x)) x = self.tanh(self.fc3(x)) return x class Critic(nn.Module): def __init__(self, state_dim, action_dim, hidden_dim, learning_rate=1e-4): super(Critic, self).__init__() self.fc1 = nn.Linear(state_dim, hidden_dim) self.fc2 = nn.Linear(hidden_dim + action_dim, hidden_dim) self.fc3 = nn.Linear(hidden_dim, 1) self.optimizer = optim.Adam(self.parameters(), lr=learning_rate) def forward(self, state, action): x = torch.relu(self.fc1(state)) x = torch.relu(self.fc2(torch.cat([x, action], dim=1))) x = self.fc3(x) return x</code>
ハイパーパラメータの選択
選択したハイパーパラメータは効率的な学習にとって重要です。このプロジェクトでは、再生バッファーのサイズは 200,000、バッチ サイズは 256 です。 Actor の学習率は 5e-4、Critic の学習率は 1e-3、ソフト アップデート パラメーター (タウ) は 5e-3、ガンマは 0.995 です。最後に、初期ノイズ スケール 0.5、ノイズ減衰率 0.998 でアクション ノイズが追加されました。
トレーニング プロセス
トレーニング プロセスには 2 つのネットワーク間の継続的な対話が含まれ、同じネットワークを共有する 20 の並列エージェントにより、モデルはすべてのエージェントによって収集されたエクスペリエンスから集合的に学習します。この設定により、学習プロセスがスピードアップされ、効率が向上します。
<code>from collections import deque import numpy as np import torch from ddpg import DDPG def train_ddpg(env, agent, episodes, max_steps, num_agents, noise_scale=0.1, noise_decay=0.99): scores_window = deque(maxlen=100) scores = [] for episode in range(1, episodes + 1): env_info = env.reset(train_mode=True)[brain_name] states = env_info.vector_observations agent_scores = np.zeros(num_agents) for step in range(max_steps): actions = agent.act(states, noise_scale) env_info = env.step(actions)[brain_name] next_states = env_info.vector_observations rewards = env_info.rewards dones = env_info.local_done for i in range(num_agents): agent.store_transition(states[i], actions[i], rewards[i], next_states[i], dones[i]) agent.learn() states = next_states agent_scores += rewards noise_scale *= noise_decay if np.any(dones): break avg_score = np.mean(agent_scores) scores_window.append(avg_score) scores.append(avg_score) if episode % 10 == 0: print(f"Episode: {episode}, Score: {avg_score:.2f}, Avg Score: {np.mean(scores_window):.2f}") # Saving trained Networks torch.save(agent.actor.state_dict(), "actor_final.pth") torch.save(agent.critic.state_dict(), "critic_final.pth") return scores if __name__ == "__main__": env = UnityEnvironment(file_name='Reacher_20.app') brain_name = env.brain_names[0] brain = env.brains[brain_name] state_dim = 33 action_dim = brain.vector_action_space_size num_agents = 20 # Hyperparameter suggestions hidden_dim = 400 batch_size = 256 actor_lr = 5e-4 critic_lr = 1e-3 tau = 5e-3 gamma = 0.995 noise_scale = 0.5 noise_decay = 0.998 agent = DDPG(state_dim, action_dim, hidden_dim=hidden_dim, buffer_size=200000, batch_size=batch_size,actor_lr=actor_lr, critic_lr=critic_lr, tau=tau, gamma=gamma) episodes = 200 max_steps = 1000 scores = train_ddpg(env, agent, episodes, max_steps, num_agents, noise_scale=0.2, noise_decay=0.995)</code>
トレーニング プロセスの主な手順は次のとおりです。
ネットワークの初期化: エージェントは、共有アクター ネットワークとクリティック ネットワーク、およびそれぞれのターゲット ネットワークをランダムな重みで初期化します。ターゲット ネットワークは、更新中に安定した学習ターゲットを提供します。
- 環境との対話: 各エージェントは、共有アクター ネットワークを使用して、現在の状態に基づいてアクションを選択することで環境と対話します。探索を促進するために、トレーニングの初期段階でアクションにノイズ項も追加されます。アクションを実行した後、各エージェントは結果として得られる報酬と次の状態を観察します。
- エクスペリエンスの保存: 各エージェントは、観察されたエクスペリエンス (状態、アクション、報酬、next_state) を共有リプレイ バッファーに保存します。このバッファには固定量の最近のエクスペリエンスが含まれているため、各エージェントはすべてのエージェントによって収集されたさまざまな遷移から学習できます。
- 経験から学ぶ: 共有リプレイ バッファからエクスペリエンスのバッチを定期的に抽出します。サンプリングの経験を使用して、予測 Q 値とターゲット Q 値の間の平均二乗誤差を最小限に抑えることにより、共有クリティカル ネットワークを更新します。
- アクター ネットワークの更新: 共有アクター ネットワークは、選択したアクションに関する共有クリティック ネットワークの出力勾配を取得することによって計算されるポリシー勾配を使用して更新されます。共有アクター ネットワークは、期待される Q 値を最大化するアクションを選択することを学習します。
- ターゲット ネットワークの更新: 共有アクター ターゲット ネットワークとクリティック ターゲット ネットワークは、現在のネットワークとターゲット ネットワークの重みを組み合わせてソフト更新されます。これにより、安定した学習プロセスが保証されます。
結果表示
私たちのエージェントは、DDPG アルゴリズムを使用して、Racher 環境で二重関節ロボット アームを制御する方法を学習することに成功しました。トレーニング プロセス全体を通じて、20 人のエージェント全員の平均スコアに基づいてエージェントのパフォーマンスを監視します。エージェントが環境を探索して経験を収集すると、報酬を最大化するための最適な行動を予測する能力が大幅に向上します。
エージェントのパフォーマンスにはばらつきがありましたが、平均スコアが環境を解決するために必要なしきい値 (30) を超え、エージェントがタスクにおいてかなりの習熟度を示したことがわかります。全体的にトレーニング プロセス中に差異はありますが、全体的な傾向は上向きであり、学習プロセスが成功していることを示しています。
以下のグラフは、20 人のエージェントの平均スコアを示しています:
#実装した DDPG アルゴリズムが Racher 環境の問題を効果的に解決したことがわかります。エージェントは自分の動作を調整し、タスクで期待されるパフォーマンスを達成できます。
次のステップ
このプロジェクトのハイパーパラメータは、文献からの推奨事項と経験的テストの組み合わせに基づいて選択されました。システムのハイパーパラメータ調整を通じてさらに最適化すると、パフォーマンスが向上する可能性があります。
マルチエージェントの並行トレーニング: このプロジェクトでは、20 人のエージェントを使用して同時に経験を収集します。より多くのエージェントを使用すると、全体的な学習プロセスに影響が生じ、収束が速くなったり、パフォーマンスが向上したりする可能性があります。
バッチ正規化: 学習プロセスをさらに強化するには、ニューラル ネットワーク アーキテクチャにバッチ正規化を実装することを検討する価値があります。バッチ正規化は、トレーニング中に各層の入力特徴を正規化することで、内部共変量シフトを軽減し、学習を高速化し、一般化を向上させる可能性があります。 Actor ネットワークと Critic ネットワークにバッチ正規化を追加すると、より安定した効率的なトレーニングが得られる可能性がありますが、これにはさらなるテストが必要です。
以上がActor-Critic の DDPG 強化学習アルゴリズムを使用した二重関節ロボット アームの制御の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









このサイトは6月27日、JianyingはByteDanceの子会社であるFaceMeng Technologyによって開発されたビデオ編集ソフトウェアであり、Douyinプラットフォームに依存しており、基本的にプラットフォームのユーザー向けに短いビデオコンテンツを作成すると報告しました。 Windows、MacOS、その他のオペレーティング システム。 Jianyingは会員システムのアップグレードを正式に発表し、インテリジェント翻訳、インテリジェントハイライト、インテリジェントパッケージング、デジタルヒューマン合成などのさまざまなAIブラックテクノロジーを含む新しいSVIPを開始しました。価格的には、クリッピングSVIPの月額料金は79元、年会費は599元(当サイト注:月額49.9元に相当)、継続月額サブスクリプションは月額59元、継続年間サブスクリプションは、年間499元(月額41.6元に相当)です。さらに、カット担当者は、ユーザーエクスペリエンスを向上させるために、オリジナルのVIPに登録している人は、

検索強化生成およびセマンティック メモリを AI コーディング アシスタントに組み込むことで、開発者の生産性、効率、精度を向上させます。 JanakiramMSV 著者の EnhancingAICodingAssistantswithContextUsingRAGandSEM-RAG から翻訳。基本的な AI プログラミング アシスタントは当然役に立ちますが、ソフトウェア言語とソフトウェア作成の最も一般的なパターンに関する一般的な理解に依存しているため、最も適切で正しいコードの提案を提供できないことがよくあります。これらのコーディング アシスタントによって生成されたコードは、彼らが解決する責任を負っている問題の解決には適していますが、多くの場合、個々のチームのコーディング標準、規約、スタイルには準拠していません。これにより、コードがアプリケーションに受け入れられるように修正または調整する必要がある提案が得られることがよくあります。

大規模言語モデル (LLM) は巨大なテキスト データベースでトレーニングされ、そこで大量の現実世界の知識を取得します。この知識はパラメータに組み込まれており、必要なときに使用できます。これらのモデルの知識は、トレーニングの終了時に「具体化」されます。事前トレーニングの終了時に、モデルは実際に学習を停止します。モデルを調整または微調整して、この知識を活用し、ユーザーの質問により自然に応答する方法を学びます。ただし、モデルの知識だけでは不十分な場合があり、モデルは RAG を通じて外部コンテンツにアクセスできますが、微調整を通じてモデルを新しいドメインに適応させることが有益であると考えられます。この微調整は、ヒューマン アノテーターまたは他の LLM 作成物からの入力を使用して実行され、モデルは追加の実世界の知識に遭遇し、それを統合します。

AIGC について詳しくは、51CTOAI.x コミュニティ https://www.51cto.com/aigc/Translator|Jingyan Reviewer|Chonglou を参照してください。これらの質問は、インターネット上のどこでも見られる従来の質問バンクとは異なります。既成概念にとらわれずに考える必要があります。大規模言語モデル (LLM) は、データ サイエンス、生成人工知能 (GenAI)、および人工知能の分野でますます重要になっています。これらの複雑なアルゴリズムは人間のスキルを向上させ、多くの業界で効率とイノベーションを推進し、企業が競争力を維持するための鍵となります。 LLM は、自然言語処理、テキスト生成、音声認識、推奨システムなどの分野で幅広い用途に使用できます。 LLM は大量のデータから学習することでテキストを生成できます。

編集者 |ScienceAI 質問応答 (QA) データセットは、自然言語処理 (NLP) 研究を促進する上で重要な役割を果たします。高品質の QA データ セットは、モデルの微調整に使用できるだけでなく、大規模言語モデル (LLM) の機能、特に科学的知識を理解し推論する能力を効果的に評価することもできます。現在、医学、化学、生物学、その他の分野をカバーする多くの科学 QA データ セットがありますが、これらのデータ セットにはまだいくつかの欠点があります。まず、データ形式は比較的単純で、そのほとんどが多肢選択式の質問であり、評価は簡単ですが、モデルの回答選択範囲が制限され、科学的な質問に回答するモデルの能力を完全にテストすることはできません。対照的に、自由回答型の Q&A

機械学習は人工知能の重要な分野であり、明示的にプログラムしなくてもコンピューターにデータから学習して能力を向上させる機能を提供します。機械学習は、画像認識や自然言語処理から、レコメンデーションシステムや不正行為検出に至るまで、さまざまな分野で幅広く応用されており、私たちの生活様式を変えつつあります。機械学習の分野にはさまざまな手法や理論があり、その中で最も影響力のある 5 つの手法は「機械学習の 5 つの流派」と呼ばれています。 5 つの主要な学派は、象徴学派、コネクショニスト学派、進化学派、ベイジアン学派、およびアナロジー学派です。 1. 象徴主義は、象徴主義とも呼ばれ、論理的推論と知識の表現のためのシンボルの使用を強調します。この学派は、学習は既存の既存の要素を介した逆演繹のプロセスであると信じています。

編集者 | KX 医薬品の研究開発の分野では、タンパク質とリガンドの結合親和性を正確かつ効果的に予測することが、医薬品のスクリーニングと最適化にとって重要です。しかし、現在の研究では、タンパク質とリガンドの相互作用における分子表面情報の重要な役割が考慮されていません。これに基づいて、アモイ大学の研究者らは、初めてタンパク質の表面、3D 構造、配列に関する情報を組み合わせ、クロスアテンション メカニズムを使用して異なるモダリティの特徴を比較する、新しいマルチモーダル特徴抽出 (MFE) フレームワークを提案しました。アライメント。実験結果は、この方法がタンパク質-リガンド結合親和性の予測において最先端の性能を達成することを実証しています。さらに、アブレーション研究は、この枠組み内でのタンパク質表面情報と多峰性特徴の位置合わせの有効性と必要性を実証しています。 「S」で始まる関連研究

8月1日の本サイトのニュースによると、SKハイニックスは本日(8月1日)ブログ投稿を発表し、8月6日から8日まで米国カリフォルニア州サンタクララで開催されるグローバル半導体メモリサミットFMS2024に参加すると発表し、多くの新世代の製品。フューチャー メモリおよびストレージ サミット (FutureMemoryandStorage) の紹介。以前は主に NAND サプライヤー向けのフラッシュ メモリ サミット (FlashMemorySummit) でしたが、人工知能技術への注目の高まりを背景に、今年はフューチャー メモリおよびストレージ サミット (FutureMemoryandStorage) に名前が変更されました。 DRAM およびストレージ ベンダー、さらに多くのプレーヤーを招待します。昨年発売された新製品SKハイニックス
