(57)【特許請求の範囲】
【請求項１】
キャッシュメモリを使用する演算処理装置を含む制御装置により産業機械の処理を制御し、前記キャッシュメモリにロックするデータを学習する機械学習器であって、
前記産業機械の状態を観測する状態観測部と、
前記状態観測部により観測された状態に基づいて、前記キャッシュメモリにロックするデータを規定する操作を学習する学習部と、を備える、
ことを特徴とする機械学習器。
【請求項２】
前記状態観測部は、
前記産業機械による処理時間および処理精度の少なくとも一方を含む状態量を観測し、
前記学習部は、
前記状態観測部により観測された前記産業機械による処理時間および処理精度の少なくとも一方を含む状態量に基づいて、前記キャッシュメモリにロックするデータを決定する操作量を更新する、
ことを特徴とする請求項１に記載の機械学習器。
【請求項３】
前記産業機械は、
前記制御装置により制御される所定の処理に要する時間を計測し、
前記状態観測部は、
前記所定の処理に要する時間を観測する、
ことを特徴とする請求項２に記載の機械学習器。
【請求項４】
前記産業機械は、
前記制御装置により制御される所定の加工による精度を計測し、
前記状態観測部は、
前記所定の加工による精度を観測する、
ことを特徴とする請求項２または請求項３に記載の機械学習器。
【請求項５】
さらに、
前記学習部が学習した操作量を参照して、前記キャッシュメモリにロックするデータを決定する意思決定部を備える、
ことを特徴とする請求項２乃至請求項４のいずれか１項に記載の機械学習器。
【請求項６】
前記学習部は、
前記状態観測部の出力に基づいて報酬を計算する報酬計算部と、
前記状態観測部および前記報酬計算部の出力に基づいて、前記キャッシュメモリにロックするデータの価値を定める価値関数を、前記報酬に応じて更新する価値関数更新部と、を備える、
ことを特徴とする請求項２乃至請求項５のいずれか１項に記載の機械学習器。
【請求項７】
前記学習部は、
前記状態観測部の出力、および、入力された教師データに基づいて誤差を計算する誤差計算部と、
前記状態観測部および前記誤差計算部の出力に基づいて、前記キャッシュメモリにロックするデータの誤差を定める誤差モデルを更新する誤差モデル更新部と、を備える、
ことを特徴とする請求項２乃至請求項５のいずれか１項に記載の機械学習器。
【請求項８】
前記機械学習器は、ニューラルネットワークを備える、
ことを特徴とする請求項１乃至請求項７のいずれか１項に記載の機械学習器。
【請求項９】
前記キャッシュメモリにロックするデータは、前記演算処理装置が実行するプログラムにおける機能命令である、
ことを特徴とする請求項１乃至請求項８のいずれか１項に記載の機械学習器。
【請求項１０】
制御装置と、産業機械と、請求項１乃至請求項９のいずれか１項に記載の機械学習器と、を備える産業機械システムであって、
前記制御装置は、キャッシュメモリを使用する演算処理装置を含み、
前記産業機械は、前記演算処理装置が実行するプログラムに基づいて処理が制御される、
ことを特徴とする産業機械システム。
【請求項１１】
請求項１０に記載の産業機械システムを複数備える製造システムであって、
前記機械学習器は、それぞれの前記産業機械システムに設けられ、
複数の前記産業機械システムに設けられた複数の前記機械学習器は、通信媒体を介して相互にデータを共有または交換するようになっている、
ことを特徴とする製造システム。
【請求項１２】
前記機械学習器は、クラウドサーバ上に存在する、
ことを特徴とする請求項１１に記載の製造システム。
【請求項１３】
キャッシュメモリを使用する演算処理装置を含む制御装置により産業機械の処理を制御し、前記キャッシュメモリにロックするデータを学習する機械学習方法であって、
前記産業機械の状態を観測し、
前記観測された状態に基づいて、前記キャッシュメモリにロックするデータを規定する操作を更新する、
ことを特徴とする機械学習方法。
【請求項１４】
前記産業機械の状態を観測するのは、
前記産業機械による処理時間および処理精度の少なくとも一方を含む状態量を観測し、
前記キャッシュメモリにロックするデータを規定する操作を更新するのは、
観測された前記産業機械による処理時間および処理精度の少なくとも一方を含む状態量に基づいて、前記キャッシュメモリにロックするデータを決定する操作量を更新する、
ことを特徴とする請求項１３に記載の機械学習方法。
【請求項１５】
キャッシュメモリを使用する演算処理装置を含む制御装置により産業機械の処理を制御し、前記キャッシュメモリにロックするデータを学習する機械学習プログラムであって、
前記演算処理装置に、
前記産業機械の状態を観測し、
前記観測された状態に基づいて、前記キャッシュメモリにロックするデータを規定する操作を更新する、処理を実行させる、
ことを特徴とする機械学習プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュロックを学習する機械学習器，産業機械システム，製造システム，機械学習方法および機械学習プログラムに関する。
【背景技術】
【０００２】
近年、産業機械は、例えば、制御装置に設けられたＣＰＵ(Central Processing Unit：(中央)演算処理装置)でプログラムを実行することにより、所定の動作が行われるようになっている。ここで、ＣＰＵによりプログラムを実行する際、使われる頻度の高いデータは、レイテンシの低いキャッシュメモリ(キャッシュ：上位のキャッシュメモリ)に格納することで、ＣＰＵの動作効率を向上させることができる。
【０００３】
制御装置に設けられたＣＰＵ(ＣＰＵコア)の動作として、キャッシュ(上位のキャッシュメモリ)に格納されていなかったデータを使用した場合、例えば、不要と思われるデータをメモリ(メインメモリまたは下位のキャッシュメモリ)に書き出した後、新しく使用したデータをキャッシュ(上位のキャッシュ)に格納する手法が用いられることが多い。
【０００４】
なお、本明細書において、「産業機械」の文言は、産業用ロボットやコンピュータ数値制御(ＣＮＣ：Computerized Numerical Control)装置で制御される工作機械だけでなく、サービス用ロボットや鍛圧機械および射出成形機といった様々な機械を含むものとして使用される。また、「産業機械システム」の文言は、工作機械やロボットなどの産業機械と、それら産業機械を制御する制御装置(ＣＮＣ装置やロボット制御装置(および、機械学習器)など)を含むものとして使用される。
【０００５】
ところで、従来、マルチコアプロセッサを用いてキャッシュミスを起こさずに逐次プログラムを実行する制御装置が提案されている(例えば、特許文献１参照)。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１５−２００９４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前述したように、キャッシュに格納されていないデータを使用した場合、不要と思われるデータをメモリに書き出した後、新しく使用したデータをキャッシュに格納する手法が知られている。しかしながら、この手法は、プログラムによってはキャッシュが有効に活用されないことがある。
【０００８】
例えば、逐次実行するプログラムのサイズが、キャッシュ(キャッシュメモリ)のサイズ(メモリ容量)よりも大きい場合、キャッシュに格納されたすべてのデータは、再度使用されることなく、そのままメモリ(メインメモリ)に書き戻されることがある。
【０００９】
そのため、使用頻度が多いとはっきりと分かっているデータは、予めキャッシュメモリにロック(以下、キャッシュロックとも称する)し、キャッシュから掃き出されないようにすることにより、キャッシュを効率よく使用することが可能になると考えられている。
【００１０】
しかしながら、どのデータをどのようなタイミングでキャッシュロック(キャッシュメモリにロック(格納保持))するかを判断するのは難しく、この手法によりキャッシュの効率を向上させるのは困難なものとなっている。
【００１１】
本発明の目的は、上述した従来技術の課題に鑑み、キャッシュロックを適切に行ってキャッシュを効率よく使用することができる機械学習器，産業機械システム，製造システム，機械学習方法および機械学習プログラムの提供にある。
【課題を解決するための手段】
【００１２】
本発明に係る第１実施形態によれば、キャッシュメモリを使用する演算処理装置を含む制御装置により産業機械の処理を制御し、前記キャッシュメモリにロックするデータを学習する機械学習器であって、前記産業機械の状態を観測する状態観測部と、前記状態観測部により観測された状態に基づいて、前記キャッシュメモリにロックするデータを規定する操作を学習する学習部と、を備える機械学習器が提供される。
【００１３】
前記状態観測部は、前記産業機械による処理時間および処理精度の少なくとも一方を含む状態量を観測し、前記学習部は、前記状態観測部により観測された前記産業機械による処理時間および処理精度の少なくとも一方を含む状態量に基づいて、前記キャッシュメモリにロックするデータを決定する操作量を更新するのが好ましい。前記産業機械は、前記制御装置により制御される所定の処理に要する時間を計測し、前記状態観測部は、前記所定の処理に要する時間を観測することができる。また、前記産業機械は、前記制御装置により制御される所定の加工による精度を計測し、前記状態観測部は、前記所定の加工による精度を観測することもできる。
【００１４】
前記機械学習器は、さらに、前記学習部が学習した操作量を参照して、前記キャッシュメモリにロックするデータを決定する意思決定部を備えてもよい。前記学習部は、前記状態観測部の出力に基づいて報酬を計算する報酬計算部と、前記状態観測部および前記報酬計算部の出力に基づいて、前記キャッシュメモリにロックするデータの価値を定める価値関数を、前記報酬に応じて更新する価値関数更新部と、を備えることができる。あるいは、前記学習部は、前記状態観測部の出力、および、入力された教師データに基づいて誤差を計算する誤差計算部と、前記状態観測部および前記誤差計算部の出力に基づいて、前記キャッシュメモリにロックするデータの誤差を定める誤差モデルを更新する誤差モデル更新部と、を備えることもできる。前記機械学習器は、ニューラルネットワークを備えることができる。前記キャッシュメモリにロックするデータは、前記演算処理装置が実行するプログラムにおける機能命令であってもよい。
【００１５】
本発明に係る第２実施形態によれば、制御装置と、産業機械と、第１実施形態の機械学習器と、を備える産業機械システムであって、前記制御装置は、キャッシュメモリを使用する演算処理装置を含み、前記産業機械は、前記演算処理装置が実行するプログラムに基づいて処理が制御される産業機械システムが提供される。
【００１６】
本発明に係る第３実施形態によれば、第２実施形態の産業機械システムを複数備える製造システムであって、前記機械学習器は、それぞれの前記産業機械システムに設けられ、複数の前記産業機械システムに設けられた複数の前記機械学習器は、通信媒体を介して相互にデータを共有または交換するようになっている製造システムが提供される。前記機械学習器は、クラウドサーバ上に存在してもよい。
【００１７】
本発明に係る第４実施形態によれば、キャッシュメモリを使用する演算処理装置を含む制御装置により産業機械の処理を制御し、前記キャッシュメモリにロックするデータを学習する機械学習方法であって、前記産業機械の状態を観測し、前記観測された状態に基づいて、前記キャッシュメモリにロックするデータを規定する操作を更新する機械学習方法が提供される。前記産業機械の状態を観測するのは、前記産業機械による処理時間および処理精度の少なくとも一方を含む状態量を観測し、前記キャッシュメモリにロックするデータを規定する操作を更新するのは、観測された前記産業機械による処理時間および処理精度の少なくとも一方を含む状態量に基づいて、前記キャッシュメモリにロックするデータを決定する操作量を更新するのが好ましい。
【００１８】
本発明に係る第５実施形態によれば、キャッシュメモリを使用する演算処理装置を含む制御装置により産業機械の処理を制御し、前記キャッシュメモリにロックするデータを学習する機械学習プログラムであって、前記演算処理装置に、前記産業機械の状態を観測し、前記観測された状態に基づいて、前記キャッシュメモリにロックするデータを規定する操作を更新する、処理を実行させる、機械学習プログラムが提供される。
【発明の効果】
【００１９】
本発明に係る機械学習器，産業機械システム，製造システム，機械学習方法および機械学習プログラムによれば、キャッシュロックを適切に行ってキャッシュを効率よく使用することができるという効果を奏する。また、本発明に係る機械学習器，産業機械システム，製造システム，機械学習方法および機械学習プログラムによれば、産業機械システムによる処理時間の短縮および処理精度の向上を図ることが可能になる。
【図面の簡単な説明】
【００２０】
【図１】図１は、本発明に係る産業機械システムの一実施形態を概略的に示すブロック図である。
【図２】図２は、ニューロンのモデルを模式的に示す図である。
【図３】図３は、図２に示すニューロンを組み合わせて構成した三層のニューラルネットワークを模式的に示す図である。
【図４】図４は、図１に示す産業機械システムにおける機械学習器の動作の一例を示すフローチャートである。
【図５】図５は、図１に示す産業機械システムにおける制御装置のキャッシュロック処理の一例を説明するための図である。
【図６】図６は、本発明に係る産業機械システムの他の実施形態を概略的に示すブロック図である。
【図７】図７は、産業機械システムにおける制御装置のキャッシュ動作の例を説明するための図である。
【発明を実施するための形態】
【００２１】
まず、本発明に係る機械学習器，産業機械システム，製造システム，機械学習方法および機械学習プログラムの実施形態を詳述する前に、産業機械システムにおける制御装置のキャッシュ動作およびその課題を、図７を参照して説明する。図７は、産業機械システムにおける制御装置のキャッシュ動作の例を説明するための図である。
【００２２】
図７(a)〜図７(d)において、参照符号３はＣＰＵ(演算処理装置，プロセッサ)，３０はＣＰＵコア，３１は一次キャッシュメモリ(Ｌ１キャッシュ)，３２は二次キャッシュメモリ(Ｌ２キャッシュ)，３３は外部メモリ(メインメモリ)，そして，３４は内部バス(バス)を示す。
【００２３】
ここで、図７(a)は、産業機械システム(１)における制御装置(１２)に設けられ、バス３４で繋がれたＣＰＵ３および外部メモリ３３を抜き出して示す図であり、図７(b)は、ＣＰＵコア３０により要求されたデータがＬ１キャッシュ３１に格納されていた場合の動作を説明するための図である。また、図７(c)は、ＣＰＵコア３０により要求されたデータがＬ２キャッシュ３２に格納されていた場合の動作を説明するための図であり、図７(d)は、ＣＰＵコア３０により要求されたデータがＬ１キャッシュ３１およびＬ２キャッシュ３２に格納されていない場合の動作を説明するための図である。
【００２４】
なお、産業機械(１１)は、例えば、産業用およびサービス用のロボット、あるいは、工作機械などの様々な機械であり、制御装置(１２)は、ロボット制御装置、あるいは、ＣＮＣ(ＮＣ)制御装置などである。また、Ｌ１キャッシュ３１は、Ｌ２キャッシュ３２よりもレイテンシが低く、さらに、Ｌ２キャッシュ３２は、外部メモリ３３よりもレイテンシが低い。
【００２５】
図７(b)に示されるように、例えば、ＣＰＵコア３０により要求されたデータがＬ１キャッシュ３１に格納されていた場合、ＣＰＵコア３０は、Ｌ１キャッシュ３１から所望のデータを読み出す。すなわち、所望のデータがＬ１キャッシュ３１でヒットした場合、ＣＰＵコア３０は、その所望のデータを、例えば、１サイクルタイムでＬ１キャッシュ３１から読み出すことになる。
【００２６】
また、図７(c)に示されるように、例えば、ＣＰＵコア３０により要求されたデータがＬ１キャッシュ３１に格納されていない場合、ＣＰＵコア３０は、そのデータがＬ２キャッシュ３２に格納されているかどうかを見に行き、Ｌ２キャッシュ３２に格納されていれば、Ｌ２キャッシュ３２から所望のデータを読み出す。すなわち、所望のデータがＬ１キャッシュ３１に格納されておらず、Ｌ２キャッシュ３２でヒットした場合、ＣＰＵコア３０は、その所望のデータを、例えば、数サイクルタイム〜十数サイクルタイムでＬ２キャッシュ３２から読み出すことになる。
【００２７】
そして、図７(d)に示されるように、例えば、ＣＰＵコア３０により要求されたデータがＬ１キャッシュ３１およびＬ２キャッシュ３２に格納されていない場合、ＣＰＵコア３０は、バス３４を介して繋がれた外部メモリ３３から所望のデータを読み出す。このとき、ＣＰＵコア３０は、その所望のデータを、例えば、数十サイクルタイムを費やして外部メモリ３３から読み出すことになる。
【００２８】
このように、例えば、ＣＰＵ３によりプログラムを実行する際、使われる頻度の高いデータを、レイテンシの低いキャッシュメモリ(例えば、Ｌ１キャッシュ３１)に格納することにより、ＣＰＵ３の動作効率の向上が可能なことが知られている。なお、例えば、Ｌ１キャッシュ３１に格納されていないデータを使用した場合には、例えば、不要と思われるデータを外部メモリ３３(または、Ｌ２キャッシュ３２)に書き出した後、新しく使用したデータをＬ１キャッシュ３１に格納する手法が用いられる。
【００２９】
しかしながら、上述した手法は、プログラムによってはキャッシュが有効に活用されないことがある。例えば、逐次実行するプログラムのサイズが、キャッシュのメモリ容量より大きい場合、キャッシュに格納されたすべてのデータは、再度使用されることなく、そのまま外部メモリ３３に書き戻されることがある。
【００３０】
具体的に、一般的なシーケンスプログラム(ラダーなど)を考え、プログラムの実行を行うＣＰＵ(３)のキャッシュ(例えば、Ｌ１キャッシュ３１)が有効であるものとする。まず、シーケンスプログラムでは、先頭から順々にプログラムを実行していくことになるが、例えば、ＣＰＵのキャッシュのサイズ(メモリ容量)と、シーケンスプログラムのデータサイズを比較し、キャッシュのサイズが大きい場合には、シーケンスプログラムはすべてキャッシュに格納することが可能であるため、ＣＰＵがプログラムを外部メモリ(３３)から読み出す必要がなくなる。なお、現実的には、ＣＰＵのキャッシュのサイズよりも、シーケンスプログラムのサイズが大きい場合が多い。
【００３１】
次に、ＣＰＵのキャッシュへの読み出しと、キャッシュからの掃出しの機構を考える。一般的なキャッシュの機構として、典型的な例としては、キャッシュが更新(キャッシュの読み出しや、ＣＰＵによる書き込みなど)された時期が最も古いデータを外部メモリに書き戻し、その代わりに最も新しく読み出されたデータを格納することが考えられる。ここで、シーケンスプログラムは、先頭から順々にプログラムを読み出して実行を行うため、シーケンスプログラムの先頭に戻ってきた時点では、既に、シーケンスのプログラムはキャッシュから掃き出されていることが多い。典型的な例としては、シーケンスプログラムのすべての領域を外部メモリから読み出すことになり、キャッシュを有効に使用できていないことになる。
【００３２】
ところで、近年、ＣＰＵによっては、キャッシュをロックする機能を持っているものがあり、この機能を活用することが考えられる。ロックされたキャッシュ(キャッシュに格納保持されたデータ)は、キャッシュの更新時の掃き出しの対象とならないため、常にキャッシュに格納されていることになる。例えば、シーケンスプログラムにおいては、頻繁に使用される機能命令のブロックをロックすることで、機能命令に相当するプログラムの読み出しにかかる時間(サイクルタイム：処理時間)を短縮することが考えられる。
【００３３】
しかしながら、シーケンスプログラムにおいて、どのブロックをキャッシュロック(キャッシュメモリにロック)することが最適であるかを判断するのは、容易ではない。すなわち、どのメモリ領域をどのようなタイミングでキャッシュロックするかを判断するのは難しく、この手法によりキャッシュ効率を向上させるのは困難なものとなっている。
【００３４】
以下、本発明に係る機械学習器，産業機械システム，製造システム，機械学習方法および機械学習プログラムの実施形態を、添付図面を参照して詳述する。ここで、各図面において、同じ部材には同じ参照符号が付されている。また、異なる図面において同じ参照符号が付されたものは同じ機能を有する構成要素であることを意味するものとする。なお、理解を容易にするために、これらの図面は縮尺を適宜変更している。
【００３５】
図１は、本発明に係る産業機械システムの一実施形態を概略的に示すブロック図である。図１に示されるように、本実施形態の産業機械システム１は、工作機械やロボットなどの産業機械１１，ＣＮＣ装置(ＣＮＣ制御装置)やロボット制御装置などの制御装置１２および機械学習器２を含む。なお、機械学習器２は、制御装置１２の一部として構成することができるのはもちろんである。
【００３６】
制御装置１２は、例えば、図７を参照して説明したような、内部バス(バス)３４で繋がれたＣＰＵ(演算処理装置)３および外部メモリ(メインメモリ)３３を含み、ＣＰＵ３は、与えられたプログラムに従って処理を行い、産業機械１１に所定の処理(動作)を実行させる。また、ＣＰＵ３は、図７を参照して説明したのと同様に、ＣＰＵコア３０，Ｌ１キャッシュ(一次キャッシュメモリ)３１，Ｌ２キャッシュ(二次キャッシュメモリ)３２を含む。ここで、制御装置１２には、入出力装置(Ｉ／Ｏ装置)や操作スイッチおよび表示装置などの様々な構成(図示しない)が設けられているのはいうまでもない。
【００３７】
機械学習器２は、例えば、制御装置１２(ＣＰＵ３)が実行するプログラムにおけるキャッシュロック処理を学習するためのものであり、このキャッシュロック処理が学習されたプログラムに基づいて、産業機械１１の動作が制御される。機械学習器２は、状態観測部２１、学習部２２、および、意思決定部２５を含む。状態観測部２１は、例えば、産業機械１１が処理を行う時間(サイクルタイム：処理時間)、ならびに、ワークを加工(処理)する精度(加工精度：処理精度)といった状態量(状態)を観測する。
【００３８】
学習部２２は、状態観測部２１により観測された状態量に基づいて、例えば、Ｌ１キャッシュ３１にロックしておくメモリ領域を制御する操作量、例えば、どのメモリ領域をどのタイミングでＬ１キャッシュ３１にロックするか決める操作コマンドを更新する。ここで、学習部２２は、状態観測部２１の出力に基づいて報酬を計算する報酬計算部２３、ならびに、状態観測部２１および報酬計算部２３の出力に基づいて、キャッシュロックするメモリ領域を決める動作(操作)の価値を定める価値関数を、報酬に応じて更新する価値関数更新部２４を含む。
【００３９】
なお、報酬計算部２３は、例えば、産業機械１１による処理時間(加工時間)を短縮できれば、プラス報酬を与え、処理時間を短縮できなければ、マイナス報酬を与える。さらに、報酬計算部２３は、例えば、産業機械１１による処理精度(加工精度)が向上すれば、プラス報酬を与え、処理精度が向上しなければ、報酬なしとする。ここで、産業機械１１による処理精度が問題となるのは、例えば、予め定められた時間内に所定の処理を完了するように設定されたプログラムを実行するとき、キャッシュミスなどによる処理時間の増大を、その産業機械１１を高速動作させ、あるいは、他の処理を省略することにより吸収する場合などである。このとき、産業機械１１の処理精度は、例えば、産業機械１１を高速動作させることにより、あるいは、他の処理を省略することにより、低下することになる。また、状態観測部２１が観測する状態量としては、産業機械１１による処理時間および処理精度に限定されるものではなく、あるいは、処理時間および処理精度の一方であってもよい。
【００４０】
すなわち、状態観測部２１が観測する状態量が産業機械１１による処理時間だけの場合、報酬計算部２３は、例えば、産業機械１１による処理時間を短縮できれば、プラス報酬を与え、処理時間を短縮できなければ、マイナス報酬を与える。なお、報酬計算部２３において、マイナス報酬を与える代わりに、報酬なしとしてもよく、また、報酬なしの代わりに、マイナス報酬を与えてもよい。
【００４１】
ここで、産業機械１１による処理時間は、例えば、産業機械１１に設けられたタイマ(図示しない)により計測することができる。あるいは、プログラムを実行する制御装置１２から産業機械１１による処理時間を取得することも可能である。また、産業機械１１の処理精度は、例えば、産業機械１１に設けられたカメラおよび画像処理装置(図示しない)により、あるいは、産業機械１１の近傍に設けられた測定器のプローブ(図示しない)などを使用して計測することができる。すなわち、産業機械１１による処理時間および処理精度の計測は、知られている様々な手法を適用して取得し、状態観測部２１に出力することができる。
【００４２】
価値関数更新部２４は、報酬計算部２３からの報酬に基づいて価値関数(例えば、キャッシュロックする機能命令を規定する行動価値テーブル)の更新を行う。なお、価値関数は、例えば、機械学習器２に設けられたメモリに格納され、或いは、通信回線等を介して他の機械学習器２に伝送することもできる。また、産業機械システム１(１ａ〜１ｚ)は、それぞれが産業機械１１(１１ａ〜１１ｚ)，制御装置１２(１２ａ〜１２ｚ)および機械学習器２(２ａ〜２ｚ)を有していてもよい。ここで、各参照符号の後に付したａ〜ｚは、その構成要素が複数であることを意味するものとする。このように、製造システム(製造設備)が複数の産業機械システム１ａ〜１ｚ、すなわち、複数の産業機械１１ａ〜１１ｚ，制御装置１２ａ〜１２ｚおよび機械学習器２ａ〜２ｚを有している場合、例えば、１つの機械学習器２ａの価値関数更新部２４ａにより更新された関数を用いて、他の機械学習器２ｂ〜２ｚの価値関数更新部２４ｂ〜２４ｚの関数を更新することが可能である。これは、図６を参照して説明する産業機械システムの他の実施形態に関しても同様である。
【００４３】
意思決定部２５は、学習部２２が学習した操作量を参照して、例えば、Ｌ１キャッシュ３１に対して、どのメモリ領域をどのタイミングでＬ１キャッシュ３１にロックしておくかを決める操作コマンドを決定して、制御装置１２に出力する。制御装置１２では、例えば、ＣＰＵ３におけるＬ１キャッシュ３１が、意思決定部２５からの出力に基づく所定の命令を格納して保持しておく(キャッシュロックする)ことになる。そして、産業機械１１(工作機械やロボット)は、例えば、所定の命令がキャッシュロックされたＬ１キャッシュ３１を使用してプログラムに基づいた動作を実行する。
【００４４】
以上において、キャッシュロック処理を行うキャッシュメモリは、Ｌ１キャッシュ３１に限定されるものではなく、例えば、Ｌ２キャッシュ３２、あるいは、Ｌ２キャッシュ３２と外部メモリ３３の間に設けられた三次キャッシュメモリ(Ｌ３キャッシュ：図示しない)などであってもよい。また、本実施形態の適用は、キャッシュロック機能を有するＣＰＵに限定されるものではない。
【００４５】
次に、一般的なシーケンスプログラム(ラダーなど)を例として詳述する。上述した本発明に係る機械学習器(産業機械システム)の実施方法としては、例えば、シーケンスプログラムの実行開始前に、ある特定のブロックをキャッシュロック(キャッシュにロック)する。また、プログラムの途中でロックする命令を追加して、動的にキャッシュロック(キャッシュのロック)を行うことも可能である。ただし、この場合、必要に応じてキャッシュロックを解除する。すなわち、キャッシュロックするブロックの位置や、ロックするタイミングを入力として、例えば、報酬であるプログラムの実行時間(サイクルタイム)の短縮を図るのが好ましい。
【００４６】
このプログラムの実行時間の短縮によって、シーケンスプログラムに対する応答性の向上、あるいは、単位時間あたりに実行可能な命令数の拡大を図ることが可能になる。なお、上記記載では、例として、シーケンスプログラムの実行を説明したが、他の一般的なプログラムにおいても、同様に、プログラムの実行時間の短縮を図ることが可能である。
【００４７】
具体的に、制御装置１２から状態観測部２１に対して、例えば、Ｌ１キャッシュ３１にロックするメモリ領域を入力し、産業機械１１から状態観測部２１に対して、例えば、プログラムの実行時間を入力する。学習部２２では、例えば、乱拓アルゴリズム(確率的アルゴリズム)などを用いて、価値関数を生成し、任意のプログラムに対する最適なキャッシュロックを求める。ただし、このキャッシュロックは、プログラムごとに最適なものが異なるため、多数のプログラムの最適化を行うことで、どのようなバイナリ列を含むメモリ領域をロックするべきかといった操作量の学習を行うのが好ましい。
【００４８】
例えば、それぞれの機能命令に対して、キャッシュロックすることによる影響の重み付けを行う。この重み付けについては、例えば、最適化を行う際にロックするメモリ領域を機能命令の含まれるメモリ領域に限定して、プログラム実行時間の増減(状態量)に基づいて学習を行う。あるいは、予め機能命令のキャッシュロックの影響を評価するための評価プログラムを作成し、機能命令ごとに評価値(価値)を求めておき、評価プログラムにより、機能命令のバイナリデータを入力として、機能命令がキャッシュロックされることによる影響の価値関数を、報酬計算部２３の出力(報酬)に基づいて、価値関数更新部２４が更新する。これにより、例えば、新たな機能命令が追加された場合でも、再度評価を行うことなく、キャッシュロックすることの影響を見積もることができる。なお、報酬計算部２３は、例えば、プログラムの実行時間による状態観測部２１の出力に基づいて報酬を計算し、価値関数更新部２４に出力する。また、状態観測部２１の入力としては、プログラムの実行時間だけでなく、例えば、産業機械１１により加工されるワーク(製品)の加工精度といった状態量であってもよい。
【００４９】
ところで、機能命令自体がコールされるかどうかは、全体のプログラムに依存するため、機能命令がコールされる回数の把握を行う。すなわち、機能命令がコールされる回数は、入力や状態に依存しない場合は、全体のプログラムに対して一意に決まるが、入力や状態に依存する場合には、実際に実行して統計を取るか、想定される入力や状態から期待値を与える。例えば、条件分岐などがない関数においては、一意にすべて実行されるが、入力や状態によって条件分岐する場合には、実行されるかどうかが条件によって異なるため、上述のように期待値を求めるのが好ましい。
【００５０】
例えば、機能命令がコールされる回数の期待値と前述した重み付けから、機能命令をロック(キャッシュロック)するかが判定される。基本的な適用としては、前述の期待値と重み付けを積算し、最も値の大きいものから順にロックする機能命令を選別することが考えられる。これは、例えば、後述する教師あり学習の教師データ、あるいは、半教師あり学習のデータなどとして使用することもできる。なお、動的にキャッシュロックするメモリ領域を変更する場合は、例えば、プログラムの改変が必要になるが、静的にキャッシュロックするメモリ領域を決定しておく場合は、例えば、プログラムの実行開始前にキャッシュロックを行っておくことにより、プログラム自体には変更を加えないことも可能である。
【００５１】
次に、機械学習器について、説明する。機械学習器は、装置に入力されるデータの集合から、その中にある有用な規則や知識表現、判断基準などを解析により抽出し、その判断結果を出力するとともに、知識の学習(機械学習)を行う機能を有する。機械学習の手法は様々であるが、大別すれば、例えば、「教師あり学習」、「教師なし学習」および「強化学習」に分けられる。さらに、これらの手法を実現するうえで、特徴量そのものの抽出を学習する、「深層学習(ディープラーニング：Deep Learning)」と呼ばれる手法がある。
【００５２】
なお、図１に示す機械学習器２は、「強化学習」を適用したものであり、また、図６を参照して後述する機械学習器４は、「教師あり学習」を適用したものである。これらの機械学習(機械学習器２，４)は、汎用の計算機若しくはプロセッサを用いることもできるが、例えば、ＧＰＧＰＵ(General-Purpose computing on Graphics Processing Units)や大規模ＰＣクラスターなどを適用すると、より高速処理が可能になる。
【００５３】
まず、教師あり学習とは、教師データ、すなわち、ある入力と結果(ラベル)のデータの組を大量に機械学習器２に与えることで、それらのデータセットにある特徴を学習し、入力から結果を推定するモデル(誤差モデル)、すなわち、その関係性を帰納的に獲得するものである。例えば、後述のニューラルネットワークなどのアルゴリズムを用いて実現することが可能である。
【００５４】
また、教師なし学習とは、入力データのみを大量に学習装置に与えることで、入力データがどのような分布をしているか学習し、対応する教師出力データを与えなくても、入力データに対して圧縮・分類・整形などを行う装置で学習する手法である。例えば、それらのデータセットにある特徴を、似た者どうしにクラスタリングすることなどができる。この結果を使って、何らかの基準を設けてそれを最適化するような出力の割り当てを行うことにより、出力の予測を実現することできる。
【００５５】
なお、教師なし学習と教師あり学習との中間的な問題設定として、半教師あり学習と呼ばれるものもあり、これは、例えば、一部のみ入力と出力のデータの組が存在し、それ以外は入力のみのデータである場合が対応する。本実施形態においては、実際にロボットを動かさなくても取得することができるデータ(画像データやシミュレーションのデータなど)を教師なし学習で利用することにより、学習を効率的に行うことが可能になる。
【００５６】
次に、強化学習について、説明する。まず、強化学習の問題設定として、次のように考える。
・ロボットは、環境の状態を観測し、行動を決定する。
・環境は、何らかの規則に従って変化し、さらに、自分の行動が、環境に変化を与えることもある。
・行動するたびに、報酬信号が帰ってくる。
・最大化したいのは、将来にわたっての(割引)報酬の合計である。
・行動が引き起こす結果を全く知らない、または、不完全にしか知らない状態から学習はスタートする。すなわち、ロボットは、実際に行動して初めて、その結果をデータとして得ることができる。つまり、試行錯誤しながら最適な行動を探索する必要がある。
・人間の動作を真似るように、事前学習(前述の教師あり学習や、逆強化学習といった手法)した状態を初期状態として、良いスタート地点から学習をスタートさせることもできる。
【００５７】
ここで、強化学習とは、判定や分類だけではなく、行動を学習することにより、環境に行動が与える相互作用を踏まえて適切な行動を学習、すなわち、将来的に得られる報酬を最大にするための学習する方法を学ぶものである。以下に、例として、Ｑ学習の場合で説明を続けるが、Ｑ学習に限定されるものではない。
【００５８】
Ｑ学習は、或る環境状態ｓの下で、行動ａを選択する価値Ｑ(ｓ，ａ)を学習する方法である。つまり、或る状態ｓのとき、価値Ｑ(ｓ，ａ)の最も高い行動ａを最適な行動として選択すればよい。しかし、最初は、状態ｓと行動ａとの組合せについて、価値Ｑ(ｓ，ａ)の正しい値は全く分かっていない。そこで、エージェント(行動主体)は、或る状態ｓの下で様々な行動ａを選択し、その時の行動ａに対して、報酬が与えられる。それにより、エージェントは、より良い行動の選択、すなわち、正しい価値Ｑ(ｓ，ａ)を学習していく。
【００５９】
さらに、行動の結果、将来にわたって得られる報酬の合計を最大化したいので、最終的にＱ(ｓ，ａ)＝Ｅ［Σ(γt)ｒt］となるようにすることを目指す。ここでＥ［］は期待値を表し、ｔは時刻、γは後述する割引率と呼ばれるパラメータ、ｒtは時刻ｔにおける報酬、Σは時刻ｔによる合計である。この式における期待値は、最適な行動に従って状態変化したときについてとるものとし、それは、分かっていないので、探索しながら学習することになる。このような価値Ｑ(ｓ，ａ)の更新式は、例えば、次の式(１)により表すことができる。
【００６０】
【数１】
0006457382.tif 000002
上記の式(１)において、ｓtは、時刻ｔにおける環境の状態を表し、ａtは、時刻ｔにおける行動を表す。行動ａtにより、状態はｓt+1に変化する。rt+1は、その状態の変化により得られる報酬を表している。また、ｍａｘの付いた項は、状態ｓt+1の下で、その時に分かっている最もＱ値の高い行動ａを選択した場合のＱ値にγを乗じたものになる。ここで、γは、０＜γ≦１のパラメータで、割引率と呼ばれる。また、αは、学習係数で、０＜α≦１の範囲とする。
【００６１】
上述した式(１)は、試行ａtの結果、帰ってきた報酬ｒt+1を元に、状態ｓtにおける行動ａtの評価値Ｑ(ｓt，ａt)を更新する方法を表している。すなわち、状態ｓにおける行動ａの評価値Ｑ(ｓt，ａt)よりも、報酬ｒt+1と行動ａによる次の状態における最良の行動ｍａｘ ａの評価値Ｑ(ｓt+1，ｍａｘ ａt+1)の合計の方が大きければ、Ｑ(ｓt，ａt)を大きくし、反対に小さければ、Ｑ(ｓt，ａt)を小さくすることを示している。つまり、或る状態における或る行動の価値を、結果として即時帰ってくる報酬と、その行動による次の状態における最良の行動の価値に近付けるようにしている。
【００６２】
ここで、Ｑ(ｓ，ａ)の計算機上での表現方法は、すべての状態行動ペア(ｓ，ａ)に対して、その値をテーブルとして保持しておく方法と、Ｑ(ｓ，ａ)を近似するような関数を用意する方法がある。後者の方法では、前述の式(１)は、確率勾配降下法などの手法で近似関数のパラメータを調整していくことにより、実現することができる。なお、近似関数としては、後述のニューラルネットワークを用いることができる。
【００６３】
また、教師あり学習、教師なし学習の誤差モデル、あるいは、強化学習での価値関数の近似アルゴリズムとして、ニューラルネットワークを用いることができる。図２は、ニューロンのモデルを模式的に示す図であり、図３は、図２に示すニューロンを組み合わせて構成した三層のニューラルネットワークを模式的に示す図である。すなわち、ニューラルネットワークは、例えば、図２に示すようなニューロンのモデルを模した演算装置およびメモリなどで構成される。
【００６４】
図２に示されるように、ニューロンは、複数の入力ｘ(図２では、一例として入力ｘ1〜入力ｘ3)に対する出力(結果)ｙを出力するものである。各入力ｘ(ｘ1，ｘ2，ｘ3)には、この入力ｘに対応する重みｗ(ｗ1，ｗ2，ｗ3)が掛けられる。これにより、ニューロンは、次の式(２)により表現される結果ｙを出力する。なお、入力ｘ、結果ｙおよび重みｗは、すべてベクトルである。また、下記の式(２)において、θは、バイアスであり、ｆkは、活性化関数である。
【数２】
0006457382.tif 000003
【００６５】
図３を参照して、図２に示すニューロンを組み合わせて構成した三層のニューラルネットワークを説明する。図３に示されるように、ニューラルネットワークの左側から複数の入力ｘ(ここでは、一例として、入力ｘ1〜入力ｘ3)が入力され、右側から結果ｙ(ここでは、一例として、結果ｙ1〜入力ｙ3)が出力される。具体的に、入力ｘ1，ｘ2， ｘ3は、３つのニューロンＮ11〜Ｎ13の各々に対して、対応する重みが掛けられて入力される。これらの入力に掛けられる重みは、まとめてｗ１と表記されている。
【００６６】
ニューロンＮ11〜Ｎ13は、それぞれ、ｚ11〜ｚ13を出力する。図３において、これらｚ11〜ｚ13は、まとめて特徴ベクトルｚ１と表記され、入力ベクトルの特徴量を抽出したベクトルとみなすことができる。この特徴ベクトルｚ１は、重みｗ１と重みｗ２との間の特徴ベクトルである。ｚ11〜ｚ13は、２つのニューロンＮ21およびＮ22の各々に対して、対応する重みが掛けられて入力される。これらの特徴ベクトルに掛けられる重みは、まとめてｗ２と表記されている。
【００６７】
ニューロンＮ21，Ｎ22は、それぞれｚ21，ｚ22を出力する。図３において、これらｚ21，ｚ22は、まとめて特徴ベクトルｚ２と表記されている。この特徴ベクトルｚ２は、重みｗ２と重みｗ３との間の特徴ベクトルである。ｚ21，ｚ22は、３つのニューロンＮ31〜Ｎ33の各々に対して、対応する重みが掛けられて入力される。これらの特徴ベクトルに掛けられる重みは、まとめてｗ３と表記されている。
【００６８】
最後に、ニューロンＮ31〜Ｎ33は、それぞれ、結果ｙ１〜結果ｙ３を出力する。ニューラルネットワークの動作には、学習モードと価値予測モードとがある。例えば、学習モードにおいて、学習データセットを用いて重みＷを学習し、そのパラメータを用いて予測モードにおいて、ロボットの行動判断を行う。なお、便宜上、予測と書いたが、検出・分類・推論など多様なタスクが可能なのはいうまでもない。
【００６９】
ここで、予測モードで実際にロボットを動かして得られたデータを即時学習し、次の行動に反映させる(オンライン学習)ことも、予め収集しておいたデータ群を用いてまとめた学習を行い、以降はずっとそのパラメータで検知モードを行う(バッチ学習)こともできる。あるいは、その中間的な、ある程度データが溜まるたびに学習モードを挟むということも可能である。
【００７０】
また、重みｗ１〜ｗ３は、誤差逆伝搬法(誤差逆転伝播法：バックプロパゲーション：Backpropagation)により学習可能なものである。なお、誤差の情報は、右側から入り左側に流れる。誤差逆伝搬法は、各ニューロンについて、入力ｘが入力されたときの出力ｙと真の出力ｙ(教師)との差分を小さくするように、それぞれの重みを調整(学習)する手法である。
【００７１】
このようなニューラルネットワークは、三層以上に、さらに層を増やすことも可能である(深層学習と称される)。また、入力の特徴抽出を段階的に行い、結果を回帰する演算装置を、教師データのみから自動的に獲得することも可能である。そこで、本実施形態の機械学習器２は、上述のＱ学習を実施すべく、図１に示されるように、状態観測部２１、学習部２２、および、意思決定部２５を備えている。ただし、本発明に適用される機械学習方法は、Ｑ学習に限定されないのは前述した通りである。すなわち、機械学習器で用いることができる手法である「教師あり学習」、「教師なし学習」、「半教師あり学習」および「強化学習」などの様々な手法が適用可能である。
【００７２】
次に、本実施形態の産業機械における機械学習器２の動作の一例を説明する。図４は、図１に示す産業機械システムにおける機械学習器の動作の一例を示すフローチャートであり、図５は、図１に示す産業機械システムにおける制御装置のキャッシュロック処理の一例を説明するための図である。
【００７３】
図４に示されるように、機械学習が開始(学習スタート)すると、行動価値テーブルに基づいて機能命令を選択する(ステップＳＴ１)。すなわち、制御装置１２は、行動価値テーブル(価値関数)によるアドレスおよびタイミングを取得して、選択された命令をキャッシュメモリ(Ｌ１キャッシュ３１)にロックする(ステップＳＴ１)。図５は、制御装置１２(ＣＰＵ３)により実行されるシーケンスプログラムにおける機能命令Ａに相当するメモリ領域が、Ｌ１キャッシュ３１にロックされ、すなわち、Ｌ１キャッシュ３１に格納保持される様子を示すものである。
【００７４】
ここで、図５に示すシーケンスプログラムでは、例えば、基本命令１および基本命令２が実行された後、機能命令Ａを実行する場合、既にＬ１キャッシュ３１に格納保持(ロック)された機能命令Ａブロックに相当するメモリ領域を、Ｌ１キャッシュ３１から読み出して(call)実行する。このとき、機能命令Ａブロックに相当するメモリ領域は、Ｌ１キャッシュ３１からそのまま(例えば、１サイクルタイムで)読み出すことができるため、機能命令Ａを直ちに実行することが可能になる。
【００７５】
なお、機能命令Ａの処理が終了すると、次の基本命令３に戻り(return)、さらに、基本命令４，基本命令５，…を実行する。そして、再び機能命令Ａを実行する場合、基本命令２の後における機能命令Ａの実行と同様に、Ｌ１キャッシュ３１からそのまま読み出して実行することができる。
【００７６】
これに対して、例えば、機能命令Ａブロックをキャッシュに格納しておらず、かつ、基本命令５から機能命令Ａを再度実行するまでの間に挟まれる命令に相当するメモリ領域がＬ１キャッシュ３１よりも大きい場合を考えると、一般的なキャッシュ管理機構を用いたとき、機能命令ブロックＡは、Ｌ１キャッシュ３１からＬ２キャッシュ３２あるいは外部メモリ３３に書き出されていることが多く、その場合、機能命令Ａを実行するためには、Ｌ２キャッシュ３２あるいは外部メモリ３３にアクセスする必要がある。
【００７７】
このようにキャッシュのロックを適切に行うことにより、シーケンスプログラムを短時間で実行、すなわち、産業機械１１による処理時間を短縮することができる。これは、例えば、予め定められた時間内に所定の処理を完了するように設定されたプログラムを実行するときでも、産業機械１１を通常の速度で動作させることができ、あるいは、他の処理を省略することなく所定の処理を行うことができるため、処理精度(加工精度)を向上させることも可能になる。
【００７８】
再び、図４のフローチャートに戻り、加工時間(産業機械１１による処理時間)を短縮できたかどうかを判定し(ステップＳＴ３)、加工時間を短縮できたと判定する(ステップＳＴ３：ＹＥＳ)と、加工精度(産業機械１１による処理精度)が向上したかどうかを判定する(ステップＳＴ４)。ステップＳＴ３において、加工時間を短縮できなかったと判定する(ＮＯ)と、マイナス報酬を設定する(ステップＳＴ７)。また、ステップＳＴ４において、加工精度が向上したと判定する(ＹＥＳ)と、プラス報酬を設定し(ステップＳＴ５)、加工精度が向上しなかったと判定する(ＮＯ)と、報酬なし(零報酬)を設定する(ステップＳＴ６)。
【００７９】
そして、ステップＳＴ８において、ステップＳＴ５〜ＳＴ７における「プラス報酬」，「報酬なし」および「マイナス報酬」による報酬計算を行い、行動価値テーブルを更新し(ステップＳＴ９)、ステップＳＴ１に戻り、同様の処理を繰り返す。これにより、キャッシュロックする(Ｌ１キャッシュ３１に格納保持する)機能命令を最適なものとして、産業機械１１による加工時間の短縮および加工精度の向上を図ることができる。以上において、キャッシュメモリにロックするデータとして、機能命令を例として説明したが、本実施形態の適用は、機能命令に限定されるものではない。
【００８０】
図６は、本発明に係る産業機械システムの他の実施形態を概略的に示すブロック図であり、教師あり学習を適用したものを示す。図６と、前述した図１の比較から明らかなように、図６に示す教師あり学習を適用した産業機械システム１’は、図１に示すＱ学習(強化学習)を適用した産業機械システム１において、教師データ(結果(ラベル)付きデータ)が提供されるようになっている。
【００８１】
図６に示されるように、教師あり学習を適用した産業機械システム１’における機械学習器４は、状態観測部４１と、学習部４２と、意思決定部４５と、を備える。学習部４２は、誤差計算部４３と、誤差モデル更新部４４と、を含む。ここで、誤差計算部４３および誤差モデル更新部４４は、それぞれ、図１に示すＱ学習を適用した産業機械１１における報酬計算部２３および価値関数更新部２４に相当する。なお、他の構成、例えば、産業機械１１，制御装置１２の構成は、前述した図１と同様であり、その説明は省略する。また、状態観測部４１および意思決定部４５も、図１のものと同様であり、その説明は省略する。
【００８２】
誤差計算部４３は、状態観測部４１の出力および教師データを受け取って、結果(ラベル)付きデータと学習部４２に実装されている誤差モデルの出力との誤差を計算する。ここで、教師データは、例えば、制御装置１２に入力するプログラム(産業機械１が処理する動作)が同一の場合、産業機械１に処理を行わせる所定日の前日までに得られた結果(ラベル)付きデータを保持し、その所定日に、結果(ラベル)付きデータを誤差計算部４３に提供することができる。
【００８３】
あるいは、産業機械システム１’の外部で行われたシミュレーションなどにより得られたデータ、または、他の産業機械システムの結果(ラベル)付きデータを、メモリカードや通信回線により、その産業機械システム１’の誤差計算部４３に提供することも可能である。さらに、結果(ラベル)付きデータ(教師データ)を、例えば、学習部４２に内蔵したフラッシュメモリ(Flash Memory)などの不揮発性メモリに保持し、その不揮発性メモリに保持された結果(ラベル)付きデータを、そのまま学習部４２で使用することもできる。
【００８４】
以上において、産業機械システム１を複数備えた製造システム(製造設備)を考えた場合、例えば、機械学習器２(４)は、産業機械システム１(１’)毎にそれぞれ設けられ、複数の産業機械システム１(１’)に設けられた複数の機械学習器２(４)は、例えば、通信媒体を介して相互にデータを共有または交換することが可能である。また、機械学習器２(４)は、クラウドサーバ上に存在させることも可能である。
【００８５】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【００８６】
１    産業機械システム
２，４    機械学習器
１１    産業機械(工作機械，ロボットなど)
１２    制御装置(ＣＮＣ装置，ロボット制御装置など)
２１，４１    状態観測部
２２，４２    学習部
２３    報酬計算部
２４    価値関数更新部
２５，４５    意思決定部
４３    誤差計算部
４４    誤差モデル更新部
【図１】
0006457382.tif 000004
【図２】
0006457382.tif 000005
【図３】
0006457382.tif 000006
【図４】
0006457382.tif 000007
【図５】
0006457382.tif 000008
【図６】
0006457382.tif 000009
【図７】
0006457382.tif 000010