(57)【要約】【課題】フィルタの特性を決定するパラメータの設定を容易にする。【解決手段】モータを制御するサーボ制御装置に設けられた少なくとも１つのフィルタの係数を最適化する機械学習システムであって、少なくとも１つの特定の周波数成分を減衰させるようにフィルタの係数の初期値を設定する初期設定部と、サーボ制御装置における、周波数が変わる入力信号と出力信号とに基づいて、サーボ制御装置の入出力ゲインと入出力の位相遅れの少なくとも１つを算出する周波数特性算出部と、機械学習開始時に、フィルタに初期値を設定した初期フィルタを用いて得られた出力信号と、入力信号とに基づいて得られた入出力ゲインと入出力の位相遅れの少なくとも１つから、初期フィルタのフィルタ特性を除去するフィルタ特性除去部と、を備え、フィルタ特性が除去された入出力ゲインと位相遅れの少なくとも１つが低下するようにフィルタの係数の機械学習を開始する。【選択図】図１
2020119295.tif 000002
【特許請求の範囲】
【請求項１】
モータを制御するサーボ制御装置に設けられた少なくとも１つのフィルタの係数を最適化する機械学習を行う機械学習システムであって、
少なくとも１つの特定の周波数成分を減衰させるように前記フィルタの係数の初期値を設定する初期設定部と、
前記サーボ制御装置における、周波数が変わる入力信号と出力信号とに基づいて、前記サーボ制御装置の入出力ゲインと入出力の位相遅れの少なくとも１つを算出する周波数特性算出部と、
機械学習開始時に、前記フィルタに前記初期設定部により前記初期値を設定した初期フィルタを用いて得られた前記出力信号と、前記入力信号とに基づいて得られた前記入出力ゲインと前記入出力の位相遅れの少なくとも１つから、前記初期フィルタのフィルタ特性を除去するフィルタ特性除去部と、を備え、
前記フィルタ特性除去部により前記初期フィルタのフィルタ特性が除去された、前記入出力ゲインと前記位相遅れの少なくとも１つが低下するように前記フィルタの係数の機械学習を開始する、機械学習システム。
【請求項２】
前記周波数が変わる入力信号は、周波数が変わる正弦波であって、
該正弦波は周波数生成部によって生成され、該周波数生成部は前記サーボ制御装置内又は外に設けられる、請求項１に記載の機械学習システム。
【請求項３】
前記周波数特性算出部から出力される前記サーボ制御装置の入出力ゲイン及び入出力の位相遅れと、前記初期フィルタの係数又は前記機械学習開始後の前記フィルタの係数と、を含む状態情報を取得する状態情報取得部と、
前記状態情報に含まれる、前記初期フィルタの係数又は前記機械学習開始後の前記フィルタの係数の調整情報を含む行動情報を出力する行動情報出力部と、
前記状態情報取得部から出力される前記入出力ゲイン及び前記入出力の位相遅れに基づく強化学習における報酬の値を出力する報酬出力部と、
前記報酬出力部により出力される報酬の値と、前記状態情報と、前記行動情報とに基づいて行動価値関数を更新する価値関数更新部と、
を有する機械学習部を備えた、
請求項１又は２に記載の機械学習システム。
装置。
【請求項４】
前記周波数特性算出部は、前記入出力ゲインと前記入出力の位相遅れとを出力し、
前記報酬出力部は、前記サーボ制御装置の入出力ゲインが、前記サーボ制御装置の特性から算出される入出力ゲインの規範モデルの該入出力ゲイン以下である場合に、前記入出力の位相遅れによる報酬を計算する、請求項３に記載の機械学習システム。
【請求項５】
前記規範モデルの入出力ゲインは、所定の周波数以上では一定値である、請求項４に記載の機械学習システム。
【請求項６】
前記報酬出力部は、前記入出力の位相遅れが小さくなるように報酬を計算する、請求項４又は５に記載の機械学習システム。
【請求項７】
前記価値関数更新部により更新された価値関数に基づいて、前記係数の調整情報を出力する最適化行動情報出力部を備えた請求項３から６のいずれか１項に記載の機械学習システム。
【請求項８】
請求項１から請求項７のいずれか１項に記載の機械学習システムと、
特定の周波数成分を減衰させる少なくとも１つのフィルタを有する、モータを制御するサーボ制御装置と、
を備えた制御装置。
【請求項９】
モータを制御するサーボ制御装置に設けられた、少なくとも１つの特定の周波数成分を減衰させる少なくとも１つのフィルタの係数を最適化する機械学習を行う機械学習システムの機械学習方法であって、
少なくとも１つの特定の周波数成分を減衰させるように前記フィルタの係数の初期値を設定し、
前記サーボ制御装置における、周波数が変わる入力信号と出力信号とに基づいて、前記サーボ制御装置の入出力ゲインと入出力の位相遅れの少なくとも１つを算出し、
機械学習開始時に、前記フィルタに前記初期値を設定した初期フィルタを用いて得られた前記サーボ制御装置の出力信号と、前記サーボ制御装置の入力信号とに基づいて得られた入出力ゲインと入出力の位相遅れの少なくとも１つから、前記初期フィルタのフィルタ特性を除去し、
前記フィルタ特性が除去された、前記入出力ゲインと前記位相遅れの少なくとも１つが低下するように前記フィルタの係数の機械学習を開始する、機械学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工作機械、ロボット又は産業機械等のモータを制御するサーボ制御装置におけるフィルタの係数を最適化する機械学習システム、この機械学習システムを含む制御装置、及び機械学習方法に関する。
【背景技術】
【０００２】
フィルタの特性を自動的に調整する装置が知られている（例えば特許文献１及び特許文献２を参照）。
特許文献１は、サーボアクチュエータが「モータの速度を制御する速度フィードバックループを有し、この速度フィードバックループにノッチフィルタ手段を挿入して機械共振を除去するサーボアクチュエータにおいて、速度フィードバックループの周波数応答特性を示すデータを取得するデータ収集手段と、データ収集手段で取得されたデータを移動平均処理する移動平均手段と、この移動平均手段で得られたデータと、データ収集手段で得られたデータとを比較して、速度フィードバックループの共振特性を抽出する比較手段と、比較手段で抽出された共振特性に基づいてノッチフィルタ手段の周波数及びＱ値を設定するノッチフィルタ設定手段と、を備える」ことを記載している。
【０００３】
特許文献２は、サーボアクチュエータが「チューニングモード時には、周波数をスイープした交流信号を速度指令値の信号に重畳させ、重畳の結果、速度制御部から得られたトルク指令値信号の振幅を検出し、振幅の変化率が正から負に転じたときにおけるトルク指令値信号の周波数をノッチフィルタの中心周波数として設定する」ことを記載している。
【０００４】
特許文献３は、電動機の制御装置が「ノッチ周波数とノッチ幅を含むノッチフィルタパラメータの変更が可能であるノッチフィルタと、振動周波数を推定する振動周波数推定手段を有し、ノッチフィルタのノッチ周波数と推定された振動周波数との間の周波数をノッチフィルタの新たなノッチ周波数として設定するとともに、元のノッチ周波数成分と推定された周波数成分が減衰するようノッチ幅を変更するノッチフィルタパラメータ設定手段を有する」ことを記載している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１０４４３９号公報
【特許文献２】特開平５−１９８５８号公報
【特許文献３】特開２００８−３１２３３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
フィルタ、例えば、ノッチフィルタの特性を決めるときには、減衰係数、除去したい帯域の中心周波数、及び帯域幅等の複数のパラメータを決めることが求められ、これらのパラメータを調整して最適値を求めることが望まれている。そして、これらのパラメータの設定が適正でないと、共振を十分に抑制できなかったり、サーボ制御部の位相遅れが増大してサーボ制御性能が劣化する場合がある。
【課題を解決するための手段】
【０００７】
（１）  本開示の一態様は、モータを制御するサーボ制御装置に設けられた少なくとも１つのフィルタの係数を最適化する機械学習を行う機械学習システムであって、
少なくとも１つの特定の周波数成分を減衰させるように前記フィルタの係数の初期値を設定する初期設定部と、
前記サーボ制御装置における、周波数が変わる入力信号と出力信号とに基づいて、前記サーボ制御装置の入出力ゲインと入出力の位相遅れの少なくとも１つを算出する周波数特性算出部と、
機械学習開始時に、前記フィルタに前記初期設定部により前記初期値を設定した初期フィルタを用いて得られた前記出力信号と、前記入力信号とに基づいて得られた前記入出力ゲインと前記入出力の位相遅れの少なくとも１つから、前記初期フィルタのフィルタ特性を除去するフィルタ特性除去部と、を備え、
前記フィルタ特性除去部により前記初期フィルタのフィルタ特性が除去された、前記入出力ゲインと前記位相遅れの少なくとも１つが低下するように前記フィルタの係数の機械学習を開始する、機械学習システムである。
【０００８】
（２）  上記（１）の機械学習システムにおいて、前記周波数が変わる入力信号は、周波数が変わる正弦波であって、該正弦波は周波数生成部によって生成され、該周波数生成部は前記サーボ制御装置内又は外に設けられてもよい。
【０００９】
（３）  上記（１）又は（２）の機械学習システムにおいて、前記周波数特性算出部から出力される前記サーボ制御装置の入出力ゲイン及び入出力の位相遅れと、前記初期フィルタの係数又は前記機械学習開始後の前記フィルタの係数と、を含む状態情報を取得する状態情報取得部と、
前記状態情報に含まれる、前記初期フィルタの係数又は前記機械学習開始後の前記フィルタの係数の調整情報を含む行動情報を出力する行動情報出力部と、
前記状態情報取得部から出力される前記入出力ゲイン及び前記入出力の位相遅れに基づく強化学習における報酬の値を出力する報酬出力部と、
前記報酬出力部により出力される報酬の値と、前記状態情報と、前記行動情報とに基づいて行動価値関数を更新する価値関数更新部と、を有する機械学習部を備えてもよい。
【００１０】
（４）  上記（３）の機械学習システムにおいて、前記周波数特性算出部は、前記入出力ゲインと前記入出力の位相遅れとを出力し、
前記報酬出力部は、前記サーボ制御装置の入出力ゲインが、前記サーボ制御装置の特性から算出される入出力ゲインの規範モデルの該入出力ゲイン以下である場合に、前記入出力の位相遅れによる報酬を計算してもよい。
【００１１】
（５）  上記（４）の機械学習システムにおいて、前記規範モデルの入出力ゲインは、所定の周波数以上では一定値であってもよい。
【００１２】
（６）  上記（４）又は（５）の機械学習システムにおいて、前記報酬出力部は、前記入出力の位相遅れが小さくなるように報酬を計算してもよい。
【００１３】
（７）  上記（３）から（６）のいずれかの機械学習システムにおいて、前記価値関数更新部により更新された価値関数に基づいて、前記係数の調整情報を出力する最適化行動情報出力部を備えてもよい。
【００１４】
（８）  本開示の他の一態様は、上記（１）から（７）のいずれかの機械学習システムと、特定の周波数成分を減衰させる少なくとも１つのフィルタを有する、モータを制御するサーボ制御装置と、
を備えた制御装置である。
【００１５】
（９）  本開示のさらに他の一態様は、モータを制御するサーボ制御装置に設けられた、少なくとも１つの特定の周波数成分を減衰させる少なくとも１つのフィルタの係数を最適化する機械学習を行う機械学習システムの機械学習方法であって、
少なくとも１つの特定の周波数成分を減衰させるように前記フィルタの係数の初期値を設定し、
前記サーボ制御装置における、周波数が変わる入力信号と出力信号とに基づいて、前記サーボ制御装置の入出力ゲインと入出力の位相遅れの少なくとも１つを算出し、
機械学習開始時に、前記フィルタに前記初期値を設定した初期フィルタを用いて得られた前記サーボ制御装置の出力信号と、前記サーボ制御装置の入力信号とに基づいて得られた入出力ゲインと入出力の位相遅れの少なくとも１つから、前記初期フィルタのフィルタ特性を除去し、
前記フィルタ特性が除去された、前記入出力ゲインと前記位相遅れの少なくとも１つが低下するように前記フィルタの係数の機械学習を開始する、機械学習方法である。
【発明の効果】
【００１６】
一態様によれば、サーボ制御装置に係るフィルタの最適なパラメータの設定が可能となる。
【図面の簡単な説明】
【００１７】
【図１】一実施形態の機械学習システムを含む制御装置を示すブロック図である。
【図２】入力信号となる速度指令と出力信号となる検出速度とを示す図である。
【図３】入力信号と出力信号との振幅比と、位相遅れとの周波数特性を示す図である。
【図４】初期設定のフィルタの周波数特性図である。
【図５】初期設定部及びフィルタの動作を説明するための概念図である。
【図６】一実施形態の機械学習部を示すブロック図である。
【図７】フィルタ特性を付加した周波数特性と、フィルタ特性を除いた周波数特性の一例を示す周波数特性図である。
【図８】入出力ゲインの規範モデルを算出するためのモデルとなるブロック図である。
【図９】規範モデルのサーボ制御部と、学習前及び学習後のサーボ制御部の入出力ゲインの周波数特性を示す特性図である。
【図１０】フィルタの帯域幅と、ゲイン及び位相との関係を示す特性図である。
【図１１】フィルタの減衰係数と、ゲイン及び位相との関係を示す特性図である。
【図１２】本実施形態におけるＱ学習時の機械学習部の動作を示すフローチャートである。
【図１３】一実施形態の機械学習部の最適化行動情報出力部の動作を説明するフローチャートである。
【図１４】複数のフィルタを直接接続してフィルタを構成した例を示すブロック図である。
【図１５】制御装置の他の構成例を示すブロック図である。
【発明を実施するための形態】
【００１８】
以下、本開示の実施形態について図面を用いて詳細に説明する。
【００１９】
図１は一実施形態の機械学習システムを含む制御装置を示すブロック図である。制御装置１０の制御対象は、例えば、工作機械、ロボット、産業機械である。制御装置１０は、工作機械、ロボット、産業機械等の制御対象の一部として設けられてもよい。
【００２０】
制御装置１０は、サーボ制御装置となるサーボ制御部１００、周波数生成部２００、周波数特性算出部３００、機械学習部４００、及び初期設定部５００を備えている。
なお、周波数生成部２００、周波数特性算出部３００、機械学習部４００及び初期設定部５００のうちの一つ又は複数はサーボ制御部１００の内に設けてもよい。また、初期設定部５００及び周波数特性算出部３００のうちの一つ又は両方は機械学習部４００内に設けてもよい。周波数特性算出部３００、機械学習部４００及び初期設定部５００は機械学習システムを構成する。周波数特性算出部３００、機械学習部４００及び初期設定部５００はそれぞれを独立した装置として設けてもよく、１つの装置としてしてもよい。また、周波数特性算出部３００、機械学習部４００及び初期設定部５００のうちの１つと、残りの２つとで２つの装置を構成してもよい。いずれの場合も機械学習システムを構成する。
【００２１】
サーボ制御部１００は、減算器１１０、速度制御部１２０、フィルタ１３０、電流制御部１４０、及びサーボモータ１５０を備えている。減算器１１０、速度制御部１２０、フィルタ１３０、電流制御部１４０、及びサーボモータ１５０は速度フィードバックループを構成する。モータとなるサーボモータ１５０は、以下の説明では回転運動をするモータとして説明するが、直線運動をするリニアモータであってもよい。
【００２２】
減算器１１０は、入力された速度指令と速度フィードバックされた検出速度との差を求め、その差を速度偏差として速度制御部１２０に出力する。
【００２３】
速度制御部１２０は、速度偏差に積分ゲインＫ１ｖを乗じて積分した値と、速度偏差に比例ゲインＫ２ｖを乗じた値とを加算して、トルク指令としてフィルタ１３０に出力する。
【００２４】
フィルタ１３０は特定の周波数成分を減衰させるフィルタで、例えばノッチフィルタ又はローパスフィルタが用いられる。モータで駆動される工作機械等の機械では共振点が存在し、サーボ制御部１００で共振が増大する場合がある。その場合、例えば、ノッチフィルタを用いることで共振を低減することができる。フィルタ１３０の出力はトルク指令として電流制御部１４０に出力される。
数式１（以下に数１として示す）は、フィルタ１３０の伝達関数Ｆ(ｓ)を示す。数式１の係数ａｉ、ｂｊ(０≦ｉ≦ｍ，０≦ｊ≦ｎ、ｍ，ｎは自然数である)の最適値は機械学習部４００で機械学習される。
【数１】
2020119295.tif 000003
【００２５】
電流制御部１４０はトルク指令に基づいてサーボモータ１５０を駆動するための電流指令を生成し、その電流指令をサーボモータ１５０に出力する。
サーボモータ１５０の回転角度位置は、サーボモータ１５０に設けられたロータリーエンコーダ（図示せず）によって検出され、速度検出値は速度フィードバックとして減算器１１０に入力される。
以上のようにサーボ制御部１００は構成されるが、フィルタの最適なパラメータを機械学習するために、制御装置１０は、周波数生成部２００、周波数特性算出部３００、機械学習部４００及び初期設定部５００を更に備える。
【００２６】
周波数生成部２００は、周波数を変化させながら正弦波信号を速度指令として、サーボ制御部１００の減算器１１０及び周波数特性算出部３００に出力する。速度指令はサーボ制御部１００への入力信号となる。
【００２７】
周波数特性算出部３００は、速度指令（正弦波）と、ロータリーエンコーダ（図示せず）から出力された出力信号となる検出速度（正弦波）とを用いて、速度指令により規定される各周波数ごとに、入力信号と出力信号（入出力）との振幅比（入出力ゲイン）と位相遅れとを求める。図２は入力信号となる速度指令と出力信号となる検出速度とを示す図である。図３は入力信号と出力信号との振幅比と、位相遅れとの周波数特性を示す図である。
図２に示すように、周波数生成部２００から出力された速度指令は周波数が変化し、図３に示すような、入出力ゲイン（振幅比）と位相遅れについての周波数特性が得られる。
【００２８】
機械学習部４００は、周波数特性算出部３００から出力される入出力ゲイン（振幅比）と位相遅れを用いて、フィルタ１３０の伝達関数Ｆ（ｓ）の係数ａｉ、ｂｊを機械学習（以下、学習という）する。機械学習部４００による学習は出荷前に行われるが、出荷後に再学習を行ってもよい。
【００２９】
初期設定部５００は、機械学習部４００による学習の開始時又は開始前にフィルタ１３０の伝達関数Ｆ（ｓ）の係数の初期値を設定する。初期値が設定されたフィルタ１３０を初期フィルタと呼ぶ。初期値の係数は、共振周波数を抑制するように設定される。共振周波数を抑制するようにフィルタ１３０の係数の初期値を設定するのは、機械的な共振点があると、加振により大きな振動が発生して検出速度等のデータが測定できなくなる可能性があるからである。
フィルタの係数の初期値を設定する方法は、例えば、特開２０１６−０３４２２４号公報に記載のサーボモータ制御装置、及び特開２０１７−０２２８５５号公報に記載のサーボ制御装置に開示されたフィルタの調整方法を用いることができる。
【００３０】
特開２０１６−０３４２２４号公報に記載のサーボモータ制御装置は、正弦波生成部が正弦波外乱値を生成し、周波数応答算出部が正弦波外乱値を速度制御ループへ入力したときの周波数応答を算出する。そして、共振周波数検出部が周波数応答の利得が極大となる共振周波数を検出し、共振周波数比較部が共振周波数に基づいて工作機械の剛性を測定し、共振周波数に対してフィルタを調整する。
【００３１】
特開２０１７−０２２８５５号公報に記載のサーボ制御装置においては、正弦波外乱入力部が速度制御ループへの正弦波掃引を行い、周波数特性算出部が速度制御ループの出力から、速度制御ループ入出力信号の利得と位相を推定する。そして、周波数特性算出部が、正弦波外乱入力部からの外乱入力周波数を基本周波数とした、任意の項数からなるフーリエ級数によって速度制御ループの出力を表現し、そのフーリエ級数の基本波成分の振幅と位相を算出することで周波数特性を算出する。その後、共振周波数検出部は、周波数特性から共振周波数を検出し、フィルタ調整部は、検出した共振周波数に応じてフィルタを調整する。
【００３２】
係数が初期値も設定されたフィルタ１３０の周波数特性は共振点が１つの場合は、図４に示す周波数特性となる。
【００３３】
周波数特性算出部３００は、学習の開始時又は開始前に初期設定部５００で係数が設定されたフィルタ１３０を用いたサーボ制御部１１で得られた検出速度と速度指令とを用いて、入出力ゲインと位相遅れの周波数特性を算出する。しかし、この周波数特性は初期設定部５００による初期設定がされないときのフィルタを用いたときの周波数特性ではない。そこで、機械学習部４００は学習の開始時には初期設定部５００で設定されたフィルタ１３０のフィルタ特性を除去したときの周波数特性を求め、求めた周波数特性に対してフィルタ１３０の係数の学習を行う。周波数特性算出部３００は、学習の開始後は、機械学習部４００により係数が設定されたフィルタ１３０を用いて得られた検出速度と速度指令とを用いて周波数特性を算出する。
【００３４】
初期設定部５００で係数が設定されたフィルタ１３０（初期フィルタ）のフィルタ特性を除去する方法は、例えば次のように行われる。
サーボ制御部１００は、初期設定部５００で係数が設定されたフィルタ１３０を用いてサーボ制御を行い検出速度と速度指令とを得る。周波数特性算出部３００は、サーボ制御部１００から得られた検出速度（出力）と速度指令（入力）を用いて、数式２（以下に数２として示す）で示されるサーボ制御部１００の伝達関数Ｌ１（ｓ）の機械モデル（係数ｃｉ、ｄｊは０≦ｉ≦ｍ，０≦ｊ≦ｎ、ｍ，ｎは自然数である)を生成する。
【数２】
2020119295.tif 000004
周波数特性算出部３００は、周波数ω[rad]＝２πｆ[Hz]のとき、ｓ＝j・ω（ｊは複素関数）を代入して、
ゲイン＝｜Ｌ１（ｊω）｜
位相＝∠Ｌ１（ｊω）
を求めて、周波数毎にプロットして周波数特性を求める。
【００３５】
一方、機械学習部４００は初期設定部５００で設定されたフィルタ１３０（初期フィルタ）の伝達関数を記憶している。この伝達関数は例えば、数式３（以下に数３として示す）で示される伝達関数Ｈ（ｓ）である。伝達関数Ｈ（ｓ）はノッチフィルタの伝達関数となる。
数式３において、係数ｋは減衰係数、係数ωｃは中心角周波数、係数τは比帯域である。中心周波数をｆｃ、帯域幅をｆｗとすると、係数ωｃはωｃ＝２πｆｃ、係数τはτ＝ｆｗ／ｆｃで表される。数式３の伝達関数Ｈ（ｓ）は、数式１の伝達関数Ｆ（ｓ）の係数ａｉ、ｂｊにおいて、ａ０、ｂ０＝ωｃ２、ａ１＝２τωｃ、ｂ１＝２ｋτωｃ、ａ２＝１、ｂ２＝１、ａ３〜ａｍ＝０、ｂ３〜ｂｎ＝０とすることで得ることができる。
【数３】
2020119295.tif 000005
機械学習部４００は、数式３を用いて、周波数毎のゲインと位相を求めて、これらを伝達関数Ｌ１（ｓ）の機械モデルを用いて得られた周波数特性に加えて、初期設定部５００で設定されたフィルタ１３０（初期フィルタ）のフィルタ特性が除かれた周波数特性を得る。
【００３６】
ここで、初期設定部５００で設定されたフィルタ１３０のフィルタ特性が除かれたサーボ制御部１００の伝達関数をＬ０（ｓ）とすると、Ｌ０（ｓ）＋Ｈ（ｓ）＝Ｌ１（ｓ）となるので、Ｌ０（ｓ）＝Ｌ１（ｓ）−Ｈ（ｓ）となる。
周波数ω[rad]＝２πｆ[Hz]のとき、ｓ＝j・ω（ｊは複素関数）を代入して、
ゲイン＝｜Ｌ１（ｊω）−Ｈ（ｊω）｜
位相＝∠（Ｌ１（ｊω）−Ｈ（ｊω））
を求めて、周波数毎にプロットして周波数特性を求める。
【００３７】
以下、初期設定部５００及びフィルタ１３０の動作について図５を用いて説明する。
図５は、初期設定部５００及びフィルタ１３０の動作を説明するための概念図である。
図５に示す、初期フィルタ５０３は係数が初期値に設定されたフィルタ１３０、フィルタ５０２は学習中のフィルタ１３０に対応する。初期フィルタ５０３の係数は共振周波数を抑制するように、例えば数式３の伝達関数Ｈ（ｓ）の係数のように設定される。機械学習部４００による学習開始時には切換部５０１、５０４により、速度制御部１２０と電流制御部１４０との間に初期フィルタ５０３が接続されてサーボ制御が行われる。周波数特性算出部３００は、初期フィルタ５０３を用いたサーボ制御で得られた検出速度と速度指令とを用いて、数式２の伝達関数Ｌ１（ｓ）により入出力ゲインと位相遅れの周波数特性を算出する。その後に、機械学習部４００は、Ｌ０（ｓ）＝Ｌ１（ｓ）−Ｈ（ｓ）より求められる伝達関数Ｌ０（ｓ）によりフィルタ特性を除去したときの周波数特性を求めて学習を行う。学習開始後は切換部５０１、５０４により、速度制御部１２０と電流制御部１４０との間にフィルタ５０２が接続されてサーボ制御が行われる。  このように、学習の開始時には共振周波数を抑制するように係数が設定された初期フィルタ５０３が用いられる。図１に示した制御装置１０に対応させると、初期フィルタ５０３は、初期設定部５００がフィルタ１０３の初期値として共振周波数を抑制する係数を設定することに対応する。  なお、実際に図５の構成を採用すると、図１の構成に比べて、フィルタの数が１つ増え、２つの切換部を挿入するために、実装が複雑になり、コストがアップする。しかし、実装の複雑さ及びコストアップが許容されるならば、図１に示した初期設定部及びフィルタの構成の替わり図５の構成を採用することも可能である。
以下、機械学習部４００の構成及び動作の詳細について更に説明する。
【００３８】
＜機械学習部４００＞
以下の説明では機械学習部４００が強化学習を行う場合について説明するが、機械学習部４００が行う学習は特に強化学習に限定されず、例えば、教師あり学習を行う場合にも本発明は適用可能である。
【００３９】
機械学習部４００に含まれる各機能ブロックの説明に先立って、まず強化学習の基本的な仕組みについて説明する。エージェント（本実施形態における機械学習部４００に相当）は、環境の状態を観測し、ある行動を選択し、当該行動に基づいて環境が変化する。環境の変化に伴って、何らかの報酬が与えられ、エージェントはより良い行動の選択（意思決定）を学習する。
教師あり学習が、完全な正解を示すのに対して、強化学習における報酬は、環境の一部の変化に基づく断片的な値であることが多い。このため、エージェントは、将来にわたっての報酬の合計を最大にするように行動を選択するように学習する。
【００４０】
このように、強化学習では、行動を学習することにより、環境に行動が与える相互作用を踏まえて適切な行動を学習、すなわち将来的に得られる報酬を最大にするための学習する方法を学ぶ。これは、本実施形態において、例えば、機械端の振動を抑制するための行動情報を選択するという、未来に影響をおよぼすような行動を獲得できることを表している。
【００４１】
ここで、強化学習としては、任意の学習方法を用いることができるが、以下の説明では、或る環境の状態Ｓの下で、行動Ａを選択する価値Ｑ（Ｓ，Ａ）を学習する方法であるＱ学習（Q-learning）を用いる場合を例にとって説明をする。
Ｑ学習では、或る状態Ｓのとき、取り得る行動Ａのなかから、価値Ｑ（Ｓ，Ａ）の最も高い行動Ａを最適な行動として選択することを目的とする。
【００４２】
しかしながら、Ｑ学習を最初に開始する時点では、状態Ｓと行動Ａとの組合せについて、価値Ｑ（Ｓ，Ａ）の正しい値は全く分かっていない。そこで、エージェントは、或る状態Ｓの下で様々な行動Ａを選択し、その時の行動Ａに対して、与えられる報酬に基づいて、より良い行動の選択をすることにより、正しい価値Ｑ（Ｓ，Ａ）を学習していく。
【００４３】
また、将来にわたって得られる報酬の合計を最大化したいので、最終的にＱ（Ｓ，Ａ）＝Ｅ［Σ（γｔ）ｒｔ］となるようにすることを目指す。ここでＥ［］は期待値を表し、ｔは時刻、γは後述する割引率と呼ばれるパラメータ、ｒｔは時刻ｔにおける報酬、Σは時刻ｔによる合計である。この式における期待値は、最適な行動に従って状態変化した場合の期待値である。しかしＱ学習の過程において最適な行動が何であるのかは不明であるので、様々な行動を行うことにより、探索しながら強化学習をする。このような価値Ｑ（Ｓ，Ａ）の更新式は、例えば、次の数式４（以下に数４として示す）により表すことができる。
【００４４】
【数４】
2020119295.tif 000006
【００４５】
上記の数式４において、Ｓｔは、時刻ｔにおける環境の状態を表し、Ａｔは、時刻ｔにおける行動を表す。行動Ａｔにより、状態はＳｔ＋１に変化する。ｒｔ＋１は、その状態の変化により得られる報酬を表している。また、ｍａｘの付いた項は、状態Ｓｔ＋１の下で、その時に分かっている最もＱ値の高い行動Ａを選択した場合のＱ値にγを乗じたものになる。ここで、γは、０＜γ≦１のパラメータで、割引率と呼ばれる。また、αは、学習係数で、０＜α≦１の範囲とする。
【００４６】
上述した数式４は、試行Ａｔの結果、返ってきた報酬ｒｔ＋１を元に、状態Ｓｔにおける行動Ａｔの価値Ｑ（Ｓｔ，Ａｔ）を更新する方法を表している。
この更新式は、状態Ｓｔにおける行動Ａｔの価値Ｑ（Ｓｔ，Ａｔ）よりも、行動Ａｔによる次の状態Ｓｔ＋１における最良の行動の価値ｍａｘａ  Ｑ（Ｓｔ＋１，Ａ）の方が大きければ、Ｑ（Ｓｔ，Ａｔ）を大きくし、逆に小さければ、Ｑ（Ｓｔ，Ａｔ）を小さくすることを示している。つまり、或る状態における或る行動の価値を、それによる次の状態における最良の行動の価値に近づける。ただし、その差は、割引率γと報酬ｒｔ＋１のあり方により変わってくるが、基本的には、ある状態における最良の行動の価値が、それに至る一つ前の状態における行動の価値に伝播していく仕組みになっている。
【００４７】
ここで、Ｑ学習では、すべての状態行動ペア（Ｓ，Ａ）についてのＱ（Ｓ，Ａ）のテーブルを作成して、学習を行う方法がある。しかし、すべての状態行動ペアのＱ（Ｓ，Ａ）の値を求めるには状態数が多すぎて、Ｑ学習が収束するのに多くの時間を要してしまう場合がある。
【００４８】
そこで、公知のＤＱＮ（Deep Q-Network）と呼ばれる技術を利用するようにしてもよい。具体的には、価値関数Ｑを適当なニューラルネットワークを用いて構成し、ニューラルネットワークのパラメータを調整することにより、価値関数Ｑを適当なニューラルネットワークで近似することにより価値Ｑ（Ｓ，Ａ）の値を算出するようにしてもよい。ＤＱＮを利用することにより、Ｑ学習が収束するのに要する時間を短くすることが可能となる。なお、ＤＱＮについては、例えば、以下の非特許文献に詳細な記載がある。
【００４９】
＜非特許文献＞
「Human-level control through deep reinforcement learning」、Volodymyr Mnih1著［ｏｎｌｉｎｅ］、［平成２９年１月１７日検索］、インターネット〈ＵＲＬ：http://files.davidqiu.com/research/nature14236.pdf〉
【００５０】
以上説明をしたＱ学習を機械学習部４００が行う。具体的には、機械学習部４００は、フィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊの値、周波数特性算出部３００から出力された入出力ゲイン（振幅比）と位相遅れを状態Ｓとして、当該状態Ｓに係る、フィルタ１３０の伝達関数の各係数ａｉ、ｂｊの値の調整を行動Ａとして選択する価値Ｑを学習する。学習の開始時には、初期設定部５００はフィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊを伝達関数Ｈ（ｓ）の各係数に設定し、機械学習部４００は初期設定部５００で設定されたフィルタ１３０のフィルタ特性を除去して学習を行う。したがって、フィルタ特性を除去したときの入出力ゲイン（振幅比）と位相遅れが状態Ｓとなる。
【００５１】
学習の開始後には、サーボ制御部１００は、機械学習部４００により設定されたフィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊに基づいて、前述した周波数が変化する正弦波である速度指令を用いてサーボ制御を行う。機械学習部４００は、サーボ制御部１００を駆動することで周波数特性算出部３００から得られた、各周波数ごとの入出力ゲイン（振幅比）と位相遅れとを含む状態情報Ｓを観測して、行動Ａを決定する。機械学習部４００は、行動Ａをするたびに報酬が返ってくる。機械学習部４００は、例えば、将来にわたっての報酬の合計が最大になるように最適な行動Ａを試行錯誤的に探索する。そうすることで、機械学習部４００は、フィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊに基づいて、周波数が変化する正弦波である速度指令を用いてサーボ制御部１００を駆動する。そして機械学習部４００は、周波数特性算出部３００から得られた、各周波数ごとの入出力ゲイン（振幅比）と位相遅れとを含む状態Ｓに対して、最適な行動Ａ（すなわち、フィルタ１３０の伝達関数Ｆ（ｓ）の最適な係数ａｉ、ｂｊ）を選択することが可能となる。
【００５２】
すなわち、機械学習部４００は、学習された価値関数Ｑに基づいて、或る状態Ｓに係るフィルタ１３０の伝達関数の各係数ａｉ、ｂｊに対して適用される行動Ａのうち、Ｑの値が最大となるような行動Ａを選択する。こうすることで、機械学習部４００は、加工プログラムを実行することで生ずる機械端の振動が最小になるような行動Ａ（すなわち、フィルタ１３０の伝達関数の各係数ａｉ、ｂｊ）を選択することが可能となる。
【００５３】
図６は一実施形態の機械学習部４００を示すブロック図である。
上述した強化学習を行うために、図６に示すように、機械学習部４００は、状態情報取得部４０１、学習部４０２、行動情報出力部４０３、価値関数記憶部４０４、及び最適化行動情報出力部４０５を備える。
【００５４】
状態情報取得部４０１は、フィルタ特性除去部４０１１を備えている。フィルタ特性除去部４０１１には初期設定部５００で設定されたフィルタ１３０の伝達関数Ｈ（ｓ）が記憶されている。
学習の開始時又は開始前に、初期設定部５００はフィルタ１３０の伝達関数を伝達関数Ｈ（ｓ）に設定する。そして、周波数特性算出部３００は、伝達関数Ｈ（ｓ）のフィルタ１３０を用いて得られた検出速度と速度指令とを用いて、サーボ制御部１００の伝達関数Ｌ１（ｓ）により入出力ゲイン（振幅比）と位相遅れの周波数特性を算出する。
この周波数特性は初期設定部５００による初期設定がされないときのフィルタ１３０を用いたときの周波数特性ではない。そこで、状態情報取得部４０１は学習開始時には、フィルタ特性除去部４０１１を用いて、伝達関数Ｌ０（ｓ）（Ｌ０（ｓ）＝Ｌ１（ｓ）−Ｈ（ｓ））によって、伝達関数Ｈ（ｓ）のフィルタ１３０のフィルタ特性を除去したときの、入出力ゲイン（振幅比）と位相遅れの周波数特性を求める。この周波数特性が状態Ｓとなる。
例えば、図７に、フィルタ特性を付加した周波数特性と、フィルタ特性を除いた周波数特性の一例を示す。図７において、曲線ＲＣ１はフィルタ特性を付加したサーボ制御部１００の周波数特性を示す曲線、曲線ＲＣ２はフィルタ特性を除いたサーボ制御部１００の周波数特性を示す曲線である。
なお、フィルタ特性除去部４０１１は機械学習部４００の状態情報取得部４０１内でなく、周波数特性算出部３００内に設けられてもよい。
【００５５】
状態情報取得部４０１は、学習開始後の学習中は機械学習部４００により設定したフィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊに基づいて、速度指令（正弦波）を用いてサーボモータ１５０を駆動することで得られた、入出力ゲイン（振幅比）と位相遅れとを含む状態Ｓを周波数特性算出部３００から取得する。この入出力ゲインは学習開始後の伝達関数Ｆ（ｓ）のフィルタを有するサーボ制御部１００の伝達関数Ｌ（ｓ）を用いて算出された入出力ゲインである。周波数特性算出部３００は、サーボ制御部１００から得られた検出速度（出力）と速度指令（入力）を用いて、サーボ制御部１００の伝達関数Ｌ（ｓ）の機械モデルを生成する。この状態Ｓは、Ｑ学習における、環境状態Ｓに相当する。
状態情報取得部４０１は、取得した状態Ｓを学習部４０２に対して出力する。
【００５６】
学習部４０２は、或る環境状態Ｓの下で、ある行動Ａを選択する場合の価値Ｑ（Ｓ，Ａ）を学習する部分である。学習部４０２は報酬出力部４０２１、価値関数更新部４０２２、及び行動情報生成部４０２３を備える。
【００５７】
報酬出力部４０２１は、或る状態Ｓの下で、行動Ａを選択した場合の報酬を算出する部分である。
報酬出力部４０２１は、フィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊを修正した場合において算出した入出力ゲインＧを、予め設定した規範モデルの各周波数ごとの入出力ゲインＧｂと比較する。なお、入出力ゲインＧは、前述したサーボ制御部１００の伝達関数Ｌ（ｓ）を用いて算出された入出力ゲインである。
報酬出力部４０２１は、算出した入出力ゲインＧが規範モデルの入出力ゲインＧｂよりも大きい場合には、負の報酬を与える。一方、報酬出力部４０２１は、算出した入出力ゲインＧが規範モデルの入出力ゲインＧｂ以下である場合には、位相遅れが小さくなるときは正の報酬を与え、位相遅れが大きくなるときは負の報酬を与え、位相遅れが変わらないときはゼロの報酬を与える。
【００５８】
まず、報酬出力部４０２１が、算出した入出力ゲインＧが規範モデルの入出力ゲインＧｂよりも大きい場合に、負の報酬を与える動作について図８及び図９を用いて説明する。
報酬出力部４０２１は、入出力ゲインの規範モデルを保存している。規範モデルは、共振のない理想的な特性を有するサーボ制御部のモデルである。規範モデルは、例えば、図８に示すモデルのイナーシャＪａ、トルク定数Ｋｔ、比例ゲインＫｐ、積分ゲインＫＩ、微分ゲインＫＤから計算で求めることができる。イナーシャＪａはモータイナーシャと機械イナーシャとの加算値である。
【００５９】
図９は、規範モデルのサーボ制御部と、学習前及び学習後のサーボ制御部１００の入出力ゲインの周波数特性を示す特性図である。図９の特性図に示すように、規範モデルは、一定の入出力ゲイン以上、例えば、−２０ｄＢ以上での理想的な入出力ゲインとなる周波数領域である領域Ａと、一定の入出力ゲイン未満となる周波数領域である領域Ｂとを備えている。図９の領域Ａにおいて、規範モデルの理想的な入出力ゲインを曲線ＭＣ１（太線）で示す。図９の領域Ｂにおいて、規範モデルの理想的な仮想入出力ゲインを曲線ＭＣ１１(破線の太線）で示し、規範モデルの入出力ゲインを一定値として直線ＭＣ１2(太線)で示す。図９の領域Ａ及びＢにおいて、学習前及び学習後のサーボ制御部の入出力ゲインの曲線を曲線ＲＣ２、ＲＣ３で示す。
【００６０】
報酬出力部４０２１は、領域Ａでは、算出した入出力ゲインの曲線ＲＣ２が規範モデルの理想的な入出力ゲインの曲線ＭＣ１を超えた場合は第１の負の報酬を与える。
入出力ゲインが十分小さくなる周波数を超える領域Ｂでは、入出力ゲインの曲線ＲＣ２が規範モデルの理想的な仮想入出力ゲインの曲線ＭＣ１1を超えたとしても安定性への影響が小さくなる。そのため領域Ｂでは、上述したように、規範モデルの入出力ゲインは理想的なゲイン特性の曲線ＭＣ１1ではなく、一定値の入出力ゲイン（例えば、−２０ｄＢ）の直線ＭＣ１2を用いる。しかし、学習前の算出した入出力ゲインの曲線ＲＣ２が一定値の入出力ゲインの直線ＭＣ１2を超えた場合には不安定になる可能性があるため、報酬として第１の負の値を与える。
【００６１】
次に、報酬出力部４０２１が、算出した入出力ゲインＧが規範モデルの入出力ゲインＧｂ以下である場合に、位相遅れの情報に基づいて報酬を決める動作について説明する。
以下の説明において、状態情報Ｓに係る状態変数である位相遅れをＤ（Ｓ）、行動情報Ａ（フィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊの修正）により状態Ｓから変化した状態Ｓ´に係る状態変数である位相遅れをＤ（Ｓ´）で示す。
【００６２】
報酬出力部４０２１が、位相遅れの情報に基づいて報酬を決める方法は、例えば、以下の３つがある。
第１の方法は、状態Ｓから状態Ｓ´となった場合に、位相遅れが１８０度となる周波数が大きくなるか、小さくなるか、又は同じになるかで報酬を決める方法である。ここでは、位相遅れが１８０度の場合を取り上げたが、特に１８０度に限定されず他の値であってもよい。
例えば、位相遅れが図３に示した位相線図で示されたときに、状態Ｓから状態Ｓ´となった場合に、位相遅れが１８０度となる周波数が小さくなるように（図３のＸ２方向に）曲線が変わると、位相遅れは大きくなる。一方、状態Ｓから状態Ｓ´となった場合に、位相遅れが１８０度となる周波数が大きくなるように（図３のＸ１方向に）曲線が変わると、位相遅れが小さくなる。
【００６３】
よって、状態Ｓから状態Ｓ´となった場合に、位相遅れが１８０度となる周波数が小さくなったとき、位相遅れＤ（Ｓ）＜位相遅れＤ（Ｓ´）と定義して、報酬出力部４０２１は、報酬の値を第２の負の値とする。なお第２の負の値の絶対値は第１の負の値よりも小さくする。
一方で、状態Ｓから状態Ｓ´となった場合に、位相遅れが１８０度となる周波数が大きくなったとき、位相遅れＤ（Ｓ）＞位相遅れＤ（Ｓ´）と定義して、報酬出力部４０２１は、報酬の値を正の値とする。
また、状態Ｓから状態Ｓ´となった場合に、位相遅れが１８０度となる周波数が変わらないとき、位相遅れＤ（Ｓ）＝位相遅れＤ（Ｓ´）と定義して、報酬出力部４０２１は、報酬の値をゼロの値とする。
【００６４】
第２の方法は、状態Ｓから状態Ｓ´となった場合に、入出力ゲインが０ｄＢにクロスするときの位相遅れの絶対値が大きくなるか、小さくなるか、又は同じになるかで報酬を決める方法である。
例えば、状態Ｓにおける、入力ゲインが図３に示したゲイン線図で示されたときに、０ｄＢにクロスする点（以下、「ゼロクロス点」という）に対応する、図３に示した位相線図の位相遅れは−９０度となる。
【００６５】
状態Ｓから状態Ｓ´となった場合に、ゼロクロス点の位相遅れの絶対値が大きくなったとき、位相遅れＤ（Ｓ）＜位相遅れＤ（Ｓ´）と定義して、報酬出力部４０２１は、報酬の値を第２の負の値とする。
一方で、状態Ｓから状態Ｓ´となった場合に、ゼロクロス点の位相遅れの絶対値が小さくなったときには、位相遅れＤ（Ｓ）＞位相遅れＤ（Ｓ´）と定義して、報酬出力部４０２１は、報酬の値を正の値とする。
また、状態Ｓから状態Ｓ´となった場合に、ゼロクロス点の位相遅れの絶対値が変わらないとき、位相遅れＤ（Ｓ）＝位相遅れＤ（Ｓ´）として、報酬出力部４０２１は、報酬の値をゼロの値とする。
【００６６】
第３の方法は、状態Ｓから状態Ｓ´となった場合に、位相余裕が大きくなるか、小さくなるか、又は同じになるかで報酬を決める方法である。位相余裕とは、ゲインが０ｄＢのとき、位相が−１８０度から何度あるかを示したものが位相余裕である。例えば、図３では、ゲインが０ｄＢのとき、位相が−９０度なので、位相余裕は９０度となる。
状態Ｓから状態Ｓ´となった場合に、位相余裕が小さくなったとき、位相遅れＤ（Ｓ）＜位相遅れＤ（Ｓ´）と定義して、報酬出力部４０２１は、報酬の値を第２の負の値とする。
一方で、状態Ｓから状態Ｓ´となった場合に、位相余裕が大きくなったときには、位相遅れＤ（Ｓ）＞位相遅れＤ（Ｓ´）と定義して、報酬出力部４０２１は、報酬の値を正の値とする。
また、状態Ｓから状態Ｓ´となった場合に、位相余裕が変わらないときには、位相遅れＤ（Ｓ）＝位相遅れＤ（Ｓ´）と定義して、報酬出力部４０２１は、報酬の値をゼロの値とする。
【００６７】
なお、行動Ａを実行後の状態Ｓ´の位相遅れＤ（Ｓ´）が、前の状態Ｓにおける位相遅れＤ（Ｓ）より大きくなったと定義した場合の負の値としては、比率に応じて負の値を大きくするようにしてもよい。例えば、上述した第１の方法において、周波数が小さくなった度合いに応じて負の値が大きくなるようにするとよい。逆に、行動Ａを実行後の状態Ｓ´の位相遅れＤ（Ｓ´）が、前の状態Ｓにおける位相遅れＤ（Ｓ）より小さくなったと定義した場合の正の値としては、比率に応じて正の値を大きくするようにしてもよい。例えば、上述した第１の方法において、周波数が大きくなった度合いに応じて正の値が大きくなるようにするとよい。
【００６８】
価値関数更新部４０２２は、状態Ｓと、行動Ａと、行動Ａを状態Ｓに適用した場合の状態Ｓ´と、上記のようにして算出された報酬の値と、に基づいてＱ学習を行うことにより、価値関数記憶部４０４が記憶する価値関数Ｑを更新する。
価値関数Ｑの更新は、オンライン学習で行ってもよく、バッチ学習で行ってもよく、ミニバッチ学習で行ってもよい。
オンライン学習は、或る行動Ａを現在の状態Ｓに適用することにより、状態Ｓが新たな状態Ｓ´に遷移する都度、即座に価値関数Ｑの更新を行う学習方法である。また、バッチ学習は、或る行動Ａを現在の状態Ｓに適用することにより、状態Ｓが新たな状態Ｓ´に遷移することを繰り返すことにより、学習用のデータを収集し、収集した全ての学習用データを用いて、価値関数Ｑの更新を行う学習方法である。更に、ミニバッチ学習は、オンライン学習と、バッチ学習の中間的な、ある程度学習用データが溜まるたびに価値関数Ｑの更新を行う学習方法である。
【００６９】
行動情報生成部４０２３は、現在の状態Ｓに対して、Ｑ学習の過程における行動Ａを選択する。行動情報生成部４０２３は、Ｑ学習の過程において、フィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊを修正する動作（Ｑ学習における行動Ａに相当）を行わせるために、行動情報Ａを生成して、生成した行動情報Ａを行動情報出力部４０３に対して出力する。
より具体的には、行動情報生成部４０２３は、例えば、状態Ｓに含まれるフィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊに対して行動Ａに含まれる、フィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊをインクレメンタルに加算又は減算させる。
【００７０】
そして、行動情報生成部４０２３は、フィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊの増加又は減少を適用して、状態Ｓ´に遷移して、プラスの報酬（正の値の報酬）が返った場合、次の行動Ａ´としては、フィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊに対して、前回のアクションと同様にインクレメンタルに加算又は減算させる等、算出した位相遅れが前回の位相遅れよりも小さくなるように行動Ａ´を選択する方策を取るようにしてもよい。
【００７１】
また、逆に、マイナスの報酬（負の値の報酬）が返った場合、行動情報生成部４０２３は、次の行動Ａ´としては、例えば、フィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊに対して、前回のアクションとは逆にインクレメンタルに減算又は加算させる等、算出した入出力ゲインが規範モデルの入出力ゲインよりも大きい場合には前回よりも入力ゲインの差がより小さくなるように、又は算出した位相遅れが前回の位相遅れよりも小さくなるように行動Ａ´を選択する方策を取るようにしてもよい。
【００７２】
なお、各係数ａｉ、ｂｊは全てを修正してもよいが、一部の係数を修正してもよい。例えば、フィルタ１３０の伝達関数Ｆ(ｓ)が数式３に示すようなノッチフィルタの伝達関数として学習されていく場合、共振を生ずる中心周波数ｆｃは見つけやすく、中心周波数ｆｃは特定しやすい。そこで、行動情報生成部４０２３は、中心周波数ｆｃを仮に固定して、帯域幅ｆｗ及び減衰係数ｋを修正、すなわち、係数ωｃ（＝２πｆｃ）を固定し、係数τ（＝ｆｗ／ｆｃ）と及び減衰係数ｋを修正する動作を行わせてもよい。具体的には、数式１の伝達関数Ｆ（ｓ）の係数ａｉ、ｂｊにおいて、ａ０、ｂ０＝ωｃ２、ａ１＝２τωｃ、ｂ１＝２ｋτωｃ、ａ２＝１、ｂ２＝１、ａ３〜ａｍ＝０、ｂ３〜ｂｎ＝０とする。その場合、ａ０、ｂ０を固定し、ａ１、ｂ１を修正するように行動情報Ａを生成して、生成した行動情報Ａを行動情報出力部４０３に対して出力してもよい。
なお、フィルタ１３０の特性は図１０に示すように、フィルタ１３０の帯域幅ｆｗによって、ゲイン及び位相が変わる。図１０において、破線は帯域幅ｆｗが大きい場合を示し、実線は帯域幅ｆｗが小さい場合を示す。また、フィルタ１３０の特性は図１１に示すように、フィルタ１３０の減衰係数ｋによって、ゲイン及び位相が変わる。図１１において、破線は減衰係数ｋが小さい場合を示し、実線は減衰係数ｋが大きい場合を示す。
【００７３】
また、行動情報生成部４０２３は、現在の推定される行動Ａの価値の中で、最も価値Ｑ（Ｓ，Ａ）の高い行動Ａ´を選択するグリーディ法や、ある小さな確率εでランダムに行動Ａ´選択し、それ以外では最も価値Ｑ（Ｓ，Ａ）の高い行動Ａ´を選択するεグリーディ法といった公知の方法により、行動Ａ´を選択する方策を取るようにしてもよい。
【００７４】
行動情報出力部４０３は、学習部４０２から出力される行動情報Ａをフィルタ１３０に対して送信する部分である。フィルタ１３０は上述したように、この行動情報に基づいて、現在の状態Ｓ、すなわち現在設定されている各係数ａｉ、ｂｊを微修正することで、次の状態Ｓ´（すなわち修正された、フィルタ１３０の各係数）に遷移する。
【００７５】
価値関数記憶部４０４は、価値関数Ｑを記憶する記憶装置である。価値関数Ｑは、例えば状態Ｓ、行動Ａ毎にテーブル（以下、行動価値テーブルと呼ぶ）として格納してもよい。価値関数記憶部４０４に記憶された価値関数Ｑは、価値関数更新部４０２２により更新される。また、価値関数記憶部４０４に記憶された価値関数Ｑは、他の機械学習部４００との間で共有されるようにしてもよい。価値関数Ｑを複数の機械学習部４００で共有するようにすれば、各機械学習部４００にて分散して強化学習を行うことが可能となるので、強化学習の効率を向上させることが可能となる。
【００７６】
最適化行動情報出力部４０５は、価値関数更新部４０２２がＱ学習を行うことにより更新した価値関数Ｑに基づいて、価値Ｑ（Ｓ，Ａ）が最大となる動作をフィルタ１３０に行わせるための行動情報Ａ（以下、「最適化行動情報」と呼ぶ）を生成する。
より具体的には、最適化行動情報出力部４０５は、価値関数記憶部４０４が記憶している価値関数Ｑを取得する。この価値関数Ｑは、上述したように価値関数更新部４０２２がＱ学習を行うことにより更新したものである。そして、最適化行動情報出力部４０５は、価値関数Ｑに基づいて、行動情報を生成し、生成した行動情報をフィルタ１３０に対して出力する。この最適化行動情報には、行動情報出力部４０３がＱ学習の過程において出力する行動情報と同様に、フィルタ１３０の伝達関数の各係数ａｉ、ｂｊを修正する情報が含まれる。
【００７７】
フィルタ１３０では、この行動情報に基づいて伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊが修正される。
機械学習部４００は、以上の動作で、フィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊの最適化を行い、機械端の振動を抑制するように動作することができる。
以上のように、本発明に係る機械学習部４００を利用することで、フィルタ１３０のパラメータ調整を簡易化することができる。
【００７８】
以上、制御装置１０に含まれる機能ブロックについて説明した。
これらの機能ブロックを実現するために、制御装置１０は、ＣＰＵ（Central Processing Unit）等の演算処理装置を備える。また、制御装置１０は、アプリケーションソフトウェアやＯＳ（Operating System）等の各種の制御用プログラムを格納したＨＤＤ（Hard Disk Drive）等の補助記憶装置や、演算処理装置がプログラムを実行する上で一時的に必要とされるデータを格納するためのＲＡＭ（Random Access Memory）といった主記憶装置も備える。
【００７９】
そして、制御装置１０において、演算処理装置が補助記憶装置からアプリケーションソフトウェアやＯＳを読み込み、読み込んだアプリケーションソフトウェアやＯＳを主記憶装置に展開させながら、これらのアプリケーションソフトウェアやＯＳに基づいた演算処理を行なう。また、この演算結果に基づいて、各装置が備える各種のハードウェアを制御する。これにより、本実施形態の機能ブロックは実現される。つまり、本実施形態は、ハードウェアとソフトウェアが協働することにより実現することができる。
【００８０】
機械学習部４００については機械学習に伴う演算量が多いため、例えば、パーソナルコンピュータにＧＰＵ（Graphics Processing Units）を搭載し、ＧＰＧＰＵ（General-Purpose computing on Graphics Processing Units）と呼ばれる技術により、ＧＰＵを機械学習に伴う演算処理に利用するようにすると高速処理できるようになるのでよい。更には、より高速な処理を行うために、このようなＧＰＵを搭載したコンピュータを複数台用いてコンピュータ・クラスターを構築し、このコンピュータ・クラスターに含まれる複数のコンピュータにて並列処理を行うようにしてもよい。
【００８１】
次に、図１２のフローチャートを参照して本実施形態におけるＱ学習時の機械学習部４００の動作について説明をする。
【００８２】
ステップＳ１１において、状態情報取得部４０１がサーボ制御部１００及び周波数特性算出部３００から最初の状態情報Ｓを取得する。
【００８３】
最初にＱ学習を開始する時点での状態Ｓ０における入出力ゲイン（振幅比）Ｇ（Ｓ０）、及び位相遅れＤ（Ｓ０）は、周波数が変化する正弦波である速度指令を用いて、フィルタ１３０の伝達関数が伝達関数Ｈ（ｓ）であるサーボ制御部１００を駆動することで、周波数特性算出部３００から得られる。速度指令と検出速度は周波数特性算出部３００に入力され、周波数特性算出部３００から出力される入出力ゲイン（振幅比）Ｇ（Ｓ０）、及び位相遅れＤ（Ｓ０）が、状態情報取得部４０１に最初の状態情報として入力される。周波数特性算出部３００は、状態Ｓ０における、サーボ制御部１００の数式２に示した伝達関数Ｌ１（ｓ）に基づいて、入出力ゲイン（振幅比）Ｇ（Ｓ０）、及び位相遅れＤ（Ｓ０）を、算出する。初期設定部５００で設定されるフィルタ１３０の伝達関数Ｈ（ｓ）の各係数ωｃ、τ、ｋは、状態情報取得部４０１へ最初の状態情報として送られる。既に説明したように、数式１の伝達関数Ｆ（ｓ）のａ０、ｂ０＝ωｃ２、ａ１＝２τωｃ、ｂ１＝２ｋτωｃ、ａ２＝１、ｂ２＝１、ａ３〜ａｍ＝０、ｂ３〜ｂｍ＝０とすることで、数式３の伝達関数Ｈ（ｓ）を得ることができる。
ステップＳ１２において、状態情報取得部４０１は、フィルタ特性除去部４０１１を用いて、初期設定部５００で設定されたフィルタ１３０のフィルタ特性を除去したときの、状態Ｓ０における、入出力ゲイン（振幅比）、及び位相遅れの周波数特性を求める。求めた入出力ゲイン（振幅比）、及び位相遅れは、報酬出力部４０２１及び行動情報生成部４０２３に対して出力される。上述したように、この状態情報Ｓは、Ｑ学習における状態に相当する情報である。
【００８４】
ステップＳ１３において、行動情報生成部４０２３は新たな行動情報Ａを生成し、生成した新たな行動情報Ａを、行動情報出力部４０３を介してフィルタ１３０に対して出力する。行動情報生成部４０２３は前述した方策に基づいて、新たな行動情報Ａを出力する。なお、行動情報Ａを受信したサーボ制御部１００は、受信した行動情報に基づいて現在の状態Ｓに係るフィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊを修正した状態Ｓ´により、周波数が変化する正弦波である速度指令を用いてサーボモータ１５０を駆動する。上述したように、この行動情報は、Ｑ学習における行動Ａに相当するものである。なお、学習開始時の状態Ｓ０ではフィルタ１３０の伝達関数は、伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊが伝達関数Ｈ（ｓ）の各係数に設定されており、学習開始時の状態Ｓ０後の次の状態Ｓ´では行動情報生成部４０２３は、伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊを伝達関数Ｈ（ｓ）の各係数から修正する。
【００８５】
ステップＳ１４において、状態情報取得部４０１は、新たな状態Ｓ´における、入出力ゲイン（振幅比）Ｇ(Ｓ´）、及び位相遅れＤ（Ｓ´）及びフィルタ１３０から伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊを新たな状態情報として取得する。取得した新たな状態情報は、報酬出力部４０２１に対して出力される。
【００８６】
ステップＳ１５において、報酬出力部４０２１は、状態Ｓ´における各周波数の入出力ゲインＧ（Ｓ´）が、規範モデルの各周波数の入出力ゲインＧｂ以下かどうかを判断する。各周波数の入出力ゲインＧ（Ｓ´）が、規範モデルの各周波数の入出力ゲインＧｂより大きければ（ステップＳ１５のＮＯ）、ステップＳ１６において、報酬出力部４０２１は、報酬を第１の負の値とし、ステップＳ１３に戻る。
【００８７】
報酬出力部４０２１は、状態Ｓ´における各周波数の入出力ゲインＧ（Ｓ´）が、規範モデルの各周波数の入出力ゲインＧｂ以下であれば（ステップＳ１５のＹＥＳ）、位相遅れＤ（Ｓ´）が位相遅れＤ（Ｓ）と比べて小さくなるときは正の報酬を与え、位相遅れＤ（Ｓ´）が位相遅れＤ（Ｓ）と比べて大きくなるときは負の報酬を与え、位相遅れＤ（Ｓ´）が位相遅れＤ（Ｓ）と比べて変わらないときはゼロの報酬を与える。前述したように位相遅れが小さくなるように報酬を決める方法は例えば３つの方法が挙げられるが以下の例では第１の方法を取り上げて説明する。なお、状態Ｓは学習開始時においては状態Ｓ０となる。
ステップＳ１７において、具体的には、例えば、図３の位相線図において、状態Ｓから状態Ｓ´となった場合に、位相遅れが１８０度のときの周波数が小さくなったときには、位相遅れＤ（Ｓ）＜位相遅れＤ（Ｓ´）と定義して、報酬出力部４０２１は、ステップＳ１８で、報酬の値を第２の負の値とする。なお第２の負の値の絶対値は第１の負の値よりも小さくする。状態Ｓから状態Ｓ´となった場合に、位相遅れが１８０度のときの周波数が大きくなったときには、位相遅れＤ（Ｓ）＞位相遅れＤ（Ｓ´）と定義して、報酬出力部４０２１は、ステップＳ１９で報酬の値を正の値とする。また、状態Ｓから状態Ｓ´となった場合に、位相遅れが１８０度のときの周波数が変わらないときには、位相遅れＤ（Ｓ）＝位相遅れＤ（Ｓ´）と定義して、報酬出力部４０２１は、ステップＳ２０で報酬の値をゼロの値とする。
【００８８】
ステップＳ１８、ステップＳ１９及びステップＳ２０の何れかが終了すると、ステップＳ２１において、この何れかのステップにて算出された報酬の値に基づいて、価値関数更新部４０２２が、価値関数記憶部４０４に記憶している価値関数Ｑを更新する。そして、再度ステップＳ１１に戻り、上述した処理を繰り返すことにより、価値関数Ｑは適切な値に収束していく。なお、上述した処理を、所定回数繰り返したことや、所定時間繰り返したことを条件として処理を終了するようにしてもよい。
なお、ステップＳ２１はオンライン更新を例示しているが、オンライン更新に替えてバッチ更新又はミニバッチ更新に置き換えてもよい。
【００８９】
以上、図１２を参照して説明した動作により、本実施形態では、機械学習部４００を利用することで、フィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊの調整のための、適切な価値関数を得ることができ、フィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊの最適化を簡易化することができる、という効果を奏する。
次に、図１３のフローチャートを参照して、最適化行動情報出力部４０５による最適化行動情報の生成時の動作について説明をする。
まず、ステップＳ２１において、最適化行動情報出力部４０５は、価値関数記憶部４０４に記憶している価値関数Ｑを取得する。価値関数Ｑは、上述したように価値関数更新部４０２２がＱ学習を行うことにより更新したものである。
【００９０】
ステップＳ２２において、最適化行動情報出力部４０５は、この価値関数Ｑに基づいて、最適化行動情報を生成し、生成した最適化行動情報をフィルタ１３０に対して出力する。
【００９１】
また、図１３を参照して説明した動作により、本実施形態では、機械学習部４００により学習することにより求められる価値関数Ｑに基づいて、最適化行動情報を生成し、この最適化行動情報に基づいて、現在設定されているフィルタ１３０の伝達関数Ｆ（ｓ）の各係数ａｉ、ｂｊの調整を簡易化するとともに、機械端の振動を抑制し、ワークの加工面の品位を向上させることができる。
【００９２】
上記の制御装置に含まれる各構成部は、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。また、上記の制御装置に含まれる各構成部のそれぞれの協働により行なわれるサーボ制御方法も、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【００９３】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ(Read Only Memory)、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ(Programmable ROM)、ＥＰＲＯＭ(Erasable PROM)、フラッシュＲＯＭ、ＲＡＭ(random access memory）)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。
【００９４】
上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【００９５】
上述した実施形態では、サーボモータ１５０により駆動される機械に１つの共振点がある場合について説明したが、機械に複数の共振点がある場合もある。機械に複数の共振点がある場合には、各共振点に対応するようにフィルタを複数個設けて、直列に接続することで、すべての共振を減衰させることができる。図１４は複数のフィルタを直接接続してフィルタを構成した例を示すブロック図である。図１４において、ｍ個（ｍは２以上の自然数）の共振点がある場合に、フィルタ１３０は、ｍ個のフィルタ１３０−１〜１３０−ｍを直列接続して構成する。ｍ個のフィルタ１３０−１〜１３０−ｍのそれぞれの係数ａｉ、ｂｊについて、順次、共振点を減衰させる最適値を機械学習により求めていく。
【００９６】
また、上述した実施形態では、周波数特性算出部が、サーボ制御装置における、周波数が変わる入力信号と出力信号とに基づいて、サーボ制御装置の入出力ゲインと入出力の位相遅れの両方を算出し、フィルタ特性除去部が入出力ゲインと入出力の位相遅れの両方から初期フィルタのフィルタ特性を除去し、機械学習部が初期フィルタのフィルタ特性が除去された、入出力ゲインと前記位相遅れの両方が低下するようにフィルタの係数の機械学習を開始した例について説明した。しかし、上述した実施形態において、周波数特性算出部が、サーボ制御装置における、周波数が変わる入力信号と出力信号とに基づいて、サーボ制御装置の入出力ゲインと入出力の位相遅れの一方を算出し、フィルタ特性除去部が入出力ゲインと入出力の位相遅れの一方から初期フィルタのフィルタ特性を除去し、機械学習部が初期フィルタのフィルタ特性が除去された、入出力ゲインと位相遅れの一方が低下するようにフィルタの係数の機械学習を開始してもよい。
【００９７】
また、制御装置の構成は図１の構成以外にも以下の構成がある。
＜機械学習部がサーボ制御部の外部に設けられた変形例＞
図１５は制御装置の他の構成例を示すブロック図である。図１５に示す制御装置１０Ａが、図１に示した制御装置１０と異なる点は、ｎ（ｎは２以上の自然数）個のサーボ制御部１００Ａ−１〜１００Ａ−ｎが、ネットワーク６００を介してｎ個の機械学習部４００Ａ−１〜４００Ａ−ｎに接続されていること、及びそれぞれ周波数生成部２００と周波数特性算出部３００と初期設定部５００とを備えていることである。機械学習部４００Ａ−１〜４００Ａ−ｎは図６に示した機械学習部４００と同じ構成を有している。サーボ制御部１００Ａ−１〜１００Ａ−ｎはそれぞれサーボ制御装置に対応しており、また機械学習部４００Ａ−１〜４００Ａ−ｎはそれぞれ機械学習装置に対応している。なお、周波数生成部２００と周波数特性算出部３００と初期設定部５００とのいずれか又は複数をサーボ制御部１００Ａ−１〜１００Ａ−ｎの外に設けてもよいことは勿論である。
【００９８】
ここで、サーボ制御部１００Ａ−１と、機械学習部４００Ａ−１とは１対１の組とされて、通信可能に接続されている。サーボ制御部１００Ａ−２〜１００Ａ−ｎと、機械学習部４００Ａ−２〜４００Ａ−ｎについてもサーボ制御部１００Ａ−１と機械学習部４００Ａ−１と同様に接続される。図１５では、サーボ制御部１００Ａ−１〜１００Ａ−ｎと、機械学習部４００Ａ−１〜４００Ａ−ｎとのｎ個の組は、ネットワーク６００を介して接続されているが、サーボ制御部１００Ａ−１〜１００Ａ−ｎと、機械学習部４００Ａ−１〜４００Ａ−ｎとのｎ個の組は、それぞれの組のサーボ制御部と機械学習部とが接続インタフェースを介して直接接続されてもよい。これらサーボ制御部１００Ａ−１〜１００Ａ−ｎと機械学習部４００Ａ−１〜４００Ａ−ｎとのｎ個の組は、例えば同じ工場に複数組設置されていてもよく、それぞれ異なる工場に設置されていてもよい。
【００９９】
なお、ネットワーク６００は、例えば、工場内に構築されたＬＡＮ（Local Area Network）や、インターネット、公衆電話網、或いは、これらの組み合わせである。ネットワーク６００における具体的な通信方式や、有線接続および無線接続のいずれであるか等については、特に限定されない。
【０１００】
＜システム構成の自由度＞
上述した実施形態では、サーボ制御部１００Ａ−１〜１００Ａ−ｎと、機械学習部４００Ａ−１〜４００Ａ−ｎとはそれぞれ１対１の組とされて通信可能に接続されているが、例えば１台の機械学習部が複数のサーボ制御部とネットワーク６００を介して通信可能に接続され、各サーボ制御部の機械学習を実施するようにしてもよい。
その際、１台の機械学習部の各機能を、適宜複数のサーバに分散する、分散処理システムとしてもよい。また、クラウド上で仮想サーバ機能等を利用して、１台の機械学習部の各機能を実現してもよい。
【０１０１】
また、ｎ台の同じ型名、同一仕様、又は同一シリーズのサーボ制御部１００Ａ−１〜１００Ａ−ｎとそれぞれ対応するｎ個の機械学習部４００Ａ−１〜４００Ａ−ｎがあった場合に、各機械学習部４００Ａ−１〜４００Ａ−ｎにおける学習結果を共有するように構成するようにしてもよい。そうすることで、より最適なモデルを構築することが可能となる。
【符号の説明】
【０１０２】
１０、１０Ａ  制御装置
１００、１００−１〜１００−ｎ  サーボ制御部
１１０  減算器
１２０  速度制御部
１３０  フィルタ
１４０  電流制御部
１５０  サーボモータ
２００  周波数生成部
３００  周波数特性算出部
４００  機械学習部
４００Ａ−１〜４００Ａ−ｎ  機械学習部
４０１  状態情報取得部
４０２  学習部
４０３  行動情報出力部
４０４  価値関数記憶部
４０５  最適化行動情報出力部
５００  初期設定部
６００  ネットワーク
【図１】
2020119295.tif 000007
【図２】
2020119295.tif 000008
【図３】
2020119295.tif 000009
【図４】
2020119295.tif 000010
【図５】
2020119295.tif 000011
【図６】
2020119295.tif 000012
【図７】
2020119295.tif 000013
【図８】
2020119295.tif 000014
【図９】
2020119295.tif 000015
【図１０】
2020119295.tif 000016
【図１１】
2020119295.tif 000017
【図１２】
2020119295.tif 000018
【図１３】
2020119295.tif 000019
【図１４】
2020119295.tif 000020
【図１５】
2020119295.tif 000021