(57)【要約】【課題】駆動部を有する装置に関する学習を、より簡便に行う。【解決手段】プログラム生成装置４００は、加工プログラム記憶領域４０３と、学習用プログラム生成部４０５とを備える。加工プログラム記憶領域４０３は、工作機械、ロボット、又は産業機械のモータ２０１、モータ２０２を動作させるための加工プログラムを記憶する。学習用プログラム生成部４０５は、加工プログラム記憶領域４０３が記憶する前記加工プログラムから、特徴的な要素を含む一部の加工プログラムを抜き出すことにより、前記モータの動作特性に基づいた学習をするための学習用プログラムを生成する。【選択図】図１
2019181635.tif 000002
【特許請求の範囲】
【請求項１】
工作機械、ロボット、又は産業機械のモータを動作させるための加工プログラムを記憶する記憶部と、
前記記憶部が記憶する前記加工プログラムから、特徴的な要素を含む一部の加工プログラムを抜き出すことにより、前記モータの動作特性に基づいた学習をするための学習用プログラムを生成する生成部と、
を備える情報処理装置。
【請求項２】
前記生成部の生成した学習用プログラムに基づいて前記モータを動作させ、該モータの動作特性に基づいた学習をする学習部と、
前記学習部による学習結果に基づいて、前記モータの制御パラメータを調整する調整部を更に備える請求項１に記載の情報処理装置。
【請求項３】
前記生成部は、前記特徴的な要素を含む一部の加工プログラムとして、
モータ速度の反転を伴う動作を前記モータに行わせるための加工プログラム、停止から動作への切り換え及び動作から停止への切り換えを伴う動作を前記モータに行わせるための加工プログラム、及びモータ速度の反転を伴わない加速度変化のある動作を前記モータに行わせるための加工プログラムの、少なくとも何れかを含む加工プログラムを抜き出す請求項１又は２に記載の情報処理装置。
【請求項４】
前記生成部は、前記特徴的な要素を含む一部の加工プログラムとして、
前記モータを動作させた場合に、位置偏差が閾値を超える動作を前記モータに行わせる加工プログラムを抜き出す請求項１又は２に記載の情報処理装置。
【請求項５】
前記生成部は、前記モータを前記加工プログラムに基づいて動作させた結果に基づいて、前記位置偏差が閾値を超えるか否かを判定する請求項４に記載の情報処理装置。
【請求項６】
前記生成部は、前記特徴的な要素を含む一部の加工プログラムとして、
位置偏差の変化を時系列に沿って示す情報、又は、前記モータの動作における移動軌跡の情報、を参照したユーザから指定された一部の加工プログラムを抜き出す請求項１又は２に記載の情報処理装置。
【請求項７】
前記生成部の抜き出した前記一部の加工プログラムを表示する表示部を更に備える請求項１から請求項６までの何れか１項に記載の情報処理装置。
【請求項８】
コンピュータが行う情報処理方法であって、
工作機械、ロボット、又は産業機械のモータを動作させるための加工プログラムを記憶する記憶ステップと、
前記記憶ステップにて記憶する前記加工プログラムから、特徴的な要素を含む一部の加工プログラムを抜き出すことにより、前記モータの動作特性に基づいた学習をするための学習用プログラムを生成する判定ステップと、
を前記コンピュータが行う情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習に関する情報処理を行う、情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
従来、工作機械、ロボット、及び産業機械といった駆動部を有する装置の動作特性を、機械学習によって学習することが行われている。機械学習の学習結果に基づいた制御を行うことにより、これら装置をより適切に制御することが可能となる。
このような機械学習に関する技術が、例えば、特許文献１に開示されている。この特許文献１に開示の技術では、円弧、多角形、又はそれらの組み合わせからなる加工形状を加工する制御システムにおいて、サンプリング周期毎に検出されたサーボモータの位置フィードバックと、位置指令との偏差等に基づいて学習制御を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−５８８２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、例えば、上述したような位置偏差等に基づいた機械学習は、ワークの加工に実際に使用する加工プログラムそのものを用いて行うことが望ましい。
しかしながら、ワークの加工に実際に使用する加工プログラムを繰り返し動作させて学習するには多くの時間を要してしまう。また、ワークの加工に実際に使用する加工プログラムのデータ量が多い場合には、学習を行うために、大容量のメモリ等を用意する必要がある。
【０００５】
本発明は、このような状況に鑑みてなされたものであり、駆動部を有する装置に関する学習を、より簡便に行うための、情報処理装置及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
（１）  本発明に係る情報処理装置（例えば、後述のプログラム生成装置４００）は、工作機械、ロボット、又は産業機械のモータ（例えば、後述のモータ２０１、モータ２０２）を動作させるための加工プログラムを記憶する記憶部（例えば、後述の加工プログラム記憶領域４０３）と、前記記憶部が記憶する前記加工プログラムから、特徴的な要素を含む一部の加工プログラムを抜き出すことにより、前記モータの動作特性に基づいた学習をするための学習用プログラムを生成する生成部（例えば、後述の学習用プログラム生成部４０５）と、を備える。
【０００７】
（２）  上記（１）に記載の情報処理装置を、前記生成部の生成した学習用プログラムに基づいて前記モータを動作させ、該モータの動作特性に基づいた学習をする学習部（例えば、後述の学習部３０２）と、前記学習部による学習結果に基づいて、前記モータの制御パラメータを調整する調整部（例えば、後述の最適化行動情報出力部３０５）を更に備えるようにしてもよい。
【０００８】
（３）  上記（１）又は（２）に記載の情報処理装置を、前記生成部は、前記特徴的な要素を含む一部の加工プログラムとして、モータ速度の反転を伴う動作を前記モータに行わせるための加工プログラム、停止から動作への切り換え及び動作から停止への切り換えを伴う動作を前記モータに行わせるための加工プログラム、及びモータ速度の反転を伴わない加速度変化のある動作を前記モータに行わせるための加工プログラムの、少なくとも何れかを含む加工プログラムを抜き出すようにしてもよい。
【０００９】
（４）  上記（１）又は（２）に記載の情報処理装置を、前記生成部は、前記特徴的な要素を含む一部の加工プログラムとして、前記モータを動作させた場合に、位置偏差が閾値を超える動作を前記モータに行わせる加工プログラムを抜き出すようにしてもよい。
【００１０】
（５）  上記（４）に記載の情報処理装置を、前記生成部は、前記モータを前記加工プログラムに基づいて動作させた結果に基づいて、前記位置偏差が閾値を超えるか否かを判定するようにしてもよい。
【００１１】
（６）  上記（１）又は（２）に記載の情報処理装置を、前記生成部は、前記特徴的な要素を含む一部の加工プログラムとして、位置偏差の変化を時系列に沿って示す情報、又は、前記モータの動作における移動軌跡の情報、を参照したユーザから指定された一部の加工プログラムを抜き出すようにしてもよい。
【００１２】
（７）  上記（１）から（６）までの何れか１に記載の情報処理装置を、前記生成部の抜き出した前記一部の加工プログラムを表示する表示部（例えば、後述のユーザインタフェース部４０６）を更に備えるようにしてもよい。
【００１３】
（８）本発明に係る情報処理方法は、コンピュータ（例えば、後述のプログラム生成装置４００）が行う情報処理方法であって、工作機械、ロボット、又は産業機械のモータ（例えば、後述のモータ２０１、モータ２０２）を動作させるための加工プログラムを記憶する記憶ステップと、前記記憶ステップにて記憶する前記加工プログラムから、特徴的な要素を含む一部の加工プログラムを抜き出すことにより、前記モータの動作特性に基づいた学習をするための学習用プログラムを生成する判定ステップと、を前記コンピュータが行う。
【発明の効果】
【００１４】
本発明によれば、駆動部を有する装置に関する学習を、より簡便に行うための、情報処理装置及び情報処理方法を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態の学習用プログラムにより動作するＣＮＣ装置の構成、モータ、機械学習装置、及びプログラム生成装置を示すブロック図である。
【図２】モータ制御部の一構成例を示すブロック図である。
【図３】プログラム生成装置の一構成例を示すブロック図である。
【図４】加工形状が、円弧（円）からなる形状である例を示す説明図である。
【図５】加工形状が、四角からなる形状である例を示す説明図である。
【図６】加工形状が、角Ｒ付き四角からなる形状である例を示す説明図である。
【図７】加工形状が、一部の角（かど）を円弧とした八角形からなる形状である第１の構成例を示す説明図である。
【図８】加工形状が、図７に示した第１の構成例の一部の角（かど）を円弧とした八角形を半分にした形状をそれぞれ端部に有する十字形からなる形状である第２の構成例を示す説明図である。
【図９】加工形状が、角Ｒ付き十字形からなる形状である第３の構成例を示す説明図である。
【図１０】加工形状が、凸状の円弧と凹状の円弧とで構成される十字形からなる形状である第４の構成例を示す説明図である。
【図１１】加工形状が、星形からなる形状である第５の構成例を示す説明図である。
【図１２】加工プログラムから抜き出した部分についてのハイライト表示の一例を示す模式図である。
【図１３】ＣＮＣ装置の他の構成例の一部の構成を示すブロック図である。
【図１４】第１の実施形態の機械学習装置３００を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について図面を用いて詳細に説明する。
本実施形態では、工作機械、ロボット、又は産業機械のモータを動作させるための加工プログラムから、特徴的な要素を含む一部の加工プログラムを抜き出すことにより、モータの動作特性に基づいた学習をするための学習用プログラムを生成する。
また、本実施形態では、加工プログラムそのものではなく、このように特徴的な要素を含むようにして生成された学習用プログラムを用いて学習をする。例えば、学習用プログラムを、制御装置となるＣＮＣ（Computerized Numerical Control）装置で動作させ、モータをフィードフォワード制御することで、フィードフォワード制御に係る制御パラメータについて学習をする。
【００１７】
本実施形態では、このように特徴的な要素を含むようにした学習用プログラムを生成して学習を行うことから、ワークの加工に実際に使用する加工プログラムそのもので学習する場合と比べて、短時間で、より多くの学習を行うことができる。また、加工プログラムよりもデータ量が少ない学習用プログラムを用いることから、学習を行うために必要なメモリの容量を削減することができる。
つまり、本実施形態によれば、駆動部（ここでは、一例としてモータ）を有する装置に関する学習を、より簡便に行うことができる。
【００１８】
＜システム構成＞
上述した学習用プログラムの生成についての説明に先立って、学習用プログラムにより動作するＣＮＣ装置を含むシステム全体の構成についてまず説明する。
図１は本発明の一実施形態に係る、ＣＮＣ装置１００の構成、モータ２０１、モータ２０２、機械学習装置３００、及びプログラム生成装置４００を示すブロック図である。
ＣＮＣ装置１００、機械学習装置３００、及びプログラム生成装置４００は、相互に通信可能に接続される。また、ＣＮＣ装置１００には、制御対象となるモータ２０１、モータ２０２に対して電流指令値（トルク指令値）を出力可能に、モータ２０１、モータ２０２が接続される。
なお、本実施形態では、機械学習装置３００が速度フィードフォワードに係る制御パラメータの調整（学習）を行う場合を例に取って説明する。ただし、これは一例に過ぎず、本実施形態は、他の制御パラメータの調整（学習）場合にも適用できる。例えば、位置フィードフォワードに係る制御パラメータ、静摩擦に係る制御パラメータ、及び反転時のバックラッシに係る制御パラメータ等の調整（学習）にも本実施形態を適用することができる。
【００１９】
＜ＣＮＣ装置１００、モータ２０１及びモータ２０２＞
ＣＮＣ装置１００は、記憶部１０１、数値制御情報処理部１０２、及びサーボ制御装置を構成するモータ制御部１０３、モータ制御部１０４を備える。ＣＮＣ装置１００は、モータ制御部１０３によりモータ２０１を制御し、モータ制御部１０４によりモータ２０２を制御する。
ＣＮＣ装置１００は工作機械、ロボット又は産業機械等に用いられるが、本実施形態では工作機械に用いる場合を例に取って説明する。
【００２０】
記憶部１０１は、加工プログラムを記憶する。この加工プログラムは、切削加工やレーザービーム加工等の加工によって、実際にワークを加工するためのプログラムである。加工プログラムは、設計者が、ＣＡＤ（Computer Aided Design）やＣＡＭ（Computer Aided Manufacturing）を利用して生成し、記憶部１０１に格納する。
【００２１】
数値制御情報処理部１０２は、ワーク加工時には、記憶部１０１から加工プログラムを読み出して、読み出した加工プログラムを実行する。具体的に、数値制御情報処理部１０２は、加工プログラムにより指定される加工形状となるように、加工プログラム中に含まれるコードに基づいて、軸方向の移動距離、送り速度等を設定し、Ｘ軸及びＹ軸の位置指令値を作成する。
【００２２】
また、数値制御情報処理部１０２は、学習時には、プログラム生成装置４００から入力される学習用プログラムを読み出して、読み出した学習用プログラムを実行する。具体的に、数値制御情報処理部１０２は、学習用プログラムに基づいて、軸方向の移動距離、送り速度等を設定し、Ｘ軸及びＹ軸の位置指令値を作成する。
【００２３】
そして、ワーク加工時、及び学習時の双方において、数値制御情報処理部１０２は、生成したＸ軸の位置指令値を、モータ制御部１０３に対して出力する。更に、数値制御情報処理部１０２は、生成したＹ軸の位置指令値を、モータ制御部１０４に対して出力する。
【００２４】
モータ制御部１０３はＸ軸の位置指令値と、モータ２０１からフィードバックされる位置検出値とに基づいて電流指令値（トルク指令値）を作成してモータ２０１に出力する。
モータ制御部１０４はＹ軸の位置指令値と、モータ２０２からフィードバックされる位置検出値とに基づいて電流指令値（トルク指令値）を作成してモータ２０２に出力する。
【００２５】
モータ２０１、モータ２０２は、それぞれモータ制御部１０３、モータ制御部１０４から入力された電流指令値（トルク指令値）に基づいて回転する。
モータ２０１、モータ２０２には、それぞれボールネジが接続されている。モータ２０１、モータ２０２に接続された２つのボールネジはモータ２０１、モータ２０２の回転運動を直線運動に換えてテーブルをＸ軸方向及びＹ軸方向に駆動する。
これにより、モータ２０１は、加工対象となるワークを搭載するテーブルをＸ軸方向に駆動する。また、モータ２０２は、加工対象となるワークを搭載するテーブルをＹ軸方向に駆動する。
【００２６】
なお、ここでは制御される軸がＸ軸とＹ軸との２軸の場合について説明するが、これは一例に過ぎず、制御される軸が３軸以上であってもよい。制御される軸が３軸以上ある場合は軸の数に応じた数のモータが更に設けられる。また、モータ制御部の数も、モータの数に対応して更に設けられる。また、モータ２０１、モータ２０２としては、例えば、サーボモータ又はスピンドルモータを用いることができる。
【００２７】
モータ２０１、モータ２０２に関連付けられた、位置検出部（例えば、ロータリーエンコーダ）によって、モータ２０１、モータ２０２の回転角度位置が検出され、検出された信号は速度フィードバックされる速度検出値として利用される。速度検出値は積分され、位置フィードバックされる位置検出値として利用される。
【００２８】
モータ制御部１０３、モータ制御部１０４の、より具体的な構成について図２を参照して説明する。以下では、モータ制御部１０３を例にとって説明するが、モータ制御部１０４も同様な構成を備えている。そのため、モータ制御部１０４についての重複する説明は省略する。
図２はモータ制御部１０３の一構成例を示すブロック図である。図２に示すように、モータ制御部１０３は、減算器１００１、位置制御部１００２、加算器１００３、減算器１００４、速度制御部１００５、加算器１００６、積分器１００７、位置フィードフォワード計算部１００８、及び速度フィードフォワード計算部１００９を備えている。
【００２９】
数値制御情報処理部１０２は、加工プログラムや、後述の学習用プログラム中に含まれるコードに基づいて位置指令値を作成し、位置指令値を減算器１００１と位置フィードフォワード計算部１００８に出力する。
【００３０】
減算器１００１は、位置指令値と位置フィードバックされた位置検出値との差を求め、その差を位置偏差として位置制御部１００２に出力する。学習時には、位置偏差は機械学習装置３００にも出力される。学習用プログラムによる学習後に、加工プログラムを動作する場合には位置偏差は機械学習装置３００に出力しない。
【００３１】
位置制御部１００２は、位置偏差にポジションゲインＫｐを乗じた値を、速度指令値として加算器１００３に出力する。位置フィードフォワード計算部１００８は位置指令値を微分してフィードフォワード係数を掛けた値を、加算器１００３と速度フィードフォワード計算部１００９に出力する。
【００３２】
加算器１００３は、速度指令値と位置フィードフォワード計算部１００８の出力値とを加算して、フィードフォワード制御された速度指令値として減算器１００４に出力する。減算器１００４は加算器１００３の出力と速度フィードバックされた速度検出値との差を求め、その差を速度偏差として速度制御部１００５に出力する。
【００３３】
速度制御部１００５は、速度偏差に積分ゲインＫ１ｖを乗じて積分した値と、速度偏差に比例ゲインＫ２ｖを乗じた値とを加算して、トルク指令値として加算器１００６に出力する。
【００３４】
速度フィードフォワード計算部１００９は、例えば数式１（以下に数１として示す）で示す伝達関数Ｇｆ（ｓ）で示される速度フィードフォワード計算処理を行い加算器１００６に出力する。
【数１】
2019181635.tif 000003
【００３５】
加算器１００６は、トルク指令値と速度フィードフォワード計算部１００９の出力値とを加算して、加算器１００６に出力する。加算器１００６は加算値を電流指令値（トルク指令値）としてモータ２０１に出力する。
【００３６】
モータ２０１の回転角度位置は、モータ２０１に関連付けられた、位置検出部となるロータリーエンコーダによって検出され、検出された信号は速度フィードバックされる速度検出値として利用される。速度検出値は積分器１００７で積分され、位置フィードバックされる位置検出値として利用される。
【００３７】
＜機械学習装置３００＞
本実施形態では、機械学習装置３００が、機械学習として強化学習を行う場合を例に取って説明する。ただし、これは一例に過ぎず、機械学習装置３００が、強化学習以外の機械学習を行うようにしてもよい。例えば、教師あり学習や、半教師あり学習等の機械学習を行うようにしてもよい。
機械学習装置３００が、機械学習として強化学習を行う場合、伝達関数Ｇｆ（ｓ）の次元を予め設定された値とし、各係数ａｉ、ｂｊ(ｉ，ｊ≧０)に任意の値を設定したうえで、学習用プログラムをＣＮＣ装置１００で動作させることにより、当該制御パラメータａｉ、ｂｊに係るＣＮＣ装置１００の制御で動作するモータ２０１、モータ２０２の動作特性を観測する。そうすることで、任意の値に設定された各係数ａｉ、ｂｊの集合の中から、学習用プログラムにより工作機械を動作させたときの工作機械の動作特性が最適となる係数ａｉ、ｂｊを機械学習装置３００により調整（学習）することができる。
このため、機械学習装置３００は、モータ２０１、モータ２０２からフィードバックされる位置検出値等を用いて、フィードフォワード補正のための制御パラメータａｉ、ｂｊを学習し、モータ制御部１０３、モータ制御部１０４に対して最適な制御パラメータを設定する。
【００３８】
より具体的には、機械学習装置３００は、制御パラメータａｉ、ｂｊ(ｉ，ｊ≧０)に基づいて、学習用プログラムを実行することで取得されるＣＮＣ装置１００の動作特性としての位置偏差情報を含む、指令及びフィードバック等のサーボ状態を含む状態情報Ｓを観測して、当該状態Ｓに係る制御パラメータａｉ、ｂｊの調整（行動Ａ）を行う。
【００３９】
行動情報Ａにより状態情報Ｓが状態情報Ｓ´に修正された場合、状態情報Ｓ´に係る修正後の制御パラメータａｉ´、ｂｊ´に基づいて動作したＣＮＣ装置１００の位置偏差の値が、行動情報Ａにより修正される前の状態情報Ｓに係る修正前の制御パラメータａｉ、ｂｊに基づいて動作したＣＮＣ装置１００の位置偏差の値よりも大きくなった場合に、報酬ｒの値を負の値とする。他方、行動情報Ａにより修正された状態情報Ｓ´に係る修正後の制御パラメータａｉ´、ｂｊ´に基づいて動作したＣＮＣ装置１００の位置偏差の値が、行動情報Ａにより修正される前の状態情報Ｓに係る修正前の制御パラメータａｉ、ｂｊに基づいて動作したＣＮＣ装置１００の位置偏差の値よりも小さくなった場合に、報酬ｒの値を正の値とする。
【００４０】
機械学習装置３００は、将来にわたっての報酬ｒの合計が最大になる最適な行動Ａを試行錯誤的に探索する。そうすることで、機械学習装置３００は、制御パラメータａｉ、ｂｊに基づいて、学習用プログラムを実行することで取得されるＣＮＣ装置１００の位置偏差情報を含む指令、フィードバック等のサーボ状態を含む状態Ｓに対して、最適な行動Ａ（すなわち、最適な制御パラメータａｉ、ｂｊ）を選択することが可能となる。
なお、機械学習装置３００による、機械学習については、後述の補足において、より詳細に説明する。
【００４１】
＜プログラム生成装置４００＞
図３は、プログラム生成装置４００の構成を示すブロック図である。図３に示すように、プログラム生成装置４００は、加工プログラム取得部４０１、記憶部４０２、加工プログラム記憶領域４０３、学習用プログラム記憶領域４０４、学習用プログラム生成部４０５、ユーザインタフェース部４０６、及び学習指示部４０７を備える。
プログラム生成装置４００は、上述したように、加工プログラムから、特徴的な要素を含む一部の加工プログラムを抜き出すことにより、モータ２０１、モータ２０２の動作特性に基づいた学習をするための学習用プログラムを生成する装置である。
【００４２】
加工プログラム取得部４０１は、記憶部１０１が記憶する加工プログラムを取得する。また、加工プログラム取得部４０１は、取得した加工プログラムを記憶部４０２に設けられている加工プログラム記憶領域４０３に記憶させる。
【００４３】
記憶部４０２は、加工プログラム記憶領域４０３及び学習用プログラム記憶領域４０４を有する記憶部である。記憶部４０２は、加工プログラム取得部４０１から入力された加工プログラムを加工プログラム記憶領域４０３に記憶する。また、記憶部４０２は、学習用プログラム生成部４０５が生成した学習用プログラムを学習用プログラム記憶領域４０４に記憶する。
【００４４】
学習用プログラム生成部４０５は、加工プログラム記憶領域４０３に記憶されている加工プログラムから、特徴的な要素を含む一部の加工プログラムを抜き出すことにより、モータ２０１、モータ２０２の動作特性に基づいた学習をするための学習用プログラムを生成する。また、学習用プログラム生成部４０５は、生成した学習用プログラムを学習用プログラム記憶領域４０４に記憶させる。
学習用プログラム生成部４０５による学習用プログラムの生成の詳細については、図４から図１１までを参照して後述する。
【００４５】
ユーザインタフェース部４０６は、プログラム生成装置４００を利用するユーザから操作を受け付けるためのユーザインタフェースを表示する機能を有する。また、ユーザインタフェース部４０６は、ユーザインタフェースを参照したユーザからの操作を受け付ける機能も有する。ユーザの操作は、例えば、学習用プログラムの生成指示や、生成した学習用プログラムを用いた機械学習の開始指示等である。ユーザインタフェース部４０６は、受け付けた操作内容を、学習用プログラム生成部４０５や学習指示部４０７に対して出力する。すると、学習用プログラム生成部４０５や学習指示部４０７は、入力された操作内容に応じた処理を行う。
【００４６】
学習指示部４０７は、機械学習装置３００による学習開始を指示する。具体的に、学習指示部４０７は、学習用プログラム記憶領域４０４に記憶されている学習用プログラムを読み出す。そして、学習指示部４０７は、読み出した学習用プログラムを数値制御情報処理部１０２に対して出力することにより、機械学習装置３００による学習開始を指示する。
【００４７】
学習用プログラムを入力された数値制御情報処理部１０２は、記憶部１０１が記憶している加工プログラムに代えて、入力された学習用プログラムに基づいてＸ軸及びＹ軸それぞれの位置指令値を生成する。そして、数値制御情報処理部１０２は、生成した位置指令を、モータ制御部１０３、モータ制御部１０４に対して出力する。これにより、モータ２０１、モータ２０２は、学習用プログラムに基づいた動作を開始する。また、このモータ２０１、モータ２０２の動作特性を示す情報（例えば、本実施形態では、位置偏差）が、機械学習装置３００に出力される。これにより、学習用プログラムに基づいた、機械学習装置３００による学習が実現される。
【００４８】
このようにして、特徴的な要素を含む一部加工プログラムから学習用プログラムを生成することにより、フィードフォワードに係る制御パラメータａｉ、ｂｊの調整のために観測する動作特性を追加することができる。そのため、フィードフォワードに係る制御パラメータａｉ、ｂｊをより正確かつ効率的に調整（学習）することができる。
【００４９】
＜学習用プログラムの生成＞
次に、学習用プログラム生成部４０５による学習用プログラムの生成の詳細について説明する。
学習用プログラム生成部４０５は、制御パラメータａｉ、ｂｊを調整（学習）するに際して、加工プログラムから、特徴的な要素を含む一部の加工プログラムを抜き出す。例えば、学習用プログラム生成部４０５は、特徴的な要素を含む一部の加工プログラムとして、例えば、モータ速度の反転を伴う動作を前記モータに行わせるための加工プログラム、停止から動作への切り換え及び動作から停止への切り換えを伴う動作を前記モータに行わせるための加工プログラム、及びモータ速度の反転を伴わない加速度変化のある動作を前記モータに行わせるための加工プログラムの、少なくとも何れかを含む加工プログラムを抜き出す。
このような特徴的な要素を含む一部の加工プログラムは、例えば、円弧、四角形、及びＲ付四角形の形状に加工する加工プログラムである。ここで、Ｒ付四角とは、角（かど）が、円弧状となっている四角形を意味する。
【００５０】
そして、学習用プログラム生成部４０５は、抜き出した加工プログラムを含むようにして学習用プログラムを生成する。
ここで、学習用プログラム生成部４０５は、抜き出した加工プログラムのみで、学習用プログラムを生成できる場合には、抜き出した加工プログラムのみで、学習用プログラムを生成する。
【００５１】
しかしながら、加工プログラムは、そもそもワークを加工するために作成されたものであり、その一部を抜き出して利用することを想定して作成されたものではない。そのため、抜き出した加工プログラムのみでは、適切にモータ２０１、モータ２０２を動作させて、学習を行うことができない場合がある。
そこで、このような場合には、学習用プログラム生成部４０５は、抜き出した加工プログラムを実行するために必要となる処理（以下「前処理」と称する。）及び抜き出した加工プログラムを実行した後に必要となる処理（以下「後処理」と称する。）を行うためのプログラムを、抜き出した加工プログラムに追加することにより、学習用プログラムを生成する。
【００５２】
前処理とは、例えば、抜き出した加工プログラムの開始位置に相当する位置まで、加工対象となるワークを搭載するテーブルをＸ軸方向及びＹ軸方向に駆動する処理である。また、前処理とは、例えば、工具を抜き出した加工プログラムを開始可能な状態とする処理である。
また、後処理とは、例えば、抜き出しを行う前の加工プログラムの終了位置に相当する位置まで、加工対象となるワークを搭載するテーブルをＸ軸方向及びＹ軸方向に駆動する処理である。また、後処理とは、例えば、工具を、抜き出しを行う前の加工プログラムの終了状態と同じ状態とする処理である。
【００５３】
次に、図４から図１１までを参照して、学習用プログラム生成部４０５が特徴的な要素を含む一部の加工プログラムとして、どのような加工プログラムを抜き出すのかを具体例を用いて説明する。なお、図４から図１１までは、加工プログラムに基づいた加工形状を図示する。この加工形状はモータ２０１、モータ２０２で駆動されるＸ軸及びＹ軸によって移動する制御対象となるワークの移動軌跡の形状に対応している。また、各図における加工は時計まわり方向に行われているものとする。ただし、時計回り方向の加工に加えて反時計回りの方向に行うようにしてもよい。
【００５４】
加工形状が円弧（円）の場合は、例えば、図４に示すＡ点で、テーブルをＸ軸方向に移動するサーボモータは回転方向が反転し、テーブルはＸ軸方向に直線反転するように移動する。すなわち、Ａ点は、モータ速度の反転を伴う特徴的な要素であるので、学習用プログラム生成部４０５は、Ａ点を含む加工形状（例えば、図中に破線で示す加工形状）となるようにワークの加工を行わせるための加工プログラムを、学習用プログラムを生成するために抜き出す。
【００５５】
加工形状が四角の場合は、例えば、図５に示すＢ点の角（かど）で、テーブルをＹ軸方向に移動するサーボモータは、停止から回転動作に移り、テーブルをＸ軸方向に移動するサーボモータは、回転から停止に移り、テーブルはＸ軸方向の直線動作からＹ軸方向の直線動作に移る。すなわち、Ｂ点は、停止から動作への切り換えを伴う特徴的な要素であるので、学習用プログラム生成部４０５は、Ｂ点を含む加工形状（例えば、図中に破線で示す加工形状）となるようにワークの加工を行わせるための加工プログラムを、学習用プログラムを生成するために抜き出す。
【００５６】
加工形状が角Ｒ付き四角の場合においても、例えば、図６に示すＣ１点で、テーブルをＹ軸方向に移動するサーボモータは、停止から回転動作に移り、テーブルはＸ軸方向の直線動作から円弧動作からに移る。また、図６に示すＣ２点で、テーブルをＸ軸方向に移動するサーボモータは、回転から停止動作に移り、テーブルは円弧動作からＹ軸方向の直線動作に移る。すなわち、Ｃ点は、停止から動作への切り換え及び動作から停止への切り換えを伴う特徴的な要素であるので、学習用プログラム生成部４０５は、Ｃ点を含む加工形状（例えば、図中に破線で示す加工形状）となるようにワークの加工を行わせるための加工プログラムを、学習用プログラムを生成するために抜き出す。
以上説明したように、指定される加工形状により、回転方向が反転したり、回転状態から停止したりする場合に生ずる惰走（惰性で動作する）を評価し、位置偏差に対する影響を調べることができる。
【００５７】
また、学習用プログラム生成部４０５は、これらの加工形状に加えて、例えば、２つのモータとも反転しない角（かど）における動作、停止から停止前と同じ方向に移動を開始する形状における動作、及び２つのモータとも反転する角（かど）における動作の特性を観測することができる加工形状に対応する加工プログラムから、一部の加工プログラムを抜き出すようにしてもよい。
例えば、図７から図１１までに示すような、加工形状に対応する加工プログラムから、一部の加工プログラムを抜き出すようにしてもよい。
【００５８】
加工形状が、一部の角（かど）を円弧とした八角形からなる形状である場合は、例えば、図７に示すＤ点で、円弧上での反転時の動作特性に加えて、速度が不連続に変化する。すなわち、Ｄ点は、モータ速度の反転や加速度変化の伴う特徴的な要素であるので、学習用プログラム生成部４０５は、Ｄ点を含む加工形状（例えば、図中に破線で示す加工形状）となるようにワークの加工を行わせるための加工プログラムを、学習用プログラムを生成するために抜き出す。
【００５９】
加工形状が、一部の角（かど）を円弧とした八角形を半分にした形状をそれぞれ端部に有する十字形からなる形状である場合は、例えば、図８に示すＥ点で、Ｘ軸を駆動するモータは減速から停止する動作を行い、他方、Ｙ軸を駆動するモータは停止状態から回転する動作を行う。すなわち、Ｅ点は、モータ速度の反転を伴わない加速度変化の伴う特徴的な要素であるので、学習用プログラム生成部４０５は、Ｅ点を含む加工形状（例えば、図中に破線で示す加工形状）となるようにワークの加工を行わせるための加工プログラムを、学習用プログラムを生成するために抜き出す。
【００６０】
加工形状が、角Ｒ付き十字形からなる形状である場合は、例えば、図９に示すＦ１点で、Ｘ軸を駆動するモータにおいて停止前と同じ方向に回転を開始する切換が行われる。また、Ｆ２点で、Ｘ軸を駆動するモータのモータが停止前と同じ方向に回転している時にＹ軸を駆動するモータが停止する切換が行われる。すなわち、Ｆ１点及びＦ２点は、停止から動作への切り換えを伴う及び動作から停止への切り換えを伴う特徴的な要素であるので、学習用プログラム生成部４０５は、Ｆ１点及びＦ２点を含む加工形状（例えば、図中に破線で示す加工形状）となるようにワークの加工を行わせるための加工プログラムを、学習用プログラムを生成するために抜き出す。
【００６１】
加工形状が、凸状の円弧と凹状の円弧とで構成される十字形からなる形状である場合は、例えば、図１０に示すＨ１点で、Ｘ軸を駆動するモータが回転の停止から直ぐに同じ方向に回転を始める。また、Ｈ２点で、それぞれＹ軸を駆動するモータが回転の停止から直ぐに同じ方向に回転を始める。すなわち、Ｇ１点及びＧ２点は、停止から動作への切り換えを伴う及び動作から停止への切り換えを伴う特徴的な要素であるので、学習用プログラム生成部４０５は、Ｇ１点及びＧ２点を含む加工形状（例えば、図中に破線で示す加工形状）となるようにワークの加工を行わせるための加工プログラムを、学習用プログラムを生成するために抜き出す。
【００６２】
加工形状が、星形からなる形状である場合は、例えば、図１１に示すＩ点で、Ｘ軸を駆動するモータとＹ軸を駆動するモータとの両方の回転方向が反転する。すなわち、Ｈ点は、モータ速度の反転を伴う特徴的な要素であるので、学習用プログラム生成部４０５は、Ｈ点を含む加工形状（例えば、図中に破線で示す加工形状）となるようにワークの加工を行わせるための加工プログラムを、学習用プログラムを生成するために抜き出す。
【００６３】
以上説明したように、学習用プログラム生成部４０５は、特徴的な要素を含む一部の加工プログラムとして、例えば、モータ速度の反転を伴う動作を前記モータに行わせるための加工プログラム、停止から動作への切り換え及び動作から停止への切り換えを伴う動作を前記モータに行わせるための加工プログラム、及びモータ速度の反転を伴わない加速度変化のある動作を前記モータに行わせるための加工プログラムの、少なくとも何れかを含む加工プログラムを抜き出す。
【００６４】
そして、このような特徴的な要素に基づいて作成された学習用プログラムにより、モータ２０１、モータ２０２を動作させることによって、速度フィードフォワードに係る制御パラメータａｉ、ｂｊの調整のために観測するための、特徴的な動作特性を得ることができる。そのため、速度フィードフォワードに係る制御パラメータａｉ、ｂｊをより正確かつ効率的に学習することができる。
また、このように特徴的な一部の要素にのみ基づいて学習を行ったとしても、過学習等の問題は、実用上、発生しない。なぜならば、前提として、ＣＮＣ装置１００の制御構造は、広い範囲で安定になるように構成されているからである。
【００６５】
以上説明したように、本実施形態では、工作機械、ロボット、又は産業機械のモータを動作させるための加工プログラムから、特徴的な要素を含む一部の加工プログラムを抜き出すことにより、モータの動作特性に基づいた学習をするための学習用プログラムを生成する。
また、本実施形態では、加工プログラムそのものではなく、このように特徴的な要素を含むようにして生成された学習用プログラムを用いて学習をする。例えば、学習用プログラムを、制御装置となるＣＮＣ装置１００で動作させ、モータ２０１、モータ２０２をフィードフォワード制御することで、フィードフォワード制御に係る制御パラメータについて学習をする。
【００６６】
本実施形態では、このように特徴的な要素を含むようにして生成された学習用プログラムを生成して学習を行うことから、ワークの加工に実際に使用する加工プログラムそのもので学習する場合と比べて、短時間で、より多くの学習を行うことができる。また、加工プログラムよりもデータ量が少ない学習用プログラムを用いることから、学習を行うために必要なメモリの容量を削減することができる。そのため、例えば、組み込み装置のようなメモリの容量が少ない装置であっても、本実施形態を実現することが可能となる。
つまり、本実施形態によれば、駆動部（ここでは、一例としてモータ）を有する装置に関する学習を、より簡便に行うことができる。
【００６７】
上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。例えば、上述した実施形態は、以下に説明するような変形例のように種々の変更を施した形態での実施が可能である。
【００６８】
＜第１変形例＞
上述の実施形態では、例えば、図４から図１１までに示すような、様々な特徴的な要素に基づいて作成された学習用プログラムにより、学習を行うことを想定した。これに限らず、様々な特徴的な要素それぞれを、同一又は類似の特徴的な要素毎に分類し、分類した特徴的な要素毎に学習を行うようにしてもよい。つまり、分類した特徴的な要素毎に、それぞれ別個の学習モデルを構築するようにしてもよい。
【００６９】
この場合、構築する学習モデルの数に対応する数だけ機械学習装置３００を用意する。あるいは、構築する学習モデルの数に対応する数だけ学習部を備えた機械学習装置３００を用意する。
そして、学習用プログラム生成部４０５は、様々な特徴的な要素それぞれを、同一又は類似の特徴的な要素毎に分類し、分類した特徴的な要素毎に、学習用プログラムを生成する。また、学習用プログラム生成部４０５は、このようにして、分類した特徴的な要素毎に作成された複数の学習用プログラムによる学習を、それぞれ異なる機械学習装置３００（又はそれぞれ異なる学習部）に行わせる。
これにより、分類した特徴的な要素毎に、それぞれ別個の学習モデルが構築される。
【００７０】
また、加工プログラムによる加工時に、学習モデルを利用したパラメータ調整を行う場合には、例えば、数値制御情報処理部１０２が、加工プログラムを実行前に先読みし、どのような特徴的な要素が含まれた加工プログラムであるかを判定する。そして、数値制御情報処理部１０２が、判定結果に基づいて、パラメータ調整を行うために利用する学習モデルを選択する。
これにより、分類した特徴的な要素それぞれに対応した学習モデルを構築し、加工プログラムに含まれる特徴的な要素に対応した学習モデルを利用することができる。
【００７１】
なお、加工プログラムの先読み及び学習モデルの選択を行う機能は、上述したように数値制御情報処理部１０２が有していてもよいが、このような機能を有する機能ブロックを、機械学習装置３００や、プログラム生成装置４００が備えるようにしてもよい。
【００７２】
＜第２変形例＞
上述の実施形態では、学習用プログラム生成部４０５が、加工プログラムを読み込み、読み込んだ加工プログラムに特徴的な要素を含む部分が存在していた場合に、これを抜き出して学習用プログラムを生成していた。つまり、加工プログラムを解析することにより、学習用プログラムを生成していた。これに限らず、実際に加工プログラムを動作させ、その際の動作特性に基づいて、学習用プログラムを生成するようにしてもよい。
【００７３】
この場合、例えば、学習用プログラム生成部４０５は、実際に加工プログラムを動作させ、その際の動作特性を示す情報（例えば、ＣＮＣ装置１００で検出される位置偏差や速度偏差）を取得する。そして、学習用プログラム生成部４０５は、例えば、位置偏差や速度偏差が大きい動作に対応する部分の加工プログラムを抜き出して、学習用プログラムを生成する。これにより、予め定めた、「反転を伴う」、「加速度変化を伴う」等の基準とは、異なる基準で学習用プログラムを生成することができる。
【００７４】
なお、位置偏差や速度偏差が大きいか否かについての判定は、予め所定の閾値を規定しておき、ＣＮＣ装置１００で検出される位置偏差や速度偏差が、この所定の閾値を超えた場合に、位置偏差や速度偏差が大きいと判定することにより実現できる。
【００７５】
＜第３変形例＞
上述の実施形態の処理に加えて、更に学習用プログラム生成部４０５が、学習用プログラムを生成するために、加工プログラムから抜き出した部分が、加工プログラム全体のどの部分に相当するのかをユーザに対して出力するようにしてもよい。この場合、ユーザ他に対する出力は、例えば、ユーザインタフェース部４０６への表示により行うことができる。
【００７６】
表示の方法としては、様々な方法があるが、例えば、加工プログラムから抜き出した部分を、他の部分の区別可能にハイライト表示するようにするとよい。ハイライト表示の一例を図１２に示す。
図１２に示す例では、加工プログラムを構成するコード全体を表示すると共に、学習用プログラムを生成するために加工プログラムから抜き出した部分に対応するコードをハイライト表示している。この表示を参照することにより、ユーザは、加工プログラムから抜き出した部分が、加工プログラム全体のどの部分に相当するのかを把握することができる。なお、図１２に示す表示は、一例であり、これに限られない。
【００７７】
例えば、偏差の変化を時系列に沿って示す情報を表示し、この表示において、学習用プログラムを生成するために加工プログラムから抜き出した部分に対応する部分をハイライト表示するようにしてもよい。偏差の変化を時系列に沿って示す情報としては、例えば、横軸を時間とし、縦軸を偏差（例えば、位置偏差や速度偏差）とした、波形データを利用することができる。
【００７８】
また、例えば、図４から図１１までに示したような、モータの動作における移動軌跡の情報を表示し、この表示において、学習用プログラムを生成するために加工プログラムから抜き出した部分に対応する部分をハイライト表示するようにしてもよい。例えば、図４から図１１までに示した破線部分をハイライト表示するようにしてもよい。
また、抜き出した部分と、それ以外の部分を区別可能な表示であれば、ハイライト表示以外の表示を行うようにしてもよい。
【００７９】
＜第４変形例＞
上述の実施形態では、学習用プログラム生成部４０５が、加工プログラムから抜き出す部分を決定していたが、ユーザからの抜き出し部分の指定に基づいて、抜き出す部分を決定するようにしてもよい。
【００８０】
この場合、例えば、図１２に示す例のように、加工プログラムを構成するコード全体を表示し、この表示を参照したユーザから、ユーザインタフェース部４０６を介して抜き出し部分の指定を受け付ける。そして、学習用プログラム生成部４０５は、指定を受け付けた部分に対応する加工プログラムを抜き出すことにより学習用プログラムを生成する。
このようにすれば、ユーザの意図に沿った学習用プログラムを生成することができる。
【００８１】
なお、ユーザからの抜き出し部分の指定を、他の方法で受け付けるようにしてもよい。例えば、上述した第３変形例で説明したような、偏差の変化を時系列に沿って示す情報を表示し、この表示を参照したユーザから、ユーザインタフェース部４０６を介して抜き出し部分の指定を受け付けるようにしてもよい。
【００８２】
また、例えば、図４から図１１までに示したような、モータの動作における移動軌跡の情報を表示し、この表示を参照したユーザから、ユーザインタフェース部４０６を介して抜き出し部分の指定を受け付けるようにしてもよい。
【００８３】
＜他の変形例＞
また、本実施形態では、学習用プログラムにより動作させたときの工作機械の動作特性を観測することで、速度フィードフォワードに係る制御パラメータａｉ、ｂｊの調整（学習）を効率よく行うことができる機械学習を例示したが、学習用プログラムの適用は、速度フィードフォワードに係る制御パラメータａｉ、ｂｊの調整（学習）に限定されない。例えば、位置フィードフォワードに係る制御パラメータ、静摩擦に係る制御パラメータ、及び反転時のバックラッシに係る制御パラメータの調整（学習）にも適用できる。
また、上述した機械学習装置３００は、学習用プログラムをＣＮＣ装置１００に実行させることにより、動作特性として位置偏差を観測したが、フィードバック情報は位置偏差に限定されず、位置偏差に加えて位置指令及び位置フィードバック（位置検出値）のうちの少なくとも１つを含んでもよい。
【００８４】
また、動作指令として、速度指令、速度フィードバック、速度偏差、電流指令、電流フィードバック、及び電流偏差のうちの少なくとも１つを加えてもよい。ここで、位置指令は数値制御情報処理部１０２の出力、位置フィードバックは積分器１００７の出力がそれぞれ対応する。速度指令は加算器１００３の出力、速度フィードバック（速度検出値）はモータに関連付けられたロータリーエンコーダの出力、速度偏差は減算器１００４の出力がそれぞれ対応する。電流指令は加算器１００６の出力、電流フィードバックはモータに流す電流の検出値、電流偏差は減算器１０１０の出力がそれぞれ対応する。
【００８５】
またフィードフォワードの調整は、速度フィードフォワード計算部１００９における調整（学習）に限定されない。例えば、速度フィードフォワード計算部１００９に加えて、又は速度フィードフォワード計算部１００９に換えて、位置フィードフォワード計算部１００８及び／又は電流フィードフォワード計算部１０１３の伝達関数の係数（制御パラメータ）について調整（学習）を行ってもよい。
例えば、図１３はＣＮＣ装置１００の他の構成例の一部の構成を示すブロック図である。図１３は図９に示したＣＮＣ装置に、減算器１０１０、電流制御部１０１１、加算器１０１２、及び電流フィードフォワード計算部１０１３をさらに追加したＣＮＣ装置を示している。
また、機械学習ではなく、操作者が制御パラメータａｉ、ｂｊを例えば、制御表示盤等を介して適宜入力して、当該学習用プログラムを動作させて、動作特性を観察することにより、制御パラメータａｉ、ｂｊを調整するようにしてもよい。
【００８６】
また、学習用プログラムにより動作させたときの工作機械の動作特性を観測することで、（フィードフォワードに係る制御パラメータａｉ、ｂｊの調整（学習）に替えて）バックラッシ補正及び／又はバックラッシ加速補正に係る制御パラメータの調整（学習）を行ってもよい。例えば、図７に示した第１の構成例並びに図８に示した第２の構成例におけるＡ点における反転時の動作特性、及び図１１に示した第５の構成例におけるＩ点における反転時の動作特性の観測は特に有効である。
【００８７】
また、学習用プログラムにより動作させたときの工作機械の動作特性を観測することで、（フィードフォワードに係る制御パラメータａｉ、ｂｊの調整（学習）に替えて）静摩擦補正に係る制御パラメータの調整（学習）を行ってもよい。例えば、図５に示した第２の構成例のＣ点における動作特性は、特に有効である。
【００８８】
＜補足説明＞
最後に、補足説明として機械学習装置３００による機械学習（強化学習）について、より詳細に説明する。
図１４は本発明の第１の実施形態の機械学習装置３００を示すブロック図である。
上述した強化学習を行うために、図１４に示すように、機械学習装置３００は、状態情報取得部３０１、学習部３０２、行動情報出力部３０３、価値関数記憶部３０４、及び最適化行動情報出力部３０５を備える。学習部３０２は報酬出力部３０２１、価値関数更新部３０２２、及び行動情報生成部３０２３を備える。
【００８９】
＜エージェント＞
エージェント（本実施形態における機械学習装置３００に相当）は、環境の状態を観測し、ある行動を選択し、当該行動に基づいて環境を変化させ、環境の変化に伴って、何らかの報酬が与えられ、エージェントはより良い行動の選択（意思決定）を学習する。
【００９０】
＜状態Ｓ＞
ＣＮＣ装置１００における速度フィードフォワード計算部１００９の伝達関数Ｇ（ｓ）の各係数ａｉ、ｂｊ(ｉ，ｊ≧０)の値、並びに学習時の学習用プログラムを実行することで取得されるＣＮＣ装置１００の位置偏差情報を含む、指令及びフィードバック等のサーボ状態を状態Ｓとする。状態情報取得部３０１は、状態Ｓを取得する。
【００９１】
＜行動Ａ＞
状態Ｓに係る速度フィードフォワード計算部１００９の制御パラメータａｉ、ｂｊの調整（例えば、制御パラメータａｉ、ｂｊをランダムに微修正する）を行動Ａとする。なお、制御パラメータａｉ、ｂｊは例えば、初期設定値として、［数１］のａ０＝１、ａ１＝０、ｂ０＝０、ｂ１＝制御対象のイナーシャ値とする。また、係数ａｉ、ｂｊの次元ｍ、ｎを予め設定する。学習部３０２における行動情報生成部３０２３は、行動Ａを生成して、行動情報出力部３０３は、状態Ｓにおける行動ＡをＣＮＣ装置１００に対して出力する。
【００９２】
＜報酬ｒ＞
状態Ｓにおける状態変数である位置偏差の集合（位置偏差集合）をＰＤ（ｓ）、行動情報Ａ（速度フィードフォワード計算部の各係数ａｉ、ｂｊ（ｉ，ｊは０及び正の整数を示す）の修正）により状態Ｓから変化した状態情報Ｓ´に係る状態変数である位置偏差集合をＰＤ（ｓ´）で示す。また、状態Ｓにおける位置偏差の値を、予め設定された評価関数ｆ（ＰＤ（ｓ））に基づいて算出される値とする。
評価関数ｆとしては、例えば、
位置偏差の絶対値の積算値を算出する関数
∫|e|dt
位置偏差の絶対値に時間の重み付けをして積算値を算出する関数
∫t|e|dt
位置偏差の絶対値の２ｎ（ｎは自然数）乗の積算値を算出する関数、
∫e2ndt（ｎは自然数）
位置偏差の絶対値の最大値を算出する関数
Ｍａｘ｛|e|｝  
等を適用することができる。
【００９３】
このとき、行動情報Ａにより修正された状態情報Ｓ´に係る修正後の速度フィードフォワード計算部１００９に基づいて動作したＣＮＣ装置１００の位置偏差の値ｆ（ＰＤ（ｓ´））が、行動情報Ａにより修正される前の状態情報Ｓに係る修正前の速度フィードフォワード計算部１００９に基づいて動作したＣＮＣ装置１００の位置偏差の値ｆ（ＰＤ（ｓ））よりも大きくなった場合に、報酬ｒの値を負の値とする。
【００９４】
一方で、行動情報Ａにより修正された状態情報Ｓ´に係る修正後の速度フィードフォワード計算部１００９に基づいて動作したＣＮＣ装置１００の位置偏差の値ｆ（ＰＤ（ｓ´））が、行動情報Ａにより修正される前の状態情報Ｓに係る修正前の速度フィードフォワード計算部１００９に基づいて動作したＣＮＣ装置１００の位置偏差の値ｆ（ＰＤ（ｓ））よりも小さくなった場合に、報酬ｒの値を正の値とする。
なお、行動情報Ａにより修正された状態情報Ｓ´に係る修正後の速度フィードフォワード計算部１００９に基づいて動作したＣＮＣ装置１００の位置偏差の値ｆ（ＰＤ（ｓ´））が、行動情報Ａにより修正される前の状態情報Ｓに係る修正前の速度フィードフォワード計算部１００９に基づいて動作したＣＮＣ装置１００の位置偏差の値ｆ（ＰＤ（ｓ））と等しい場合は、報酬ｒの値をゼロとする。
学習部３０２における報酬出力部３０２１は、状態Ｓに対して行動Ａを適用した場合の報酬ｒを算出する。
【００９５】
＜価値関数Ｑ＞
或る環境の状態Ｓの下で、行動Ａを選択する場合の価値をＱ（Ｓ，Ａ）とする。このように、Ｑ（Ｓ，Ａ）は、状態Ｓと行動Ａを入力とする関数である。
学習を最初に開始する時点では、状態Ｓと行動Ａとの組合せについて、価値Ｑ（Ｓ，Ａ）の正しい値は全く分かっていない。そこで、エージェントは、或る状態Ｓの下で様々な行動Ａを選択し、その時の行動Ａに対して、与えられる報酬に基づいて、より良い行動の選択をすることにより、正しい価値Ｑ（Ｓ，Ａ）を学習していく。
このような価値Ｑ（Ｓ，Ａ）の更新式は、例えば、次の数式２（以下に数２として示す）により表すことができる。
【００９６】
【数２】
2019181635.tif 000004
【００９７】
上記の数式２において、Ｓｔは、時刻ｔにおける環境の状態を表し、Ａｔは、時刻ｔにおける行動を表す。行動Ａｔにより、状態はＳｔ＋１に変化する。ｒｔ＋１は、その状態の変化により得られる報酬を表している。また、ｍａｘの付いた項は、状態Ｓｔ＋１の下で、その時に分かっている最もＱ値の高い行動Ａを選択した場合のＱ値にγを乗じたものになる。ここで、γは、０＜γ≦１のパラメータで、割引率と呼ばれる。また、αは、学習係数で、０＜α≦１の範囲とする。
学習では、すべての状態行動ペア（Ｓ，Ａ）についてのＱ（Ｓ，Ａ）のテーブルを作成して、学習を行う方法がある。学習部３０２における価値関数更新部３０２２は、状態Ｓと、行動Ａと、行動Ａを状態Ｓに適用した場合の状態Ｓ´と、報酬出力部３０２１により算出された報酬ｒの値と、に基づいて学習を行うことにより、価値関数記憶部３０４が記憶する価値関数Ｑを更新する。
【００９８】
以上のようにして、機械学習装置３００により学習された価値関数Ｑに基づいて、或る状態Ｓに係る速度フィードフォワード計算部１００９の伝達関数の各係数ａｉ、ｂｊに対して適用される行動Ａのうち、Ｑ（Ｓ，Ａ）の値が最大となるような行動Ａを選択することで、学習用プログラムを実行することで取得される位置偏差が最小になるような行動Ａ（すなわち、速度フィードフォワード計算部１００９の係数ａｉ、ｂｊ）を選択することが可能となる。
最適化行動情報出力部３０５は、価値関数更新部３０２２が学習を行うことにより更新した価値関数Ｑに基づいて、価値Ｑ（Ｓ，Ａ）が最大となる動作を速度フィードフォワード計算部１００９に行わせるための行動情報Ａである最適化行動情報を生成する。
以上、本実施形態における機械学習について補足説明したが、ここで説明した機械学習は、学習用プログラムによる評価を観測して、調整（学習）するための１つの例であって、調整（学習）は、これに限定されない。例えば、オペレータが、学習用プログラムを使用して、制御パラメータを調整してもよい。
【００９９】
上述の実施形態の説明において、ＣＮＣ装置１００、機械学習装置３００、及びプログラム生成装置４００の機能について説明した。これらの機能を実現するために、ＣＮＣ装置１００、機械学習装置３００、及びプログラム生成装置４００は、それぞれＣＰＵ（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)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【０１０４】
１００  ＣＮＣ(Computerized Numerical Control)装置
１０１  記憶部
１０２  数値制御情報処理部
１０３、１０４  モータ制御部
２０１、２０２  モータ
３００  機械学習装置
４００  プログラム生成装置
４０１  加工プログラム取得部
４０２  記憶部
４０３  加工プログラム記憶領域
４０４  学習用プログラム記憶領域
４０５  学習用プログラム生成部
４０６  ユーザインタフェース部
４０７  学習指示部
【図１】
2019181635.tif 000005
【図２】
2019181635.tif 000006
【図３】
2019181635.tif 000007
【図４】
2019181635.tif 000008
【図５】
2019181635.tif 000009
【図６】
2019181635.tif 000010
【図７】
2019181635.tif 000011
【図８】
2019181635.tif 000012
【図９】
2019181635.tif 000013
【図１０】
2019181635.tif 000014
【図１１】
2019181635.tif 000015
【図１２】
2019181635.tif 000016
【図１３】
2019181635.tif 000017
【図１４】
2019181635.tif 000018