以下、本発明の実施形態を図面と共に説明する。
図1は第1の実施形態による制御装置の要部を示す概略的なハードウェア構成図である。制御装置1は、例えばロボット等の製造機械を制御する制御装置として実装することができる。また、制御装置1は、例えばロボット等の製造機械を制御する制御装置に併設されたパソコンや、制御装置に有線/無線のネットワークを介して接続されたセルコンピュータ、ホストコンピュータ、エッジサーバ、クラウドサーバ等のコンピュータとして実装することができる。本実施形態では、制御装置1を、ロボットを制御する制御装置として実装した場合の例を示す。
本実施形態による制御装置1が備えるCPU11は、制御装置1を全体的に制御するプロセッサである。CPU11は、ROM12に格納されたシステム・プログラムをバス20を介して読み出し、該システム・プログラムに従って制御装置1の全体を制御する。RAM13には一時的な計算データや表示データ、図示しない入力部を介してオペレータが入力した各種データ等が一時的に格納される。
不揮発性メモリ14は、例えば図示しないバッテリでバックアップされるなどして、制御装置1の電源がオフされても記憶状態が保持されるメモリとして構成される。不揮発性メモリ14には、インタフェース15を介して外部機器72から読み込まれたプログラムや表示器/MDIユニット70を介して入力されたプログラム、制御装置1の各部やロボットから取得された各種データ(例えば、ロボットの位置姿勢(各軸位置)、ロボットの各軸を駆動するモータの温度等)が記憶されている。不揮発性メモリ14に記憶されたプログラムや各種データは、実行時/利用時にはRAM13に展開されても良い。また、ROM12には、公知の解析プログラムなどの各種のシステム・プログラム(後述する機械学習装置100とのやりとりを制御するためのシステム・プログラムを含む)があらかじめ書き込まれている。
インタフェース15は、制御装置1とアダプタ等の外部機器72と接続するためのインタフェースである。外部機器72側からはプログラムや各種パラメータ等が読み込まれる。また、制御装置1内で編集したプログラムや各種パラメータ等は、外部機器72を介して外部記憶手段に記憶させることができる。PMC(プログラマブル・マシン・コントローラ)16は、制御装置1に内蔵されたシーケンス・プログラムでロボット及び該ロボットの周辺装置にI/Oユニット17を介して信号を出力し制御する。また、ロボットの本体に配備された操作盤の各種スイッチ等の信号を受け、必要な信号処理をした後、CPU11に渡す。
表示器/MDIユニット70はディスプレイやキーボード等を備えた手動データ入力装置であり、インタフェース18は表示器/MDIユニット70のキーボードからの指令,データを受けてCPU11に渡す。インタフェース19は各軸を手動で駆動させる際に用いる手動パルス発生器等を備えた操作盤71に接続されている。
ロボットの関節を動かす各軸を制御するための軸制御回路30はCPU11からの軸の移動指令量を受けて、軸の指令をサーボアンプ40に出力する。サーボアンプ40はこの指令を受けて、ロボットが備える軸を移動させるサーボモータ50を駆動する。軸のサーボモータ50は位置・速度検出器を内蔵し、この位置・速度検出器からの位置・速度フィードバック信号を軸制御回路30にフィードバックし、位置・速度のフィードバック制御を行う。なお、図1のハードウェア構成図では軸制御回路30、サーボアンプ40、サーボモータ50は1つずつしか示されていないが、実際には制御対象となるロボットに備えられた軸の数(例えば、7軸ロボットであれば7つ)だけ用意される。
インタフェース21は、制御装置1と機械学習装置100とを接続するためのインタフェースである。機械学習装置100は、機械学習装置100全体を統御するプロセッサ101と、システム・プログラム等を記憶したROM102、機械学習に係る各処理における一時的な記憶を行うためのRAM103、及び学習モデル等の記憶に用いられる不揮発性メモリ104を備える。機械学習装置100は、インタフェース21を介して制御装置1で取得可能な各情報(例えば、ロボットの位置姿勢(各軸位置)、ロボットの各軸を駆動するモータの温度等)を観測することができる。また、制御装置1は、機械学習装置100から出力される、各軸の移動量を受けて、ロボットの各軸の移動を制御する。
図2は、第1の実施形態による制御装置1と機械学習装置100の概略的な機能ブロック図である。図2に示した各機能ブロックは、図1に示した制御装置1が備えるCPU11、及び機械学習装置100のプロセッサ101が、それぞれのシステム・プログラムを実行し、制御装置1及び機械学習装置100の各部の動作を制御することにより実現される。
本実施形態の制御装置1は、機械学習装置100から出力されたロボット2の各軸を駆動するモータの移動指令に基づいてロボット2を制御する制御部34を備える。制御部34は、一般にプログラム等により指定されたロボット2のロボットハンドの先端の移動先の位置姿勢に従ってロボットの動作を制御するが、その際に、機械学習装置100から該移動先へとロボット2のロボットハンドの先端を移動させる際の各軸を駆動するモータの移動指令が出力されると、前記プログラム等により指令された位置姿勢へとロボット2のロボットハンドの先端を移動させるための移動を、機械学習装置100から出力された移動指令の通りとなるように制御する。
一方、制御装置1が備える機械学習装置100は、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度に対するロボット2の各軸を駆動するモータの移動指令を、いわゆる機械学習により自ら学習するためのソフトウェア(学習アルゴリズム等)及びハードウェア(プロセッサ101等)を含む。制御装置1が備える機械学習装置100が学習するものは、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度と、ロボット2の各軸を駆動するモータの移動指令との、相関性を表すモデル構造に相当する。
図2に機能ブロックで示すように、制御装置1が備える機械学習装置100は、ロボット2の各軸を駆動するモータの移動指令を示す移動指令データS1、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢を示す基準位置姿勢データS2、及びロボット2の各軸を駆動するモータの温度を示すモータ温度データS3を含む環境の現在状態を表す状態変数Sとして観測する状態観測部106と、決定されたロボット2の各軸を駆動するモータの移動指令に基づいて為されたロボット2のロボットハンドの先端の移動によるモータ温度の変化状態を判定するためのモータ温度判定データD1を含む判定データDを取得する判定データ取得部108と、状態変数Sと判定データDとを用いて、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度と、ロボット2の各軸を駆動するモータの移動指令を関連付けて学習する学習部110とを備える。
状態観測部106が観測する状態変数Sのうち、移動指令データS1は、ロボット2の各軸を駆動するモータの移動指令として取得することができる。ロボット2の各軸を駆動するモータの移動指令としては、例えばロボット2の各軸を駆動するモータに対して出力される移動量(正負の符号を含む)の配列等が例示される。
移動指令データS1は、機械学習装置100が学習部110の学習結果に基づいて1つ前の学習周期におけるロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度に対して、当該学習周期において決定したロボット2の各軸を駆動するモータの移動指令をそのまま用いることができる。このような手法を取る場合には、機械学習装置100はロボット2の各軸を駆動するモータの移動指令を学習周期毎にRAM103に一時的に記憶しておき、状態観測部106は、RAM103から1つ前の学習周期におけるロボット2の各軸を駆動するモータの移動指令を今回の学習周期の移動指令データS1として取得するようにしても良い。
状態観測部106が観測する状態変数Sのうち、基準位置姿勢データS2は、ロボット2から取得された又は制御装置1によるロボット2の制御に用いられるプログラムから取得されたロボット2のロボットハンドの先端の現在の位置姿勢(移動元の位置姿勢)、及び、制御装置1によるロボット2の制御に用いられるプログラムから取得されたロボット2のロボットハンドの先端の移動先の位置姿勢として取得することができる。なお、移動元の位置姿勢については、ロボット2の各軸の位置により示すようにしても良いが、移動先の位置姿勢については、ロボット2の各軸の位置により示す必要は無く、ロボット2のロボットハンドの先端の位置と向きにより示すようにしても良い。
状態観測部106が観測する状態変数Sのうち、モータ温度データS3は、ロボット2の各軸を駆動するモータの温度として取得することができる。ロボット2の各軸を駆動するモータの温度は、モータに温度センサが取り付けられている場合には、該温度センサの検出値を利用することができる。また、ロボット2の各軸を駆動するモータの温度は、モータに温度センサが取り付けられていない場合であっても、各モータの駆動履歴やモータ(の巻き線)に流れる電流の抵抗値等に基づいて推定することができる。なお、本明細書では、特に断りの無い場合、モータの温度には推定されたモータの温度を含む。
判定データ取得部108は、モータ温度判定データD1として、決定されたロボット2の各軸を駆動するモータの移動指令に基づいて為されたロボット2のロボットハンドの先端の移動後のモータ温度の判定結果を用いることができる。判定データ取得部108が用いるモータ温度判定データD1としては、例えば決定されたロボット2の各軸を駆動するモータの移動指令に基づいて実際にロボット2が動作した後に取得された各モータの温度が予め定めた所定の閾値以内であるか(適)、該閾値を超えた(否)といったような、適宜設定された判定基準により判定された結果を用いればよい。モータ温度判定データD1としては、例えば予め定めた評価用の関数を用いてロボット2の各軸を駆動するモータの温度に基づく評価値を算出し、その評価値を用いるようにしても良い。
なお、判定データ取得部108は、学習部110による学習の段階では必須の構成となるが、学習部110によるロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度とロボット2の各軸を駆動するモータの移動指令とを関連付けた学習が完了した後には必ずしも必須の構成ではない。例えば、学習が完了した機械学習装置100を顧客に出荷する場合等には、判定データ取得部108を取り外して出荷するようにしても良い。
学習部110に対して同時に入力される状態変数Sは、学習部110による学習周期で考えた場合、判定データDが取得された1学習周期前のデータに基づくものとなる。このように、制御装置1が備える機械学習装置100が学習を進める間、環境においては、基準位置姿勢データS2及びモータ温度データS3の取得、取得した各データに基づいて決定された移動指令データS1に基づいたロボット2の各軸の移動、判定データDの取得が繰り返し実施される。
学習部110は、機械学習と総称される任意の学習アルゴリズムに従い、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度に対する、ロボット2の各軸を駆動するモータの移動指令を学習する。学習部110は、前述した状態変数Sと判定データDとを含むデータ集合に基づく学習を反復実行することができる。ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度に対する、ロボット2の各軸を駆動するモータの移動指令の学習サイクルの反復中、状態変数Sは、上記したように1学習周期前におけるロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度、及び1学習周期前において決定されたロボット2の各軸を駆動するモータの移動指令から取得し、また判定データDは、決定されたロボット2の各軸を駆動するモータの移動指令に基づいて制御されるロボット2の動作後のモータ温度の適否判定結果とする。
このような学習サイクルを繰り返すことにより、学習部110は、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度と、ロボット2の各軸を駆動するモータの移動指令との相関性を暗示する特徴を識別することができるようになる。学習アルゴリズムの開始時にはロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度と、ロボット2の各軸を駆動するモータの移動指令の相関性は実質的に未知であるが、学習部110は、学習を進めるに従い徐々に特徴を識別して相関性を解釈する。ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度と、ロボット2の各軸を駆動するモータの移動指令との相関性が、ある程度信頼できる水準まで解釈されると、学習部110が反復出力する学習結果は、現在状態(つまりロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度)に対して、ロボット2の各軸を駆動するモータの移動指令をどう決定するべきかという行動の選択(つまり意思決定)を行うために使用できるものとなる。つまり学習部110は、学習アルゴリズムの進行に伴い、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度に対してロボット2の各軸を駆動するモータの移動指令をどのように設定するべきかという行動との、相関性を最適解に徐々に近づけることができる。
意思決定部122は、学習部110が学習した結果に基づいて、ロボット2の各軸を駆動するモータの移動指令を決定し、決定したロボット2の各軸を駆動するモータの移動指令を制御部34へと出力する。意思決定部122は、学習部110による学習が完了した状態において、機械学習装置100にロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度が入力されると、ロボット2の各軸を駆動するモータの移動指令を出力する。意思決定部が決定するロボット2の各軸を駆動するモータの移動指令は、基準位置姿勢データS2に含まれる、ロボット2のロボットハンドの先端の移動元の位置姿勢から、ロボット2のロボットハンドの先端の移動先の位置指令へと移動させることができる移動指令であり、ロボット2の各軸を駆動するモータの移動量の組合せとして表現される。基準位置姿勢データS2に含まれる、ロボット2のロボットハンドの先端の移動先の位置姿勢を実現することが可能なモータの位置の組み合わせは複数存在し得るので、意思決定部122は、状態変数Sと学習部110が学習した結果に基づいて、適切なロボット2の各軸を駆動するモータの移動指令を決定する。
上記したように、制御装置1が備える機械学習装置100は、状態観測部106が観測した状態変数Sと判定データ取得部108が取得した判定データDとを用いて、学習部110が機械学習アルゴリズムに従い、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度に対するロボット2の各軸を駆動するモータの移動指令を学習するものである。状態変数Sは、移動指令データS1、基準位置姿勢データS2、及びモータ温度データS3といったデータで構成され、また判定データDは、制御装置1がロボット2から取得した情報を解析することで一義的に求められる。したがって、制御装置1が備える機械学習装置100によれば、学習部110の学習結果を用いることで、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度に応じた、ロボット2の各軸を駆動するモータの移動指令を、自動的かつ正確に行うことが可能となる。
そして、ロボット2の各軸を駆動するモータの移動指令の決定を、自動的に行うことができれば、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢(基準位置姿勢データS2)及びロボット2の各軸を駆動するモータの温度(モータ温度データS3)を把握するだけで、ロボット2の各軸を駆動するモータの移動指令の適切な値を迅速に決定することができる。したがって、ロボット2の各軸を駆動するモータの移動指令の決定を効率よく行うことができる。
本実施形態の制御装置1が備える機械学習装置100の一変形例として、状態観測部106は、移動指令データS1、基準位置姿勢データS2、及びモータ温度データS3に加えて、更に環境温度を含む環境データS4を観測するようにしても良い。環境温度は、ロボット2の近傍に設置された温度センサで検出した値や、作業者が温度計等を見て得た環境温度を表示器/MDIユニット70を介して入力した値を用いることができる。
上記変形例によれば、機械学習装置100は、環境データS4として観測した環境温度を考慮して、ロボット2の各軸を駆動するモータの移動指令の学習及び決定をすることができるので、環境温度が低い場合には、一部の高速に動作するモータに多少の負荷を掛けるように移送指令を決定する等といったような、環境温度に応じた適切なロボット2の各軸を駆動するモータの移動指令を決定できるようになる。
本実施形態の制御装置1が備える機械学習装置100の他の変形例として、判定データ取得部108がロボット2の動作の適否を判定するための判定データDとして、ロボット2の動作のサイクルタイムを示すサイクルタイムデータD2を用いることもできる。判定データ取得部108は、ロボット2の動作のサイクルタイムとして、ロボット2の各軸を駆動するモータの移動指令に基づく移動の開始から終了までに係る時間を用いることができる。
上記変形例によれば、機械学習装置100は、ロボット2が動作した後の各モータの温度と、ロボット2の動作のサイクルタイムとのトレードオフを考慮しながら、適切なロボット2の各軸を駆動するモータの移動指令を決定できるようになる。なお、サイクルタイムデータD2を導入する場合には、ロボット2が動作した際に各モータの温度が上昇しすぎない範囲で、ロボット2の動作のサイクルタイムを短くするように判断させるようにすると良い。
本実施形態の制御装置1が備える機械学習装置100の他の変形例として、状態観測部106は、状態変数Sとして、移動指令データS1、基準位置姿勢データS2、及びモータ温度データS3に加えて、更にロボット2の各軸を駆動するモータに設置された減速機の温度を示す減速機温度データS5を観測するようにしても良い。また、その際に、判定データ取得部108は、判定データDとして、モータ温度判定データD1に加えて、決定されたロボット2の各軸を駆動するモータの移動指令に基づいて為されたロボット2のロボットハンドの先端の移動による減速機の温度の適否を判定した減速機温度判定データD3を取得するようにしても良い。モータに設置された減速機の温度は、減速機の近傍に設置された温度センサで検出した値を用いることができる。
上記変形例によれば、機械学習装置100は、減速機温度データS5、減速機温度判定データD3を用いることで、ロボット2の各軸を駆動するモータに設置された減速機の温度を考慮して、ロボット2の各軸を駆動するモータの移動指令の学習及び決定をすることができるようになるので、減速機の温度状態に応じた適切なロボット2の各軸を駆動するモータの移動指令を決定できるようになる。
上記構成を有する機械学習装置100では、学習部110が実行する学習アルゴリズムは特に限定されず、機械学習として公知の学習アルゴリズムを採用できる。図3は、図2に示す制御装置1の一形態であって、学習アルゴリズムの一例として強化学習を実行する学習部110を備えた構成を示す。強化学習は、学習対象が存在する環境の現在状態(つまり入力)を観測するとともに現在状態で所定の行動(つまり出力)を実行し、その行動に対し何らかの報酬を与えるというサイクルを試行錯誤的に反復して、報酬の総計が最大化されるような方策(本願の機械学習装置ではロボット2の各軸を駆動するモータの移動指令)を最適解として学習する手法である。
図3に示す制御装置1が備える機械学習装置100において、学習部110は、状態変数Sに基づいてロボット2の各軸を駆動するモータの移動指令の決定がされ、決定されたロボット2の各軸を駆動するモータの移動指令に基づくロボット2の動作が為された場合におけるロボット2の該動作の適否判定結果(状態変数Sが取得された次の学習周期で用いられる判定データDに相当)に関連する報酬Rを求める報酬計算部112と、報酬Rを用いて、ロボット2の各軸を駆動するモータの移動指令の価値を表す関数Qを更新する価値関数更新部114とを備える。学習部110は、価値関数更新部114が関数Qの更新を繰り返すことによってロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度に対するロボット2の各軸を駆動するモータの移動指令を学習する。
学習部110が実行する強化学習のアルゴリズムの一例を説明する。この例によるアルゴリズムは、Q学習(Q−learning)として知られるものであって、行動主体の状態sと、その状態sで行動主体が選択し得る行動aとを独立変数として、状態sで行動aを選択した場合の行動の価値を表す関数Q(s,a)を学習する手法である。状態sで価値関数Qが最も高くなる行動aを選択することが最適解となる。状態sと行動aとの相関性が未知の状態でQ学習を開始し、任意の状態sで種々の行動aを選択する試行錯誤を繰り返すことで、価値関数Qを反復して更新し、最適解に近付ける。ここで、状態sで行動aを選択した結果として環境(つまり状態s)が変化したときに、その変化に応じた報酬(つまり行動aの重み付け)rが得られるように構成し、より高い報酬rが得られる行動aを選択するように学習を誘導することで、価値関数Qを比較的短時間で最適解に近付けることができる。
価値関数Qの更新式は、一般に下記の数2式のように表すことができる。数2式において、st及びatはそれぞれ時刻tにおける状態及び行動であり、行動atにより状態はst+1に変化する。rt+1は、状態がstからst+1に変化したことで得られる報酬である。maxQの項は、時刻t+1で最大の価値Qになる(と時刻tで考えられている)行動aを行ったときのQを意味する。α及びγはそれぞれ学習係数及び割引率であり、0<α≦1、0<γ≦1で任意設定される。
学習部110がQ学習を実行する場合、状態観測部106が観測した状態変数S及び判定データ取得部108が取得した判定データDは、更新式の状態sに該当し、現在状態(つまり、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度)に対するロボット2の各軸を駆動するモータの移動指令をどのように決定するべきかという行動は、更新式の行動aに該当し、報酬計算部112が求める報酬Rは、更新式の報酬rに該当する。よって価値関数更新部114は、現在状態に対するロボット2の各軸を駆動するモータの移動指令の価値を表す関数Qを、報酬Rを用いたQ学習により繰り返し更新する。
報酬計算部112が求める報酬Rは、例えば、ロボット2の各軸を駆動するモータの移動指令を決定した後に、決定されたロボット2の各軸を駆動するモータの移動指令に基づくロボット2の動作の適否判定結果が「適」と判定される場合(例えば、ロボット2の動作後に各モータ毎に定められたモータ温度の閾値を超えなかった場合、動作のサイクルタイムが縮んだ場合、各減速機毎に定められたモータ温度の閾値を超えなかった場合等)に正(プラス)の報酬Rとし、ロボット2の各軸を駆動するモータの移動指令を決定した後に、決定されたロボット2の各軸を駆動するモータの移動指令に基づくロボット2の動作の適否判定結果が「否」と判定される場合(例えば、ロボット2の動作後に各モータ毎に定められたモータ温度の閾値を超えた場合、各減速機毎に定められたモータ温度の閾値を超えた場合等)に負(マイナス)の報酬Rとすることができる。正負の報酬Rの絶対値は、互いに同一であってもよいし異なっていてもよい。また、判定の条件として、判定データDに含まれる複数の値を組み合わせて判定するようにしても良い。
また、設定されたロボット2の各軸を駆動するモータの移動指令に基づくロボット2の動作の適否判定結果を、「適」及び「否」の二通りだけでなく複数段階に設定することができる。例として、ロボット2の軸を駆動するモータの温度の閾値がTmaxである場合、ロボット2の動作後のモータの温度Tが、0≦T<Tmax/5のときは報酬R=5を与え、Tmax/5≦T<Tmax/2のときは報酬R=3を与え、Tmax/2≦T<Tmaxのときは報酬R=1を、Tmax≦Tのときは報酬R=−3(マイナスの報酬)を与えるような構成とすることができる。
また、設定されたロボット2の各軸を駆動するモータの移動指令に基づくロボット2の動作の適否判定結果として、モータ毎に重みを変えた報酬を設定することもできる。モータは、その種類毎に巻き線やベアリング、グリス、構造等に違いがあり、その耐久性も異なってくる。そこで、耐久力が低いモータの温度の上昇に対してはよりマイナスが大きくなるような報酬を与えるようにする、等といったように、モータ毎に報酬の重みを変えて設定することで、ロボット2の構成を考慮した学習をすることが可能となる。
更に、学習の初期段階は判定に用いる閾値を比較的大きく設定し、学習が進行するにつれて判定に用いる閾値を縮小する構成とすることもできる。
価値関数更新部114は、状態変数Sと判定データDと報酬Rとを、関数Qで表される行動価値(例えば数値)と関連付けて整理した行動価値テーブルを持つことができる。この場合、価値関数更新部114が関数Qを更新するという行為は、価値関数更新部114が行動価値テーブルを更新するという行為と同義である。Q学習の開始時には環境の現在状態とロボット2の各軸を駆動するモータの移動指令との相関性は未知であるから、行動価値テーブルにおいては、種々の状態変数Sと判定データDと報酬Rとが、無作為に定めた行動価値の値(関数Q)と関連付けた形態で用意されている。なお報酬計算部112は、判定データDが分かれば、これに対応する報酬Rを直ちに算出でき、算出した値Rが行動価値テーブルに書き込まれる。
ロボット2の動作の適否判定結果に応じた報酬Rを用いてQ学習を進めると、より高い報酬Rが得られる行動を選択する方向へ学習が誘導され、選択した行動を現在状態で実行した結果として変化する環境の状態(つまり状態変数S及び判定データD)に応じて、現在状態で行う行動についての行動価値の値(関数Q)が書き換えられて行動価値テーブルが更新される。この更新を繰り返すことにより、行動価値テーブルに表示される行動価値の値(関数Q)は、適正な行動(本発明の場合、ロボット2の各軸を駆動するモータの温度が高温にならないようにロボット2を動作させる行動)であるほど大きな値となるように書き換えられる。このようにして、未知であった環境の現在状態(ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度)とそれに対する行動(ロボット2の各軸を駆動するモータの移動指令)との相関性が徐々に明らかになる。つまり行動価値テーブルの更新により、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度と、ロボット2の各軸を駆動するモータの移動指令との関係が最適解に徐々に近づけられる。
図4を参照して、学習部110が実行する上記したQ学習のフロー(つまり機械学習方法の一形態)をさらに説明する。まずステップSA01で、価値関数更新部114は、その時点での行動価値テーブルを参照しながら、状態観測部106が観測した状態変数Sが示す現在状態で行う行動としてロボット2の各軸を駆動するモータの移動指令を無作為に選択する。次に価値関数更新部114は、ステップSA02で、状態観測部106が観測している現在状態の状態変数Sを取り込み、ステップSA03で、判定データ取得部108が取得している現在状態の判定データDを取り込む。次に価値関数更新部114は、ステップSA04で、判定データDに基づき、ロボット2の各軸を駆動するモータの移動指令が適当であったか否かを判断し、適当であった場合、ステップSA05で、報酬計算部112が求めた正の報酬Rを関数Qの更新式に適用し、次いでステップSA06で、現在状態における状態変数S及び判定データDと報酬Rと行動価値の値(更新後の関数Q)とを用いて行動価値テーブルを更新する。ステップSA04で、ロボット2の各軸を駆動するモータの移動指令が適当でなかったと判断した場合、ステップSA07で、報酬計算部112が求めた負の報酬Rを関数Qの更新式に適用し、次いでステップSA06で、現在状態における状態変数S及び判定データDと報酬Rと行動価値の値(更新後の関数Q)とを用いて行動価値テーブルを更新する。学習部110は、ステップSA01〜SA07を繰り返すことで行動価値テーブルを反復して更新し、ロボット2の各軸を駆動するモータの移動指令の学習を進行させる。なお、ステップSA04からステップSA07までの報酬Rを求める処理及び価値関数の更新処理は、判定データDに含まれるそれぞれのデータについて実行される。
前述した強化学習を進める際に、例えばニューラルネットワークを応用することができる。図5Aは、ニューロンのモデルを模式的に示す。図5Bは、図5Aに示すニューロンを組み合わせて構成した三層のニューラルネットワークのモデルを模式的に示す。ニューラルネットワークは、例えば、ニューロンのモデルを模した演算装置や記憶装置等によって構成できる。
図5Aに示すニューロンは、複数の入力x(ここでは一例として、入力x1〜入力x3)に対する結果yを出力するものである。各入力x1〜x3には、この入力xに対応する重みw(w1〜w3)が掛けられる。これにより、ニューロンは、次の数3式により表現される出力yを出力する。なお、数3式において、入力x、出力y及び重みwは、すべてベクトルである。また、θはバイアスであり、fkは活性化関数である。
図5Bに示す三層のニューラルネットワークは、左側から複数の入力x(ここでは一例として、入力x1〜入力x3)が入力され、右側から結果y(ここでは一例として、結果y1〜結果y3)が出力される。図示の例では、入力x1、x2、x3のそれぞれに対応の重み(総称してw1で表す)が乗算されて、個々の入力x1、x2、x3がいずれも3つのニューロンN11、N12、N13に入力されている。
図5Bでは、ニューロンN11〜N13の各々の出力を、総称してz1で表す。z1は、入カベクトルの特徴量を抽出した特徴ベクトルと見なすことができる。図示の例では、特徴ベクトルz1のそれぞれに対応の重み(総称してw2で表す)が乗算されて、個々の特徴ベクトルz1がいずれも2つのニューロンN21、N22に入力されている。特徴ベクトルz1は、重みw1と重みw2との間の特徴を表す。
図5Bでは、ニューロンN21〜N22の各々の出力を、総称してz2で表す。z2は、特徴ベクトルz1の特徴量を抽出した特徴ベクトルと見なすことができる。図示の例では、特徴ベクトルz2のそれぞれに対応の重み(総称してw3で表す)が乗算されて、個々の特徴ベクトルz2がいずれも3つのニューロンN31、N32、N33に入力されている。特徴ベクトルz2は、重みw2と重みw3との間の特徴を表す。最後にニューロンN31〜N33は、それぞれ結果y1〜y3を出力する。
なお、三層以上の層を為すニューラルネットワークを用いた、いわゆるディープラーニングの手法を用いることも可能である。
制御装置1が備える機械学習装置100においては、ニューラルネットワークをQ学習における価値関数として用い、状態変数Sと行動aとを入力xとして、学習部110が上記したニューラルネットワークに従う多層構造の演算を行うことで、当該状態における当該行動の価値(結果y)を出力することもできる。なお、ニューラルネットワークの動作モードには、学習モードと価値予測モードとがあり、例えば学習モードで学習データセットを用いて重みwを学習し、学習した重みwを用いて価値予測モードで行動の価値判断を行うことができる。なお価値予測モードでは、検出、分類、推論等を行うこともできる。
上記した制御装置1の構成は、プロセッサ101が実行する機械学習方法(或いはソフトウェア)として記述できる。この機械学習方法は、ロボット2の各軸を駆動するモータの移動指令を学習する機械学習方法であって、コンピュータのCPUが、移動指令データS1、基準位置姿勢データS2、及びモータ温度データS3を、ロボット2が動作する環境の現在状態を表す状態変数Sとして観測するステップと、決定されたロボット2の各軸を駆動するモータの移動指令に基づくロボット2の動作の適否判定結果を示す判定データDを取得するステップと、状態変数Sと判定データDとを用いて、基準位置姿勢データS2、モータ温度データS3と、ロボット2の各軸を駆動するモータの移動指令とを関連付けて学習するステップとを有する。
図6は、第2の実施形態による制御装置1と機械学習装置100の概略的な機能ブロック図であって、学習アルゴリズムの他の例として教師あり学習を実行する学習部110を備えた構成を示したものである。教師あり学習は、入力とそれに対応する出力との既知のデータセット(教師データと称する)が与えられ、それら教師データから入力と出力との相関性を暗示する特徴を識別することで、新たな入力に対する所要の出力を推定するための相関性モデルを学習する手法である。
本実施形態の制御装置1が備える機械学習装置100は、判定データ取得部108に代えて、環境の状態に対して適切に行われたロボット2の各軸を駆動するモータの移動指令を示す移動指令データL1を含むラベルデータLを取得するラベルデータ取得部109を備える。ラベルデータ取得部109は、ある状態において適切であるとされるロボット2の各軸を駆動するモータの移動指令を移動指令データL1として取得する。この移動指令データL1は、過去に行われたロボット2の動作時に、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢(基準位置姿勢データS2)、ロボット2の各軸を駆動するモータの温度(モータ温度データS3)、及び、ロボット2の各軸を駆動するモータの移動指令をログデータとして記録しておき、該ログデータを解析し、ロボット2の各軸を駆動するモータの温度を必要以上に高温にすることなくロボット2を動作させることができた移動指令のデータを、適切な移動指令のデータ(移動指令データL1)として取得するようにすれば良い。何を以って適切な移動指令のデータであるとするかは、第1の実施形態における判定データDに対する判定と同様に考えればよい。
本実施形態の状態観測部106は、移動指令データS1を観測する必要は無い。また、ラベルデータ取得部109は、判定データ取得部108と同様に、学習部110による学習の段階では必須の構成となるが、学習部110によるロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度とロボット2の各軸を駆動するモータの移動指令とを関連付けた学習が完了した後には必ずしも必須の構成ではない。
図6に示す制御装置1が備える機械学習装置100において、学習部110は、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度からロボット2の各軸を駆動するモータの移動指令を推定する相関性モデルMと過去に取得されたロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度及び適切なロボット2の各軸を駆動するモータの移動指令の結果から得られた教師データTから識別される相関性特徴との誤差Eを計算する誤差計算部116と、誤差Eを縮小するように相関性モデルMを更新するモデル更新部118とを備える。学習部110は、モデル更新部118が相関性モデルMの更新を繰り返すことによってロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度からのロボット2の各軸を駆動するモータの移動指令の推定を学習する。
相関性モデルMの初期値は、例えば、状態変数SとラベルデータLとの相関性を単純化して(例えばN次関数で)表現したものであり、教師あり学習の開始前に学習部110に与えられる。教師データTは、本発明では上述したように過去に取得されたロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度とそれに対して適切に指令されたロボット2の各軸を駆動するモータの移動指令のデータとを利用することができ、制御装置1の運用時に随時学習部110に与えられる。誤差計算部116は、学習部110に随時与えられた教師データTにより、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度とロボット2の各軸を駆動するモータの移動指令との相関性を暗示する相関性特徴を識別し、この相関性特徴と、現在状態における状態変数S及びラベルデータLに対応する相関性モデルMとの誤差Eを求める。モデル更新部118は、例えば予め定めた更新ルールに従い、誤差Eが小さくなる方向へ相関性モデルMを更新する。
次の学習サイクルでは、誤差計算部116は、更新後の相関性モデルMに従って状態変数Sを用いてロボット2の各軸を駆動するモータの移動指令の推定が行われ、該推定の結果と実際に取得されたラベルデータLの誤差Eを求め、モデル更新部118が再び相関性モデルMを更新する。このようにして、未知であった環境の現在状態とそれに対する推定との相関性が徐々に明らかになる。学習部110による学習が完了した時点で、意思決定部122は学習部110が学習した結果を用いて、状態観測部106が観測したロボット2のロボットハンドの先端の移動元・移動先の位置姿勢(基準位置姿勢データS2)、ロボット2の各軸を駆動するモータの温度(モータ温度データS3)に基づいて、ロボット2の各軸を駆動する適切なモータの移動指令を推定して出力することができるようになる。なお、第2の実施形態においても、第1の実施形態と同様に、状態変数Sとして、様々なものを観測するようにできる。
図7は、制御装置1を備えた第3の実施形態によるシステム170を示す。システム170は、セルコンピュータやホストコンピュータ、クラウドサーバ等のコンピュータの一部として実装された少なくとも1台の制御装置1と、制御の対象となる複数のロボット2と、制御装置1、ロボット2を互いに接続する有線/無線のネットワーク172とを備える。
上記構成を有するシステム170は、機械学習装置100を備える制御装置1が、学習部110の学習結果を用いて、ロボット2のロボットハンドの先端の移動元・移動先の位置姿勢及びロボット2の各軸を駆動するモータの温度に対するロボット2の各軸を駆動するモータの移動指令を、それぞれのロボット2毎に自動的かつ正確に求めることができる。また、制御装置1の機械学習装置100が、複数のロボット2のそれぞれについて得られた状態変数S及び判定データDに基づき、全てのロボット2に共通するロボット2の各軸を駆動するモータの移動指令を学習し、その学習結果を全てのロボット2の動作において共有するように構成できる。したがってシステム170によれば、より多様なデータ集合(状態変数S及び判定データDを含む)を入力として、ロボット2の各軸を駆動するモータの移動指令の学習の速度や信頼性を向上させることができる。
以上、本発明の実施の形態について説明したが、本発明は上述した実施の形態の例のみに限定されることなく、適宜の変更を加えることにより様々な態様で実施することができる。
例えば、機械学習装置100が実行する学習アルゴリズムや演算アルゴリズム、制御装置1が実行する制御アルゴリズム等は、上述したものに限定されず、様々なアルゴリズムを採用できる。
また、上記した実施形態では制御装置1と機械学習装置100が異なるCPUを有する装置として説明しているが、機械学習装置100は制御装置1が備えるCPU11と、ROM12に記憶されるシステム・プログラムにより実現するようにしても良い。