(57)【要約】【課題】それぞれのモータに最適なモータの電流指令を学習することができる機械学習器，モータ制御装置および機械学習方法の提供を図る。【解決手段】モータ１１の電流指令を学習する機械学習器２であって、前記モータのモータ回転速度またはモータトルク指令と、前記モータのモータトルク，モータ電流およびモータ電圧の少なくとも１つと、を含む状態変数を観測する状態観測部２１と、前記状態観測部により観測された前記状態変数に基づいて、前記モータの電流指令を学習する学習部２２と、を備える。【選択図】図１
2018014838.tif 000002
【特許請求の範囲】
【請求項１】
モータの電流指令を学習する機械学習器であって、
前記モータのモータ回転速度またはモータトルク指令と、前記モータのモータトルク，モータ電流およびモータ電圧の少なくとも１つと、を含む状態変数を観測する状態観測部と、
前記状態観測部により観測された前記状態変数に基づいて、前記モータの電流指令を学習する学習部と、を備える、
ことを特徴とする機械学習器。
【請求項２】
さらに、
前記学習部の出力に基づいて、前記モータの電流指令を決定する意思決定部を備える、
ことを特徴とする請求項１に記載の機械学習器。
【請求項３】
前記モータは、三相交流同期モータであり、
前記三相交流同期モータの電流指令は、電気的および磁気的に直交するｄ軸電流指令およびｑ軸電流指令を含む、
ことを特徴とする請求項１または請求項２に記載の機械学習器。
【請求項４】
前記ｄ軸電流指令および前記ｑ軸電流指令の学習は、前記三相交流同期モータのロータ位相角として学習する、
ことを特徴とする請求項３に記載の機械学習器。
【請求項５】
前記学習部は、
前記状態観測部の出力に基づいて、報酬を計算する報酬計算部と、
前記状態観測部の出力および前記報酬計算部の出力に基づいて、前記モータの電流指令に関連する価値関数を更新する価値関数更新部と、を備える、
ことを特徴とする請求項１乃至請求項４のいずれか１項に記載の機械学習器。
【請求項６】
前記報酬計算部は、前記モータにおける各モータ回転速度またはモータトルク指令において、
前記モータトルクが増加したら、報酬を増やし、
前記モータ電流が規定値を超えたら、報酬を減らし、
前記モータ電圧が飽和したら、報酬を減らす、
ことを特徴とする請求項５に記載の機械学習器。
【請求項７】
前記学習部は、
前記状態観測部の出力および教師データに基づいて、誤差を計算する誤差計算部と、
前記状態観測部および前記誤差計算部の出力に基づいて、前記モータの電流指令に関連する誤差モデルを更新する誤差モデル更新部と、を備える、
ことを特徴とする請求項１乃至請求項４のいずれか１項に記載の機械学習器。
【請求項８】
前記機械学習器は、ニューラルネットワークを備える、
ことを特徴とする請求項１乃至請求項７のいずれか１項に記載の機械学習器。
【請求項９】
前記機械学習器により学習された前記モータの電流指令は、通信媒体を介して複数の機械学習器で相互にデータを共有または交換するようになっている、
ことを特徴とする請求項１乃至請求項８のいずれか１項に記載の機械学習器。
【請求項１０】
前記機械学習器は、クラウドサーバ上に存在する、
ことを特徴とする請求項１乃至請求項８のいずれか１項に記載の機械学習器。
【請求項１１】
請求項１乃至請求項９のいずれか１項に記載の機械学習器と、
前記モータを駆動制御するとモータ駆動部と、
前記機械学習器により学習された前記モータの電流指令に基づいて、前記モータ駆動部を介して前記モータの電流指令を制御するモータ制御部と、を備える、
ことを特徴とするモータ制御装置。
【請求項１２】
前記状態観測部は、
前記モータの前記モータ回転速度またはモータトルク指令，前記モータ電流および前記モータ電圧を含む状態変数を観測し、
前記モータトルクは、観測された前記モータ電流および前記モータ電圧から計算する、
ことを特徴とする請求項１１に記載のモータ制御装置。
【請求項１３】
モータの電流指令を学習する機械学習方法であって、
前記モータのモータ回転速度またはモータトルク指令と、前記モータのモータトルク，モータ電流およびモータ電圧の少なくとも１つと、を含む状態変数を観測し、
観測された前記状態変数に基づいて、前記モータの電流指令を学習する、
ことを特徴とする機械学習方法。
【請求項１４】
前記モータの電流指令の学習は、
観測された前記状態変数に基づいて報酬を計算し、
観測された前記状態変数および観測された前記報酬に基づいて、前記モータの電流指令に関連する価値関数を更新する、ことを含む、
ことを特徴とする請求項１３に記載の機械学習方法。
【請求項１５】
前記報酬の計算は、各モータ回転速度またはモータトルク指令において、
前記モータトルクが増加したら、報酬を増やし、
前記モータ電流が規定値を超えたら、報酬を減らし、
前記モータ電圧が飽和したら、報酬を減らす、
ことを特徴とする請求項１４に記載の機械学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータの電流指令を学習する機械学習器，モータ制御装置および機械学習方法に関する。
【背景技術】
【０００２】
従来、工作機械，鍛圧機械，射出成形機，産業機械，或いは，産業用およびサービス用ロボット等には電動機(モータ)が搭載され、このようなモータを制御するモータ制御装置が利用されている。また、モータ(サーボモータ)としては、例えば、ｄｑ三相座標変換を用いて三相交流の永久磁石同期モータ(ＰＭＳＭ：Permanent Magnet Synchronous Motor)が幅広く利用されている。
【０００３】
図８は、一般的なモータの特性を説明するための図であり、図８(a)は、モータのトルクと回転数の関係を示し、図８(b)は、モータのｄ軸電流(−Ｉd)とｑ軸電流(Ｉq)の関係を示している。図８(a)の特性曲線ＣＬ１，ＣＬ２，ＣＬ３に示されるように、例えば、モータのトルクをそれぞれ異なる大きさｔq1，ｔq2，ｔq3に設定したとき、安定領域Ｒaでは、設定されたトルクｔq1，ｔq2，ｔq3を維持しつつ回転数が増加する。このとき、モータの−ＩdおよびＩqの関係は、図８(b)における参照符号Ｐ１，Ｐ２，Ｐ３の点に固定される。
【０００４】
また、図８(a)の特性曲線ＣＬ１，ＣＬ２，ＣＬ３に示されるように、モータの回転数を、安定領域Ｒaからさらに増加して領域Ｒbにすると、モータのトルクは、それぞれｔq1，ｔq2，ｔq3から低減することになる。このとき、モータの−ＩdおよびＩqの関係は、図８(b)における特性曲線ＣＩ１，ＣＩ２，ＣＩ３のように変化する。そのため、モータ(サーボモータ)は、その特性に合わせて電流制御パラメータを決定するが、多くの工数がかかり、また、モータインダクタンスの回転数や電流値による変化、或いは、磁気飽和などの影響により、最適なパラメータを決定することは難しい。
【０００５】
ところで、従来、同期電動機(同期モータ)の温度，トルクおよび電圧を決める要因が変化しても、適切なｄ軸電流の動作指令を得ることで、敏速にトルク応答ができる同期電動機の制御装置が提案されている(例えば、特許文献１参照)。この同期電動機の制御装置は、弱め磁束制御による高回転化を図るための、速度及び電圧に対するｄ軸電流指令値１を出力する弱め磁束制御部と、最大トルクを発生させるためのｑ軸電流指令値に対するｄ軸電流指令値２を出力する最大トルク制御部を備える。そして、ｄ軸電流指令値１と２を合成して最終的なｄ軸電流制御部のｄ軸電流指令値とし、弱め磁束制御部の入力信号と出力信号の少なくとも一方を補正する弱め磁束補正部と、最大トルク制御部の入力信号を補正するトルク補正部を設けるようになっている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１５−０８９２３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来、モータの温度，トルクおよび電圧を決める要因が変化しても、適切なモータの電流指令を得ることで、敏速にトルク応答が可能なモータ制御装置が提案されている。
【０００８】
しかしながら、前述したように、モータの特性に合わせて電流制御パラメータを決定するには、多くの工数がかかり、例えば、モータのインダクタンスは、モータの回転数や電流値による変化や磁気飽和などの影響により、最適なパラメータを決定するのは難しいものとなっている。
【０００９】
本発明の目的は、上述した従来技術の課題に鑑み、それぞれのモータに最適なモータの電流指令を学習することができる機械学習器，モータ制御装置および機械学習方法の提供にある。
【課題を解決するための手段】
【００１０】
本発明に係る第１実施形態によれば、モータの電流指令を学習する機械学習器であって、前記モータのモータ回転速度またはモータトルク指令と、前記モータのモータトルク，モータ電流およびモータ電圧の少なくとも１つと、を含む状態変数を観測する状態観測部と、前記状態観測部により観測された前記状態変数に基づいて、前記モータの電流指令を学習する学習部と、を備える機械学習器が提供される。
【００１１】
前記機械学習器は、さらに、前記学習部の出力に基づいて、前記モータの電流指令を決定する意思決定部を備えてもよい。前記モータは、三相交流同期モータであり、前記三相交流同期モータの電流指令は、電気的および磁気的に直交するｄ軸電流指令およびｑ軸電流指令を含むこともできる。前記ｄ軸電流指令および前記ｑ軸電流指令の学習は、前記三相交流同期モータのロータ位相角として学習するようにしてもよい。
【００１２】
前記学習部は、前記状態観測部の出力に基づいて、報酬を計算する報酬計算部と、前記状態観測部の出力および前記報酬計算部の出力に基づいて、前記モータの電流指令に関連する価値関数を更新する価値関数更新部と、を備えることができる。前記報酬計算部は、前記モータにおける各モータ回転速度またはモータトルク指令において、前記モータトルクが増加したら、報酬を増やし、前記モータ電流が規定値を超えたら、報酬を減らし、前記モータ電圧が飽和したら、報酬を減らすことができる。
【００１３】
前記学習部は、前記状態観測部の出力および教師データに基づいて、誤差を計算する誤差計算部と、前記状態観測部および前記誤差計算部の出力に基づいて、前記モータの電流指令に関連する誤差モデルを更新する誤差モデル更新部と、を備えてもよい。前記機械学習器は、ニューラルネットワークを備えることができる。前記機械学習器により学習された前記モータの電流指令は、通信媒体を介して複数の機械学習器で相互にデータを共有または交換するようにしてもよい。前記機械学習器は、クラウドサーバ上に存在することできる。
【００１４】
本発明に係る第２実施形態によれば、上述した第１実施形態の機械学習器と、前記モータを駆動制御するとモータ駆動部と、前記機械学習器により学習された前記モータの電流指令に基づいて、前記モータ駆動部を介して前記モータの電流指令を制御するモータ制御部と、を備えるモータ制御装置が提供される。前記状態観測部は、前記モータの前記モータ回転速度またはモータトルク指令，前記モータ電流および前記モータ電圧を含む状態変数を観測し、前記モータトルクは、観測された前記モータ電流および前記モータ電圧から計算することができる。
【００１５】
本発明に係る第３実施形態によれば、モータの電流指令を学習する機械学習方法であって、前記モータのモータ回転速度またはモータトルク指令と、前記モータのモータトルク，モータ電流およびモータ電圧の少なくとも１つと、を含む状態変数を観測し、観測された前記状態変数に基づいて、前記モータの電流指令を学習する機械学習方法が提供される。前記モータの電流指令の学習は、観測された前記状態変数に基づいて報酬を計算し、観測された前記状態変数および観測された前記報酬に基づいて、前記モータの電流指令に関連する価値関数を更新する、ことを含んでもよい。前記報酬の計算は、各モータ回転速度またはモータトルク指令において、前記モータトルクが増加したら、報酬を増やし、前記モータ電流が規定値を超えたら、報酬を減らし、前記モータ電圧が飽和したら、報酬を減らすことができる。
【発明の効果】
【００１６】
本発明に係る機械学習器，モータ制御装置および機械学習方法によれば、それぞれのモータに最適なモータの電流指令を学習することができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】図１は、本発明に係るモータ制御装置の一実施形態を概略的に示すブロック図である。
【図２】図２は、ｄｑ三相座標変換を用いて三相交流のモータを制御するモータ制御装置の一例を示すブロック図である。
【図３】図３は、ニューロンのモデルを模式的に示す図である。
【図４】図４は、図３に示すニューロンを組み合わせて構成した三層のニューラルネットワークを模式的に示す図である。
【図５】図５は、本発明に係るモータ制御装置におけるモータの電流制御を説明するための図である。
【図６】図６は、図１に示す機械学習器における処理の一例を説明するためのフローチャートである。
【図７】図７は、本発明に係るモータ制御装置の他の実施形態を概略的に示すブロック図である。
【図８】図８は、一般的なモータの特性を説明するための図である。
【発明を実施するための形態】
【００１８】
以下、本発明に係る機械学習器，機械学習器，モータ制御装置および機械学習方法の実施形態を、添付図面を参照して詳述する。図１は、本発明に係るモータ制御装置の一実施形態を概略的に示すブロック図である。
【００１９】
図１に示されるように、本実施形態のモータ制御装置は、モータ１１を制御するためのものであり、モータ制御部１２，モータ駆動部３および機械学習器２を含む。ここで、モータ１１としては、工作機械，鍛圧機械，射出成形機，産業機械，或いは，産業用およびサービス用ロボット等に用いられるモータ(電動機)である。なお、モータ制御部１２，モータ駆動部３および機械学習器２は、モータ制御装置として一体化することができるが、それぞれ別々に設けてもよい。
【００２０】
図１に示されるように、機械学習器２は、例えば、モータ制御部１２に設定されるモータの電流指令を学習するものであり、状態観測部２１、学習部２２、および、意思決定部２５を含む。モータ制御部１２は、モータ駆動部３を介してモータ１１を制御する。
【００２１】
状態観測部２１は、モータ１１(モータ駆動部３)の状態を観測し、学習部２２は、状態観測部２１により観測された状態変数(状態量)に基づいて、モータ１１の電流指令を学習する。ここで、状態観測部２１が観測する状態変数としては、例えば、モータ１１のモータ回転速度(または、モータトルク指令)と、モータ１１のモータトルク，モータ電流およびモータ電圧の少なくとも１つと、を含む。
【００２２】
ここで、状態観測部２１が観測するモータ１１のモータ回転速度(または、モータトルク指令)，モータ１１のモータトルク，モータ電流およびモータ電圧等の状態変数は、例えば、モータ制御部１２，モータ駆動部３またはモータ１１に設けたセンサ(図示しない)等から状態観測部２１に入力される。さらに、モータ１１は、例えば、ＰＭＳＭ(ｄｑ三相座標変換を用いて三相交流の永久磁石同期モータ)といった三相交流同期モータを適用することができ、また、学習部２２により学習されるモータ１１の電流指令は、例えば、電気的および磁気的に直交するｄ軸電流指令ｉd*およびｑ軸電流指令ｉq*を含んでもよい。
【００２３】
学習部２２は、状態観測部２１の出力に基づいて報酬を計算する報酬計算部２３と、状態観測部２１の出力および報酬計算部２３の出力に基づいて、モータ１１の電流指令に関連する価値関数を更新する価値関数更新部２４を含む。すなわち、報酬計算部２３は、状態観測部２１により観測された状態変数に基づいて報酬を計算し、価値関数更新部２４は、報酬計算部２３により計算された報酬に基づいて、現在の状態変数から求めたモータ１１の電流指令の価値関数を更新する。
【００２４】
報酬計算部２３は、例えば、モータ１１における各モータ回転速度(または、モータトルク指令)において、モータトルクが増加したら報酬を増やし、モータ電流が規定値を超えたら報酬を減らし、モータ電圧が飽和したら報酬を減らすといった報酬の計算を行う。なお、報酬計算部２３による報酬の計算(報酬を増やす(プラス報酬の設定)，または，報酬を減らす(マイナス報酬の設定))に関しては、後に詳述する。意思決定部２５は、学習部２２の出力に基づいて、モータ１１の電流指令を決定する。すなわち、意思決定部２５は、学習部２２が学習したモータ１１の電流指令(操作量)を決定してモータ制御部１２に出力し、モータ制御部１２は、機械学習器２により学習されたモータ１１の電流指令に基づいて、モータ駆動部３を介してモータ１１の電流指令を制御する。
【００２５】
図２は、ｄｑ三相座標変換を用いて三相交流のモータを制御するモータ制御装置の一例を示すブロック図であり、ＰＭＳＭを制御するモータ制御装置の一例を説明するためのものである。ここで、ｄｑ座標制御系において、例えば、ロータの磁極の方向をｄ軸に設定し、ｄ軸と電気的および磁気的に直交する軸をｑ軸に設定すると、ｄ軸電流は磁束を発生させるのに使われる励磁電流成分を表し、ｑ軸電流は負荷のトルクに対応した電機子電流成分を表す。
【００２６】
図２において、参照符号ｉq*はｑ軸のモータ電流指令(ｑ軸電流指令)、ｉd*はｄ軸のモータ電流指令(ｄ軸電流指令)、Ｖqはｑ軸のモータ電圧(ｑ軸モータ電圧)、Ｖdはｄ軸のモータ電圧(ｄ軸モータ電圧)、Ｌqはｑ軸のインダクタンス(ｑ軸インダクタンス)、そして、Ｌdはｄ軸のインダクタンス(ｄ軸インダクタンス)を示す。さらに、参照符号Ψaはロータ鎖交磁束、Ｋtはトルク係数、Ｔはモータトルク、Ｊは慣性モーメント、ωドットは角加速度、ωは角速度、そして、ω[rad/sec]×(60/2π)はモータ回転速度[min-1]を示す。
【００２７】
モータ制御装置１００は、入力されたｄ軸電流指令ｉd*およびｑ軸電流指令ｉq*に基づいてモータ(１１)を駆動するための駆動電力を出力する。これにより、モータには、ｄ軸電圧Ｖdおよびｑ軸電圧Ｖqが印加され、ｄ軸電流ｉdおよびｑ軸電流ｉqが流れる。このとき、モータのｄ軸電圧Ｖd、モータのｑ軸電圧Ｖq、モータのｄ軸電流ｉdおよびモータのｑ軸電流ｉqの間で、次の式［１］で表される電圧方程式が成り立っている。
【数１】
2018014838.tif 000003
【００２８】
また、ｄ軸電流ｉdとｑ軸電流ｉqのベクトル和であるモータ電流ｉａは、次の式［２］で計算される。
【数２】
2018014838.tif 000004
【００２９】
さらに、モータのトルクＴは、モータの極対数をＰnとしたとき、次の式［３］で表されるトルク方程式で計算できる。
【数３】
2018014838.tif 000005
【００３０】
ここで、従来の技術では、例えば、モータ(１１)のロータ鎖交磁束Ψa、ｑ軸インダクタンスＬqおよびｄ軸インダクタンスＬdを調べ、モータ回転速度とモータトルクの指令(モータトルク指令)から、角速度ωとｑ軸電流ｉqを算出し、限られた電圧と電流の制限の中でトルクを最大化するｉdをωとｉqの関数として算出する。なお、その算出式に用いるパラメータは、事前に準備しておく。具体的に、例えば、次の式［４］が知られている。
【数４】
2018014838.tif 000006
【００３１】
本実施形態では、モータ回転速度から角速度ωを決定し、モータトルク指令に比例する値として合計のモータ電流ｉaを算出し、ｉaがｉqとｉdのベクトル和であることからｉaから分割して生成するｉqとｉdを学習対象の変数としてモータに入力し、モータ電流(ｉq，ｉd)およびモータ電圧(Ｖq，Ｖd)を測定する。
【００３２】
そして、以下のように各モータ回転速度と各モータトルク指令において、入力したｉqとｉdの報酬を決定し、その報酬に応じてモータ電流ｉqとｉdの指令値を変更する。
・ｉqとｉdの変化に対して、モータトルクが大きいほどプラス
・ｉqとｉdの変化に対して、モータ電圧が電圧制限を超えたらマイナス
【００３３】
ここで、各モータ回転速度とは、０〜１min-1， １〜２min-2のように分割した区間を示し、各モータトルクとは、０〜１Nm，１〜２Nmのように分割した区間を示す。また、ｉqとｉdの学習は、ｉq=ｉａcosΦ，ｉd=ｉａsinΦとして、Φについて学習してもよい。すなわち、三相交流同期モータ(ＰＭＳＭ)１１の電流指令は、電気的および磁気的に直交するｄ軸電流指令ｉd*およびｑ軸電流指令ｉq*を含み、ｉd*およびｉq*の学習は、三相交流同期モータ１１のロータ位相角Φとして学習することができる。
【００３４】
ところで、機械学習器２(４)は、装置に入力されるデータの集合から、その中にある有用な規則や知識表現、判断基準等を解析により抽出し、その判断結果を出力するとともに、知識の学習(機械学習)を行う機能を有する。機械学習の手法は様々であるが、大別すれば、例えば、「教師あり学習」、「教師なし学習」および「強化学習」に分けられる。さらに、これらの手法を実現するうえで、特徴量そのものの抽出を学習する、「深層学習(ディープラーニング：Deep Learning)」と呼ばれる手法がある。
【００３５】
なお、図１を参照して説明した機械学習器２は、「強化学習」を適用したものであり、また、図７を参照して後述する機械学習器４は、「教師あり学習」を適用したものである。これらの機械学習器(機械学習装置)２，４は、汎用の計算機若しくはプロセッサを用いることもできるが、例えば、ＧＰＧＰＵ(General-Purpose computing on Graphics Processing Units)や大規模ＰＣクラスター等を適用すると、より高速処理が可能になる。
【００３６】
まず、教師あり学習とは、教師データ、すなわち、ある入力と結果(ラベル)のデータの組を大量に機械学習器(４)に与えることで、それらのデータセットにある特徴を学習し、入力から結果を推定するモデル(誤差モデル)、すなわち、その関係性を帰納的に獲得するものである。例えば、後述のニューラルネットワーク等のアルゴリズムを用いて実現することが可能である。
【００３７】
また、教師なし学習とは、入力データのみを大量に学習装置に与えることで、入力データがどのような分布をしているか学習し、対応する教師出力データを与えなくても、入力データに対して圧縮・分類・整形等を行う装置で学習する手法である。例えば、それらのデータセットにある特徴を、似た者どうしにクラスタリングすること等ができる。この結果を使って、何らかの基準を設けてそれを最適化するような出力の割り当てを行うことにより、出力の予測を実現することできる。
【００３８】
なお、教師なし学習と教師あり学習との中間的な問題設定として、半教師あり学習と呼ばれるものもあり、これは、例えば、一部のみ入力と出力のデータの組が存在し、それ以外は入力のみのデータである場合が対応する。本実施形態においては、実際にモータを動かさなくても取得することができるデータ(シミュレーションデータ等)を教師なし学習で利用することにより、学習を効率的に行うことが可能になる。
【００３９】
次に、強化学習について、説明する。まず、強化学習の問題設定として、次のように考える。
・モータ(すなわち、工作機械，鍛圧機械，射出成形機，産業機械，或いは，産業用およびサービス用ロボット等に搭載されたモータ)は、環境の状態を観測し、行動を決定する。
・環境は、何らかの規則に従って変化し、さらに、自分の行動が、環境に変化を与えることもある。
・行動するたびに、報酬信号が帰ってくる。
・最大化したいのは、将来にわたっての(割引)報酬の合計である。
・行動が引き起こす結果を全く知らない、または、不完全にしか知らない状態から学習はスタートする。すなわち、モータは、実際に行動して初めて、その結果をデータとして得ることができる。つまり、試行錯誤しながら最適な行動を探索する必要がある。
・人間の動作を真似るように、事前学習(前述の教師あり学習や、逆強化学習といった手法)した状態を初期状態として、良いスタート地点から学習をスタートさせることもできる。
【００４０】
ここで、強化学習とは、判定や分類だけではなく、行動を学習することにより、環境に行動が与える相互作用を踏まえて適切な行動を学習、すなわち、将来的に得られる報酬を最大にするための学習する方法を学ぶものである。以下に、例として、Ｑ学習の場合で説明を続けるが、Ｑ学習に限定されるものではない。
【００４１】
Ｑ学習は、或る環境状態ｓの下で、行動ａを選択する価値Ｑ(ｓ，ａ)を学習する方法である。つまり、或る状態ｓのとき、価値Ｑ(ｓ，ａ)の最も高い行動ａを最適な行動として選択すればよい。しかし、最初は、状態ｓと行動ａとの組合せについて、価値Ｑ(ｓ，ａ)の正しい値は全く分かっていない。そこで、エージェント(行動主体)は、或る状態ｓの下で様々な行動ａを選択し、その時の行動ａに対して、報酬が与えられる。それにより、エージェントは、より良い行動の選択、すなわち、正しい価値Ｑ(ｓ，ａ)を学習していく。
【００４２】
さらに、行動の結果、将来にわたって得られる報酬の合計を最大化したいので、最終的にＱ(ｓ，ａ)＝Ｅ［Σ(γt)ｒt］となるようにすることを目指す。ここで、期待値は、最適な行動に従って状態変化したときについてとるものとし、それは、分かっていないので、探索しながら学習することになる。このような価値Ｑ(ｓ，ａ)の更新式は、例えば、次の式［５］により表すことができる。
【００４３】
【数５】
2018014838.tif 000007
上記の式［５］において、ｓtは、時刻ｔにおける環境の状態を表し、ａtは、時刻ｔにおける行動を表す。行動ａtにより、状態はｓt+1に変化する。rt+1は、その状態の変化により得られる報酬を表している。また、ｍａｘの付いた項は、状態ｓt+1の下で、その時に分かっている最もＱ値の高い行動ａを選択した場合のＱ値にγを乗じたものになる。ここで、γは、０＜γ≦１のパラメータで、割引率と呼ばれる。また、αは、学習係数で、０＜α≦１の範囲とする。
【００４４】
上述した式［５］は、試行ａtの結果、帰ってきた報酬ｒt+1を元に、状態ｓtにおける行動ａtの評価値Ｑ(ｓt，ａt)を更新する方法を表している。すなわち、状態ｓにおける行動ａの評価値Ｑ(ｓt，ａt)よりも、報酬ｒt+1 ＋ 行動ａによる次の状態における最良の行動ｍａｘ ａの評価値Ｑ(ｓt+1，ｍａｘ ａt+1)の方が大きければ、Ｑ(ｓt，ａt)を大きくし、反対に小さければ、Ｑ(ｓt，ａt)を小さくすることを示している。つまり、或る状態における或る行動の価値を、結果として即時帰ってくる報酬と、その行動による次の状態における最良の行動の価値に近付けるようにしている。
【００４５】
ここで、Ｑ(ｓ，ａ)の計算機上での表現方法は、すべての状態行動ペア(ｓ，ａ)に対して、その値をテーブルとして保持しておく方法と、Ｑ(ｓ，ａ)を近似するような関数を用意する方法がある。後者の方法では、前述の式［５］は、確率勾配降下法等の手法で近似関数のパラメータを調整していくことにより、実現することができる。なお、近似関数としては、後述のニューラルネットワークを用いることができる。
【００４６】
ここで、強化学習での価値関数の近似アルゴリズムとして、ニューラルネットワークを用いることができる。図３は、ニューロンのモデルを模式的に示す図であり、図４は、図３に示すニューロンを組み合わせて構成した三層のニューラルネットワークを模式的に示す図である。すなわち、ニューラルネットワークは、例えば、図３に示すようなニューロンのモデルを模した演算装置およびメモリ等で構成される。
【００４７】
図３に示されるように、ニューロンは、複数の入力ｘ(図３では、一例として入力ｘ1〜ｘ3)に対する出力(結果)ｙを出力するものである。各入力ｘ(ｘ1，ｘ2，ｘ3)には、この入力ｘに対応する重みｗ(ｗ1，ｗ2，ｗ3)が乗算される。これにより、ニューロンは、次の式［６］により表現される結果ｙを出力する。なお、入力ｘ、結果ｙおよび重みｗは、すべてベクトルである。また、下記の式［６］において、θは、バイアスであり、ｆkは、活性化関数である。
【数６】
2018014838.tif 000008
【００４８】
図４を参照して、図３に示すニューロンを組み合わせて構成した三層のニューラルネットワークを説明する。図４に示されるように、ニューラルネットワークの左側から複数の入力ｘ(ここでは、一例として、入力ｘ1〜入力ｘ3)が入力され、右側から結果ｙ(ここでは、一例として、結果ｙ1〜入力ｙ3)が出力される。具体的に、入力ｘ1，ｘ2， ｘ3は、３つのニューロンＮ11〜Ｎ13の各々に対して、対応する重みが掛けられて入力される。これらの入力に掛けられる重みは、まとめてＷ１と標記されている。
【００４９】
ニューロンＮ11〜Ｎ13は、それぞれ、ｚ11〜ｚ13を出力する。図４において、これらｚ11〜ｚ13は、まとめて特徴ベクトルＺ１と標記され、入力ベクトルの特徴量を抽出したベクトルとみなすことができる。この特徴ベクトルＺ１は、重みＷ１と重みＷ２との間の特徴ベクトルである。ｚ11〜ｚ13は、２つのニューロンＮ21およびＮ22の各々に対して、対応する重みが掛けられて入力される。これらの特徴ベクトルに掛けられる重みは、まとめてＷ２と標記されている。
【００５０】
ニューロンＮ21，Ｎ22は、それぞれｚ21，ｚ22を出力する。図４において、これらｚ21，ｚ22は、まとめて特徴ベクトルＺ２と標記されている。この特徴ベクトルＺ２は、重みＷ２と重みＷ３との間の特徴ベクトルである。ｚ21，ｚ22は、３つのニューロンＮ31〜Ｎ33の各々に対して、対応する重みが掛けられて入力される。これらの特徴ベクトルに掛けられる重みは、まとめてＷ３と標記されている。
【００５１】
最後に、ニューロンＮ31〜Ｎ33は、それぞれ、結果ｙ１〜結果ｙ３を出力する。ニューラルネットワークの動作には、学習モードと価値予測モードとがある。例えば、学習モードにおいて、学習データセットを用いて重みＷを学習し、そのパラメータを用いて予測モードにおいて、ロボットの行動判断を行う。なお、便宜上、予測と書いたが、検出・分類・推論等多様なタスクが可能なのはいうまでもない。
【００５２】
ここで、予測モードで実際にロボットを動かして得られたデータを即時学習し、次の行動に反映させる(オンライン学習)ことも、予め収集しておいたデータ群を用いてまとめた学習を行い、以降はずっとそのパラメータで検知モードを行う(バッチ学習)こともできる。或いは、その中間的な、ある程度データが溜まるたびに学習モードを挟むということも可能である。
【００５３】
また、重みｗ１〜ｗ３は、誤差逆伝搬法(誤差逆転伝播法：バックプロパゲーション：Backpropagation)により学習可能なものである。なお、誤差の情報は、右側から入り左側に流れる。誤差逆伝搬法は、各ニューロンについて、入力ｘが入力されたときの出力ｙと真の出力ｙ(教師)との差分を小さくするように、それぞれの重みを調整(学習)する手法である。このようなニューラルネットワークは、三層以上に、さらに層を増やすことも可能である(深層学習と称される)。また、入力の特徴抽出を段階的に行い、結果を回帰する演算装置を、教師データのみから自動的に獲得することも可能である。
【００５４】
そこで、前述したように、本実施例の機械学習器２は、例えば、Ｑ学習を実施すべく、状態観測部２１、学習部２２、および、意思決定部２５を備えている。ただし、本発明に適用される機械学習方法は、Ｑ学習に限定されないのは前述した通りである。なお、機械学習(機械学習器２)は、例えば、ＧＰＧＰＵや大規模ＰＣクラスター等を適用することで実現可能なのは、前述した通りである。
【００５５】
図５は、本発明に係るモータ制御装置におけるモータの電流制御を説明するための図であり、図５(a)は、状態変数(モータトルク，モータ電流およびモータ電圧)と報酬の関係を説明するためのものであり、図５(b)は、得られた報酬ＲＷの一例を示すものである。
【００５６】
図５(a)に示されるように、モータトルクＬ１に関して、増加すればプラスの報酬が設定され(報酬を増やす)、減少すればマイナスの報酬が設定される(報酬を減らす)。また、モータ電流Ｌ２に関して、電流リミット値(規定値)Ｉlimを超えればマイナスの報酬が設定され、超えなければプラスの報酬が設定される。さらに、モータ電圧Ｌ３に関して、電圧飽和値(規定値)Ｖsatを超えればマイナスの報酬が設定され、超えなければプラスの報酬が設定される。これら状態変数による報酬をまとめると、図５(b)のような報酬(報酬曲線)ＲＷが得られることになる。
【００５７】
図６は、図１に示す機械学習器における処理の一例を説明するためのフローチャートである。図６に示されるように、機械学習が開始(学習スタート)すると、ステップＳＴ１において、モータの回転速度(モータトルク指令)を取得し、ステップＳＴ２に進んで、モータ１１を駆動する。ここで、ステップＳＴ１におけるモータの回転速度の取得は、例えば、モータ制御部１２から直接受け取ることができる。さらに、ステップＳＴ３に進んで、モータトルク(Ｌ１)が増加したかどうかを判定する。
【００５８】
ステップＳＴ３において、モータトルクが増加していない(ＳＴ３：ＮＯ)と判定すると、ステップＳＴ４に進んで報酬を減らし(マイナス報酬を設定し)、逆に、モータトルクが増加した(ＳＴ３：ＹＥＳ)と判定すると、ステップＳＴ５に進んで報酬を増やし(プラス報酬を設定し)、ステップＳＴ６に進む。ステップＳＴ６では、モータ電流(Ｌ２)が規定値(電流リミット値Ｉlim)を超えたかどうかを判定する。
【００５９】
ステップＳＴ６において、モータ電流が規定値を超えた(ＳＴ６：ＹＥＳ)と判定すると、ステップＳＴ７に進んで報酬を減らし、逆に、モータ電流が規定値を超えていない(ＳＴ６：ＮＯ)と判定すると、ステップＳＴ８に進んで報酬を増やし、ステップＳＴ９に進む。ステップＳＴ９では、モータ電圧(Ｌ３)が飽和したかどうか、すなわち、モータ電圧が飽和電圧(Ｖsat)を超えたかどうかを判定する。
【００６０】
ステップＳＴ９において、モータ電圧が飽和した、すなわち、モータ電圧が飽和電圧を超えた(ＳＴ９：ＹＥＳ)と判定すると、ステップＳＴ１０に進んで報酬を減らし、逆に、モータ電圧が飽和していない、すなわち、モータ電圧が飽和電圧を超えていない(ＳＴ９：ＮＯ)と判定すると、ステップＳＴ１１に進んで報酬を増やし、ステップＳＴ１２に進む。ステップＳＴ１２では、それぞれのステップＳＴ４，ＳＴ５，ＳＴ７，ＳＴ８．ＳＴ１０およびＳＴ１１による報酬に基づいて行動価値テーブルを更新し、ステップＳＴ１３に進む。ステップＳＴ１３では、更新された行動価値テーブルに基づいて、モータの電流指令を決定し、ステップＳＴ２に戻り、同様の処理を繰り返す。
【００６１】
ここで、ステップＳＴ４，ＳＴ５，ＳＴ７，ＳＴ８．ＳＴ１０およびＳＴ１１(ＳＴ３〜ＳＴ１１)は、例えば、前述した状態観測部２１の出力に基づいて報酬を計算する報酬計算部２３の処理に相当する。また、ステップＳＴ１２は、前述した状態観測部２１の出力および報酬計算部２３の出力に基づいてモータ１１の電流指令に関連する価値関数を更新する価値関数更新部２４の処理に相当する。さらに、ステップＳＴ１３は、前述した価値関数更新部２４(学習部２２)の出力に基づいてモータ１１の電流指令を決定する意思決定部２５の処理に相当する。
【００６２】
なお、図６では、状態観測部２１が、モータトルク，モータ電流およびモータ電圧の全てを含む状態変数を観測する場合を示しているが、これらの少なくとも１つを含む状態変数を観測してもよい。すなわち、本実施形態によれば、状態観測部２１は、モータ１１のモータ回転速度またはモータトルク指令と、モータトルク，モータ電流およびモータ電圧の少なくとも１つを含む状態変数を観測し、報酬計算部２３は、状態観測部２１の出力に基づいて報酬を計算し、価値関数更新部２４は、状態観測部２１の出力および報酬計算部２３の出力に基づいて、モータ１１の電流指令に関連する価値関数を更新する。そして、意思決定部２５は、価値関数更新部２４の出力に基づいて、モータ１１の電流指令を決定する。これにより、それぞれのモータ(モータ回転速度，モータトルク指令)に最適なモータの電流指令を学習することが可能になる。
【００６３】
以上において、例えば、モータトルク指令(モータのトルク指令)に対して、合計電流が最小となる電流制御(モータの電流指令)を学習させることもできる。この場合、制御ループ，計算式および分割方法は、上述したのと同じものを適用することができる。また、モータ回転速度から角速度ωを決定し、モータトルク指令に比例する値として、例えば、モータ電流ｉqを決定する。すなわち、前述した式［２］のように、モータ電流ｉａは、ｄ軸電流ｉdとｑ軸電流ｉqのベクトル和であることを考慮し、学習対象とするｉdを変数としてモータに入力し、モータ電流(Ｉq，Ｉd)およびモータ電圧(Ｖq，Ｖd)を測定することができる。
【００６４】
そして、各モータ回転速度と各モータトルク指令において、モータに入力するｉdの報酬を決定し、その報酬に応じてモータ電流(ｄ軸電流)ｉdの指令値を変更(更新)する。具体的に、例えば、ｉdを減らしても指令通りのトルクが発生していて、且つ、電圧が電圧制限(Ｖsat)を越えなければプラス報酬を設定し、どちらか一方でも達成できなければマイナス報酬を設定する。
【００６５】
さらに、モータトルクを実際にモータに流れる電流(モータ実電流)から計算し、制御することも可能である。すなわち、モータ回転速度，モータ実電流(Ｉq，Ｉd)，実際にモータに印加するモータ実電圧(Ｖq，Ｖd)を測定し、モータトルクの測定は行わずに、モータトルクがｑ軸電流Ｉqに比例すると仮定して、モータトルクを計算で求めることも可能である。なお、計算で求めたモータトルクを使用して、前述した最大トルク制御および合計電流最小制御を行うこともできる。
【００６６】
図７は、本発明に係るモータ制御装置の他の実施形態を概略的に示すブロック図であり、教師あり学習を適用したものを示す。図７と、前述した図１の比較から明らかなように、図７に示す教師あり学習を適用したモータ制御装置は、図１に示すＱ学習(強化学習)を適用したモータ制御装置において、教師データ(結果(ラベル)付きデータ)が提供されるようになっている。
【００６７】
図７に示されるように、教師あり学習を適用したモータ制御装置における機械学習器４は、状態観測部４１と、学習部４２と、意思決定部４５と、を備える。学習部４２は、誤差計算部４３と、誤差モデル更新部４４と、を含む。なお、本実施形態の機械学習器４においても、状態観測部４１は、モータ１１のモータ回転速度またはモータトルク指令と、モータ１１のモータトルク，モータ電流およびモータ電圧の少なくとも１つと、を含む状態変数を観測し、学習部４２は、状態観測部４１により観測された状態変数に基づいて、モータ１１の電流指令を学習する。
【００６８】
図７に示されるように、学習部４２は、誤差計算部４３および誤差モデル更新部４４を含み、誤差計算部４３および誤差モデル更新部４４は、それぞれ、図１に示すＱ学習を適用したモータ制御装置における報酬計算部２３および価値関数更新部２４に相当する。ただし、本実施形態における誤差計算部４３には、外部から教師データが入力され、その教師データと誤差モデルの差が小さくなるように、誤差モデル更新部４４により誤差モデルが更新される構成等において、図１を参照して説明したものとは異なる。
【００６９】
すなわち、誤差計算部４３は、状態観測部４１の出力および教師データを受け取って、結果(ラベル)付きデータと学習部４２に実装されている誤差モデルの出力との誤差を計算する。ここで、教師データとしては、例えば、同一のモータ制御装置により同じ産業機械やロボット等により同じ作業を行わせる場合、実際に作業を行わせる所定日の前日までに得られたラベル付きデータを保持し、その所定日に、教師データとして誤差計算部４３に提供することができる。
【００７０】
或いは、モータ制御装置(産業機械やロボット等)の外部で行われたシミュレーション等により得られたデータ、または、他のモータ制御装置のラベル付きデータを、メモリカードや通信回線により、そのモータ制御装置の誤差計算部４３に教師データとして提供することも可能である。さらに、教師データ(ラベル付きデータ)を、例えば、学習部４２に内蔵したフラッシュメモリ(Flash Memory)等の不揮発性メモリに保持し、その不揮発性メモリに保持されたラベル付きデータを、そのまま学習部４２で使用することもできる。
【００７１】
以上において、モータ制御装置を複数備えるモータ制御システムを考えた場合、例えば、機械学習器２(４)は、モータ制御装置毎にそれぞれ設けられ、複数のモータ制御装置に設けられた複数の機械学習器２(４)は、通信媒体を介して相互にデータを共有または交換することができる。また、機械学習器２(４)は、クラウドサーバ上に存在させることも可能である。
【００７２】
このように、本発明に係る機械学習器としては、「強化学習」だけでなく、「教師あり学習」、或いは、「教師なし学習」や「半教師あり学習」等の様々な機械学習の手法を適用することも可能である。
【００７３】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【００７４】
２，４    機械学習器
３    モータ駆動部
１１    モータ
１２    モータ制御部
２１，４１    状態観測部
２２，４２    学習部
２３    報酬計算部
２４    価値関数更新部
２５，４５    意思決定部
４３    誤差計算部
４４    誤差モデル更新部
【図１】
2018014838.tif 000009
【図２】
2018014838.tif 000010
【図３】
2018014838.tif 000011
【図４】
2018014838.tif 000012
【図５】
2018014838.tif 000013
【図６】
2018014838.tif 000014
【図７】
2018014838.tif 000015
【図８】
2018014838.tif 000016