IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

特開2024-139283学習装置、学習方法、および学習プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024139283
(43)【公開日】2024-10-09
(54)【発明の名称】学習装置、学習方法、および学習プログラム
(51)【国際特許分類】
   G06N 3/092 20230101AFI20241002BHJP
   G06F 17/10 20060101ALI20241002BHJP
【FI】
G06N3/092
G06F17/10 Z
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023050157
(22)【出願日】2023-03-27
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】高瀬 諒一
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB91
(57)【要約】
【課題】強化学習において行動の安定性を保証すること。
【解決手段】プログラムを実行するプロセッサと、前記プログラムを記憶する記憶デバイスと、を有し、第1指標を向上させる方策を学習するニューラルネットワークを訓練するための学習装置は、前記ニューラルネットワークに関する情報に基づいて、前記ニューラルネットワークに含まれるパラメータの更新方針に関する勾配関数を含む凸最適化問題を生成する問題生成処理と、前記問題生成処理によって生成された凸最適化問題に基づいて、前記方策に関する第2指標を生成する指標生成処理と、前記第1指標と前記第2指標とに基づいて、前記ニューラルネットワークに含まれるパラメータを更新する更新処理と、を実行する。
【選択図】図2
【特許請求の範囲】
【請求項1】
プログラムを実行するプロセッサと、前記プログラムを記憶する記憶デバイスと、を有し、第1指標を向上させる方策を学習するニューラルネットワークを訓練するための学習装置であって、
前記プロセッサは、
前記ニューラルネットワークに関する情報に基づいて、前記ニューラルネットワークに含まれるパラメータの更新方針に関する勾配関数を含む凸最適化問題を生成する問題生成処理と、
前記問題生成処理によって生成された凸最適化問題に基づいて、前記方策に関する第2指標を生成する指標生成処理と、
前記第1指標と前記第2指標とに基づいて、前記ニューラルネットワークに含まれるパラメータを更新する更新処理と、
を実行することを特徴とする学習装置。
【請求項2】
請求項1に記載の学習装置であって、
前記凸最適化問題は、半正定値計画問題である、
ことを特徴とする学習装置。
【請求項3】
請求項1に記載の学習装置であって、
前記ニューラルネットワークに関する情報は、前記ニューラルネットワークに含まれるパラメータである、
ことを特徴とする学習装置。
【請求項4】
請求項1に記載の学習装置であって、
前記問題生成処理では、前記プロセッサは、状態および行動に基づく環境の状態遷移をモデル化した伝達関数モデルと、前記方策と、の閉ループシステムを構成し、前記閉ループシステムの安全性が保証される条件を満たすように、前記凸最適化問題を生成する、
ことを特徴とする学習装置。
【請求項5】
請求項1に記載の学習装置であって、
前記更新処理では、前記プロセッサは、前記第1指標と前記第2指標とを用いて前記方策の損失関数を計算する順伝搬を実行し、前記順伝搬に対する逆伝搬を実行することにより勾配を算出し、前記勾配を用いて前記パラメータを更新する、
ことを特徴とする学習装置。
【請求項6】
プログラムを実行するプロセッサと、前記プログラムを記憶する記憶デバイスと、を有し、第1指標を向上させる方策を学習するニューラルネットワークを訓練するための学習装置が実行する学習方法であって、
前記プロセッサは、
前記ニューラルネットワークに関する情報に基づいて、前記ニューラルネットワークに含まれるパラメータの更新方針に関する勾配関数を含む凸最適化問題を生成する問題生成処理と、
前記問題生成処理によって生成された凸最適化問題に基づいて、前記方策に関する第2指標を生成する指標生成処理と、
前記第1指標と前記第2指標とに基づいて、前記ニューラルネットワークに含まれるパラメータを更新する更新処理と、
を実行することを特徴とする学習方法。
【請求項7】
第1指標を向上させる方策を学習するニューラルネットワークをプロセッサに訓練させる学習プログラムであって、
前記プロセッサに、
前記ニューラルネットワークに関する情報に基づいて、前記ニューラルネットワークに含まれるパラメータの更新方針に関する勾配関数を含む凸最適化問題を生成する問題生成処理と、
前記問題生成処理によって生成された凸最適化問題に基づいて、前記方策に関する第2指標を生成する指標生成処理と、
前記第1指標と前記第2指標とに基づいて、前記ニューラルネットワークに含まれるパラメータを更新する更新処理と、
を実行させることを特徴とする学習プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、学習をおこなう学習装置、学習方法、および学習プログラムに関する。
【背景技術】
【0002】
強化学習は、タスクを達成するために、環境との相互作用を通して方策を学習する機械学習である。この従来型の強化学習では、方策をニューラルネットワークで表現することが主流となっており、ニューラルネットワークのパラメータを調整することで方策が学習される。
【0003】
近年は強化学習の実システムへの応用手法にも注目されているが、実システムへの応用における問題点として、ニューラルネットワークの複雑性により、行動の安全性を保証するパラメータ調整が困難であるという点が挙げられる。
【0004】
具体的には、ニューラルネットワークはパラメータが多くて複雑であるため、適切な行動を決定する方策の学習(パラメータ調整)が難しく、適切かつ安全に行動するパラメータ調整を行うことはさらに難しい。
【0005】
行動の安全性とは、危険な行動をしないことであり、たとえば、自動車が法定速度以下で走行するという行動は適切な行動ではあるが、その速度でカーブを曲がることが危険であれば、行動の安全性は保証されないことになる。
【0006】
行動の安全性を保証するパラメータ調整が困難な点としては、技術的には安全性の定式化が難しいため、AI(Artificial Intelligence)に対して安全性の指標を設定することができない点が挙げられる。
【0007】
このため、非特許文献1のように、学習中に凸最適化問題を生成し、凸最適化問題を解いた結果を指標に設定する技術が開示されている。非特許文献1は、凸最適化のためにドメイン固有言語(DSL)によって使用される凸最適化問題のサブクラスである、統制された凸プログラムによる差別化へのアプローチを開示する。
【0008】
非特許文献1では、安全性は制約条件を満たす凸最適化問題として定式化されている。つまり、凸最適化問題の解は安全性を示す指標となる。従来型の強化学習では報酬を最大化すべき指標と設定するが、非特許文献1を従来型の強化学習に適用すると、報酬および安全性の指標が最大化する。したがって、ニューラルネットワークのパラメータが安全性を保証する方向にも更新され、安全性を保証するパラメータ調整が可能となる。
【0009】
また、下記特許文献1の請求項2には、「最適化分析を行い、最適化出力を生成し、前記最適化出力を使用してコマンド系列をコンパイルし、そこで前記最適化分析は(i)凸最適化ソルバー、(ii)前記標的状態を表現するデータ、及び(iii)前記それぞれ1セットの応答を表現するデータ、を使用しそこで前記電子オーブンは前記コマンド系列を実行し、前記アイテムを前記標的状態近くへ加熱する、ことを備える、請求項1に記載のコンピュータ実装方法」と記載され、段落[0098]には「トレーニングデータを使用して、損失関数が確率的勾配降下法評価に従い繰り返し最小化されるアプローチに従いニューラルネットワークをトレーニングすることが可能である」と記載されている。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特表2019-519744号公報
【非特許文献】
【0011】
【非特許文献1】Agrawal, Akshay, et al, "Differentiable convex optimization layers," 2019.
【発明の概要】
【発明が解決しようとする課題】
【0012】
凸最適化問題の結果を指標に含めて、ニューラルネットワークを学習させる場合、学習数の手順としては、(1)まず、入力データから凸問題を生成して解き、指標を出力するという順伝搬を実行し、(2)つぎに、出力した指標から勾配を逆順に計算して学習するという逆伝搬を実行する必要がある。
【0013】
しかしながら、非特許文献1を強化学習に適用した場合、学習の初期段階で凸最適化問題の最適解(全ての制約条件を満たす許容解の中で最も良い解)が求まるとは限らない。安全性を計算するための凸最適化問題は制約条件が非常に厳しいため、最適解は簡単に求まらない。最適解が求まらないと逆伝搬の計算が実行できないため、非特許文献1は、強化学習での使用には向いていない。
【0014】
また、特許文献1には、ニューラルネットワークのトレーニングにおいて、ニューラルネットワークのパラメータ更新方針に関する勾配関数を含む凸最適化問題を解くという記載はなく、凸最適化問題の最適解が求まらない場合に安全性を保証した強化学習が実施できない。
【0015】
本発明は、強化学習において行動の安定性を保証すること凸最適化問題において行動の安定性を保証することを目的とする。
【課題を解決するための手段】
【0016】
本願において開示される発明の一側面となる学習装置は、プログラムを実行するプロセッサと、前記プログラムを記憶する記憶デバイスと、を有し、第1指標を向上させる方策を学習するニューラルネットワークを訓練するための学習装置であって、前記プロセッサは、前記ニューラルネットワークに関する情報に基づき、前記ニューラルネットワークに含まれるパラメータの更新方針に関する勾配関数を含む凸最適化問題を生成する処理と、前記凸最適化問題に基づき、前記方策に関する第2指標を生成する処理と、前記第1指標と前記第2指標とに基づいて、前記ニューラルネットワークに含まれるパラメータを更新する処理と、を実行することを特徴とする。
【発明の効果】
【0017】
本発明の代表的な実施の形態によれば、強化学習において行動の安定性を保証すること凸最適化問題において行動の安定性を保証することができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0018】
図1図1は、学習装置のハードウェア構成例を示すブロック図である。
図2図2は、学習装置の機能的構成例を示すブロック図である。
図3図3は、一般的な順伝搬と逆伝搬の一例を示す説明図である。
図4図4は、凸最適化部内での順伝搬と逆伝搬の一例を示す説明図である。
図5図5は、行列クラスの一例を示す説明図である。
図6図6は、順伝搬実行部によって実行される順伝搬実行例1を示す説明図である。
図7図7は、変数行列の行列データを示す説明図である。
図8図8は、順伝搬実行部によって実行される順伝搬実行例2を示す説明図である。
図9図9は、変数行列および定数行列の行列データを示す説明図である。
図10A図10Aは、問題生成部による問題生成処理手順例を示すフローチャートである。
図10B図10Bは、閉ループシステムの一例を示す説明図である。
図11図11は、標準形変換部による標準系変換処理手順例を示すフローチャートである。
図12図12は、解の更新アルゴリズムの一例を示す説明図である。
図13図13は、変数行列Xの更新に対する順伝搬および逆伝搬を示す説明図である。
図14図14は、最適化部による最適化処理手順例を示すフローチャートである。
図15図15は、解変換部による解変換処理手順例を示すフローチャートである。
図16図16は、指標計算部による指標計算処理手順例を示すフローチャートである。
図17図17は、方策改善部による方策改善処理手順例を示すフローチャートである。
図18図18は、図17に示した方策ニューラルネットワーク更新処理(ステップS1702)の詳細な処理手順例を示すフローチャートである。
図19図19は、図17に示した価値関数ニューラルネットワーク更新処理(ステップS1703)の詳細な処理手順例を示すフローチャートである。
図20図20は、入力画面の一例を示す説明図である。
図21図21は、出力画面の一例を示す説明図である。
【発明を実施するための形態】
【0019】
<凸最適化問題>
凸最適化問題について、半正定値計画問題を例に挙げて説明する。半正定値計画問題は、半正定値行列全体によって作られる凸錐体上での凸最適化問題の一つである。半正定値計画問題は、下記式(1)の主問題(A)および双対問題(B)によって表現される。
【0020】
【数1】
【0021】
主問題(A)において、C∈Sは定数行列であり、定数行列Cがサイズnの実対称行列であることを示す。
【0022】
主問題(A)において、X∈Sは変数行列であり、変数行列Xがサイズnの実対称行列であることを示す。
【0023】
主問題(A)において、U・Vの演算子「・」は、行列Uと行列Vとの内積を示す。
【0024】
主問題(A)において、Sはサイズがnの実対称行列からなる集合を示す。
【0025】
主問題(A)において、b∈Rは定数ベクトルであり、定数ベクトルbがm次のベクトルであることを示す。
【0026】
双対問題(B)において、y∈Rは変数ベクトルであり、、変数ベクトルyがm次のベクトルであることを示す。
【0027】
双対問題(B)において、Z∈Sは変数行列であり、変数行列Zがサイズnの実対称行列であることを示す。
【0028】
定数行列A~A、Cおよび定数ベクトルbが与えられたとき、対称行列Xを変数行列とする凸最適化問題を半正定値計画問題の主問題という。主問題(A)の制約を満たす変数行列Xを主問題の実行可能解という。さらに、実行可能解である変数行列Xが正定値であるとき、実行可能解を内点実行可能解という。
【0029】
主問題(A)に対して、変数ベクトルy~yおよび変数行列Zを変数とする凸最適化問題を、半正定値計画問題の双対問題(B)という。双対問題(B)の制約を満たす変数の組(y,Z)を、双対問題(B)の実行可能解という。さらに、実行可能解である変数行列Zが正定値であるとき、実行可能解を内点実行可能解という。
【0030】
主問題(A)の目的関数値と双対問題(B)の目的関数値との間には、下記の不等式(2)が成り立つ。
【0031】
【数2】
【0032】
主問題(A)の目的関数値(上記不等式(2)の左辺第1項)と双対問題(B)の目的関数値(上記不等式(2)の左辺第2項)とが一致すれば、(X,y,Z)は、半正定値計画問題の最適解である。
【0033】
<学習装置のハードウェア構成例>
図1は、学習装置のハードウェア構成例を示すブロック図である。学習装置100は、プロセッサ101と、記憶デバイス102と、入力デバイス103と、出力デバイス104と、通信インターフェース(通信IF)105と、を有する。プロセッサ101、記憶デバイス102、入力デバイス103、出力デバイス104、および通信IF105は、バス106により接続される。プロセッサ101は、学習装置100を制御する。記憶デバイス102は、プロセッサ101の作業エリアとなる。また、記憶デバイス102は、各種プログラムやデータを記憶する非一時的なまたは一時的な記録媒体である。記憶デバイス102としては、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、フラッシュメモリがある。入力デバイス103は、データを入力する。入力デバイス103としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナ、マイク、センサがある。出力デバイス104は、データを出力する。出力デバイス104としては、たとえば、ディスプレイ、プリンタ、スピーカがある。通信IF105は、ネットワークと接続し、データを送受信する。
【0034】
<学習装置100の機能的構成例>
図2は、学習装置100の機能的構成例を示すブロック図である。学習装置100は、環境部201と、方策改善部202と、凸最適化部203と、を有する。環境部201と、方策改善部202、および凸最適化部203は、具体的には、たとえば、図1に示した記憶デバイス102に記憶されたプログラムをプロセッサ101に実行させることにより実現される。
【0035】
環境部201は、従来型の強化学習と同様に、状態計算部211と、報酬計算部212と、環境リセット部213と、を有する。状態計算部211は、行動が与えられると状態を更新する。報酬計算部212は、選択した行動に対する報酬を算出する。環境リセット部213は、エピソードごとに環境をリセットする。
【0036】
方策改善部202は、行動決定部221と、パラメータ更新部222と、学習データ収集部223と、を有する。行動決定部221は、価値関数によって算出された行動の価値が最大となる行動を選択する。パラメータ更新部222は、方策ニューラルネットワークの方策パラメータと、価値関数ニューラルネットワークのパラメータと、を更新する。学習データ収集部223は、学習データ(行動、状態、報酬)を収集する。
【0037】
凸最適化部203は、凸集合上の凸関数の最小化問題である凸最適化問題を解く。凸最適化部203は、行動、状態、報酬および方策パラメータが入力されると、凸最適化問題の解を、指標として方策改善部202に出力する。
【0038】
凸最適化部203は、勾配関数記憶部231と、問題生成部232と、標準形変換部233と、最適化部234と、解変換部235と、指標計算部236と、行列クラス237と、を有する。
【0039】
勾配関数記憶部231は、逆伝搬を実行するための情報(以下、逆伝搬実行情報)を記憶する。問題生成部232は、学習データ(行動、状態、報酬)および方策パラメータが与えられると、最適化問題を生成する。最適化問題とは、目的関数および制約条件の組み合わせである。後述するステップS1006で目的関数が生成され、ステップS1007で制約条件が生成される。
【0040】
標準形変換部233は、問題生成部232からの目的関数および制約条件に基づいて、定数行列と定数ベクトルとを出力する。標準形とは、上記式(1)に記載した主問題(A)、または双対問題(B)である。定数行列A、Cと定数ベクトルbとを用いて、最適化問題が定義される。標準形変換部233は、目的関数および制約条件を、定数行列A、Cおよび定数ベクトルbに変換する。
【0041】
最適化部234は、主問題(A)および双対問題(B)に対して最適解を求める処理を実行する。最適化部234の詳細については、図12図14で後述する。
【0042】
解変換部235は、最適化部234から得られた解を変数行列に変換する。解変換部235の詳細については、図15で後述する。
【0043】
指標計算部236は、最適化部234から得られた解の最適性と、解変換部235から得られた変数行列と、に基づいて、行動の安全性を評価する指標を計算する。行動の安全性を評価する指標は、0以上の実数値であり、指標の値が大きいほど安全性が高いことを意味する。指標計算部236の詳細については、図16で後述する。
【0044】
<順伝搬と逆伝搬>
図3は、一般的な順伝搬と逆伝搬の一例を示す説明図である。系列301は順伝搬を示し、系列302は系列301に対する逆伝搬を示す。系列301において、関数fに変数xの値311が入力されると関数fは変数yの値312を算出し、関数gに変数yの値312が入力されると関数gは変数zの値313を算出する。順伝搬では、入力される変数x,yの各値311,312に対して関数f,gが演算を実行して変数y,zの値312,313を出力する際に、入力された変数x,yの値311,312と、出力された変数y,zの値312,313と、関数f,gによる演算に対応する勾配関数f´(x),g´(y)と、が保持される。このような逆伝搬を実行するための情報が保持されるため、凸最適化部203は逆伝搬を実行可能である。
【0045】
関数f,gによる演算は、加減乗除、行列積、tanhなど、ニューラルネットワークの学習に必要となる演算を含む。以降において、「順伝搬を実行する」という表記は、通常の計算の実行(入力に対して演算を実行して出力する)と同時に、逆伝搬を実行するための情報が保持されることを意味する。
【0046】
系列302の逆伝搬では、順伝搬の際に、保持された逆伝搬を実行するための情報に基づき、順伝搬の出力側から入力側に向かって勾配323,322,321を計算する。
【0047】
図4は、凸最適化部203内での順伝搬と逆伝搬の一例を示す説明図である。系列401は順伝搬を示し、系列402は系列401に対する逆伝搬を示す。系列401において、関数fconvexに変数xinの値411が入力されると関数fconvexは変数youtの値412を算出する。関数fconvexは、変数youtの値412を出力する関数である。変数youtの最終出力値はLであり、凸最適化部203からの出力となる指標である。
【0048】
順伝搬では、入力される変数xinの値411に対して関数fconvexが演算を実行して変数youtの値412を出力する際に、入力された変数xinの値411と、出力された変数youtの値412と、関数fconvexによる演算に対応する勾配関数f´convexと、が勾配関数記憶部231に保持される。このような逆伝搬を実行するための情報が勾配関数記憶部231に保持されるため、凸最適化部203は逆伝搬を実行可能である。
【0049】
系列402の逆伝搬では、保持された逆伝搬を実行するための情報に基づき、順伝搬の出力側から入力側に向かって勾配422,421を計算する。
【0050】
<行列クラス>
図5は、行列クラス237の一例を示す説明図である。半正定値計画問題は、定数行列や変数行列を用いて記述される。定数行列や変数行列の生成にあたり、行列クラス237が生成される。行列クラス237は、行列データ501と順伝搬実行部502とを含む。順伝搬実行部502は、図3および図4に示したように、順伝搬を実行して、逆伝搬を実行するための情報を勾配関数記憶部231に格納する。
【0051】
行列データ501は、インデックス511と行列512とを含む。インデックス511は、同一行の行列512を特定する。インデックス511の値0~4を、インデックス#0~#4と表記する場合がある。変数行列は、インデックス#0~#4の5種類の行列512(0)~512(4)の線形結合により表現される。
【0052】
具体的には、たとえば、変数行列H(x)は、下記式(3)で表現可能である。
【0053】
【数3】
【0054】
上記式(3)において、x,x,…,xはp(pは1以上の整数)個の変数、Hは定数行列、H,H,…,Hはバイナリ行列(生成時はバイナリ行列だが、順伝搬実行後の行列はバイナリ行列ではない)である。
【0055】
たとえば、2行2列の変数行列Xを生成した場合は、下記式(4)のように表現される。
【0056】
【数4】
【0057】
変数行列Xは、図5に示したように、変数のインデックス511と対応する行列512のペアで記憶される。すなわち、上記式(4)の右辺において、変数xは、インデックス#1の行列512(1)を用いて表現され、変数xは、インデックス#2の行列512(2)を用いて表現され、変数xは、インデックス#3の行列512(3)を用いて表現され、変数xは、インデックス#4の行列512(4)を用いて表現される。なお、定数行列Hは行列512(0)に対応する。
【0058】
<順伝搬実行例>
つぎに、順伝搬実行部502によって実行される順伝搬実行例について説明する。
【0059】
図6は、順伝搬実行部502によって実行される順伝搬実行例1を示す説明図である。順伝搬実行例1は、行列の加法を示す。系列601は順伝搬を示し、系列602は系列601に対する逆伝搬を示す。系列601において、加法を示す関数Addに2つの変数M 、M の値611,612が入力されると関数Addは変数M の値613を算出し、勾配関数Add´に勾配623が入力されると勾配関数Add´は勾配621,622を算出する。jはインデックス511の値である。
【0060】
勾配623,622,621は、逆伝搬を実行して出力された値である。勾配関数Add´は関数Addによる演算に対応する勾配関数である。
【0061】
順伝搬実行部502は、入力される変数M 、M の各値611,612に対して関数Addが演算を実行して変数M の値613を出力する際に、入力された変数M 、M の値611,612と、出力された変数M の値613と、勾配関数Add´と、を勾配関数記憶部231に格納する。
【0062】
たとえば、2行2列の変数行列Xを生成した場合は、下記式(5)のように表現される。
【0063】
【数5】
【0064】
関数Addによる行列変数の加法X=X+Xは、下記式(6)にように表現される。
【0065】
【数6】
【0066】
たとえば、インデックス#1の変数xについての上記式(6)の右辺第1項では、下記式(7)で計算する順伝搬が実行される。
【0067】
【数7】
【0068】
図7は、変数行列X~Xの行列データを示す説明図である。変数行列Xの行列データ701は、上記式(4)に示したように、図5に示した行列データ501で表現される。行列712は、インデックス#j(j=0~4)の行列を示す。
【0069】
変数行列Xの行列データ702は、上記式(5)の右辺の各項に示した行列722となる。行列722は、インデックス#j(j=0~4)の行列を示す。
【0070】
変数行列Xの行列データ703は、上記式(6)に示した右辺各項内の加法により算出された行列732となる。行列732は、インデックス#j(j=0~4)の行列を示す。
【0071】
図8は、順伝搬実行部502によって実行される順伝搬実行例2を示す説明図である。順伝搬実行例1は、行列積を示す。系列801は順伝搬を示し、系列802は系列801に対する逆伝搬を示す。系列801において、行列積を示す関数Matmulに2つの変数M 、M の値811,812が入力されると関数Matmulは変数M の値813を算出し、関数Matmul´に勾配823が入力されると関数Matmul´は勾配821,822を算出する。jはインデックス511の値である。
【0072】
勾配823,822,821は、逆伝搬を実行して出力された値である。関数Matmul´は関数Matmulによる演算に対応する勾配関数である。
【0073】
順伝搬実行部502は、入力される変数M 、M の各値811,812に対して関数Addが演算を実行して変数M の値813を出力する際に、入力された変数M 、M の値811,812と、出力された変数M の値813と、勾配関数Matmul´と、を勾配関数記憶部231に格納する。
【0074】
行列積では、行列積の対象となる2つの行列のうち少なくとも1つは定数行列とする。たとえば、上記式(4)の変数行列Xと下記式(8)の定数行列Cとの関数Matmulによる行列積である変数行列X=Xは、下記式(9)で表現される。
【0075】
【数8】
【0076】
たとえば、インデックス#1の変数xについての上記式(9)の右辺第1項では、下記式(10)で計算する順伝搬が実行される。
【0077】
【数9】
【0078】
図9は、変数行列X,Xおよび定数行列Cの行列データを示す説明図である。変数行列Xの行列データ701は、上記式(4)に示したように、図5に示した行列データ501で表現される。行列712は、インデックス#j(j=0~4)の行列を示す。
【0079】
定数行列Cの行列データ901は、上記式(8)に示した行列となる。すなわち、行列データ912では、インデックス#0が定数行列Cとなり、それ以外のインデックス#1~#4は、0行列となる。
【0080】
変数行列Xの行列データ904は、上記式(9)に示した右辺各項内の行列積により算出された行列942となる。行列942は、インデックス#j(j=0~4)の行列を示す。
【0081】
<問題生成部232による問題生成処理>
図10Aは、問題生成部232による問題生成処理手順例を示すフローチャートである。問題生成部232は、方策改善部202から行動および方策パラメータを取得し、環境部201から状態および報酬を取得する(ステップS1001)。
【0082】
問題生成部232は、状態および行動から、環境の状態遷移を1次の伝達関数としてモデル化する(ステップS1002)。
【0083】
問題生成部232は、伝達関数モデルおよび方策を用いて、閉ループシステムを構成する(ステップS1003)。
【0084】
図10Bは、閉ループシステムの一例を示す説明図である。閉ループシステム1000は、方策1101と伝達関数1102とにより閉ループを構成したシステムである。方策1101は、方策パラメータが設定された方策ネットワークにおいて、状態および報酬が与えられると、状態での行動を決定する確率分布において報酬を最大化するような行動を決定し、伝達関数1102に出力する。伝達関数1102は、行動を入力すると、状態および報酬を方策1101に出力する。このような閉ループシステム1000の安定性の条件を構築することで、行動の安全性の指標を計算することが可能になる。
【0085】
図10Aに戻り、問題生成部232は、ステップS1003によって構成された閉ループシステムに基づいて、定数行列を生成する(ステップS1004)。
【0086】
問題生成部232は、閉ループシステムの安全性、すなわち、行動の安全性が保証される条件を満たすための変数行列を生成する(ステップS1005)。
【0087】
問題生成部232は、ステップS1004で生成された定数行列とステップS1005で生成された変数行列とを用いて、行動の安全性に関する目的関数を生成する順伝搬を実行する(ステップS1006)。
【0088】
問題生成部232は、ステップS1004で生成された定数行列とステップS1005で生成された変数行列とを用いて、行動の安全性に関する制約条件を生成する順伝搬を実行する(ステップS1007)。
【0089】
問題生成部232は、ステップS1006の順伝搬で生成された目的関数(cx)とステップS1007の順伝搬で生成された制約条件とを標準形変換部233に出力する(ステップS1008)。
【0090】
問題生成部232は、行動の安全性に関する条件を、線形行列不等式の制約(下記式(11-2))の下で行動の安全性に関する線形の目的関数を最小化する問題(下記式(11-1))として生成する(下記式(11))。
【0091】
【数10】
【0092】
Tは行列やベクトルの転置を示す。上記式(11-2)がステップS1007の順伝搬で生成された制約条件であり、ステップS1007の行動の安全性に関する制約条件である。cは定数ベクトルであり、xは変数ベクトルである。G0、G1、…Gqは定数行列であり、G(x)は行列値関数である。
【0093】
線形行列不等式の制約が複数(K個)存在する場合の最適化問題は以下となる(下記式(12))。
【0094】
【数11】
【0095】
また、ステップS1006、S1007では、問題生成部232は、生成した定数行列や変数行列を用いて、上記式(11)のcxやG(x)を計算する順伝搬を実行する。具体的には、たとえば、行列クラス237内の順伝搬実行部502が順伝搬を実行して、目的関数および制約条件を計算する。
【0096】
定数行列G0、G1、…Gqは、凸最適化問題においては定数だが、ニューラルネットワークの学習においては勾配を計算すべきパラメータとして扱われる。
【0097】
行動の安全性の条件を上記式(11)の一般形で表現したが、行列変数に関する不等式をそのままの形で利用することも可能である。たとえば、変数行列X∈Sと定数行列A∈Rn×nに対して、行列オブジェクトを用いて以下のように表現してもよい(下記式(13))。
【0098】
【数12】
【0099】
<標準形変換部233による標準系変換処理>
図11は、標準形変換部233による標準系変換処理手順例を示すフローチャートである。標準形変換部233により、標準形に変換することで、汎用的に最適化問題を解くことが可能になる。たとえば、ユーザの要望や対象システムが異なると、ステップS1006およびステップS1007で生成される目的関数および制約条件が変化するが、標準形に変換することで、ユーザの要望やシステムが異なっても同様の形式で最適化問題を解くことが可能になる。
【0100】
標準形変換部233は、問題生成部232から目的関数と制約条件を取得する(ステップS1101)。
【0101】
標準形変換部233は、制約条件から、半正定値計画問題(上記式(1))の定数行列Cを計算する順伝搬を実行する(ステップS1102)。
【0102】
標準形変換部233は、制約条件から、半正定値計画問題(上記式(1))の定数行列Aを計算する順伝搬を実行する(ステップS1103)。
【0103】
標準形変換部233は、目的関数から、半正定値計画問題(上記式(1))の定数ベクトルbを計算する順伝搬を実行する(ステップS1104)。
【0104】
標準形変換部233は、定数行列A,定数ベクトルb,定数行列Cを最適化部234に出力する(ステップS1105)。
【0105】
定数行列A,定数ベクトルb,定数行列Cは、上記式(11)の行列G(i=0,1,…,q)および行列cを用いて、以下のように計算される。
【0106】
定数行列A=G(i=0,1,…,q)・・・(14)
定数ベクトルb=-c ・・・(15)
定数行列C=-G ・・・(16)
【0107】
上記式(14)~(16)には、方策パラメータ(方策ニューラルネットワークの重み)のほか、伝達関数モデルのパラメータ(重み行列)が含まれる。ただし、伝達関数モデルのパラメータから生成された定数行列は、凸最適化問題としても定数であり、ニューラルネットワーク学習においても定数であるため、勾配を計算すべきパラメータとしては扱われない。
【0108】
<解の更新アルゴリズム>
図12は、解の更新アルゴリズムの一例を示す説明図である。実行可能領域1200内の実行可能初期解1201または実行可能領域1200外の実行不可能初期解1202から、中心パス1204に沿って解を更新する順伝搬が実行される。実行可能初期解1201は、許容解1211でなくてもよい。
【0109】
反復点1203は、順伝搬での関数からの出力値である。図12では、反復点1203が3点存在し、その後最適解1212が得られているため、順伝搬で4回伝搬されたことを示す。各反復点1203において、入力値、出力値および勾配関数を、逆伝搬を実行するための情報として勾配関数記憶部231に格納することで、逆伝搬の実行が可能になる。
【0110】
図13は、変数行列Xの更新に対する順伝搬および逆伝搬を示す説明図である。図13において、系列1301は順伝搬を示し、系列1302は系列1301に対する逆伝搬を示す。系列1301において、関数Fに変数行列Xが入力されると関数Fは変数行列Xk+1を算出する。関数Fは、指標となる変数行列Xk+1を出力する関数である。kは図12の反復点1203を示す番号であり、k=1から始まる昇順の伝搬回数を示す。
【0111】
変数行列Xはk番目の反復点1203を構成する変数行列であり、変数行列Xk+1はk+1番目の反復点1203を構成する変数行列である。すなわち、k番目の反復点1203は、変数行列X、変数ベクトルyおよび変数行列Zによって構成され、k+1番目の反復点1203は、変数行列Xk+1、変数ベクトルyk+1および変数行列Zk+1によって構成される。
【0112】
順伝搬では、入力される変数行列Xに対して関数Fが演算を実行して変数行列Xk+1を出力する際に、入力された変数行列Xと、出力された変数行列Xk+1と、関数Fによる演算に対応する勾配関数F´と、が勾配関数記憶部231に保持される。このような逆伝搬を実行するための情報が勾配関数記憶部231に保持されるため、凸最適化部203は逆伝搬を実行可能である。
【0113】
系列1302の逆伝搬では、勾配関数記憶部231に保持された逆伝搬を実行するための情報に基づき、順伝搬の出力側から入力側に向かって勾配1322,1321を計算する。なお、図13では、変数行列Xについての順伝搬および逆伝搬を示したが、図示はしないが変数ベクトルyおよび変数行列Zについても同様である。
【0114】
k+1番目の反復点1203(Xk+1,yk+1,Zk+1)は、下記条件式(17)を充足するように定められ、解の最適性δは、下記式(18)で表現される。
【0115】
【数13】
【0116】
すなわち、上記式(18)でδ=0になれば、k+1番目の反復点1203(Xk+1,yk+1,Zk+1)は、半正定値計画問題(上記式(1))の最適解1212になる。なお、αは行列Xの更新に関するステップ長であり、αは行列Zの更新に関するステップ長である。
【0117】
<最適化部234による最適化処理>
図14は、最適化部234による最適化処理手順例を示すフローチャートである。最適化部234は、標準形変換部233から定数行列A、定数ベクトルb、および定数行列C(上記式(14)~(16)を参照)を取得する(ステップS1401)。
【0118】
最適化部234は、定数行列A、定数ベクトルb、および定数行列Cを、上記式(1)の主問題(A)および双対問題(B)に代入し、初期解(X,y,Z)を選択する(ステップS1402)。
【0119】
最適化部234は、中心パス1204上の点を近似するための方程式を生成する(ステップS1403)。
【0120】
最適化部234は、ステップS1403によって生成された方程式を解いて探索方向(dX,dy,dZ)を計算する順伝搬を実行する(ステップS1404)。
【0121】
最適化部234は、ステップサイズαp,αdを計算する順伝搬を実行する(ステップS1405)。
【0122】
最適化部234は、次の反復点1203である(Xk+1,yk+1,Zk+1)を、上記式(17)の条件式を満たすように定める順伝搬を実行する(ステップS1406)。
【0123】
最適化部234は、上記式(18)の解の最適性δを計算する順伝搬を実行する(ステップS1407)。
【0124】
最適化部234は、所定回数繰り返すまでに最適解1212が得られたか否かを判断する(ステップS1408)。所定回数繰り返すまでに最適解1212が得られていない場合(ステップS1408:No)、ステップS1403に戻る。所定回数繰り返すまでに最適解1212が得られた場合、または、所定回数の繰り返しが終了した場合(ステップS1408:Yes)、最適化部234は、解の最適性δを指標計算部236に出力する(ステップS1409)。
【0125】
最適化部234は、更新した解(X,y,Z)を解変換部235に出力する(ステップS1410)。更新した解(X,y,Z)とは、最適解1212が得られた場合は最適解1212であり、最適解1212が得られなかった場合は、最後に更新された反復点1203である(Xk+1,yk+1,Zk+1)である。
【0126】
<解変換部235による解変換処理>
図15は、解変換部235による解変換処理手順例を示すフローチャートである。最適化部234からの解(X、y、Z)は標準形の解であるため、解変換部235は、解(X、y、Z)を元の問題(つまり、ステップS1006とステップS1007で生成した目的関数と制約条件の形式)に戻す処理を実行する。
【0127】
解変換部235は、最適化部234から解(X,y,Z)を取得する(ステップS1501)。
【0128】
解変換部235は、安全性の定式化で用いた変数行列に変換する順伝搬を実行する(ステップS1502)。
【0129】
解変換部235は、ステップS1502の順伝搬によって変換された変数行列を指標計算部236に出力する(ステップS1503)。
【0130】
<指標計算部236による指標計算処理>
図16は、指標計算部236による指標計算処理手順例を示すフローチャートである。指標計算部236は、最適化部234から解の最適性δを取得し、解変換部235から変数行列を取得する(ステップS1601)。
【0131】
指標計算部236は、ステップS1601で取得された変数行列を用いて行動の安全性を計算する順伝搬を実行する(ステップS1602)。
【0132】
指標計算部236は、ステップS1602の順伝搬で得られた行動の安全性と解の最適性δとから指標を計算する順伝搬を実行する(ステップS1603)。
【0133】
指標計算部236は、ステップS1603の順伝搬で得られた指標を方策改善部202に出力する(ステップS1604)。
【0134】
<方策改善部202による方策改善処理>
図17は、方策改善部202による方策改善処理手順例を示すフローチャートである。方策改善部202は、行動決定部221により行動を決定し、学習データ収集部223により、学習データ(行動、状態、報酬)を収集する(ステップS1701)。方策改善部202は、パラメータ更新部222により、方策ニューラルネットワーク更新処理を実行する(ステップS1702)。方策改善部202は、パラメータ更新部222により、価値関数ニューラルネットワーク更新処理を実行する(ステップS1703)。方策改善部202は、学習が完了したか否かを判断する(ステップS1704)。
【0135】
具体的には、たとえば、方策改善部202は、環境との相互作用の回数が既定の回数に達したら学習完了と判断する。ここで、1回分の環境との相互作用とは、「状態に基づいて行動決定部221が行動を決定し、行動が環境部201に入力されて次の状態と報酬が出力される」処理である。
【0136】
学習が完了していない場合(ステップS1704:No)、ステップS1701に戻る。学習が完了した場合(ステップS1704:Yes)、方策改善処理が終了する。
【0137】
図18は、図17に示した方策ニューラルネットワーク更新処理(ステップS1702)の詳細な処理手順例を示すフローチャートである。方策ニューラルネットワークは、状態を入力とし、行動を出力するニューラルネットワークである。方策改善部202は、パラメータ更新部222により、方策パラメータ(方策ニューラルネットワークの重み)と学習データ(行動、状態、報酬)とを凸最適化部203に出力し、指標を取得する(ステップS1801)。
【0138】
方策改善部202は、パラメータ更新部222により、学習データ(行動、状態、報酬)を用いて、報酬の最大化につながる目的関数(たとえば、代理目的関数)を計算する順伝搬を実行する(ステップS1802)。具体的には、方策改善部202は、報酬の最大化につながる目的関数を第1指標、凸最適化部203から取得した指標を第2指標とする順伝搬を実行する。たとえば、方策改善部202は、報酬の最大化につながる目的関数を第1指標、凸最適化部203から取得した指標を第2指標とし、第1指標および第2指標に係数をかけて足し合わせた値を計算する順伝搬を実行する。
【0139】
方策改善部202は、パラメータ更新部222により、ステップS1801で取得された指標とステップS1802の順伝搬の実行で得られた代理目的関数とを用いて、方策の損失関数を計算する順伝搬を実行する(ステップS1803)。具体的には、たとえば、方策改善部202は、パラメータ更新部222により、ステップS1802の順伝搬の実行で得られた報酬の最大化につながる目的関数を第1指標、ステップS1801で取得された指標を第2指標とし、第1指標および第2指標に係数をかけて足し合わせた値を計算する順伝搬を実行する。
【0140】
方策改善部202は、パラメータ更新部222により、方策の損失関数を計算する順伝搬に対する逆伝搬を実行して、勾配を計算する(ステップS1804)。
【0141】
方策改善部202は、パラメータ更新部222により、ステップS1804で得られた勾配を用いて方策ニューラルネットワークの方策パラメータを更新する(ステップS1805)。このあと、価値関数ニューラルネットワーク更新処理(ステップS1703)に移行する。
【0142】
図19は、図17に示した価値関数ニューラルネットワーク更新処理(ステップS1703)の詳細な処理手順例を示すフローチャートである。方策改善部202は、パラメータ更新部222により、学習データ(行動、状態、報酬)を用いて価値関数の損失関数を計算する順伝搬を実行する(ステップS1901)。
【0143】
価値関数とは、行動の価値を評価する関数である。具体的には、たとえば、価値関数は、環境部201からの状態に対して行動を選択した場合の報酬の推定値を行動の価値として算出する関数である。方策改善部202は、行動決定部221により、報酬の推定値が最大となる行動を選択し、環境部201に出力することになる。
【0144】
方策改善部202は、価値関数の損失関数を計算する順伝搬に対する逆伝搬を実行して、勾配を計算する(ステップS1902)。
【0145】
方策改善部202は、ステップS1902で得られた勾配を用いて価値関数ニューラルネットワークのパラメータを更新する(ステップS1903)。このあと、ステップS1704に移行する。
【0146】
<画面例>
図20は、入力画面の一例を示す説明図である。入力画面2000は、出力デバイス104の一例であるディスプレイに表示され、ユーザによる操作入力が可能なグラフィックユーザインタフェースである。入力画面2000は、第1設定項目2001~第7設定項目2007と、実行ボタン2008と、を有する。
【0147】
第1設定項目2001は、ユーザ操作により、環境との相互作用の回数を設定するための項目である。設定回数は、ステップS1704における学習終了の判断基準となる。
【0148】
第2設定項目2002は、ユーザ操作により、方策ニューラルネットワークの学習率を設定する項目である。
【0149】
第3設定項目2003は、ユーザ操作により、価値関数ニューラルネットワークの学習率を設定する項目である。
【0150】
第4設定項目2004は、ユーザ操作により、報酬の最大化につながる目的関数の割引率を設定する項目である。
【0151】
第5設定項目2005は、ユーザ操作により、報酬の最大化につながる目的関数のパラメータであるGAE(Generalized Advantage Estimator)、すなわち、目的関数の一般化アドバンテージ推定を設定する項目である。
【0152】
第6設定項目2006は、ユーザ操作により、第2指標における行動の安全性にかける係数を調整するパラメータを設定する。
【0153】
第7設定項目2007は、ユーザ操作により、第2指標行列変数の最適性にかける係数を調整するパラメータを設定する。
【0154】
実行ボタン2008の押下により、第1設定項目2001~第7設定項目2007に設定されたパラメータで学習が実行される。
【0155】
図21は、出力画面の一例を示す説明図である。出力画面2100は、ステップS1704:Yesの場合に、出力デバイス104の一例であるディスプレイに学習結果を表示する。「Return」が報酬をどれだけ最大化できたのかを示す数値が表示され、「Safety Metric」が行動の安全性を評価する指標をどれだけ最大化できたのかを示す数値が表示される。両数値は大きいほど最大化できていることを示す。
【0156】
このように、本実施例によれば、凸最適化部203において指標から逆伝搬を実行することにより勾配を計算することで、凸最適化問題において行動の安定性を保証することができる。
【0157】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。たとえば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
【0158】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、たとえば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【0159】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、IC(Integrated Circuit)カード、SDカード、DVD(Digital Versatile Disc)の記録媒体に格納することができる。
【0160】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【0161】
100 学習装置
101 プロセッサ
102 記憶デバイス
201 環境部
202 方策改善部
203 凸最適化部
211 状態計算部
212 報酬計算部
213 環境リセット部
221 方策改善部
221 行動決定部
222 パラメータ更新部
223 学習データ収集部
231 勾配関数記憶部
232 問題生成部
233 標準形変換部
234 最適化部
235 解変換部
236 指標計算部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10A
図10B
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21