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