matlabユーザーコミュニティー

Matlab&Si金宝appmulinkユーザーコミュニティー向け日本语ブログ

強化学習による制御設計

本日は,新闻さんからの记事。


こんにちは。アプリケーションエンジニアリング部の新帯です。以前は加速度センサーの物理について说明したり,金宝app仿真软件の新機能を紹介したりしましたが,今回は本業の制御設計のお話,しかも強化学習という先端AI技術を使ったお話になります。

概要

2021年9月8日ににプラーニングのセミナーシリーズて,「强化学习を実セッションを设计さいただきましたたましいただきたた。文件交换/GitHubで公开しています。

このセミナーにて,倒立振子の実機を使って,強化学習の制御を検証する,ということを行いました。強化学習の制御検証については,シミュレーションのみで,実機で行われた例は少ないです。当社MathWorksの中では,実は初とのことです。

この制御をどのように実現させたのかについて,動画では語られなかった裏側をご紹介します!

(注)事前に动画をていただいた方向,本记事の内容を理念。

強化学習とは

最初に,強化学習とは何かについて説明します。強化学習は機械学習の一種です。とてもざっくり分類すると,機械学習を”強化学習”と”それ以外の機械学習”の二つに分けることができます。そして,それぞれに対して深層ニューラルネットワークを使った“深層化”を行うことができます。呼び方はいろいろありますが,ここではそれぞれ“深層強化学習”と“通常の深層学習”と呼ぶことにします。

「,」「,例えば例えば下のようことができます。

自動車の画像が入力された時,その画像が“车”であることを判定し,その文字や番号を出力します。それに対して”,深層強化学習”は,以下のようになります。

强化学は,常に环境との相互作用をっっ位置いいの情情情情て角度の情情得てててにおけるにおける最适アクセルやステアリング角角を出ししやステアリング角角ををししややステアリング角をを重ています。

従って,強化学習は常に環境と相互作用をしながら学習するアルゴリズムです。そして,学習後もこの相互作用を行う形で実装されます。この形は,まさにフィードバック制御器の構造そのものですよね。なので”強化学習は制御設計に使える!“という話になっているわけです。

物理モデリングとフィードバック制御設計

今回,その深層強化学習を制御に用い,実機検証まで行うことを目標にしました。実機は,Quanser社の“QUBE -伺服2”という倒立振子の装置を用います。制御ボードは“QFLEX 2嵌入式”を用い,“树莓π3模型B +”と接続し,制御を実行します。

“QUBE -伺服2”の構造は,以下のようになっています。

,ちょっと难しいやつ,ととことです。

制御設計を行うためには,まずはシミュレーションモデルが必要です。この振り子のモデルをSimscape电气™,Simscape多体™を使ってモデル化しました。上記の画像はそのモデルの画像です。

。にも,この段阶で确认しておく必要がありました。

完成までまでいろいろありました,问题なく倒立させることができまし(今回今回は化学院ががなな,详细は割爱します。

“そもそも,実機があるのだから実機で学習させればいいのでは吗?“と思う方もいるかもしれません。しかし,それは現実的ではありません。

今回のデモを完成させるまでに,万5 ~ 10万回ほどのエピソード実行を繰り返しました。この間,倒立振子装置を激しく動かしますので,±150度の位置にあるストッパーに必ず激突します。装置の損耗は確実に進み,おそらくデモが完成する前に壊れていたことでしょう。従って,学習はなるべくシミュレーションで行うべきです。

强化学习による生成制御

今回ににに,真早速にを设计,シミュレーションで,学院をせ,シミュレーションで,习をせ,シミュレーション早速,习をしまし。“

何が難しいのかというと,例えばこのシステムには局所解が存在しており,そこにハマってしまうことです。4足歩行ロボットと比べれば遥かにシンプルな構造である今回のモデルでも,局所解があります。逆に,世の中でよく行われている4足歩行ロボットのモデルなどは,局所解が発生しないように,強化学習に都合よく設計されている,というのが私の見解です。

このよくある4足歩行ロボットのテンプレモデルは,歩行の速度制御を行っていません。その点が気に入らなかった私は,速度指令値を入れて制御できるようにしてみたのですが,局所解にハマって全然学習してくれなかったことがありました。

他にも,强化学习が苦手とすることがあります。长くなりますので,别に用意しました。こちらで解说していますので,兴味がありましたら読んでみてください。

最終的には,強化学習単体で制御することは諦め,“強化学習による軌道生成制御”というアイデアのもと”倒立タスク”を要素分解し,PID制御と強化学習を組み合わせてそれを達成しました。こちらの方が,実際の制御の現場で採用しやすいです。詳細は動画で説明していますので,是非ご確認ください。

ちなみに,PID制御は5ms,强化学院のポリシーはしいいいいいいいいいいい

強化学習エージェント

強化学習の学習アルゴリズムと方策(ポリシー)のセットをエージェントと呼んでいます。日進月歩で新しいエージェントが考案されています。ここは MATLAB で使える中で最新のものを選びましょう(記事執筆時点では R2021a が最新バージョンです)。今回は PPO と SAC を選びました。

私は強化学習の専門家ではありませんので,完全には理解できていませんが,囊は特にダイナミックで複雑な動作を学習することに長けていると思います。よって,今回は“振り上げ”に囊,“モード選択”にPPOを用いることとしました。

エージェントの設計はMATLABのスクリプトで簡単に作成できます。ちなみにR2021aからGUIアプリが使えるようになりましたが,慣れるとコマンドの方が早いです(笑)。

报告关节

報酬関数は仿金宝app真软件で設計できます。報酬関数が,強化学習の制御性能を決める最も重要な要素です。絶対的な形はありません。ひたすらトライ&エラーで調整を進めることになります。

报警のは“コスト关关”と“成语报告”の组み合并がポピュラーです。“コスト关节その値とののを评価してますますを。ことができます。“成都报告”は,あるゴールに达成したに报告を与えるという形。不错,そのゴールに达しと全く全くですですられしかし,ゴールを见つけることができれば,それに向かう强いインセンティブになります。

今回のデモでは,モーター角度と振り子の角度を0に近づけるように报酬を设定します。结构シンプルな式で倒立を実现できましたが,これはタスクを分解したおかげだと思います。

学習結果

学習の過程で報酬がどのように推移したか,については”強化学習エピソードマネージャー”というウィンドウで確認できます。例えば“振り上げ”の学習結果は以下のようになりました。

タスク分割をする前は,これの失敗画面を何度見たことか分かりません。そしてこの1回の試行に10時間以上かかったりします。正直,“トライ&エラーに時間がかかる”という所が強化学習の一番嫌な所です(,,,)

完成した倒立動作は以下です。綺麗に持ち上げることができました。

Cコード生成とpil検证

学習済みポリシーを得ましたので,いよいよ実機に実装します。ただし,いきなり実機に実装するのではなく,まず実装が成り立つのかを確認しましょう。今回のモデルは動画で説明しました通り,問題なく実装できることが分かりました。

ところところ,强化学院のポリシー简体ななニューラルネットワークで构构さていいいいいいい。全全合成活性て。

Out = W * In + b

を计算します.wは重み行列,bはバイアスベクトルです。问题はその大厦さですが,今回は强强习でよくれれいるいるいる使わいるサイズサイズでましたサイズ设计ましたたたた。きついきついです,覆盆子piであれば大大です.1ステップ当たりの计算计算は约2.68ms,cpu负荷率は约13%でしたので,余裕をもって実行。

活性析关键reluやtanhなどを使いますて,计算式はとてもシンプルでもため,常に计算,リアルタイムために。ちなみに,そもそもlinuxで动いて覆盆子いるいるできるか,という问题があります。リアルタイムおじさんである私は,一応オシロを使って確認しました。結構ちゃんとリアルタイムでした!

実機検証

実機実行した結果,以下のようになりました。

綺麗にできましたね。実は,成功率は5割程度なのですが……

真真にて静止している所から振り上げるももも振してから振り上げるも何かましたが,同じように5割失败します。,モーター角度が150°以上回転してしまい,台座台座に付けられているストッパーぶつかったということこと全ぶつかっのためためためためため回ってしまってしまったらさまで回っ回ってしまったらさせ回っ回ってしまったら强制せまで回ってしまっ

。

まとめ

MATLABと仿真金宝app软件の機能をフル活用すると,AIをモデルベース開発のフローに落とし込むことができます,というデモでした。それに加えて,強化学習の制御設計実用化に向けて,重要な点を説明した資料でもあります。

今回のように本気でかを作者そのようなるわけません。

もし強化学習について興味を持っていただけたのであれば,当社の無料オンライン学習コンテンツ”強化学習入門“から学ぶことができます。また,今回私が構築したモデルは丸ごと文件交换/GitHubで公开しています。是使用ください。

最後まで読んでくださり,ありがとうございました。

|
  • 打印
  • 发送电子邮件

コメント

コメントを残すには,ここをクリックしてMATHWORKSアカウントアカウントサインインするか新闻MATHWORKSアカウントを作品成します。