(57)【要約】【課題】ＦＰＧＡデバイスの現在位置又は現在時刻に基づいて誤動作が発生する頻度を低減させることが可能な回路構成最適化装置及び機械学習装置を提供すること。【解決手段】本発明の回路構成最適化装置１０は、ＦＰＧＡデバイス１００の現在位置又は現在時刻の少なくともいずれかを状態データとして取得する状態データ取得部１２と、状態データ取得部１２が取得した状態データに基づいて、ＦＰＧＡデバイス１００上の回路構成を決定し、決定した回路構成をＦＰＧＡデバイス上で再構成するための指令値を出力する回路構成決定部１４と、を備える。【選択図】図１
2018180955.tif 000002
【特許請求の範囲】
【請求項１】
ＦＰＧＡデバイスの回路構成と配置の最適化を行う回路構成最適化装置であって、
前記ＦＰＧＡデバイスの現在位置又は現在時刻の少なくともいずれかを状態データとして取得する状態データ取得部と、
前記状態データ取得部が取得した前記状態データに基づいて、前記ＦＰＧＡデバイス上の回路構成を決定し、決定した前記回路構成を前記ＦＰＧＡデバイス上で再構成するための指令値を出力する回路構成決定部と、
を備える回路構成最適化装置。
【請求項２】
現在位置又は現在時刻の少なくともいずれかと関連付けて、当該現在位置又は現在時刻に適した前記ＦＰＧＡデバイス上の回路構成を記憶する回路構成テーブルを更に備え、
前記回路構成決定部は、前記回路構成テーブルを参照して、前記状態データ取得部が取得した前記状態データに基づいて、前記ＦＰＧＡデバイス上の回路構成を決定する、
請求項１に記載の回路構成最適化装置。
【請求項３】
前記回路構成決定部として機能し、ＦＰＧＡデバイスの回路構成を学習する機械学習装置を備え、
前記状態データ取得部は、更に、前記ＦＰＧＡデバイスの回路構成に係る情報、及び前記ＦＰＧＡデバイスのエラー発生状態を示す情報を状態データとして取得し、
前記機械学習装置は、
前記ＦＰＧＡデバイスの回路構成を示すＦＰＧＡデバイスの回路構成データ、前記ＦＰＧＡデバイスのエラー発生状態を示すＦＰＧＡエラー発生状態データ、並びに現在位置又は現在時刻の少なくともいずれか示す現在位置／時刻データを、環境の現在状態を表す状態変数として前記状態データ取得部から観測する状態観測部と、
前記ＦＰＧＡデバイス動作状態の適否判定結果を示す判定データを取得する判定データ取得部と、
前記状態変数と前記判定データとを用いて、前記ＦＰＧＡデバイスの回路構成を前記ＦＰＧＡエラー発生状態データ及び現在位置／時刻データと関連付けて学習する学習部と、
を備える請求項１に記載の回路構成最適化装置。
【請求項４】
前記状態データ取得部は、更に、前記ＦＰＧＡデバイスの発熱量、消費電力及び動作速度の少なくともいずれかを状態データとして取得し、
前記状態観測部は、前記状態変数として、前記ＦＰＧＡデバイスの発熱量、消費電力及び動作速度の少なくともいずれかを含むＦＰＧＡデバイス動作状態データを更に前記状態データ取得部から観測し、
前記学習部は、前記ＦＰＧＡデバイスの回路構成を前記ＦＰＧＡエラー発生状態データ、前記現在位置／時刻データ、及び前記ＦＰＧＡデバイス動作状態データと関連付けて学習する、
請求項３に記載の回路構成最適化装置。
【請求項５】
前記学習部は、
前記適否判定結果に関連する報酬を求める報酬計算部と、
前記報酬を用いて、前記ＦＰＧＡデバイスのエラー発生状態並びに現在位置又は現在時刻の少なくともいずれかに対する前記ＦＰＧＡデバイスの回路構成の価値を表す関数を更新する価値関数更新部とを備える、
請求項３または４に記載の回路構成最適化装置。
【請求項６】
前記学習部は、前記状態変数と前記判定データとを多層構造で演算する、
請求項３〜５のいずれか１つに記載の回路構成最適化装置。
【請求項７】
前記学習部による学習結果に基づいて、前記ＦＰＧＡデバイスの回路構成に基づく指令値を出力する意思決定部を更に備える、
請求項３〜６のいずれか１つに記載の回路構成最適化装置。
【請求項８】
前記学習部は、複数の機械のそれぞれについて得られた前記状態変数及び前記判定データを用いて、該複数の機械のそれぞれにおける前記ＦＰＧＡデバイスの回路構成を学習する、
請求項３〜７のいずれか１つに記載の回路構成最適化装置。
【請求項９】
前記機械学習装置は、クラウドサーバに存在する、
請求項３〜８のいずれか１つに記載の回路構成最適化装置。
【請求項１０】
ＦＰＧＡデバイスの回路構成を学習する機械学習装置であって、
前記ＦＰＧＡデバイスの回路構成を示すＦＰＧＡデバイスの回路構成データ、前記ＦＰＧＡデバイスのエラー発生状態を示すＦＰＧＡエラー発生状態データ、並びに現在位置又は現在時刻の少なくともいずれか示す現在位置／時刻データを、環境の現在状態を表す状態変数として観測する状態観測部と、
前記ＦＰＧＡデバイス動作状態の適否判定結果を示す判定データを取得する判定データ取得部と、
前記状態変数と前記判定データとを用いて、前記ＦＰＧＡデバイスの回路構成を前記ＦＰＧＡエラー発生状態データ及び現在位置／時刻データと関連付けて学習する学習部と、
を備える機械学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路構成最適化装置及び機械学習装置に関する。
【背景技術】
【０００２】
製造時に全ての回路が固定される通常の集積回路に対し、出荷後にユーザが所望の回路構成を設定して機能させることができるデバイスであるプログラマブルロジックデバイス（ＰＬＤ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）がある。このようなデバイスの一種であるＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）は、プログラム可能な論理コンポーネントである論理ブロックを組み合わせることにより、単純な論理回路からメモリ要素を含む複雑な回路まで、必要に応じてＦＰＧＡを使用している現場で構成して使用することができる。ＦＰＧＡでは、このような回路をパッケージ上の任意の位置に構築することができる。
【０００３】
ＦＰＧＡデバイスに対して宇宙線等に含まれる中性子線が突入すると、該中性子線はパッケージ内のボロンなどと衝突してα線を含む大量のイオンが発生し、このα線が原因となりシリコン内部の電位が反転し、ソフトエラーが発生する。なお、ＦＰＧＡデバイスのソフトエラーに係る従来技術として、例えば特許文献１，２には、ソフトエラーの発生を検出する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−３４４２２３号公報
【特許文献２】特開２０１６−１６７６６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＦＰＧＡデバイスにおけるソフトエラーの発生確率は、ＦＰＧＡデバイスを構成するパッケージ材に含まれるボロン等の密度（ボロン濃度の高さ）に応じて変化する。図１０は、ＦＰＧＡデバイスの概略構造図を示している。図１０に示すように、ＦＰＧＡデバイス内においてボロンの濃度が高い領域がある場合、当該領域ではソフトエラーが発生する確率が高くなるため、当該領域には回路を配置しないようにするか、または、エラー訂正機能や冗長性を持たせたノイズに強い回路を配置することでソフトエラー対策を行う。
【０００６】
ソフトエラー対策には、例えばボロン等の密度が高い位置に回路を配置しないようにする方法や、一部の必須ではない機能を削減する等して回路面積を減らすことにより当該回路に中性子やα線が当たる確率を下げる方法、論理回路の多重化乃至エラー訂正回路等によりエラー訂正機能を付加する方法等がある。しかしながら、このようなソフトエラー対策にはそれぞれ一長一短があり、常にこれらのソフトエラー対策を適用することが最適であると言える訳ではない。例えば、回路面積を減らす方法は一部の機能を犠牲にする必要があり、論理回路を多重化する方法は多くの回路面積を必要とする上に通常の回路構成と比較すると多くの電力を消費する。また、ＥＣＣによるエラー訂正回路を付加した場合、これも回路の面積が増加する上に消費電力や発熱の面でも増加するという問題がある。
【０００７】
一方、ＦＰＧＡデバイスにおけるソフトエラーは、上記したように宇宙線等に含まれる中性子線がＦＰＧＡデバイスに突入することが原因で発生するため、ＦＰＧＡに対して中性子線が突入する確率は、ＦＰＧＡデバイスの存在する位置と太陽や地球との位置関係によって変化する。そのため、ＦＰＧＡデバイスに対して多くの宇宙線が降り注ぐ位置にある場合（例えば、地球上の太陽に面する位置にある場合、太陽に面する位置の人工衛星上にある場合など）は、上記したソフトエラー対策を十分に行う必要があるが、一方でＦＰＧＡデバイスに対して多くの宇宙線が降り注ぐ位置ではない場合（例えば、地球上の太陽に面していない位置にある場合、太陽に面していない位置の人工衛星上にある場合など）は上記したソフトエラー対策に対してそれほど気を使う必要はない。このように、ＦＰＧＡデバイスが存在する位置によって、ソフトエラー対策の重要性は変化する。
【０００８】
そこで本発明の目的は、ＦＰＧＡデバイスの現在位置又は現在時刻に基づいて誤動作が発生する頻度を低減させることが可能な回路構成最適化装置及び機械学習装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明の回路構成最適化装置は、ＦＰＧＡデバイスの現在位置又は現在時刻を含むＦＰＧＡデバイスの状態に係るデータを収集し、これら状態データに基づいてＦＰＧＡデバイス上の各回路の配置と該回路のバリエーションを決定する。そして、決定した各回路の配置と該回路のバリエーションに基づいてＦＰＧＡデバイスを再構成（リコンフィギュア）することにより、ＦＰＧＡデバイスを現在位置又は現在時刻において安定した動作が得られる回路構成とする。更に、本発明の回路構成最適化装置は、ＦＰＧＡデバイスにおけるソフトエラーの発生回数をＦＰＧＡデバイス上の位置と関連付けて記憶し、記憶したソフトエラーの発生回数と、ＦＰＧＡデバイスの現在位置又は現在時刻とを状態データとした機械学習を行うことにより、ＦＰＧＡデバイスの安定した動作が得られる最適な回路構成を導出できるようにする。
【００１０】
そして、本発明の一態様は、ＦＰＧＡデバイスの回路構成と配置の最適化を行う回路構成最適化装置であって、前記ＦＰＧＡデバイスの現在位置又は現在時刻の少なくともいずれかを状態データとして取得する状態データ取得部と、前記状態データ取得部が取得した前記状態データに基づいて、前記ＦＰＧＡデバイス上の回路構成を決定し、決定した前記回路構成を前記ＦＰＧＡデバイス上で再構成するための指令値を出力する回路構成決定部と、を備える回路構成最適化装置である。
【００１１】
本発明の他の態様は、ＦＰＧＡデバイスの回路構成に係る情報、前記ＦＰＧＡデバイスのエラー発生状態を示す情報、並びに前記ＦＰＧＡデバイスの現在位置又は現在時刻の少なくともいずれかを状態データとして取得する状態データ取得部と、前記ＦＰＧＡデバイスの回路構成を学習する機械学習装置を備え、前記機械学習装置は、前記ＦＰＧＡデバイスの回路構成を示すＦＰＧＡデバイスの回路構成データ、前記ＦＰＧＡデバイスのエラー発生状態を示すＦＰＧＡエラー発生状態データ、並びに現在位置又は現在時刻の少なくともいずれか示す現在位置／時刻データを、環境の現在状態を表す状態変数として前記状態データ取得部から観測する状態観測部と、前記ＦＰＧＡデバイス動作状態の適否判定結果を示す判定データを取得する判定データ取得部と、前記状態変数と前記判定データとを用いて、前記ＦＰＧＡデバイスの回路構成を前記ＦＰＧＡエラー発生状態データ及び現在位置／時刻データと関連付けて学習する学習部と、を備える回路構成最適化装置である。
【００１２】
本発明の他の態様は、ＦＰＧＡデバイスの回路構成を学習する機械学習装置であって、前記ＦＰＧＡデバイスの回路構成を示すＦＰＧＡデバイスの回路構成データ、前記ＦＰＧＡデバイスのエラー発生状態を示すＦＰＧＡエラー発生状態データ、並びに現在位置又は現在時刻の少なくともいずれか示す現在位置／時刻データを、環境の現在状態を表す状態変数として観測する状態観測部と、前記ＦＰＧＡデバイス動作状態の適否判定結果を示す判定データを取得する判定データ取得部と、前記状態変数と前記判定データとを用いて、前記ＦＰＧＡデバイスの回路構成を前記ＦＰＧＡエラー発生状態データ及び現在位置／時刻データと関連付けて学習する学習部と、を備える機械学習装置である。
【発明の効果】
【００１３】
本発明により、ＦＰＧＡデバイスの現在位置又は現在時刻に基づいてＦＰＧＡデバイスの回路構成を決定することで、ＦＰＧＡデバイスの誤動作する頻度を低減させ、ＦＰＧＡデバイスを搭載した装置の稼働率を向上させることができる。また、ＦＰＧＡデバイスのエラー発生状況とＦＰＧＡデバイスの現在位置又は現在時間との関係を学習することにより、ＦＰＧＡデバイスの誤動作する頻度をより柔軟に低減させることができるようになる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施形態による回路構成最適化装置の概略的な機能ブロック図である。
【図２】第２の実施形態による回路構成最適化装置の概略的な機能ブロック図である。
【図３】第２の実施形態による機械学習装置の概略的な機能ブロック図である。
【図４】回路構成データＳ１を例示する図である。
【図５】回路構成最適化装置の一形態を示す概略的な機能ブロック図である。
【図６】機械学習方法の一形態を示す概略的なフローチャートである。
【図７Ａ】ニューロンを説明する図である。
【図７Ｂ】ニューラルネットワークを説明する図である。
【図８】回路構成最適化装置を組み込んだシステムの一形態を示す概略的な機能ブロック図である。
【図９】回路構成最適化装置を組み込んだシステムの他の形態を示す概略的な機能ブロック図である。
【図１０】ＦＰＧＡデバイスの概略構造図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態を図面と共に説明する。
図１は、第１の実施形態による回路構成最適化装置１０の概略的な機能ブロック図である。図１に機能ブロックで示すように、回路構成最適化装置１０が組み込まれている機械８０は、機械８０の構成要素であるＦＰＧＡデバイス１００と、該ＦＰＧＡデバイス１００の再構成（リコンフィギュア）を行うコンフィグレーション装置１１０を備え、また、産業機械の現在位置を検出する現在位置検出部８２、現在時刻を検出する現在時刻検出部８４を備える。
【００１６】
ＦＰＧＡデバイス１００は、機械８０の制御のために必要とする構成の一部や、機械８０が機能を提供するために必要な構成の一部を担うものである。ＦＰＧＡデバイス１００は、例えば機械８０がロボットである場合にはロボットの関節制御回路の一部であっても良く、例えば機械８０が観測機器である場合には観測されたデータの処理回路の一部であっても良い。ＦＰＧＡデバイス１００の詳細な構成についてはすでに公知となっているため、本明細書における説明は省略する。
【００１７】
コンフィグレーション装置１１０は、ＦＰＧＡデバイス１００上に構成される回路の再構成（リコンフィギュア）を行うために必要な構成を備えた装置として構成される。コンフィグレーション装置１１０は、ＦＰＧＡデバイス１００上に構成される論理回路に係るコンフィグレーションデータを記憶する記憶部（図示せず）を備えていても良い。また、コンフィグレーション装置１１０が記憶部に記憶するコンフィグレーションデータは、ＦＰＧＡデバイス１００上に構成される論理回路の様々なバリエーション（回路面積を減らした論理回路、多重化論理回路、エラー訂正回路付論理回路など）を含んでいても良い。コンフィグレーション装置１１０は、少なくともＦＰＧＡデバイス１００の各論理回路の位置と、当該論理回路のバリエーションを指令する指令値Ｃを受けて、該指令値Ｃに応じたコンフィグレーションデータを選択し、選択したコンフィグレーションデータに基づくＦＰＧＡデバイスの再構成（リコンフィギュア）を実行する。コンフィグレーション装置１１０による再構成（リコンフィギュア）に係る詳細な処理についてはすでに公知となっているため、本明細書における説明は省略する。
【００１８】
現在位置検出部８２は、機械８０の現在位置を検出して出力する機能手段である。現在位置検出部８２は、例えばＧＰＳや携帯電話の基地局等から出力される電波に基づいて位置を計測する装置であっても良く、また、観測される星の位置や地上の建造物等から現在位置を計測する装置、外部からの信号から現在位置を取得する装置等であっても良い。
【００１９】
現在時刻検出部８４は、現在時刻を検出して出力する機能手段である。現在時刻検出部８４は、例えば機械８０に内蔵されるＲＴＣなどの計時手段から現在時刻を検出するものであっても良く、また、外部からの信号から現在時刻を取得する装置等であっても良い。
【００２０】
回路構成最適化装置１０は、例えば機械８０の上に設置されたＣＰＵ、メモリ等を備えたＰＣ等の装置として実装することができる。回路構成最適化装置１０は、機械８０に搭載されたＦＰＧＡデバイス１００を再構成（リコンフィギュア）するためのコンフィグレーション装置１１０に対してＦＰＧＡデバイス１００上の回路の配置を指令する指令値Ｃを出力するためのソフトウェア及びハードウェア（コンピュータのＣＰＵ等）を備える。回路構成最適化装置１０は、機械８０の状態を示す状態データを取得するための状態データ取得部１２と、状態データ取得部１２が取得した状態データに基づいてＦＰＧＡデバイス１００の回路構成を決定し、決定した回路構成に基づく指令値Ｃを出力する回路構成決定部１４を備える。
【００２１】
状態データ取得部１２は、例えばコンピュータの入出力を制御するＣＰＵの一機能として構成できる。或いは状態データ取得部１２は、例えばコンピュータの入出力を制御するＣＰＵを機能させるためのソフトウェアとして構成できる。状態データ取得部１２は、現在位置検出部８２が検出した機械８０の現在位置、又は、現在時刻検出部８４が検出した現在時刻の少なくともいずれか１つを状態データＳ０として取得し、回路構成決定部１４に対して引き渡す。
【００２２】
回路構成決定部１４は、状態データ取得部１２から取得した状態データＳ０に基づいて、ＦＰＧＡデバイス１００上の各回路の位置と該回路のバリエーションを決定し、決定した各回路の位置と該回路のバリエーションに基づいて指令値Ｃを作成し、作成した指令値Ｃをコンフィグレーション装置１１０へと出力する。回路構成決定部１４は、例えばあらかじめ状態データＳ０の各値（または各値の範囲）の組み合わせに対する各回路の位置と該回路のバリエーションの組を複数記憶した回路構成テーブル１５をあらかじめ図示しないメモリ等に記憶しておき、該回路構成テーブル１５を参照することにより、入力された状態データＳ０に対応する各回路の位置と該回路のバリエーションを決定するようにしても良い。回路構成決定部１４が出力する指令値Ｃは、コンフィグレーション装置１１０がＦＰＧＡデバイス１００上に配置する各回路の位置と該回路のバリエーション（通常の回路、面積を縮小した回路、多重化回路、エラー訂正機能つき回路、など）を特定することができるのであればどのようなデータ形式を取っても良い。このように構成する場合、例えば機械８０の現在位置が機械８０が太陽に面していない位置である場合又は現在時刻が機械８０が太陽に対して面していない時刻である場合等に、ソフトエラー対策よりも各回路に付加的な機能、処理速度、消費電力、発熱量等を優先する回路構成とし、機械８０の現在位置が機械８０が太陽に面している位置である場合又は現在時刻が機械８０が太陽に対して面している時刻である場合等に、各回路に付加的な機能、処理速度、消費電力、発熱量等よりもソフトエラー対策を優先する回路構成とするように、回路構成テーブル１５を構成しておけば良い。
【００２３】
上記構成例によれば、回路構成最適化装置１０が、ＦＰＧＡデバイス１００が搭載される機械８０の現在位置又は現在時刻に基づいて、現在位置又は現在時刻に適したＦＰＧＡデバイス１００の回路構成を決定するため、ＦＰＧＡデバイスの誤動作する頻度を低減させ、ＦＰＧＡデバイスを搭載した装置の稼働率を向上させることができる。
【００２４】
図２は、第２の実施形態による回路構成最適化装置２０の概略的な機能ブロック図である。本実施形態による回路構成最適化装置２０は、第１の実施形態で示した回路構成決定部１４として機械学習装置３０を実装したものである。図２に機能ブロックで示すように、回路構成最適化装置２０が組み込まれている機械８０は、第１の実施形態と同様に、機械８０の構成要素であるＦＰＧＡデバイス１００と、該ＦＰＧＡデバイス１００の再構成（リコンフィギュア）を行うコンフィグレーション装置１１０、産業機械の現在位置を検出する現在位置検出部８２、現在時刻を検出する現在時刻検出部８４を備え、更に、ＦＰＧＡデバイス１００の回路構成を取得する回路構成取得部８６、ＦＰＧＡデバイス１００に発生するソフトエラーの状態を検出するエラー検出部８７、ＦＰＧＡデバイス１００の動作状態を検出する動作状態検出部８８を備える。
【００２５】
回路構成取得部８６は、ＦＰＧＡデバイス１００上に構成される回路の構成を取得する機能手段である。回路構成取得部８６は、ＦＰＧＡデバイス１００の回路構成を、ＦＰＧＡデバイス１００から取得するようにしても良く、また、コンフィグレーション装置１１０が最後にＦＰＧＡデバイス１００上に構成した回路の情報をコンフィグレーション装置１１０から取得するようにしても良い。回路構成取得部８６は、取得した回路構成に係る情報を回路構成最適化装置２０へと出力する。
【００２６】
エラー検出部８７は、ＦＰＧＡデバイス１００上でのエラーの発生を検出する機能手段である。エラー検出部８７は、例えばＦＰＧＡデバイス１００のソフトエラーが発生した位置を検出できるものであっても良く、また、ＦＰＧＡデバイス１００上のソフトエラーが発生した回路を検出できるものであっても良い。エラー検出部８７は、検出したＦＰＧＡデバイス１００上でのエラーの発生に係る情報を回路構成最適化装置２０へと出力する。エラー検出部８７によるＦＰＧＡデバイス１００上でのエラー検出に係る詳細な処理についてはすでに公知となっているため、本明細書における説明は省略する。
【００２７】
動作状態検出部８８は、ＦＰＧＡデバイス１００の動作速度や発熱量、消費電力等の動作状態を検出する機能手段である。動作状態検出部８８は、例えばそれぞれの回路上での処理に掛かる時間を機械８０が備えるタイマ回路などを用いて検出したり、ＦＰＧＡデバイス１００の温度を機械８０が備える温度センサ等を用い検出したり、ＦＰＧＡデバイス１００の所定の単位時間当たりの消費電力を機械８０が備える電力計等を用い検出したりして、検出した各値をＦＰＧＡデバイス１００の動作状態に係る情報として回路構成最適化装置２０へと出力する。
【００２８】
回路構成最適化装置２０は、第１の実施形態と同様に、例えば機械８０の上に設置されたＣＰＵ、メモリ等を備えたＰＣ等の装置として実装することができる。回路構成最適化装置１０は、機械８０に搭載されたＦＰＧＡデバイス１００を再構成（リコンフィギュア）するためのコンフィグレーション装置１１０に対してＦＰＧＡデバイス１００上の回路の配置を指令する指令値Ｃを出力するためのソフトウェア及びハードウェア（コンピュータのＣＰＵ等）を備える。回路構成最適化装置１０は、機械８０の状態に係る情報を示す状態データを取得するための状態データ取得部２２と、状態データ取得部２２が取得した状態データに基づいてＦＰＧＡデバイス１００の回路構成に関する機械学習をすると共に、機械学習した結果に基づいて該状態データに対するＦＰＧＡデバイス１００の回路構成を決定して指令値Ｃを出力する機械学習装置３０を備える。
【００２９】
状態データ取得部２２は、例えばコンピュータの入出力を制御するＣＰＵの一機能として構成できる。或いは状態データ取得部２２は、例えばコンピュータの入出力を制御するＣＰＵを機能させるためのソフトウェアとして構成できる。状態データ取得部２２は、現在位置検出部８２が検出した機械８０の現在位置、現在時刻検出部８４が検出した現在時刻、回路構成取得部８６が取得したＦＰＧＡデバイス１００上の回路構成に係る情報、エラー検出部８７が検出したＦＰＧＡデバイス１００のエラーの発生状態を状態データＳ０として取得し、機械学習装置３０に対して引き渡す。状態データ取得部２２は、上記に加えて更に、動作状態検出部８８が検出したＦＰＧＡデバイス１００の動作状態に係るデータを状態データＳ０として取得し、機械学習装置３０に対して引き渡すようにしても良い。
【００３０】
機械学習装置３０は、ＦＰＧＡデバイス内に配置される回路の回路構成の最適値を、いわゆる機械学習により自ら学習するためのソフトウェア（学習アルゴリズム等）及びハードウェア（コンピュータのＣＰＵ等）を含む。機械学習装置３０は、状態データ取得部２２から取得した状態データＳ０に基づいて、ＦＰＧＡデバイス１００におけるソフトエラーの発生回数と、ＦＰＧＡデバイス１００の現在位置又は現在時刻の少なくともいずれかと関連付けて、ＦＰＧＡデバイス１００の現在の状態に対する回路構成（各回路の位置と該回路のバリエーション）の最適値を機械学習する。また、機械学習装置３０は、それまでに機械学習した学習結果を用いて、状態データ取得部２２から取得した状態データＳ０に基づいてＦＰＧＡデバイス１００の現在の状態に対する回路構成（各回路の位置と該回路のバリエーション）の最適値を決定し、決定した各回路の位置と該回路のバリエーションに基づいて指令値Ｃを作成し、作成した指令値Ｃをコンフィグレーション装置１１０へと出力する。機械学習装置３０が学習する回路構成の最適値は、ＦＰＧＡデバイス１００のエラー発生状態に係る情報並びに現在位置又は現在時刻と、ＦＰＧＡデバイスの回路構成との、相関性を表すモデル構造に相当する。
【００３１】
図３は、図２で示した機械学習装置３０の概略的な機能ブロック図である。図３に機能ブロックで示すように、回路構成最適化装置２０が備える機械学習装置３０は、ＦＰＧＡデバイスのエラー発生に係る状態に対して設定されたＦＰＧＡデバイスの回路構成を示す回路構成データＳ１と、ＦＰＧＡデバイスのエラー発生に係る状態を示すＦＰＧＡエラー発生状態データＳ２と、ＦＰＧＡデバイスの現在位置又は現在時刻の少なくともいずれかを含む現在位置／時刻データＳ３とを環境の現在状態を表す状態変数Ｓとして観測する状態観測部３２と、設定されたＦＰＧＡデバイスの回路構成の元でのＦＰＧＡデバイスの動作状態の適否判定結果を示す判定データＤを取得する判定データ取得部３４と、状態変数Ｓと判定データＤとを用いて、回路構成データＳ１にＦＰＧＡエラー発生状態データＳ２及び現在位置／時刻データＳ３の双方を関連付けて学習する学習部３６と、学習部３６の学習結果を用いて、回路構成データＳ１にＦＰＧＡエラー発生状態データＳ２及び現在位置／時刻データＳ３に基づいてＦＰＧＡデバイスの回路構成の最適値を決定し、決定したＰＧＡデバイスの回路構成の最適値に基づく指令値Ｃを出力する意思決定部３８とを備える。
【００３２】
状態観測部３２は、例えばコンピュータのＣＰＵの一機能として構成できる。或いは状態観測部３２は、例えばコンピュータのＣＰＵを機能させるためのソフトウェアとして構成できる。状態観測部３２が観測する状態変数Ｓのうち、回路構成データＳ１は、例えば学習の初期段階においては熟練した回路設計者により申告されて回路構成最適化装置２０に与えられるＦＰＧＡデバイスの回路構成の申告データを用いたり、現実に運用されているＦＰＧＡデバイスから取得した回路構成に係るデータなどを用いたりすることができる。また、ある程度学習が進んだ後には、コンフィグレーション装置１１０により再構成されたＦＰＧＡデバイス１００に係る（状態データ取得部２２が取得した）回路構成を用いることができる。
【００３３】
回路構成データＳ１は、回路構成取得部８６が取得した値を用いることができ、一例として、ＦＰＧＡデバイスの各位置に配置される論理回路、及び各論理回路の種類を用いることができる。このようにする場合、ＦＰＧＡデバイスの各位置に配置される論理回路については、例えば図４に示すように、ＦＰＧＡデバイス上の領域をｍ×ｎのマトリクス状に分割した部分領域を配列として表現し、各配列の要素として論理回路のいずれを配置したのかを当該論理回路の識別子を当て嵌めることにより表現することができる。また、論理回路の種類については、通常の論理回路、面積を縮小した論理回路（全体を小機能化する代わりに面積を縮小することでソフトエラー率を低下させた論理回路）、多重化論理回路（論理回路を多重化することによりソフトエラー率を低下させた論理回路、論理回路の面積が増加する）、エラー訂正回路付論理回路（論理回路にＥＣＣなどのエラー訂正回路を付加することによりソフトエラー率を低下させた論理回路、動作速度が低下し、発熱量及び商品電力が増加する）などの論理回路の構成方法のバリエーションを識別子で表現したものとすれば良い。
【００３４】
また、状態変数Ｓのうち、ＦＰＧＡエラー発生状態データＳ２は、エラー検出部８７が検出した値を用いることができる。ＦＰＧＡエラー発生状態データＳ２は、一例として、ＦＰＧＡデバイスの各位置におけるソフトエラーの発生頻度を用いることができる。このようにする場合、例えばＦＰＧＡデバイス上の領域をｍ×ｎのマトリクス状に分割した部分領域毎に、ソフトエラーの発生履歴を回路構成最適化装置１０のメモリ（図示せず）に記憶しておき、該履歴情報に基づいて算出したＦＰＧＡデバイスの部分領域毎のソフトエラーの発生頻度を算出し、これを用いるようにすれば良い。ＦＰＧＡエラー発生状態データＳ２は、エラー検出手段がＦＰＧＡデバイス上でソフトエラーが発生した位置（部分領域）を特定できるのであれば、当該部分領域でのエラー発生頻度を更新し、エラー検出手段がＦＰＧＡデバイス上でのいずれの論理回路でソフトエラーが発生したのかを特定できるのであれば、当該ソフトエラーが発生した論理回路が配置されている全ての部分領域におけるエラーの発生頻度を更新するようにすれば良い。ソフトエラーの発生頻度を算出するための履歴情報は、ＦＰＧＡデバイス上の論理回路の再構成が為される度にメモリ上の退避領域に（１サイクル前のソフトエラーの履歴情報として）バックアップして、新たに履歴情報を記録するようにする。
【００３５】
更に、状態変数Ｓのうち、現在位置／時刻データＳ３は、現在位置検出部８２、現在時刻検出部８４から取得した値を用いることができる。
【００３６】
判定データ取得部３４は、例えばコンピュータのＣＰＵの一機能として構成できる。或いは判定データ取得部３４は、例えばコンピュータのＣＰＵを機能させるためのソフトウェアとして構成できる。判定データ取得部３４が取得する判定データＤは、ＦＰＧＡデバイス上の回路が再構成された後で、例えば上記したＦＰＧＡデバイスの部分領域毎の新たに記録された履歴情報（すなわち、ＦＰＧＡデバイスの再構成後に記憶された履歴情報）に基づいて算出されるエラー発生頻度を用いることができ、また、必要に応じて、ＦＰＧＡデバイスが搭載された装置内に設けられた熱センサ等により実測されたＦＰＧＡデバイスの発熱量、消費電力計などにより実測されたＦＰＧＡデバイスの消費電力量、タイマ等により実測されたＦＰＧＡデバイスの動作時間などを用いることもできる。判定データＤは、状態変数Ｓの下でのＦＰＧＡデバイスを動作させた時の結果を表す指標である。
【００３７】
このように、回路構成最適化装置２０が備える機械学習装置３０が学習を進める間、環境においては、ＦＰＧＡエラー発生状態データＳ２、現在位置／時刻データＳ３の取得、ＦＰＧＡデバイス上の論理回路の再構成、センサなどによる判定データＤの取得が繰り返し実施される。
【００３８】
学習部３６は、例えばコンピュータのＣＰＵの一機能として構成できる。或いは学習部３６は、例えばコンピュータのＣＰＵを機能させるためのソフトウェアとして構成できる。学習部３６は、機械学習と総称される任意の学習アルゴリズムに従い、ＦＰＧＡデバイスの回路構成を学習する。学習部３６は、ＦＰＧＡデバイスの回路構成に対して、前述した状態変数Ｓと判定データＤとを含むデータ集合に基づく学習を反復実行することができる。ＦＰＧＡデバイスの再構成に対する学習サイクルの反復中、状態変数Ｓのうち、ＦＰＧＡエラー発生状態データＳ２は、上記したバックアップされた１サイクル前に再構成がなされる前のソフトエラーの履歴情報に基づいて算出されたソフトエラーの発生頻度とし、現在位置／時刻データＳ３は、１サイクル前に再構成が行われた時点でのＦＰＧＡデバイスの位置又は時刻の少なくともいずれかを用い、発生頻度回路構成データＳ１は、学習サイクルで得られた機械学習結果に基づいて１サイクル前に再構成されたＦＰＧＡデバイスの回路構成とし、また判定データＤは、当該ＦＰＧＡデバイスの回路構成の元でのＦＰＧＡデバイスの動作状態に対する適否判定結果とする。
【００３９】
このような学習サイクルを繰り返すことにより、学習部３６は、ＦＰＧＡデバイスのエラー発生状態（ＦＰＧＡエラー発生状態データＳ２）並びに現在位置又は現在時刻の少なくともいずれか（現在位置／時刻データＳ３）と、ＦＰＧＡデバイスの回路構成との相関性を暗示する特徴を自動的に識別することができる。学習アルゴリズムの開始時にはＦＰＧＡエラー発生状態データＳ２及び現在位置／時刻データＳ３とＦＰＧＡデバイスの回路構成との相関性は実質的に未知であるが、学習部３６は、学習を進めるに従い徐々に特徴を識別して相関性を解釈する。ＦＰＧＡエラー発生状態データＳ２及び現在位置／時刻データＳ３とＦＰＧＡデバイスの回路構成との相関性が、ある程度信頼できる水準まで解釈されると、学習部３６が反復出力する学習結果は、現在状態（つまりＦＰＧＡデバイスのエラー発生状態及び現在位置又は現在時刻の少なくともいずれか）に対してどのようなＦＰＧＡデバイスの回路構成とするべきかと言う行動の選択（つまり意思決定）を行うために使用できるものとなる。つまり学習部３６は、学習アルゴリズムの進行に伴い、ＦＰＧＡデバイスのエラー発生状態並びに現在位置又は現在時刻の少なくともいずれかと、当該状態に対してどのようなＦＰＧＡデバイスの回路構成とするべきかという行動との、相関性を最適解に徐々に近づけることができる。
【００４０】
意思決定部３８は、例えばコンピュータのＣＰＵの一機能として構成できる。或いは意思決定部３８は、例えばコンピュータのＣＰＵを機能させるためのソフトウェアとして構成できる。意思決定部３８は、学習部３６が学習したＦＰＧＡデバイスのエラー発生状態に対するＦＰＧＡデバイスの回路構成に基づいてＦＰＧＡデバイスの回路の再構成に係る指令値Ｃを生成し、生成した指令値Ｃとして出力する。意思決定部３８がＦＰＧＡデバイスの回路の再構成に係る指令値ＣをＦＰＧＡデバイスの回路構成を再構成するシステムに対して出力した場合、これに応じて、環境の状態（回路構成データＳ１）が変化する。
【００４１】
そして、状態観測部３２は、意思決定部３８による環境へのＦＰＧＡデバイスの回路の再構成に係る指令値Ｃを出力した後に変化した回路構成データＳ１を含む状態変数Ｓを次の学習サイクルにおいて観測する。学習部３６は、変化した状態変数Ｓを用いて、機械学習をすることで、ＦＰＧＡデバイスの回路構成を学習する。意思決定部３８は、学習したＦＰＧＡデバイスの回路構成の下で状態変数Ｓに応じてＦＰＧＡデバイスの回路の再構成に係る指令値ＣをＦＰＧＡデバイスの回路構成を再構成するシステムへと出力する。このサイクルを繰り返すことにより、機械学習装置３０はＦＰＧＡデバイスの回路構成の学習を進め、自身が決定するＦＰＧＡデバイスの回路構成の信頼性を徐々に向上させる。
【００４２】
上記したように、回路構成最適化装置２０が備える機械学習装置３０は、状態観測部３２が観測した状態変数Ｓと判定データ取得部３４が取得した判定データＤとを用いて、学習部３６が機械学習アルゴリズムに従い、ＦＰＧＡデバイスの回路構成を学習するものである。状態変数Ｓは、回路構成データＳ１、ＦＰＧＡエラー発生状態データＳ２及び現在位置／時刻データＳ３といった、外乱の影響を受け難いデータで構成され、また判定データＤは、ＦＰＧＡデバイスが搭載された装置内に設けられた熱センサ等により実測されたＦＰＧＡデバイスの発熱量、消費電力計などにより実測されたＦＰＧＡデバイスの消費電力量、タイマ等により実測されたＦＰＧＡデバイスの処理時間、上記したＦＰＧＡデバイスの部分領域毎のエラー発生頻度などを取得することにより一義的に求められる。したがって、回路構成最適化装置２０が備える機械学習装置３０によれば、学習部３６の学習結果を用いることで、ＦＰＧＡデバイスのエラー発生状態に応じた、ＦＰＧＡデバイスの回路構成を、演算や目算によらずに自動的に、しかも正確に求めることができるようになる。
【００４３】
ＦＰＧＡデバイスの回路構成を、演算や目算によらずに自動的に求めることができれば、ＦＰＧＡデバイスのエラー発生状態（ＦＰＧＡエラー発生状態データＳ２）並びに現在位置又は現在時刻の少なくともいずれか（現在位置／時刻データＳ３）を把握するだけで、適切なＦＰＧＡデバイスの回路構成を迅速に決定することができる。したがって、ＦＰＧＡデバイスの回路の再構成を効率よく行うことができる。
【００４４】
回路構成最適化装置２０が備える機械学習装置３０の一変形例として、状態観測部３２は、状態変数Ｓとして、動作状態検出部８８が検出した動作状態に係る情報を含むＦＰＧＡ動作状態データＳ４を更に観測することができる。このようにする場合、該ＦＰＧＡデバイスの回路構成を、ＦＰＧＡエラー発生状態データＳ２及び現在位置／現在時刻データＳ３に加えて、ＦＰＧＡ動作状態データＳ４とも関連付けて学習することができる。
【００４５】
上記変形例によれば、機械学習装置３０は、ＦＰＧＡデバイスの回路を再構成する際に、該ＦＰＧＡデバイスの部分領域毎のエラー発生頻度並びに現在位置又は現在時刻の少なくともいずれかだけでなく、ＦＰＧＡデバイスの処理速度や発熱量、消費電力量などを考慮に入れたＦＰＧＡデバイスの回路構成を学習することができる。このようにすることで、あるエラー発生状態、位置、時刻において、当該状態に対してエラーの発生頻度を低減させるＦＰＧＡデバイスの回路構成が複数考えられる場合に、より処理速度の速い、より発熱量が低い、又はより消費電力が低いＦＰＧＡデバイスの回路構成を優先して選択することができるようになる。
【００４６】
回路構成最適化装置２０が備える機械学習装置３０の他の変形例として、学習部３６は、同一の論理回路が構成されたＦＰＧＡデバイスを搭載した複数の装置のそれぞれについて得られた状態変数Ｓ及び判定データＤを用いて、それら装置におけるＦＰＧＡデバイスの回路構成を学習することができる。この構成によれば、一定時間で得られる状態変数Ｓと判定データＤとを含むデータ集合の量を増加できるので、より多様なデータ集合を入力として、ＦＰＧＡデバイスの回路構成の学習の速度や信頼性を向上させることができる。
【００４７】
上記構成を有する機械学習装置３０では、学習部３６が実行する学習アルゴリズムは特に限定されず、機械学習として公知の学習アルゴリズムを採用できる。図５は、図３に示す回路構成最適化装置２０の一形態であって、学習アルゴリズムの一例として強化学習を実行する学習部３６を備えた構成を示す。強化学習は、学習対象が存在する環境の現在状態（つまり入力）を観測するとともに現在状態で所定の行動（つまり出力）を実行し、その行動に対し何らかの報酬を与えるというサイクルを試行錯誤的に反復して、報酬の総計が最大化されるような方策（本願の機械学習装置ではＦＰＧＡデバイスの回路構成）を最適解として学習する手法である。
【００４８】
図５に示す回路構成最適化装置２０が備える機械学習装置３０において、学習部３６は、状態変数Ｓに基づいてＦＰＧＡデバイスの動作状態の適否判定結果（次の学習サイクルで用いられる判定データＤに相当）に関連する報酬Ｒを求める報酬計算部３９と、報酬Ｒを用いて、ＦＰＧＡデバイスの回路構成の価値を表す関数Ｑを更新する価値関数更新部４０とを備える。学習部３６は、価値関数更新部４０が関数Ｑの更新を繰り返すことによってＦＰＧＡデバイスのエラー発生状態並びに現在位置又は現在時刻の少なくともいずれかに対するＦＰＧＡデバイスの回路構成を学習する。
【００４９】
学習部３６が実行する強化学習のアルゴリズムの一例を説明する。この例によるアルゴリズムは、Ｑ学習（Ｑ−ｌｅａｒｎｉｎｇ）として知られるものであって、行動主体の状態ｓと、その状態ｓで行動主体が選択し得る行動ａとを独立変数として、状態ｓで行動ａを選択した場合の行動の価値を表す関数Ｑ（ｓ，ａ）を学習する手法である。状態ｓで価値関数Ｑが最も高くなる行動ａを選択することが最適解となる。状態ｓと行動ａとの相関性が未知の状態でＱ学習を開始し、任意の状態ｓで種々の行動ａを選択する試行錯誤を繰り返すことで、価値関数Ｑを反復して更新し、最適解に近付ける。ここで、状態ｓで行動ａを選択した結果として環境（つまり状態ｓ）が変化したときに、その変化に応じた報酬（つまり行動ａの重み付け）ｒが得られるように構成し、より高い報酬ｒが得られる行動ａを選択するように学習を誘導することで、価値関数Ｑを比較的短時間で最適解に近付けることができる。
【００５０】
価値関数Ｑの更新式は、一般に下記の数１式のように表すことができる。数１式において、ｓt及びａtはそれぞれ時刻ｔにおける状態及び行動であり、行動ａtにより状態はｓt+1に変化する。ｒt+1は、状態がｓtからｓt+1に変化したことで得られる報酬である。ｍａｘＱの項は、時刻ｔ＋１で最大の価値Ｑになる（と時刻ｔで考えられている）行動ａを行ったときのＱを意味する。α及びγはそれぞれ学習係数及び割引率であり、０＜α≦１、０＜γ≦１で任意設定される。
【００５１】
【数１】
2018180955.tif 000003
【００５２】
学習部３６がＱ学習を実行する場合、状態観測部３２が観測した状態変数Ｓ及び判定データ取得部３４が取得した判定データＤは、更新式の状態ｓに該当し、現在状態（つまりＦＰＧＡデバイスのエラー発生状態）に対するＦＰＧＡデバイスの回路構成をどのように変更するべきかという行動は、更新式の行動ａに該当し、報酬計算部３９が求める報酬Ｒは、更新式の報酬ｒに該当する。よって価値関数更新部４０は、現在状態に対するＦＰＧＡデバイスの回路構成の価値を表す関数Ｑを、報酬Ｒを用いたＱ学習により繰り返し更新する。
【００５３】
報酬計算部３９が求める報酬Ｒは、例えば、ＦＰＧＡデバイスの回路構成を決定した後に該ＦＰＧＡデバイスの回路構成に基づいてＦＰＧＡデバイスを動作させたときに、該ＦＰＧＡデバイスの動作状態が「適」と判定される場合（例えば、ＦＰＧＡデバイスの各部分領域におけるソフトエラー発生頻度が許容できる範囲内の場合、ＦＰＧＡデバイスの発熱量が許容できる範囲内の場合、ＦＰＧＡデバイスの消費電力量が許容できる範囲内の場合、ＦＰＧＡデバイスの動作速度が許容できる範囲内の場合、など）に正（プラス）の報酬Ｒとし、ＦＰＧＡデバイスの回路構成を決定した後に該ＦＰＧＡデバイスの回路構成に基づいてＦＰＧＡデバイスを動作させたときに、該ＦＰＧＡデバイスの動作状態が「否」と判定される場合（例えば、ＦＰＧＡデバイスの各部分領域におけるソフトエラー発生頻度が許容できる範囲外の場合、ＦＰＧＡデバイスの発熱量が許容できる範囲外の場合、ＦＰＧＡデバイスの消費電力量が許容できる範囲外の場合、ＦＰＧＡデバイスの動作速度が許容できる範囲外の場合、など）に負（マイナス）の報酬Ｒとすることができる。正負の報酬Ｒの絶対値は、互いに同一であってもよいし異なっていてもよい。また、判定の条件として、判定データＤに含まれる複数の値を組み合わせて判定するようにしても良い。更に、ＦＰＧＡデバイスの各部分領域におけるソフトエラー発生頻度についての報酬を求める際には、報酬計算部３９は、各部分領域におけるソフトエラー発生頻度の最大値や上位の所定の部分領域のソフトエラー発生頻度の平均値等の統計地を用いて適否の判定をするようにしても良い。
【００５４】
また、ＦＰＧＡデバイスの動作状態の適否判定結果を、「適」及び「否」の二通りだけでなく複数段階に設定することができる。例として、ＦＰＧＡデバイスの発熱量の許容範囲の最大値がＴmaxの場合、ＦＰＧＡデバイスの発熱量Ｔが、０≦Ｔ＜Ｔmax／５のときは報酬Ｒ＝５を与え、Ｔmax／５≦Ｔ＜Ｔmax／２のときは報酬Ｒ＝２を与え、Ｔmax／２≦Ｔ≦Ｔmaxのときは報酬Ｒ＝１を与えるような構成とすることができる。さらに、学習の初期段階はＴmaxを比較的大きく設定し、学習が進行するにつれてＴmaxを縮小する構成とすることもできる。
【００５５】
なお、学習部３６が学習した結果に基づいてＦＰＧＡデバイスの回路構成を決定した際に、該決定した回路構成に基づいてＦＰＧＡデバイスを再構成しようとしてもコンフィグレーション装置１１０からエラーが返される場合がある（論理回路を構成する面積が足りない、配線ができないなど）。このような例外的な状態において、再び同じ状態に対するＦＰＧＡデバイスの回路構成の決定し直しが行われるが、その前に、報酬計算部３９が求める報酬Ｒを大きな負（マイナス）の報酬Ｒとして学習を勧めておく。このようにすることで、次サイクル以降では同じ状態において当該回路構成が選択されることがなくなる。
【００５６】
価値関数更新部４０は、状態変数Ｓと判定データＤと報酬Ｒとを、関数Ｑで表される行動価値（例えば数値）と関連付けて整理した行動価値テーブルを持つことができる。この場合、価値関数更新部４０が関数Ｑを更新するという行為は、価値関数更新部４０が行動価値テーブルを更新するという行為と同義である。Ｑ学習の開始時には環境の現在状態とＦＰＧＡデバイスの回路構成との相関性は未知であるから、行動価値テーブルにおいては、種々の状態変数Ｓと判定データＤと報酬Ｒとが、無作為に定めた行動価値の値（関数Ｑ）と関連付けた形態で用意されている。なお報酬計算部３９は、判定データＤが分かればこれ対応する報酬Ｒを直ちに算出でき、算出した値Ｒが行動価値テーブルに書き込まれる。
【００５７】
ＦＰＧＡデバイスの動作状態の適否判定結果に応じた報酬Ｒを用いてＱ学習を進めると、より高い報酬Ｒが得られる行動を選択する方向へ学習が誘導され、選択した行動を現在状態で実行した結果として変化する環境の状態（つまり状態変数Ｓ及び判定データＤ）に応じて、現在状態で行う行動についての行動価値の値（関数Ｑ）が書き替えられて行動価値テーブルが更新される。この更新を繰り返すことにより、行動価値テーブルに表示される行動価値の値（関数Ｑ）は、適正な行動ほど大きな値となるように書き換えられる。このようにして、未知であった環境の現在状態（ＦＰＧＡデバイスのエラー発生状態並びに現在位置又は現在時刻の少なくともいずれか）とそれに対する行動（ＦＰＧＡデバイスの回路構成の決定）との相関性が徐々に明らかになる。つまり行動価値テーブルの更新により、ＦＰＧＡデバイスのエラー発生状態と、ＦＰＧＡデバイスの回路構成との関係が最適解に徐々に近づけられる。
【００５８】
図６を参照して、学習部３６が実行する上記したＱ学習のフロー（つまり機械学習方法の一形態）をさらに説明する。まずステップＳＡ０１で、価値関数更新部４０は、その時点での行動価値テーブルを参照しながら、状態観測部３２が観測した状態変数Ｓが示す現在状態で行う行動としてＦＰＧＡデバイスの回路構成を無作為に選択する。次に価値関数更新部４０は、ステップＳＡ０２で、状態観測部３２が観測している現在状態の状態変数Ｓを取り込み、ステップＳＡ０３で、判定データ取得部３４が取得している現在状態の判定データＤを取り込む。次に価値関数更新部４０は、ステップＳＡ０４で、判定データＤに基づき、ＦＰＧＡデバイスの回路構成が適当であったか否かを判断し、適当であった場合、ステップＳＡ０５で、報酬計算部３９が求めた正の報酬Ｒを関数Ｑの更新式に適用し、次いでステップＳＡ０６で、現在状態における状態変数Ｓ及び判定データＤと報酬Ｒと行動価値の値（更新後の関数Ｑ）とを用いて行動価値テーブルを更新する。ステップＳＡ０４で、ＦＰＧＡデバイスの回路構成が適当でなかったと判断した場合、ステップＳＡ０７で、報酬計算部３９が求めた負の報酬Ｒを関数Ｑの更新式に適用し、次いでステップＳＡ０６で、現在状態における状態変数Ｓ及び判定データＤと報酬Ｒと行動価値の値（更新後の関数Ｑ）とを用いて行動価値テーブルを更新する。学習部３６は、ステップＳＡ０１〜ＳＡ０７を繰り返すことで行動価値テーブルを反復して更新し、ＦＰＧＡデバイスの回路構成の学習を進行させる。なお、ステップＳＡ０４からステップＳＡ０７までの報酬Ｒを求める処理及び価値関数の更新処理は、判定データＤに含まれるそれぞれのデータについて実行される。
【００５９】
前述した強化学習を進める際に、例えばＱ学習の代わりに、ニューラルネットワークを用いることができる。図７Ａは、ニューロンのモデルを模式的に示す。図７Ｂは、図７Ａに示すニューロンを組み合わせて構成した三層のニューラルネットワークのモデルを模式的に示す。ニューラルネットワークは、例えば、ニューロンのモデルを模した演算装置や記憶装置等によって構成できる。
【００６０】
図７Ａに示すニューロンは、複数の入力ｘ（ここでは一例として、入力ｘ1〜入力ｘ3）に対する結果ｙを出力するものである。各入力ｘ1〜ｘ3には、この入力ｘに対応する重みｗ（ｗ1〜ｗ3）が掛けられる。これにより、ニューロンは、次の数２式により表現される出力ｙを出力する。なお、数２式において、入力ｘ、出力ｙ及び重みｗは、すべてベクトルである。また、θはバイアスであり、ｆkは活性化関数である。
【００６１】
【数２】
2018180955.tif 000004
【００６２】
図７Ｂに示す三層のニューラルネットワークは、左側から複数の入力ｘ（ここでは一例として、入力ｘ１〜入力ｘ３）が入力され、右側から結果ｙ（ここでは一例として、結果ｙ１〜結果ｙ３）が出力される。図示の例では、入力ｘ１、ｘ２、ｘ３のそれぞれに対応の重み（総称してｗ１で表す）が乗算されて、個々の入力ｘ１、ｘ２、ｘ３がいずれも３つのニューロンＮ１１、Ｎ１２、Ｎ１３に入力されている。
【００６３】
図７Ｂでは、ニューロンＮ１１〜Ｎ１３の各々の出力を、総称してｚ１で表す。ｚ１は、入カベクトルの特徴量を抽出した特徴ベクトルと見なすことができる。図示の例では、特徴ベクトルｚ１のそれぞれに対応の重み（総称してｗ２で表す）が乗算されて、個々の特徴ベクトルｚ１がいずれも２つのニューロンＮ２１、Ｎ２２に入力されている。特徴ベクトルｚ１は、重みｗ１と重みｗ２との間の特徴を表す。
【００６４】
図７Ｂでは、ニューロンＮ２１〜Ｎ２２の各々の出力を、総称してｚ２で表す。ｚ２は、特徴ベクトルｚ１の特徴量を抽出した特徴ベクトルと見なすことができる。図示の例では、特徴ベクトルｚ２のそれぞれに対応の重み（総称してｗ３で表す）が乗算されて、個々の特徴ベクトルｚ２がいずれも３つのニューロンＮ３１、Ｎ３２、Ｎ３３に入力されている。特徴ベクトルｚ２は、重みｗ２と重みｗ３との間の特徴を表す。最後にニューロンＮ３１〜Ｎ３３は、それぞれ結果ｙ１〜ｙ３を出力する。
なお、三層以上の層を為すニューラルネットワークを用いた、いわゆるディープラーニングの手法を用いることも可能である。
【００６５】
回路構成最適化装置２０が備える機械学習装置３０においては、状態変数Ｓと判定データＤとを入力ｘとして、学習部３６が上記したニューラルネットワークに従う多層構造の演算を行うことで、ＦＰＧＡデバイスの回路構成（結果ｙ）を出力することができる。なおニューラルネットワークの動作モードには、学習モードと価値予測モードとがあり、例えば学習モードで学習データセットを用いて重みｗを学習し、学習した重みｗを用いて価値予測モードで行動の価値判断を行うことができる。なお価値予測モードでは、検出、分類、推論等を行うこともできる。
【００６６】
上記した回路構成最適化装置２０の構成は、コンピュータのＣＰＵが実行する機械学習方法（或いはソフトウェア）として記述できる。この機械学習方法は、ＦＰＧＡデバイスの回路構成を学習する機械学習方法であって、コンピュータのＣＰＵが、ＦＰＧＡデバイスの回路構成を示す回路構成データＳ１、ＦＰＧＡデバイスのエラー発生状態を示すＦＰＧＡエラー発生状態データＳ２、並びに現在位置又は現在時刻の少なくともいずれかを示す現在位置／時刻データＳ３を、ＦＰＧＡデバイスが動作する環境の現在状態を表す状態変数Ｓとして観測するステップと、ＦＰＧＡデバイスの動作状態の適否判定結果を示す判定データＤを取得するステップと、状態変数Ｓと判定データＤとを用いて、ＦＰＧＡデバイスの回路構成とＦＰＧＡエラー発生状態データＳ２及び現在位置／時刻データＳ３とを関連付けて学習するステップとを有する。
【００６７】
図８は、機械８０を備えた一実施形態によるシステム９０を示す。システム９０は、少なくとも同一の機械構成を有する複数の機械８０、８０’と、それら機械８０、８０’を互いに接続する有線／無線のネットワーク９２とを備え、複数の機械８０、８０’のうち少なくとも１つが、上記した回路構成最適化装置２０を備える機械８０として構成される。またシステム９０は、回路構成最適化装置２０を備えない機械８０’を含むことができる。機械８０、８０’は、同じ目的で構成された論理回路が内部に構成されるＦＰＧＡデバイスが搭載されると共に、該ＦＰＧＡデバイスの回路を再構成するための構成を有する。
【００６８】
上記構成を有するシステム９０は、複数の機械８０、８０’のうちで回路構成最適化装置２０を備える機械８０が、学習部３６の学習結果を用いて、ＦＰＧＡデバイスのエラー発生状態に応じたＦＰＧＡデバイスの回路構成を、演算や目算によらずに自動的に、しかも正確に求めることができる。また、少なくとも１つの機械８０の回路構成最適化装置２０が、他の複数の機械８０、８０’のそれぞれについて得られた状態変数Ｓ及び判定データＤに基づき、全ての機械８０、８０’に共通するＦＰＧＡデバイスの回路構成を学習し、その学習結果を全ての機械８０、８０’が共有するように構成できる。したがってシステム９０によれば、より多様なデータ集合（状態変数Ｓ及び判定データＤを含む）を入力として、ＦＰＧＡデバイスの回路構成の学習の速度や信頼性を向上させることができる。
【００６９】
図９は、機械８０’を備えた他の実施形態によるシステム９０’を示す。システム９０’は、機械学習装置３０と、同一の機械構成を有する複数の機械８０’と、それら機械８０’と機械学習装置３０とを互いに接続する有線／無線のネットワーク９２とを備える。
【００７０】
上記構成を有するシステム９０’は、機械学習装置３０が、複数の機械８０’のそれぞれについて得られた状態変数Ｓ及び判定データＤに基づき、全ての機械８０’に共通するＦＰＧＡデバイスのエラー発生状態並びに現在位置又は時刻の少なくともいずれかに応じたＦＰＧＡデバイスの回路構成を学習し、その学習結果を用いて、ＦＰＧＡデバイスのエラー発生状態に応じたＦＰＧＡデバイスの回路構成を、演算や目算によらずに自動的に、しかも正確に求めることができる。
【００７１】
システム９０’は、機械学習装置３０が、ネットワーク９２に用意されたクラウドサーバ等に存在する構成を有することができる。この構成によれば、複数の機械８０’のそれぞれが存在する場所や時期に関わらず、必要なときに必要な数の機械８０’を機械学習装置３０に接続することができる。
【００７２】
システム９０、９０’に従事する作業者は、機械学習装置３０による学習開始後の適当な時期に、機械学習装置３０によるＦＰＧＡデバイスの回路構成の学習の到達度（すなわちＦＰＧＡデバイスの回路構成の信頼性）が要求レベルに達したか否かの判断を実行することができる。
【００７３】
以上、本発明の実施の形態について説明したが、本発明は上述した実施の形態の例のみに限定されることなく、適宜の変更を加えることにより様々な態様で実施することができる。
【００７４】
例えば、機械学習装置３０が実行する学習アルゴリズム、機械学習装置３０が実行する演算アルゴリズム、回路構成最適化装置１０，２０が実行する制御アルゴリズム等は、上述したものに限定されず、様々なアルゴリズムを採用できる。
【００７５】
また、上記した実施形態では回路構成最適化装置２０の上で機械学習装置３０がオンラインで機械学習する例を示しているが、ＦＰＧＡデバイスの運用時に状態データＳや判定データＤをログデータとして記録しておき、記録したログデータを収集して、収集したログデータから取得した状態データＳや判定データＤに基づいて機械学習装置３０が機械学習するようにしても良い。
【符号の説明】
【００７６】
１０，２０  回路構成最適化装置
１２，２２  状態データ取得部
１４  回路構成決定部
１５  回路構成テーブル
３０  機械学習装置
３２  状態観測部
３４  判定データ取得部
３６  学習部
３８  意思決定部
３９  報酬計算部
４０  価値関数更新部
８０，８０’  機械
８２  現在位置検出部
８４  現在時刻検出部
８６  回路構成取得部
８７  エラー検出部
８８  動作状態検出部
９０，９０’  システム
９２  ネットワーク
１００  ＦＰＧＡデバイス
１１０  コンフィグレーション装置
【図１】
2018180955.tif 000005
【図２】
2018180955.tif 000006
【図３】
2018180955.tif 000007
【図４】
2018180955.tif 000008
【図５】
2018180955.tif 000009
【図６】
2018180955.tif 000010
【図７Ａ】
2018180955.tif 000011
【図７Ｂ】
2018180955.tif 000012
【図８】
2018180955.tif 000013
【図９】
2018180955.tif 000014
【図１０】
2018180955.tif 000015