manvaのエンジニアリング魂

エンジニアリング・ものづくり・DIYをもっと身近にするためのブログ。インスピレーションを刺激します。

制御工学陳腐化への道 データ駆動な制御VRFTを試してみる

制御工学は滅亡する

昨今の機械学習の進化を見ると、制御工学の大部分が機械学習に取って代わられることは必定と思われる。特に、高度な制御技術が適用されてきた、高速高精度が要求される用途ほど、立場は危うい。制御工学は、基本的に、まず数式で制御対象をモデル化するところから始まる。そのおかげで数学的に美しくおもしろい理論が展開されるが、モデル化の誤差はネックになる。制御対象をモデル化したら、次はそれをうまく制御できそうな制御器を作り、制御パラメータを調整するが、制御器の構造もパラメータも最適なものを見つけられるとは限らない。シミュレーションと実機も合わない。これらの問題に対して、試行錯誤と学習というのが最適な手法であることは容易に想像できる。
もちろん、今までに制御工学の枠組みの中でも繰返し学習や適応制御など、試行錯誤と学習の手法はあったが、近年の機械学習技術は、もっとずっと複雑な構造を理解して最適化できる様になってきている。そのような汎用の機械学習が制御に適用されるようになれば、制御対象のモデルを複雑なところや非線形なところまでモデル化できたり、構造まで含めた最適な制御器を見つけたり、多数の場合分けでゲインスケジューリングもできるようになるだろう。そうなれば勝ち目はない。制御屋としては受け入れ難く、両立して残ると信じたいが、パソコンが出てきたときのワープロ開発者(「ワープロはいずれなくなるか?」という質問に30年前のメーカー各社はどう答えた?|@DIME アットダイム)と同様の状態かもしれない。技術の歴史を見ればよくある話だ。

しかし、意外にも機械学習による制御工学の蹂躙速度は遅い。どうやら深層学習等の技術は今のところ過去の情報を扱うのはあまり得意ではないらしく、LSTM(Long short-term memory)などのRNN (Recurrent Neural Network)で一応できるものの、あまり長時間離れた時系列データの関連は見つけられず、ダイナミクスを学習するのは苦手なようだ。改善策も出てきており、時間の問題でできてしまうだろうが、その苦手部分の改善に制御工学が活かされるのかもしれない。そうなれば、それが制御工学の進化形となるだろう。

データ駆動の手法VRFTを試してみる

制御工学の側からも、制御工学の滅亡または進化への道の第一歩として、「データ駆動」の研究が進んでいる。そのような研究の一つで、制御対象への入力と出力の時系列データから、制御対象のモデル化をせずに制御器を設計できるVirtual reference feedback tuning(VRFT)というのがおもしろい。

↓の記事を参考にいろいろ試してみた。MATLABのサンプルがあり、コピペするだけで試せる(Control System Toolboxが必要)。
qiita.com

実行結果は下図のようになる。

初期制御器(左)とゲイン最適化後制御器(右)

適当な制御器で取ったデータを使って、ステップ応答が理想の応答(図のdesired)に一致するようにPID制御のゲインを見つけてくれる。
VRFT法とその類似の手法FRIT法については別記事にまとめた。
manva.hatenablog.com


おもしろいが、いくつか気になる点がある。一つは、「理想の特性」に対する最適化である点だ。人類の欲望は果てしないものであり、本当の理想は「できるだけ速く」だ。規範モデルの時定数を500倍速くしてみる(0.5秒→0.001秒)。

応答を速くした場合(右:拡大)

できた。もっと速くしてみたが、不安定にはならないのでどこまででも速くできてしまう。実際には限界があるはずなので、結局、実機で「理想の特性」をだんだん速くしていく手動の調整が必要だろう。PIDの3つのパラメータが1つのパラメータ(時定数)のみで調整できるので楽、というメリットはあるが。
それに関連して、見つけた制御器で安定になるのかという点も気になる。2msの無駄時間を入れてみる。規範モデルの時定数10msくらいならまあまあ何とかなっているが、さらに応答を速くしていくと、時定数1msで発散した。

左:規範モデルの時定数10ms, 右:5ms
左:規範モデルの時定数2ms, 右:1ms(発散)

この方法は不安定にならないことを保証してはいない。「理想の特性」にも無駄時間を含めて妥協した方がよかったりなど、工夫が必要になるのだろう。

気になる点はあれど、機械学習との親和性も高く、非常に可能性を感じさせる技術だ。上記参考サイトはPID制御に特化した話になっているが、どんな制御器にも応用できそうだ。上記別記事に載せたサンプルでは、PID制御以外の制御器も試すための準備として、MATLAB本体のみで使える最適化関数fminsearchを使った。そのせいで計算に少し時間がかかるようになってしまったが、これができるなら、制御器をニューラルネットなどにしてもできそうなので試してみたい。制御工学を陳腐化する道をもう少し進んでみよう。