(57)【要約】【課題】様々なニューラルネットワークモデルを学習器回路上に柔軟に構築する。【解決手段】機械学習モデル構築装置が、設定値に応じたニューラルネットワークモデルを構築可能な学習器回路と、前記学習器回路に所定のニューラルネットワークモデルを構築するための値となるように前記設定値を調整可能な制御手段と、を備える。【選択図】図１
2018014060.tif 000002
【特許請求の範囲】
【請求項１】
設定値に応じたニューラルネットワークモデルを構築可能な学習器回路と、
前記学習器回路に所定のニューラルネットワークモデルを構築するための値となるように前記設定値を調整する制御手段と、
を備える機械学習モデル構築装置。
【請求項２】
前記制御手段は、パラメータ値の入力を受け付け、該受け付けたパラメータ値に対応したニューラルネットワークモデルを前記所定のニューラルネットワークモデルとし、該所定のニューラルネットワークモデルを前記学習器回路に構築するための値となるように前記設定値を調整する請求項１に記載の機械学習モデル構築装置。
【請求項３】
前記受け付けたパラメータ値とは、ニューラルネットワークモデルの層数と、各層における次元数とを指定する値である請求項２に記載の機械学習モデル構築装置。
【請求項４】
前記制御手段は、設定ファイルから前記パラメータ値を読み込む請求項２又は３に記載の機械学習モデル構築装置。
【請求項５】
前記制御手段は、前記パラメータ値に応じたパーセプトロンの接続関係と、ユーザが前記パーセプトロンの接続関係を参照しながら前記パラメータ値の調整を行うためのグラフィカルユーザインタフェースとを表示手段に描画する請求項２から４の何れか１項に記載の機械学習モデル構築装置。
【請求項６】
前記制御手段は、あらかじめ定めたニューラルネットワークモデルをユーザに選択させ、該選択されたニューラルネットワークモデルを前記所定のニューラルネットワークモデルとし、該所定のニューラルネットワークモデルを前記学習器回路に構築するための値となるように前記設定値を調整する請求項１から５に記載の機械学習モデル構築装置。
【請求項７】
前記制御手段は、前記設定値に応じて前記学習器回路に含まれる各パーセプトロンの出力を制御することにより、前記学習器回路にニューラルネットワークモデルを構築する請求項１から６までの何れか１項に記載の機械学習モデル構築装置。
【請求項８】
前記設定値に応じて前記学習器回路に含まれる各パーセプトロンの出力を制御するとは、前記設定値に応じて前記学習器回路に含まれる各パーセプトロン内の掛け算器の出力を、該掛け算器の入力に重み付け値を乗算した値、該掛け算器の入力そのものの値、及びゼロの値、の何れかの値とし、各パーセプトロン内の掛け算器の出力の総和を各パーセプトロンの出力とすることである請求項７に記載の機械学習モデル構築装置。
【請求項９】
工作機械を制御する数値制御装置であって、
請求項１から８までの何れか１項に記載の機械学習モデル構築装置を備え、
前記制御手段は、前記工作機械の制御に関連するニューラルネットワークモデルを前記学習器回路に構築するためのパラメータ値の入力を受け付け、該受け付けたパラメータ値に対応したニューラルネットワークモデルを前記所定のニューラルネットワークモデルとし、該所定のニューラルネットワークモデルを前記学習器回路に構築するための値となるように前記設定値を調整する数値制御装置。
【請求項１０】
コンピュータを機械学習構築装置として機能させるための機械学習モデル構築プログラムであって、
前記コンピュータを、
設定値に応じたニューラルネットワークモデルを構築可能な学習器回路と、
前記学習器回路に所定のニューラルネットワークモデルを構築するための値となるように前記設定値を調整する制御手段と、
を備える機械学習モデル構築装置として機能させる機械学習モデル構築プログラム。
【請求項１１】
コンピュータが読み出し可能な記録媒体であって、請求項１０に記載の機械学習モデル構築プログラムを記録した記録媒体。
【請求項１２】
設定値に応じたニューラルネットワークモデルを構築可能な学習器回路を備えた機械学習モデル構築装置が行う、機械学習モデル構築方法であって、
前記学習器回路に所定のニューラルネットワークモデルを構築するための値となるように前記設定値を調整する制御ステップを備える機械学習モデル構築方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習モデルの構築に関する処理を行うための、機械学習モデル構築装置、数値制御装置、機械学習モデル構築方法、機械学習モデル構築プログラム、及び記録媒体に関する。
【背景技術】
【０００２】
機械学習を行うことにより、画像認識等の精度を高めることが期待されている。ここで、機械学習の代表的な手法としてニューラルネットワークが挙げられる。
ニューラルネットワークを利用する場合には、解決したい問題に応じた適切なニューラルネットワークのモデルを構築することが重要となる。なぜならば、適切なニューラルネットワークモデルでない場合には、出力の精度が落ちてしまうからである。
【０００３】
このようなニューラルネットワークモデルの構築等に関連する技術が、例えば特許文献１、特許文献２及び特許文献３に開示されている。
まず、特許文献１には、機械学習を行っていないニューラルネットワークに対して、種々のパラメータを設定したスクリプト命令を実行することで、学習を行うツールが開示されている。
また、特許文献２には、大規模なニューラルネットワークを機能単位ごとのブロックに分け、各ブロックに対してニューロンの数や接続規則をパラメータとして設定し、その値に基づいてニューラルネットワークを自動生成する技術が開示されている。
更に、特許文献３には、ニューラルネットワークの学習後の各ニューロンの出力を分析することで、最適なニューロン数を出力する方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００８−５３３６１５号公報
【特許文献２】特開２００１−５１９６８号公報
【特許文献３】特開平８−２３５１４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したように、各特許文献には、ニューラルネットワークモデルの構築に関する技術が記載されている。
この点、上述するように、機械学習では、解決すべき問題に応じた適切なニューラルネットワークモデルを構築することが重要であるが、モデル構築作業は専門性が要求されるため、ユーザが適切なモデルへとたどり着くのは容易ではないという問題がある。
また、解決すべき問題は個々のユーザによって異なることから、適切なニューラルネットワークも個々のユーザにとって異なるので、決め打ちのニューラルネットワークモデルを有する学習器回路をあらかじめ用意しておくことは柔軟性がないという問題がある。
【０００６】
しかしながら、各特許文献にて開示されている構成では、これらの問題を十分に解決することができなかった、
例えば、特許文献１には、スクリプト作成をアシストする機能として、ニューラルネットワークの接続関係を表示する方法が言及されているが、それによりニューラルネットワークモデルの構造そのものを設定できるわけではない。
また、特許文献２や特許文献３に開示の技術を用いることにより、決め打ちのニューラルネットワークモデルを有する学習器回路をあらかじめ用意しておくことはできるかもしれない。しかしながら、これらの技術を用いたとしても、ユーザ毎に異なっている解決すべき問題それぞれに適した、様々なニューラルネットワークモデルを学習器回路上に柔軟に構築することはできない。
【０００７】
そこで、本発明は、様々なニューラルネットワークモデルを学習器回路上に柔軟に構築することが可能な、機械学習モデル構築装置、数値制御装置、機械学習モデル構築方法、機械学習モデル構築プログラム、及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の機械学習モデル構築装置は、設定値（例えば、後述の設定値Ｓｉｊ）に応じたニューラルネットワークモデルを構築可能な学習器回路（例えば、後述の学習器回路８０）と、前記学習器回路に所定のニューラルネットワークモデルを構築するための値となるように前記設定値を調整する制御手段（例えば、後述のＣＰＵ１１）と、を備える機械学習モデル構築装置である。
【０００９】
上記の機械学習モデル構築装置においては、前記制御手段は、パラメータ値の入力を受け付け、該受け付けたパラメータ値に対応したニューラルネットワークモデルを前記所定のニューラルネットワークモデルとし、該所定のニューラルネットワークモデルを前記学習器回路に構築するための値となるように前記設定値を調整してもよい。
【００１０】
上記の機械学習モデル構築装置においては、前記受け付けたパラメータ値とは、ニューラルネットワークモデルの層数と、各層における次元数とを指定する値（例えば、後述のＮｌａｙｅｒ及びＮｄｉｍ，ｊ）であるとしてもよい。
【００１１】
上記の機械学習モデル構築装置においては、設定ファイル（例えば、後述のＣＳＶファイル）から前記パラメータ値を読み込んでもよい。
【００１２】
上記の機械学習モデル構築装置においては、前記制御手段は、前記パラメータ値に応じたパーセプトロンの接続関係と、ユーザが前記パーセプトロンの接続関係を参照しながら前記パラメータ値の調整を行うためのグラフィカルユーザインタフェースとを表示手段（例えば後述の表示器／ＭＤＩユニット７０）に描画してもよい。
【００１３】
上記の機械学習モデル構築装置においては、前記制御手段は、あらかじめ定めたニューラルネットワークモデルをユーザに選択させ、該選択されたニューラルネットワークモデルを前記所定のニューラルネットワークモデルとし、該所定のニューラルネットワークモデルを前記学習器回路に構築するための値となるように前記設定値を調整してもよい。
【００１４】
上記の機械学習モデル構築装置においては、前記制御手段は、前記設定値に応じて前記学習器回路に含まれる各パーセプトロンの出力を制御することにより、前記学習器回路にニューラルネットワークモデルを構築してもよい。
【００１５】
上記の機械学習モデル構築装置においては、前記設定値に応じて前記学習器回路に含まれる各パーセプトロンの出力を制御するとは、前記設定値に応じて前記学習器回路に含まれる各パーセプトロン内の掛け算器の出力を、該掛け算器の入力に重み付け値を乗算した値（例えば、後述のＹｗ）、該掛け算器の入力そのものの値（例えば、後述のＹｉｎ）、及びゼロの値（例えば、後述のＹ０）、の何れかの値とし、各パーセプトロン内の掛け算器の出力の総和を各パーセプトロンの出力（例えば、後述の添字を二文字添えたＹ）とすることであるとしてもよい。
【００１６】
本発明にかかる数値制御装置（例えば、後述の数値制御装置１００）は、工作機械（例えば、後述のサーボモータ５０〜５４）を制御する数値制御装置であって、上記の機械学習モデル構築装置を備え、前記制御手段は、前記工作機械の制御に関連するニューラルネットワークモデルを前記学習器回路に構築するためのパラメータ値の入力を受け付け、該受け付けたパラメータ値に対応したニューラルネットワークモデルを前記所定のニューラルネットワークモデルとし、該所定のニューラルネットワークモデルを前記学習器回路に構築するための値となるように前記設定値を調整する数値制御装置である。
【００１７】
本発明にかかる機械学習モデル構築プログラムは、コンピュータを機械学習構築装置として機能させるための機械学習モデル構築プログラムであって、前記コンピュータを、設定値に応じたニューラルネットワークモデルを構築可能な学習器回路と、前記学習器回路に所定のニューラルネットワークモデルを構築するための値となるように前記設定値を調整する制御手段と、を備える機械学習モデル構築装置として機能させる機械学習モデル構築プログラムである。
【００１８】
本発明にかかる記録媒体は、コンピュータ読み出し可能な記録媒体であって、上記の機械学習モデル構築プログラムを記録した記録媒体である。
【００１９】
本発明にかかる機械学習モデル構築方法は、設定値に応じたニューラルネットワークモデルを構築可能な学習器回路を備えた機械学習モデル構築装置が行う、機械学習モデル構築方法であって、前記学習器回路に所定のニューラルネットワークモデルを構築するための値となるように前記設定値を調整する制御ステップを備える機械学習モデル構築方法である。
【発明の効果】
【００２０】
本発明によれば、様々なニューラルネットワークモデルを学習器回路上に柔軟に構築することが可能となる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施形態全体の基本的構成を表す図である。
【図２】本発明の実施形態における数値制御装置の基本的構成を表す図である。
【図３】本発明の実施形態における学習器回路の基本的構成を表す図である。
【図４】本発明の実施形態における各パーセプトロンの接続関係の概要を表す図である。
【図５】本発明の実施形態における各パーセプトロンの詳細な接続関係を表す図である。
【図６】本発明の実施形態におけるニューラルネットワークモデルの具体例を表す図である。
【図７】本発明の実施形態における目的のニューラルネットワークモデルの構築例を表す図である。
【図８】本発明の実施形態における目的のニューラルネットワークモデルを構築する場合の入出力を表す図である。
【図９】本発明の実施形態におけるパラメータ値の第１の設定画面を表す図である。
【図１０】本発明の実施形態におけるパラメータ値の第２の設定画面を表す図である。
【図１１】本発明の実施形態におけるパラメータ値の第３の設定画面を表す図である。
【図１２】本発明の実施形態におけるパラメータ値の第４の設定画面を表す図である。
【図１３】本発明の実施形態におけるパラメータ値の第５の設定画面を表す図である。
【図１４】本発明の実施形態におけるパラメータ値の設定時の動作を表すフローチャートである。
【図１５】本発明の実施形態における設定値の生成時の動作を表すフローチャートである。
【図１６】本発明の実施形態における掛け算器及びこれに付随する回路の回路構成を表す図である。
【発明を実施するための形態】
【００２２】
まず、本発明の実施形態の概略を説明する。本発明の実施形態では、学習器回路として、任意のニューラルネットワークモデルを構築するために十分な数のパーセプトロンを備える学習器回路であって、実際に構築するニューラルネットワークモデルに応じて使用するパーセプトロンの数を変更することが可能な学習器回路を用意する。
また、種々のパラメータの設定作業をアシストするユーザインタフェースをユーザに提供する。ユーザは、かかるユーザインタフェースを利用したグラフィカルな編集作業により、種々のパラメータの設定作業を簡便に行うことができる。
そして、ユーザにより設定された種々のパラメータに基づいてニューラルネットワークモデルを構築し、このニューラルネットワークモデルを瞬時に学習器回路に反映する。
【００２３】
これにより、様々なニューラルネットワークモデルに対応した学習器回路を柔軟に構築することが可能となる。すなわち、本実施形態により、上述の［発明が解決すべき課題］を解決することができる。
以上が本発明の実施形態の概略である。
【００２４】
次に、本発明の実施形態について図面を参照して詳細に説明する。
図１を参照すると、本実施形態である機械学習モデル構築システムは、複数の数値制御装置（ＣＮＣ：Computer Numerical Control)１００と、これら複数の数値制御装置１００を管理する上位システム２００とを備える。
【００２５】
複数の数値制御装置１００は、それぞれ制御対象とするサーボモータ等の工作機械（図示を省略する。）と接続されており、これら工作機械を制御する。また、複数の数値制御装置１００は、それぞれ学習器回路８０を備える。
【００２６】
本実施形態では、上位システム２００ではなく、複数の数値制御装置１００それぞれがニューラルネットワークモデル構築のための処理を行うことにより、各数値制御装置１００自身が備える学習器回路８０に様々なニューラルネットワークモデルを構築する。
ここで、仮に数値制御装置１００ではなく上位システム２００が学習器回路８０を備え、かかるニューラルネットワークモデルの構築のための処理を行ったとする。この場合、数値制御装置１００が学習器回路８０の入力を上位システム２００に転送し、上位システム２００は学習器回路８０の出力を数値制御装置１００に転送する。これは、転送に要する時間がボトルネックとなり、学習器回路８０の出力結果をリアルタイムに反映することが困難な可能性がある。
そのため、本実施形態では図１に示すように、エッジ側である各数値制御装置１００にハードウェア化した学習器回路８０を用意し、エッジ側である各数値制御装置１００においてニューラルネットワークモデルの構築のための処理を行うこととする。
【００２７】
また、本実施形態では、例えば、工作機械にて工作をする対象となる対象物や工具を画像認識するためにニューラルネットワークモデルを構築する。この場合、構築されたニューラルネットワークでは、カメラにより撮像された画像データが入力され、撮像された物体が対象物や工具である確率が出力される。
また他にも、例えば、工作機械等に異常が発生する前に、異常発生の予兆を検知するためニューラルネットワークモデルを構築する。この場合、構築されたニューラルネットワークでは、複数のセンサそれぞれが測定した測定値が入力され、これから異常が発生するであろう確率が出力される。
【００２８】
次に、図２を参照して、複数の数値制御装置１００が備える機能ブロックについて詳細に説明をする。なお、複数の数値制御装置１００（数値制御装置１００ａ、数値制御装置１００ｂ、及び数値制御装置１００ｃ）は、それぞれ同等の機能を有しているので、以下では、これらを区別することなく、単に数値制御装置１００と呼んで説明をする。
ここで、本実施形態の数値制御装置１００は、工作機械を数値制御する一般的な数値制御装置として機能するのみならず、ニューラルネットワークモデルを構築する機械学習モデル構築装置としても機能する。
【００２９】
図２を参照すると、数値制御装置１００は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、ＣＭＯＳメモリ１４、インタフェース１５、ＰＭＣ１６、Ｉ／Ｏユニット１７、インタフェース１８、インタフェース１９、データ通信バス２０、軸制御回路３０〜３４、サーボアンプ４０〜４４、サーボモータ５０〜５４、スピンドル制御回路６０、スピンドルアンプ６１、スピンドルモータ６２、パルスエンコーダ６３、表示器／ＭＤＩユニット７０、外部機器７２、及び学習器回路８０を備える。
以下、これら各機能ブロックについて説明をする。
【００３０】
ＣＰＵ１１は数値制御装置１００を全体的に制御する制御部として機能するプロセッサである。ＲＯＭ１２は、各種のプログラムを格納する記憶装置である。
ここで、ＲＯＭ１２に格納された各種のプログラムとは、一般的な数値制御装置としての機能を実現するためのプログラムと、本実施形態におけるニューラルネットワークの構築のための処理を実現するためのプログラムである。本実施形態におけるニューラルネットワークの構築のための処理を実現するためのプログラムとは、例えば、ユーザがパラメータ値を入力するためのユーザインタフェースを提供する機能や、学習器回路８０にニューラルネットワークモデルを構築するための値である設定値を算出する機能や、算出した設定値に基づいて、実際に学習器回路８０にニューラルネットワークモデルを構築させる機能といった各種の機能を実現するためのプログラムである。
【００３１】
そして、本実施形態では、ＣＰＵ１１が、ＲＯＭ１２に格納されたプログラムをデータ通信バス２０を介して読み出し、読み出したプログラムをＲＡＭ１３に展開させながら、読み出したプログラムに基づいた演算を行なう。そして、ＣＰＵ１１が、演算結果に基づいて数値制御装置１００に含まれるハードウェアを制御することにより、本実施形態の機能を実現する。つまり、本実施形態は、ハードウェアとソフトウェアが協働することにより実現することができる。
【００３２】
ＲＡＭ１３にはＣＰＵ１１が行う演算処理における一時的な計算データや表示データ、及びインタフェース１５や表示器／ＭＤＩユニット７０を介してユーザが入力した各種データが格納される。ここで、インタフェース１５や表示器／ＭＤＩユニット７０を介してユーザが入力した各種データとは、例えばニューラルネットワークモデルを構築するための種々のパラメータである。
【００３３】
ＣＭＯＳメモリ１４は図示しないバッテリでバックアップされ、数値制御装置１００の電源がオフされても記憶状態が保持される不揮発性メモリとして構成される。ＣＭＯＳメモリ１４中には、インタフェース１５を介して読み込まれた加工プログラムや表示器／ＭＤＩユニット７０を介して入力された加工プログラム等が記憶される。
ＲＯＭ１２には、上述したシステムプログラムの一部として、加工プログラムの作成及び編集のために必要とされる編集モードの処理や自動運転のための処理を実施するための各種システムプログラムも書き込まれている。
この各種加工プログラムはインタフェース１５や表示器／ＭＤＩユニット７０を介して入力し、ＣＭＯＳメモリ１４に格納することができる。
【００３４】
インタフェース１５は、数値制御装置１００とアダプタ等の外部機器７２との接続を可能とするものである。外部機器７２側からは加工プログラムや各種パラメータ等が読み込まれる。また、数値制御装置１００内で編集した加工プログラムは、外部機器７２を介して外部記憶手段に記憶させることができる。
【００３５】
ＰＭＣ（プログラマブル・マシン・コントローラ）１６は、一般的にはＰＬＣ（プログラマブル・ロジック・コントローラ）と呼ばれる装置である。ＰＭＣ１６は、数値制御装置１００に内蔵されたシーケンスプログラムで工作機械の補助装置（例えば、工具交換用のロボットハンドといったアクチュエータ）にＩ／Ｏユニット１７を介して信号を出力し制御する。また、工作機械の本体に配備された操作盤の各種スイッチ等の信号を受け、必要な信号処理をした後、ＣＰＵ１１に渡す。
【００３６】
表示器／ＭＤＩユニット７０はディスプレイやキーボード等を備えた手動データ入力装置であり、インタフェース１８は表示器／ＭＤＩユニット７０のキーボードからの指令やデータを受けてＣＰＵ１１に渡す。インタフェース１９は手動パルス発生器等を備えた操作盤７１に接続されている。
【００３７】
各軸の軸制御回路３０〜３４はＣＰＵ１１からの各軸の移動指令量を受けて、各軸の指令をサーボアンプ４０〜４４に出力する。
【００３８】
サーボアンプ４０〜４４はこの指令を受けて、各軸のサーボモータ５０〜５４を駆動する。各軸のサーボモータ５０〜５４は位置・速度検出器を内蔵し、この位置・速度検出器からの位置・速度フィードバック信号を軸制御回路３０〜３４にフィードバックし、位置・速度のフィードバック制御を行う。なお、ブロック図では、位置・速度のフィードバックについては省略している。
【００３９】
スピンドル制御回路６０は、工作機械への主軸回転指令を受け、スピンドルアンプ６１にスピンドル速度信号を出力する。スピンドルアンプ６１はこのスピンドル速度信号を受けて、工作機械のスピンドルモータ６２を指令された回転速度で回転させ、工具を駆動する。
【００４０】
スピンドルモータ６２には歯車あるいはベルト等でパルスエンコーダ６３が結合され、パルスエンコーダ６３が主軸の回転に同期して帰還パルスを出力し、その帰還パルスはデータ通信バス２０を経由してＣＰＵ１１によって読み取られる。
【００４１】
学習器回路８０は、任意のニューラルネットワークモデルを構築するために十分な数のパーセプトロンを備える学習器回路であって、実際に構築するニューラルネットワークモデルに応じて使用するパーセプトロンの数を変更することが可能な学習器回路である。学習器回路８０は、ＣＰＵ１１からデータ通信バス２０を介して設定値を受け取り、受け取った設定値に対応するニューラルネットワークモデルを構築する。
なお、図中において学習器回路８０とＣＰＵ１１は、他の機能ブロックと同様にデータ通信バス２０を介して接続されているが、学習器回路８０とＣＰＵ１１をデータ通信バス２０以外の、専用のデータ通信バスを設けて接続するようにしてもよい。
【００４２】
次に、図３を参照して学習器回路８０の構成について説明をする。図３を参照すると、学習器回路８０は、入力部８１、出力部８２、重み付け記憶部８３、設定値記憶部８４、及びパーセプトロン回路８５を備える。
【００４３】
入力部８１は、機械学習における入力値を保持する。入力値は、例えば解析対象とする画像内の各画素の特徴を表す特徴量や、複数のセンサそれぞれが測定した測定値である。これらの入力値は、ＣＰＵ１１や複数のセンサから、これら記憶部に対して入力される。そして、入力部８１が保持する入力値は、パーセプトロン回路８５に含まれる１層目の各パーセプトロンに対して入力される。
【００４４】
重み付け記憶部８３は、パーセプトロン回路８５が行う機械学習での演算で使用される重み付け情報を記憶する。また、設定値記憶部８４は、パーセプトロン回路８５においてニューラルネットワークモデルを構築するための設定値情報を記憶する。これら重み付け情報や、設定値情報は、ＣＰＵ１１から、これら記憶部に対して入力される。そして、これら記憶部が記憶する情報は、パーセプトロン回路８５に含まれる各パーセプトロンに対して入力される。
【００４５】
パーセプトロン回路８５は、任意のニューラルネットワークモデルを構成するのに十分な数だけのパーセプトロンを備えた回路である。
なお、以下の説明では、各パーセプトロンを「添字を二文字添えたＰ」で示す。また、図３を含めた各図では、各パーセプトロンを「添字を二文字添えた丸付き文字のＰ」で示す。かかるＰの添字の一文字目はそのパーセプトロンの次元数を表し、添字の二文字目はそのパーセプトロンの層数を表す。例えば、Ｐ２１であれば、一層目であって二次元目のパーセプトロンであることを表す。
【００４６】
今回、図３では、層数はＬ、次元数はＤまでを示す。層数Ｌや次元数Ｄの具体的な値であるが、例えば、パーセプトロン回路８５に構築したニューラルネットワークモデルで画像認識を行う場合、層数Ｌの値は一般的に、Ｌ＝２０〜３０ほどである。また、この場合、次元数Ｄの値は一般的に、Ｄ＝１０万〜１００万ほどである。
ただし、これらの値はあくまで一例であり、他の値であってもよい。例えば、Ｄの値を大きくすることにより（すなわち、パーセプトロンの次元数を増やして、同時に入力することができる入力値の数を増やすことにより）、１００万画素を超える画像を対象として画像認識を行うようにしてもよい。すなわち、Ｌ及びＤは任意の自然数であってよい。
【００４７】
パーセプトロン回路８５に含まれる各パーセプトロンは、重み付け記憶部８３が記憶する重み付け情報を用いて機械学習の演算を行う。また、パーセプトロン回路８５に含まれる各パーセプトロンは、設定値記憶部８４が記憶する設定値情報に基づき出力を調整できる機能を持ち、かかる出力を調整する機能により任意のニューラルネットワークモデルを構成する。
【００４８】
出力部８３は、パーセプトロン回路８５に含まれるＬ層目の各パーセプトロンの出力から活性化関数によって最終的な出力を算出する。
【００４９】
なお、図中では、図の見やすさを考慮して接続関係の図示を省略している。もっとも実際には、パーセプトロン回路８５に含まれる１層目の各パーセプトロンは入力部８１と接続されており、Ｌ層目の各パーセプトロンは出力部８３と接続されている。また、各パーセプトロンは、それぞれ重み付け記憶部８３及び設定値記憶部８４と接続されている。
【００５０】
また、各パーセプトロン同士も接続されている。次に、パーセプトロン回路８５に含まれる各パーセプトロン同士の接続関係について図４を参照して説明をする。
今回は、説明を簡略化するためにパーセプトロン回路８５全体に含まれるパーセプトロンの層数と次元数を、上述した一般的な数よりも小さな数であると想定して説明をする。具体的には、パーセプトロン回路８５全体に含まれるパーセプトロンの層数が３、次元数が３であるとして説明する。ただし、本実施形態は、このような層数や次元数に限定されるものではないのは、上述した通りである。
【００５１】
パーセプトロン回路８５では、各パーセプトロンの出力は、次層のすべてのパーセプトロンへ接続される。例えば、一層目のＰ２１の出力は、二層目のすべてのパーセプトロンであるＰ２１、Ｐ２２、及びＰ２３のそれぞれに接続される。同様に、一層目のＰ２１の出力や、一層目のＰ３１の出力も、二層目のすべてのパーセプトロンであるＰ２１、Ｐ２２、及びＰ２３のそれぞれに接続される。ただし、図中では、図の見やすさを考慮して、接続関係の一部について図示を省略する。
【００５２】
重み付け記憶部８３、設定値記憶部８４には、各パーセプトロンそれぞれについて重み付け情報（すなわち、各パーセプトロンそれぞれについての重み付けの値）や、設定値情報（すなわち、各パーセプトロンそれぞれについての設定値）が保持されているのは上述した通りである。以下の説明及び図中では、重み付けの値を、添字を二文字添えたＷで表す。また、設定値を、添字を二文字添えたＳで表す。
また、最初の層のパーセプトロンの入力を、添字を二文字添えたＸで表し、パーセプトロンの出力を、添字を二文字添えたＹで表す。
【００５３】
ここで、これら二文字の添字は、同じ二文字の添字が添えられたパーセプトロンに対応する値であることを意味する。つまり、Ｗ１１やＳ１１は、Ｐ１１に対応する重み付けの値や設定値であることを表す。また、Ｘ１１やＹ１１は、Ｐ１１に対応する入力や出力であることを表す。
ただし、何れのパーセプトロンと対応するかを特定することなく説明する場合にはこれらの添字を省略して説明をする。
【００５４】
また、各パーセプトロンの重み付けの値は、各パーセプトロンの入力に対して乗算されるものであるが、各パーセプトロンには、前段の層の次元数の数だけ入力がある。そのため、各パーセプトロンの重み付けの値は、１つのパーセプトロンについて次元数の数だけ用意される。重み付けの値について対応する次元数の数も記載する場合は、Ｗの３文字目の添字とする。本例では、上述したように次元数を３としているので、例えば、Ｗ１１やＷ２１を例に取ると、各重み付けの値には、以下の［数１］に記載のように３つの添字を付す。
【数１】
2018014060.tif 000003
【００５５】
次に、図５を参照して、パーセプトロン回路８５に含まれる各パーセプトロンの構成や、各パーセプトロンへの入出力について説明をする。
【００５６】
パーセプトロン回路８５に含まれる各パーセプトロンは、次元数と同数の複数の掛け算器と、１つの足し算器を有する。掛け算器は、それぞれの入力と重み付けの値を乗算することにより積を算出し、出力する。足し算器は、複数の掛け算器のすべての出力を加算することにより総和を算出し、出力する。
かかる構成は、一般的なパーセプトロン回路８５の機能である。ただし、本実施形態における学習器回路８０のパーセプトロン回路８５は、設定値に基づいて任意のニューラルネットワークモデルを構築する機能を更に備える。
【００５７】
ここで、任意のニューラルネットワークモデルとは、例えば、図６に示すような各種のニューラルネットワークモデルである。図６では、層数５で次元数が４のパーセプトロン回路８５にて任意のニューラルネットワークを構築する例について説明をする。
例えば、図６の上段の左側に記載のように、１つの層を利用しないこととし、４層で４次元のニューラルネットワークモデルを構築することができる。
また、他にも、図６の上段の中央に記載のように、層が増加するに伴い次元数が増加するニューラルネットワークモデルを構築することができる。
更に、他にも、図６の上段の右側に記載のように、層が増加するに伴い次元数が減少するニューラルネットワークモデルを構築することができる。
更に、他にも、図６の下段の左側に記載のように、３層目までは層が増加するに伴い次元数が減少するが、４層目からは層が増加するに伴い次元数も増加するニューラルネットワークモデルを構築することができる。
更に、他にも、図６の下段の右側に記載のように、３層目までは層が増加するに伴い次元数も増加するが、４層目からは層が増加するに伴い次元数が減少するニューラルネットワークモデルを構築することができる。
【００５８】
これら例示したような、任意のニューラルネットワークをパーセプトロン回路８５に構築するために、本実施形態では、ＣＰＵ１１が、構築する任意のニューラルネットワークモデルに対応する設定値Ｓｉｊを算出する。
そして、各パーセプトロンに含まれる掛け算器が、自身に対応する設定値Ｓｉｊに基づいて、以下の（１）から（３）までの３つの出力のうちの何れかの出力を行う。
【００５９】
（１）  入力Ｘに重み付けＷを乗算した値を出力とする（以降、かかる出力を「Ｙｗ」と呼ぶ。）
（２）  出力値を「０」とする（以降、かかる出力を「Ｙ０」と呼ぶ。）
（３）  入力Ｘをそのまま出力とする（以降、かかる出力を「Ｙｉｎ」と呼ぶ。）
【００６０】
そして、本実施形態では、設定値Ｓｉｊを利用して各掛け算器の出力を選択することにより、学習器回路８０のパーセプトロン回路８５上に任意のニューラルネットワークモデルを構築する。
【００６１】
このように出力を選択してニューラルネットワークモデルを構築する方法について図７に示す具体例を用いて説明する。
ここで、図７の左側には、図３や図４での説明に使用した層数３、次元数３のパーセプトロン回路８５を有する学習器回路８０が示されている。
この学習器回路８０上で、図７の右側に示すニューラルネットワークモデルを構築することを目的とする。かかる目的のニューラルネットワークモデルでは、第２層の１Ｐ３２と、第３層全体（すなわち、Ｐ１３、Ｐ２３、及びＰ３３）が使用されないパーセプトロンとなっている。
このようなニューラルネットワークモデルを構築するために、各パーセプトロンに含まれる掛け算器は、設定値Ｓｉｊに基づいて、層の一部又は全体が使用される場合（例の第１層、第２層）と層全体が使用されない場合（例の第３層）で場合分けして次のように出力を選択する。
【００６２】
＜層の一部又は全体が使用される場合＞
使用されるパーセプトロンの掛け算器の出力：すべてＹｗとする。
使用されないパーセプトロンの掛け算器の出力：すべてＹ０とする。
これによりパーセプトロン内に含まれる足し算器で算出される総和は、使用される掛け算器において通常通り出力された入力と重み付けの値とを乗算した値と、使用されない掛け算器において出力されたゼロの値とを加算した値となる。つまり、使用される層に対応する掛け算器から出力される値のみの総和を算出することができる。
【００６３】
＜層全体が使用されない場合＞
そのパーセプトロンと同次元のパーセプトロンからの入力が入る掛け算器の出力：Ｙｉｎとする。
上記以外の出力：すべてＹ０とする。
これにより、同次元のパーセプトロンの入力をそのまま次の層に出力することとなる。つまり、この層を実質的に無効とする。
【００６４】
以上の出力方法により、図７の右側に示すニューラルネットワークモデルを構築する場合の、各パーセプトロンの入出力を図８に示す。各パーセプトロンの出力は以下の［数２］に示すようになる。このように各パーセプトロンが出力を選択することにより、図７の右側に示す目的としたニューラルネットワークモデルが構築できる。
【数２】
2018014060.tif 000004
このように、各パーセプトロンに含まれる掛け算器が出力を選択する機能を実現する方法であるが、本実施形態では「設定値Ｓから出力を変化させる回路構成とする」ことにより実現する。この点について以下詳細に説明する。
なお、以下では、設定値Ｓの添字としてｉjを用いる。ここで設定値Ｓｉjのｉは設定対象とするパーセプトロンの次元数に対応する変数となる。また、jは設定対象とするパーセプトロンの層数に対応する変数となる。
【００６５】
ここで、設定値Ｓｉｊは、以下の［数３］のように２つのフラグの値を持つものとする。
【数３】
2018014060.tif 000005
【００６６】
また、個々の掛け算器は以下の［数４］のようにｆｌａｇ３の値として１つの値を保持する記憶領域を有する。
【数４】
2018014060.tif 000006
ここで、ｆｌａｇ３は、学習器回路８０の設計時に定まる値である。この点について、図８のＰ１２を例に取って説明すると、３つの掛け算器の内一番上の掛け算器は同次元のパーセプトロンであるＰ１１からの入力Ｙ１１が入るので、この掛け算器のｆｌａｇ３の値は「１」となる。
一方で、３つの掛け算器の内の真ん中の掛け算器は同次元ではないパーセプトロンのＰ２１からの入力Ｙ２１が入るので、この掛け算器のｆｌａｇ３の値は「０」となる。同様に、３つの掛け算器の内一番下の掛け算器は同次元ではないパーセプトロンのＰ３１からの入力Ｙ３１が入るので、この掛け算器のｆｌａｇ３の値は「０」となる。
【００６７】
次に、上述のように設定値Ｓｉｊを用いる場合の、本実施形態の一連の処理について説明をする。
以下では、構築するニューラルネットワークモデルに対応するパラメータ値の設定についてまず説明をする。
そして、次に設定されたパラメータ値に基づいて、ＣＰＵ１１がｆｌａｇ１、及びｆｌａｇ２の値を算出する方法について説明をする。算出されたｆｌａｇ１、及びｆｌａｇ２の値は、設定値Ｓｉｊとして各パーセプトロンの掛け算器に設定される。
最後に、このようにして設定されたｆｌａｇ１、及びｆｌａｇ２の値と、各パーセプトロンの掛け算器が保持するｆｌａｇ３の値に基づいて掛け算器の出力を変化させる回路構成について説明をする。
【００６８】
まず、構築するニューラルネットワークモデルに対応するパラメータ値の設定について説明をする。本実施形態では、パラメータ値を設定してニューラルネットワークを構築するためのモードとして以下の３つのモードを用意する。
【００６９】
モード１：グラフィカルインタフェース（以下、適宜「ＧＵＩ」と呼ぶ。）上で、ユーザの選択に応じてパラメータ値を設定することによりニューラルネットワークモデルを構築するモード。
【００７０】
モード２：外部の設定情報からパラメータ値を読み込むことによりニューラルネットワークモデルを構築するモード。
【００７１】
モード３：ＧＵＩ上で、ユーザがグラフィカルな編集作業を行うことによりパラメータ値を設定してニューラルネットワークモデルを構築するモード。
【００７２】
以下、これらの各モードに対応する具体的な設定画面について、図を参照して説明をする。これらの設定画面は、ＣＰＵ１１が表示器／ＭＤＩユニット７０に表示するものとする。また、これらの設定画面を用いたパラメータ値の設定は、ユーザが表示器／ＭＤＩユニット７０や操作盤７１を利用した操作を行うことにより実行されるものとする。なお、本実施形態におけるパラメータ値は、少なくとも、構築するニューラルネットワークの層数と、各層の次元数を指定するものである。
【００７３】
まず、図９にパラメータ値の第１の設定画面の例を示す。本例は、代表的なニューラルネットワークモデルを、ユーザが一覧から選択することができる例であり、上述のモード１に対応する例である。
【００７４】
本例では、選択できる代表的なニューラルネットワークモデルとして、図６に示したようなニューラルネットワークモデルを、デフォルトのニューラルネットワークモデルとして少なくとも１つ用意しておく。
そして、ユーザが用意されているニューラルネットワークモデルを、例えば「モデルＡ」として選択する。ＣＰＵ１１はかかる選択されたニューラルネットワークモデルを構築するためのパラメータ値が設定されたものする。そして、以後の設定画面の例でも同様だが、設定されたパラメータ値に基づいてｆｌａｇ１、及びｆｌａｇ２の値を算出し、算出したｆｌａｇ１、及びｆｌａｇ２の値は、設定値Ｓｉｊとして設定値記憶部８３に記憶させる。
【００７５】
次に、図１０にパラメータ値の第２の設定画面の例を示す。本例では、ユーザから指定された、層数、最上位層の次元数、最下層の次元数、及びタイプに基づいたニューラルネットワークモデルを構築する例であり、上述のモード１に対応する例である。図１０に示すのは、次元数単調減少型作成ＵＩであり、層が増加するにつれて次元数が単調に減少していくニューラルネットワークモデルを構築するためのユーザインタフェースである。これは、図６の最上段の右側に示したようなニューラルネットワークモデルを構築するためのユーザインタフェースであり、これ以外にも、図６に示した他のニューラルネットワークモデルを構築するためのユーザインタフェースを設けるようにするとよい。
【００７６】
本例では、ユーザから指定された層数のニューラルネットワークモデルの、最初の層を最上位層とし、最後の層を最下層とする。そして、タイプとして線形が指定されているので、指定された最上層の次元数から、層が増加するにつれて一つずつ次元数が減少していき、最下層では指定された最下層の次元数となるようなニューラルネットワークモデルを構築するためのパラメータ値が設定されたものとする。この場合に、例えばタイプとして２次関数が選択されていたならば、層が増加するにつれて減少する次元数の数を変動させる。例えば、最初の層から層が３層増加すると次元数が１つ減少し、次には、層が２層増加すると次元数が１つ減少し、以降は、層が１層増加すると次元数が１つ減少するようなニューラルネットワークモデルを構築するためのパラメータ値が設定されたものとする。
【００７７】
次に、図１１にパラメータ値の第３の設定画面の例を示す。本例は、ユーザから指定された、探索範囲や探索時間といった条件に基づいて自動的に複数のニューラルネットワークモデルの探索を行う例であり、上述のモード１に対応する例である。
【００７８】
本例では、ユーザが、層数の範囲と、次元数の範囲と、探索時間とを指定できるようにする。そして、ＣＰＵ１１は、指定された層数の範囲と、次元数の範囲内で層数と次元数を異ならせながらニューラルネットワークモデルを構築する。そして、指定された探索時間が経過するまでの間、構築したニューラルネットワークモデルでの機械学習を行う。
例えば、指定された層数の範囲が３〜４であり、指定された次元数の範囲が２〜３であれば、１層目の次元数が２であり、２層目の次元数が２であり、３層目の次元数が２であるニューラルネットワークモデルを構築する。そして、この構築したニューラルネットワークモデルにて所定時間機械学習を行う。次に、１層目の次元数が３であり、２層目の次元数が２であり、３層目の次元数が２であるニューラルネットワークモデルを構築する。そして、この構築したニューラルネットワークモデルにて所定時間機械学習を行う。次に、１層目の次元数が３であり、２層目の次元数が３であり、３層目の次元数が２であるニューラルネットワークモデルを構築する。そして、この構築したニューラルネットワークモデルにて所定時間機械学習を行う。このようにして、指定された層数の範囲と、次元数の範囲内で層数と次元数を異ならせながらニューラルネットワークモデルを構築する。
【００７９】
なお所定時間の長さは、指定された層数の範囲と、次元数の範囲内で構築可能なニューラルネットワークモデルの数で、指定時間を除算した時間の長さとする。
そして、ユーザは、構築された全てのニューラルネットワークモデルにおける機械学習の結果を参照することにより、適切と思われるニューラルネットワークモデルを決定することができる。
【００８０】
次に、図１２にパラメータ値の第４の設定画面の例を示す。本例は、ユーザが選択したインポート元に存在する外部の設定情報からパラメータ値を読み込む例であり、上述のモード２に対応する例である。
【００８１】
本例では、層数や次元数などのパラメータ値をＣＳＶなどのファイル形式でインポートする。そして、インポートしたパラメータ値が、構築するニューラルネットワークモデルのパラメータ値として設定されたものとする。インポート元は、ユーザが選択することができるようにする。これにより、例えば、他の数値制御装置１００にて構築したニューラルネットワークモデルと同様のニューラルネットワークモデルを構築することが可能となる。なお、現在設定されているパラメータ値をＣＳＶなどのファイル形式でエクスポートすることも可能とする。
【００８２】
次に、図１３にパラメータ値の第５の設定画面の例を示す。本例は、上述したパラメータ値の第２の設定画面における各パラメータ値の指定を、ユーザがグラフィカルな編集作業を行うことにより実現する例である。本例は、上述のモード３に対応する例である。
【００８３】
本例では、画面上に、ニューラルネットワークの接続関係をグラフィカルに表示する。そして、ユーザがかかるグラフィカルな表示上で編集を行うことにより、構築するニューラルネットワークモデルを指定し、この指定されたニューラルネットワークモデルを構築するためのパラメータ値が設定されたものとする。例えば、上述したパラメータ値の第２の設定画面において、タイプを２次関数とする場合について説明をした。この点、タイプを２次関数とした場合に構築されるニューラルネットワークモデルの形状をユーザがイメージすることは容易でない場合もある。しかし、本例では、構築されるニューラルネットワークモデルの形状をグラフィカルに表示されているため、実際に構築されるニューラルネットワークモデルの形状をイメージした上でパラメータ値を設定することが容易にできる。なお、このようなグラフィカルな編集は、上述した各特許文献では記載も示唆もされていないものである。
【００８４】
次に、これらの設定画面の何れかにより、パラメータ値を設定する場合の、ＣＰＵ１１の動作について図１４のフローチャートを参照して説明をする。
ここで説明の前提として、パラメータ値は、その値として以下の、Ｎｌａｙｅｒ及びＮｄｉｍ，ｊを含む。
【００８５】
Ｎｌａｙｅｒ：構築するニューラルネットワークモデルの層数
Ｎｄｉｍ，ｊ：構築するニューラルネットワークモデルの各層の次元数（ここで、ｊは層数を表す変数である。）
【００８６】
図１４に示すように、まず、モード１によって、ニューラルネットワークモデルを構築するためのパラメータ値を設定するか否かを判定する（ステップＳ１１）。
【００８７】
モード１にてパラメータ値を設定するのであれば（ステップＳ１１にてＹｅｓ）、ステップＳ１２に進む。そして、モード１に対応した設定画面、例えば上述したパラメータ値の第１の設定画面、パラメータ値の第２の設定画面、及びパラメータ値の第３の設定画面の何れかを利用することにより、ユーザがパラメータ値Ｎｌａｙｅｒ及びＮｄｉｍ，ｊを設定する（ステップＳ１２）。これにより、本パラメータ値の設定処理は終了する。
【００８８】
一方で、モード１にてパラメータ値を設定しないのであれば（ステップＳ１１にてＮｏ）、ステップＳ１３に進む。そして、モード２によって、ニューラルネットワークモデルを構築するためのパラメータ値を設定するか否かを判定する（ステップＳ１３）。
【００８９】
モード２にてパラメータ値を設定するのであれば（ステップＳ１３にてＹｅｓ）、ステップＳ１４に進む。そして、モード２に対応した設定画面、例えば上述したパラメータ値の第４の設定画面を利用することにより、ユーザが選択したインポート元から、
パラメータ値を取得してＮｌａｙｅｒ及びＮｄｉｍ，ｊを設定する（ステップＳ１４）。これにより、本パラメータ値の設定処理は終了する。
【００９０】
一方で、モード２にてパラメータ値を設定しないのであれば（ステップＳ１３にてＮｏ）、ステップＳ１５に進む。そして、モード３によって、ニューラルネットワークモデルを構築するためのパラメータ値を設定する。具体的には、モード３に対応した設定画面、例えば上述したパラメータ値の第５の設定画面を利用することにより、ユーザがグラフィカルな編集方法によりパラメータ値Ｎｌａｙｅｒ及びＮｄｉｍ，ｊを設定する（ステップＳ１５）。これにより、本パラメータ値の設定処理は終了する。
【００９１】
次に、ＣＰＵ１１が、このように設定されたパラメータ値に基づいて、ｆｌａｇ１、及びｆｌａｇ２の値を算出することにより、設定値Ｓｉｊを生成する処理について図１５のフローチャートを参照して説明をする。なお、本処理は、各層の各次元のすべてのパーセプトロンそれぞれに対応する設定値Ｓｉｊが生成されるまで繰り返される。
【００９２】
まず、今回生成する設定値Ｓｉｊのｊの値とＮｌａｙｅｒの値について「ｊ＞Ｎｌａｙｅｒ」の関係が成り立つかを判定する（ステップＳ２１）。この関係が成り立つのであれば（ステップＳ２１にてＹｅｓ）、（ステップＳ２２）に進む。そして、今回生成する設定値Ｓｉｊのｆｌａｇ１、及びｆｌａｇ２のそれぞれの値を「１」とすることにより、設定値Ｓｉｊを生成する（ステップＳ２２）。生成した設定値Ｓｉｊは、設定値記憶部８４に記憶させる。これにより、今回生成する設定値Ｓｉｊの生成処理は終了する。
【００９３】
一方で、今回生成する設定値Ｓｉｊのｊ値とＮｌａｙｅｒの値について「ｊ＞Ｎｌａｙｅｒ」の関係が成り立たないのであれば（ステップＳ２１にてＮｏ）、ステップＳ２３に進む。そして、今回生成する設定値Ｓｉｊとｊの値が共通するＮｄｉｍ，ｊを選択する。また、この選択したＮｄｉｍ，ｊの値と、今回生成する設定値Ｓｉｊのｉの値について「ｉ＞Ｎｄｉｍ，ｊ」の関係が成り立つかを判定する（ステップＳ２３）。この関係が成り立つのであれば（ステップＳ２３にてＹｅｓ）、ステップＳ２４に進む。そして、今回生成する設定値Ｓｉｊのｆｌａｇ１の値を「０」とし、ｆｌａｇ２の値を「１」とすることにより、設定値Ｓｉｊを生成する（ステップＳ２４）。生成した設定値Ｓｉｊは、設定値記憶部８４に記憶させる。これにより、今回生成する設定値Ｓｉｊの生成処理は終了する。
【００９４】
また、今回生成する設定値Ｓｉｊのｉの値と選択したＮｄｉｍ，ｊの値について「ｉ＞Ｎｄｉｍ，ｊ」の関係が成り立たないのであれば（ステップＳ２３にてＮｏ）、ステップＳ２５に進む。そして、今回生成する設定値Ｓｉｊのｆｌａｇ１、及びｆｌａｇ２のそれぞれの値を「０」とすることにより、設定値Ｓｉｊを生成する（ステップＳ２５）。生成した設定値Ｓｉｊは、設定値記憶部８４に記憶させる。これにより、今回生成する設定値Ｓｉｊの生成処理は終了する。
【００９５】
以上、図１５を参照して説明した処理が、各層の各次元のパーセプトロンそれぞれに対応する設定値Ｓｉｊが生成されるまで繰り返される。これにより、設定値記憶部８４には、各層の各次元のパーセプトロンそれぞれに対応する設定値Ｓｉｊが格納されることとなる。
【００９６】
次に、このようにして格納された設定値Ｓｉｊのｆｌａｇ１、ｆｌａｇ２の値と、パーセプトロン回路８５に含まれる各パーセプトロンの掛け算器が保持しているｆｌａｇ３の値と、掛け算器の出力との関係を以下の［表１］に示す。
【表１】
2018014060.tif 000007
【００９７】
そして、掛け算器が、各フラグの値に応じて、［表１］のように出力を行うことを、図１６に示す各パーセプトロンの掛け算器の回路構成を参照して説明をする。なお、図１６に示す回路構成は、あくまで回路構成例の１つに過ぎず、他の回路構成により同様の動作を実現するようにしてもよい。
【００９８】
図１６に示すように、各パーセプトロンの掛け算器は、掛け算器９１のみならず、付随する回路として、ＮＯＲ回路９２、ＡＮＤ回路９３、ＡＮＤ回路９４、ＡＮＤ回路９５、及びＯＲ回路９６を備える。なお、各パーセプトロンの掛け算器の回路構成は共通しているので、図１６では、層数及び次元数を示す添字を付すことなく説明をする。
【００９９】
掛け算器９１には、入力Ｘと重み付け値ｗが入力される。掛け算器９１は、入力Ｘと重み付け値ｗを乗算することにより、これらの積であるＹｗをＡＮＤ回路９３の入力端子に入力する。
他方、入力Ｘは分岐されてＡＮＤ回路９５の入力端子にＹｉｎとして入力される。また、ＮＯＲ回路９２の入力端子には、ｆｌａｇ１、及びｆｌａｇ２の値が入力される。更に、ＡＮＤ回路９４の入力端子には、ｆｌａｇ１、及びｆｌａｇ３の値が入力される。
ここまでは、各フラグの値を問うことなく共通の動作となる。
【０１００】
次に、ｆｌａｇ１、及びｆｌａｇ３の値が共に「１」の場合について説明をする。これは、上述の［表１］の最上段のケースに対応する。なお、この場合、ｆｌａｇ２の値が「１」であるか「０」であるかを問うことなく出力は決定する。
【０１０１】
この場合、ＮＯＲ回路９２に入力するｆｌａｇ１の値は「１」であるので、ｆｌａｇ２の値が「１」であっても「０」であってもＮＯＲ回路９２の出力は「０」となる。すると、ＡＮＤ回路９３の入力端子に「０」とＹｗが入力されるので、ＡＮＤ回路９３の出力はＹ０となり、ＯＲ回路９６の入力端子にＹ０が入力される。
また、ＡＮＤ回路９４に入力するｆｌａｇ１の値は「１」であり、ｆｌａｇ３の値も「１」であるのでＡＮＤ回路９４の出力は「１」となる。すると、ＡＮＤ回路９５の入力端子に「１」とＹｉｎが入力されるので、ＡＮＤ回路９３の出力はＹｉｎとなり、ＯＲ回路９６の入力端子にＹｉｎが入力される。
以上より、ＯＲ回路９６の入力端子には、Ｙ０とＹｉｎが入力されるので、ＯＲ回路９６の出力はＹｉｎとなる。かかる出力は、各パーセプトロン内の足し算器に入力される。
このようにして、上述の［表１］の最上段に示すように出力される。なお、このケースは、層全体を使用せず、同次元の入力が入る掛け算器となったケースである。
【０１０２】
次に、ｆｌａｇ１の値が「１」でｆｌａｇ３の値が「０」の場合について説明をする。これは、上述の［表１］の上から二段目のケースに対応する。なお、この場合、ｆｌａｇ２の値が「１」であるか「０」であるかを問うことなく出力は決定する。
【０１０３】
この場合、ＮＯＲ回路９２に入力するｆｌａｇ１の値は「１」であるので、ｆｌａｇ２の値が「１」であっても「０」であってもＮＯＲ回路９２の出力は「０」となる。すると、ＡＮＤ回路９３の入力端子に「０」とＹｗが入力されるので、ＡＮＤ回路９３の出力はＹ０となり、ＯＲ回路９６の入力端子にＹ０が入力される。
また、ＡＮＤ回路９４に入力するｆｌａｇ１の値は「１」であり、ｆｌａｇ３の値は「０」であるのでＡＮＤ回路９４の出力は「０」となる。すると、ＡＮＤ回路９５の入力端子に「０」とＹｉｎが入力されるので、ＡＮＤ回路９３の出力はＹ０となり、ＯＲ回路９６の入力端子にＹ０が入力される。
以上より、ＯＲ回路９６の入力端子には、Ｙ０とＹ０が入力されるので、ＯＲ回路９６の出力はＹ０となる。かかる出力は、各パーセプトロン内の足し算器に入力される。
このようにして、上述の［表１］の上から二段目に示すように出力される。なお、このケースは、層全体を使用せず、同次元の入力が入る掛け算器以外の掛け算器となったケースである。
【０１０４】
次に、ｆｌａｇ１の値が「０」でｆｌａｇ２の値が「０」の場合について説明をする。これは、上述の［表１］の上から三段目のケースに対応する。なお、この場合、ｆｌａｇ３の値が「１」であるか「０」であるかを問うことなく出力は決定する。
【０１０５】
この場合、ＮＯＲ回路９２に入力するｆｌａｇ１の値は「０」であり、ＮＯＲ回路９２に入力するｆｌａｇ２の値も「０」である。そのため、ＮＯＲ回路９２の出力は「１」となる。すると、ＡＮＤ回路９３の入力端子に「１」とＹｗが入力されるので、ＡＮＤ回路９３の出力はＹｗとなり、ＯＲ回路９６の入力端子にＹｗが入力される。
また、ＡＮＤ回路９４に入力するｆｌａｇ１の値は「０」であり、ｆｌａｇ３の値が「１」であっても「０」であってもＡＮＤ回路９４の出力は「０」となる。すると、ＡＮＤ回路９５の入力端子に「０」とＹｉｎが入力されるので、ＡＮＤ回路９３の出力はＹ０となり、ＯＲ回路９６の入力端子にＹ０が入力される。
以上より、ＯＲ回路９６の入力端子には、ＹｗとＹ０が入力されるので、ＯＲ回路９６の出力はＹｗとなる。かかる出力は、各パーセプトロン内の足し算器に入力される。
このようにして、上述の［表１］の上から三段目に示すように出力される。なお、このケースは、使用されるパーセプトロンの掛け算器となったケースである。
【０１０６】
次に、ｆｌａｇ１の値が「０」でｆｌａｇ２の値が「１」の場合について説明をする。これは、上述の［表１］の上から最下段のケースに対応する。なお、この場合、ｆｌａｇ３の値が「１」であるか「０」であるかを問うことなく出力は決定する。
この場合、ＮＯＲ回路９２に入力するｆｌａｇ１の値は「０」であり、ＮＯＲ回路９２に入力するｆｌａｇ２の値は「１」である。そのため、ＮＯＲ回路９２の出力は「０」となる。すると、ＡＮＤ回路９３の入力端子に「０」とＹｗが入力されるので、ＡＮＤ回路９３の出力はＹ０となり、ＯＲ回路９６の入力端子にＹ０が入力される。
また、ＡＮＤ回路９４に入力するｆｌａｇ１の値は「０」であり、ｆｌａｇ３の値が「１」であっても「０」であってもＡＮＤ回路９４の出力は「０」となる。すると、ＡＮＤ回路９５の入力端子に「０」とＹｉｎが入力されるので、ＡＮＤ回路９３の出力はＹ０となり、ＯＲ回路９６の入力端子にＹ０が入力される。
以上より、ＯＲ回路９６の入力端子には、Ｙ０とＹ０が入力されるので、ＯＲ回路９６の出力はＹ０となる。かかる出力は、各パーセプトロン内の足し算器に入力される。
このようにして、上述の［表１］の上から最下段に示すように出力される。なお、このケースは、層の一部を使用する場合に、その層で使用されないパーセプトロンの掛け算器となったケースである。
【０１０７】
以上説明したように、本実施形態では、学習器回路として、任意のニューラルネットワークモデルを構築するために十分な数のパーセプトロンを備える学習器回路であって、実際に構築するニューラルネットワークモデルに応じて使用するパーセプトロンの数を変更することが可能な学習器回路８０を用意する。また、ＣＰＵ１１が図１４のフローチャートに示したように動作することにより、ユーザから構築するニューラルネットワークモデルに対応するパラメータ値を受け付ける。更に、ＣＰＵ１１が図１５のフローチャートに示したように動作することにより、パラメータ値に対応したフラグの値を含む設定値Ｓｉｊを生成する。更に、図１６に示したような回路構成の各パーセプトロンの掛け算器が設定値Ｓｉｊに応じた出力をする。更に、各パーセプトロンの掛け算器の出力の総和を各パーセプトロンの足し算器が出力する。
【０１０８】
このように動作することにより、本実施形態は、図８に示すような出力を実現し、図７に示すように所望のニューラルネットワークモデルを学習器回路８０上に構築することができる。つまり、本実施形態は、様々なニューラルネットワークモデルに対応した学習器回路を柔軟に構築することが可能となる、という効果を奏する。
【０１０９】
なお、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【０１１０】
例えば、学習器回路８０が数値制御装置１００の外部に存在しており、この学習器回路８０と数値制御装置１００が何らかのインタフェースで接続されているような構成としてもよい。
また、数値制御装置として機能させるためのプログラムと、ニューラルネットワークモデルの構築を行うためのプログラムとが異なる記憶装置に格納されていてもよく、それぞれのプログラムを異なるＣＰＵが処理してもよい。
更に、ニューラルネットワークモデルの構築を行うための機能を、数値制御装置１００ではなくサーバ装置等により実現し、数値制御装置１００とは関連しない問題を解決するために、ニューラルネットワークモデルを構築するようにしてもよい。すなわち、本実施形態の適用範囲を数値制御装置１００に限定しないようにしてもよい。
【０１１１】
また、上述の説明では、「設定値Ｓから出力を変化させる回路構成とする」ことにより各パーセプトロンに含まれる掛け算器が出力を選択する機能を実現していた。このようにするのではなく、例えば、「重み付け値を調整することによって出力を変化させる」ことにより、各パーセプトロンに含まれる掛け算器が出力を選択する機能を実現するようにしてもよい。この場合、Ｙｗを出力させる掛け算器に入力する重み付け値を「Ｗ」とし、Ｙｉｎを出力させる掛け算器に入力する重み付け値を「１」とし、Ｙ０を出力させる掛け算器に入力する重み付け値を「０」とすればよい。
【０１１２】
なお、上記の数値制御装置は、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。また、上記の数値制御装置により行なわれるニューラルネットワークモデルの構築方法も、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【０１１３】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ(Read Only Memory)、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ(Programmable ROM)、ＥＰＲＯＭ(Erasable PROM)、フラッシュＲＯＭ、ＲＡＭ(random access memory）)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【産業上の利用可能性】
【０１１４】
本発明は、機械学習のためのモデルの構築を行う用途に広く好適であり、特にニューラルネットワークモデルの構築を行う用途に好適である。
【符号の説明】
【０１１５】
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  ＣＭＯＳメモリ
１５、１８、１９  インタフェース
１６  ＰＭＣ
１７  Ｉ／Ｏユニット
２０  データ通信バス
３０〜３４  軸制御回路
４０〜４４  サーボアンプ
５０〜５４  サーボモータ
６０  スピンドル制御回路
６１  スピンドルアンプ
６２  スピンドルモータ
６３  パルスエンコーダ
７０  表示器／ＭＤＩユニット
７１  操作盤
７２  外部機器
８０  学習器回路
８１  入力部
８２  出力部
８３、８３ａ  重み付け記憶部
８４、８４ａ  設定値記憶部
８５、８５ａ  パーセプトロン回路
９１  掛け算器
９２  ＮＯＲ回路
９３、９４、９５  ＡＮＤ回路
９６  ＯＲ回路
１００ａ、１００ｂ、１００ｃ  数値制御装置
【図１】
2018014060.tif 000008
【図２】
2018014060.tif 000009
【図３】
2018014060.tif 000010
【図４】
2018014060.tif 000011
【図５】
2018014060.tif 000012
【図６】
2018014060.tif 000013
【図７】
2018014060.tif 000014
【図８】
2018014060.tif 000015
【図９】
2018014060.tif 000016
【図１０】
2018014060.tif 000017
【図１１】
2018014060.tif 000018
【図１２】
2018014060.tif 000019
【図１３】
2018014060.tif 000020
【図１４】
2018014060.tif 000021
【図１５】
2018014060.tif 000022
【図１６】
2018014060.tif 000023