(57)【要約】【課題】格納される経験の多様性を増し、格納されている経験をサンプリングして行う学習を、より効率的で、より適切に行う。【解決手段】開示されるのは、機械学習に使用される経験を格納する経験データベース、を更新する方法であって、エージェントの新しい経験を取得し、前記新しい経験と経験データベースから取得された１以上の過去の経験との間の、類似度を決定し、前記経験データベースは、強化学習において、前記エージェントの行動の評価値を決定するニューラルネットワークを学習するために使用され、前記類似度に基づいて、前記新しい経験を前記経験データベースに格納するか決定する。【選択図】図１１
2018151876.tif 000002
【特許請求の範囲】
【請求項１】
機械学習に使用される経験を格納する経験データベース、を更新する方法であって、
エージェントの新しい経験を取得し、
前記新しい経験と経験データベースから取得された１以上の過去の経験との間の、類似度を決定し、
前記経験データベースは、機械学習において、前記エージェントの行動の評価値を決定する評価モデルを学習するために使用され、
前記類似度に基づいて、前記新しい経験を前記経験データベースに格納するか決定する、方法。
【請求項２】
請求項１に記載の方法であって、
前記新しい経験と前記経験データベースに格納されている全経験それぞれとの間の類似度の総計に基づいて、前記新しい経験を前記経験データベースに格納するか決定する、方法。
【請求項３】
請求項１に記載の方法であって、
前記経験データベースに格納されている既存経験の数が規定数に達している場合に、前記類似度に基づいて、前記新しい経験を前記経験データベースに格納するか決定する、方法。
【請求項４】
請求項１に記載の方法であって、
前記類似度と乱数とに基づいて、前記新しい経験を前記経験データベースに格納するか決定する、方法。
【請求項５】
請求項１に記載の方法であって、
前記経験データベースに格納されている既存経験の数が規定数に達している場合に、前記既存経験の格納順に基づいて、前記既存経験から削除する経験を選択する、方法。
【請求項６】
請求項１に記載の方法であって、
前記経験データベースに格納されている既存経験の数が規定数に達している場合に、前記既存経験間の類似度に基づいて、前記既存経験から削除する経験を選択する、方法。
【請求項７】
請求項６に記載の方法であって、
前記既存経験間の類似度を示すテーブルを参照して、前記既存経験間の類似度を決定し、
前記経験データベースの更新に応じて、前記テーブルを更新する、方法。
【請求項８】
請求項１に記載の方法であって、
前記エージェントは仮想環境におけるロボットであり、
ニューラルネットワークに基づいて、前記仮想環境において前記ロボットの行動を決定し、
前記新しい経験は、前記ロボットの前記行動による経験であり、
前記経験データベースからサンプリングした経験を使用して、バックプロパゲーションにより、前記ニューラルネットワークのパラメータを更新する、方法。
【請求項９】
請求項８に記載の方法であって、
実ロボット端末に、前記ニューラルネットワークのパラメータを送信する、方法。
【請求項１０】
学習システムであって、
記憶装置と、
プロセッサと、
前記記憶装置は、経験データベースを格納し、
前記経験データベースは、機械学習において、エージェントの行動の評価値を決定する評価モデルを学習するために使用され、
前記プロセッサは、
前記エージェントの新しい経験を取得し、
前記新しい経験と前記経験データベースから取得された１以上の過去の経験との間の、類似度を決定し、
前記類似度に基づいて、前記新しい経験を前記経験データベースに格納するか決定する、学習システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習に使用される経験を格納する経験データベースを更新する方法に関する。
【背景技術】
【０００２】
社会において、人々をサポートし、補助するために、ロボットが使用されることが益々多くなってきている。ロボットの振る舞いや行動は、伝統的に、ルールに基づいてプログラミングされる。より多くの機能が必要となるにしたがって、より多くのより複雑なルールが存在するようになっている。そのため、全てのルールを策定しプログラミングするために、長い時間がかかっている。
【０００３】
深層強化学習は、深層学習と強化学習の利点を使用して、ルールをプログラミングすることなく、ロボットがタスクを実行する訓練を行うのに、有効なものとなっている。例えば、国際公開第２０１５／０５４２６４号は、人よりも上手にゲームを行うように、深層強化学習に基づいてロボットを訓練する技術を開示する。
【０００４】
深層強化学習は、経験（状態、行動、次の状態、報酬を含む）をメモリに蓄積し、学習のためにサンプリングする。上手く学習するためには、ネットワークの訓練のために様々な経験が必要とされる。例えば、ロボットが顧客に近寄るために、ロボットは、顧客に近づき会う、といことを経験する必要である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１５／０５４２６４号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、壁に衝突する、顧客と接触する、といった経験の割合は、非常に低い。なぜなら、ロボットは、訓練の初期においては、ランダムに移動しているからである。そのため、メモリにおいて類似する経験が支配的となる。深層強化学習がメモリをサンプルする場合、稀な経験はサンプリングされる可能性が非常に低い。そのため、ニューラルネットワークとリプレイ機構のためのメモリとを使用するだけでは、ロボットに適切に学習させることができない。
【０００７】
このように、従来の技術において、メモリにおける多様な経験のバランスが取れていない場合に、エージェント（例えばロボット）が取るべき行動を適切に学習することができないことが問題となる。メモリにおける経験をサンプリングする場合に、学習を、より効率的に、より適切に行うことができる技術が望まれる。
【課題を解決するための手段】
【０００８】
本発明の代表的な一例は、機械学習に使用される経験を格納する経験データベース、を更新する方法であって、エージェントの新しい経験を取得し、前記新しい経験と経験データベースから取得された１以上の過去の経験との間の、類似度を決定し、前記経験データベースは、機械学習において、前記エージェントの行動の評価値を決定する評価モデルを学習するために使用され、前記類似度に基づいて、前記新しい経験を前記経験データベースに格納するか決定する。
【発明の効果】
【０００９】
本発明の一態様によれば、格納される経験の多様性を増し、格納されている経験をサンプリングして行う学習を、より効率的で、より適切に行うことができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態１に係る学習システムの構成の模式図を示す。
【図２】実施形態１に係る学習システムの機能ブロック図を示す。
【図３】実施形態１に係る、メモリデータベースの模式図を示す。
【図４】実施形態１に係るニューラルネットワークパラメータデータベースの模式図を示す。
【図５】実施形態１に係る仮想環境の模式図を示す。
【図６】実施形態１に係る仮想環境シミュレーション部のフローチャートを示す。
【図７】実施形態１に係るロボット制御部のフローチャートを示す。
【図８】実施形態１に係るニューラルネットワーク部のフローチャートを示す。
【図９Ａ】フィードフォワードニューラルネットワークを示す。
【図９Ｂ】バックプロパゲーションニューラルネットワークを示す。
【図１０】実施形態１に係る学習部のフローチャートを示す。
【図１１】実施形態１に係る経験フィルタリング部のフローチャートを示す。
【図１２】実施形態２に係る経験フィルタリング部のフローチャートを示す。
【図１３】実施形態３に係る学習システムの構成例を示す。
【図１４】実施形態３に係る学習システムの機能ブロック例を示す。
【図１５】実施形態３に係る、類似度マトリックスデータベースの説明図を示す。
【図１６】実施形態３に係る経験フィルタリング部のフローチャートを示す。
【図１７】実施形態４に係る学習システム及びそれを適用した実ロボットの構成例を示す。
【図１８】実施形態４に係る学習システムにおけるロボット端末の機能ブロック図を示す。
【図１９】実施形態４に係るロボット制御部のフローチャートを示す。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。
【００１２】
以下において、学習システムが開示される。学習システムの例として、ロボットが行動を取る、例えば、ロボットが、障害物や壁に衝突することなく顧客のところまで行けるように移動するための、学習システムが説明される。
【００１３】
本開示の学習システムは、メモリに格納される経験の多様性を増すように、経験フィルタリングを実行する。ロボットが訓練を行うにつれ、より多くの経験が生成される。経験は、例えば、経験は、元の状態、行動、報酬、及び次の状態で表わされる。新しい経験が生成されると、経験フィルタリング部は、新しい経験とメモリにおける他の既存の経験との間の類似度を決定し、稀な経験をメモリに格納する可能性を高め、一般的な類似経験を格納する可能性を低くする。これにより、メモリからサンプリングした経験により、ロボットが取るべき行動を適切に学習することができる。
【００１４】
＜実施形態１＞
図１から１２を参照して実施形態１を説明する。学習システムは、サーバ１００を含む。サーバ１００は、仮想環境を実行する。仮想環境は、実世界環境をシミュレートし、ロボットが仮想環境において行動を取ることを学習できるようにする。経験フィルタリングプログラムは、メモリ内の他の既存の経験との類似度に基づいて、新しい経験をメモリに格納するか決定する。仮想環境により効率的にロボットの経験を収集することができる。なお、システム設計により、実環境においてロボットを動作させて経験を収集してもよい。
【００１５】
図１は、実施形態１に係る学習システムの構成の模式図を示す。サーバ１００は、プロセッサ１１０、メモリ１２０、補助記憶１３０を含む。上記構成要素は、バスによって互いに接続されている。メモリ１２０、補助記憶１３０又はこれらの組み合わせは記憶装置の例である。
【００１６】
プロセッサ１１０は、メモリ１２０を参照し、様々な計算処理を実行する。メモリ１２０は、仮想環境シミュレーションプログラム１２１、ロボット制御プログラム１２２、ニューラルネットワークプログラム１２３、学習プログラム１２４、経験フィルタリングプログラム１２５、を格納している。
【００１７】
仮想環境シミュレーションプログラム１２１は、実世界環境をシミュレートする。例えば、ロボットが実世界における障害物や壁に衝突することなく移動する方法を学習するように、仮想環境シミュレーションプログラム１２１は、壁や障害部の形状を地図内で記述する。
【００１８】
地図は、実世界においてロボットが衝突すべきではない物体を記述する。加えて、仮想環境シミュレーションプログラム１２１は、ロボットが壁や障害物に衝突するときや、ロボットが人に近づくとき等の、移動の軌跡の情報を含む。仮想環境シミュレーションプログラム１２１によって、実世界環境における物理法則（例えば、ロボットのスピードや、ロボットは壁をすり抜けることができない、等）をシミュレートすることができる。
【００１９】
ロボット制御プログラム１２２は、仮想環境において、ロボットの行動を決定する。ロボットの行動は、ロボットの能力、仕様、学習の目的により定義される。例えば、ロボットが壁や障害物に衝突することなく移動することを学習するためには、ロボットの行動は、例えば、スピードを上げる、スピードを下げる、右に回る、左に回る、等が挙げられる。さらに、それらの行動は、能力と仕様によって範囲が決められる。例えば、スピードは最大５ｋｍ／ｈまで上げることができ、右／左への回転は、最大４５°までに設定される。
【００２０】
ニューラルネットワークプログラム１２３は、情報フィードフォワードを行うために使用され、ロボットの観測状態が入力であり、ロボットが取り得る各行動のＱ値（行動評価値）が出力である。ニューラルネットワークは評価値を決定する評価モデル（又は評価関数）であり、そのパラメータは、学習プログラム１２４により随時更新される。以下に開示する学習システム例は、深層強化学習システムであって、行動評価モデルが深層ニューラルネットワークにより表わされる。ニューラルワークプログラムは編集可能であって、適用システムに応じてカスタマイズされる。
【００２１】
学習プログラム１２４は、ニューラルネットワークのパラメータの更新と最適化を行う。学習プログラム１２４は、補助記憶１３０から、メモリデータベース１３１に格納されている経験をサンプリングし、バックプロパゲーションによってニューラルネットワークのパラメータを最適化する。これにより、ニューラルネットワークは、所与の状態における各行動のＱ値をより正確に推定することができ、ロボットがより知的に行動することができるようになる。
【００２２】
経験フィルタリングプログラム１２５は、新しい経験とメモリデータベース１３１内の既存の経験との類似度に基づき、新しい経験をメモリデータベース１３１に格納すべきか決定する。ロボットが行動すると、状態の遷移が起きる。ロボットの経験は、元の状態、その状態においてロボットが取った行動、行動が取られた後の新しい状態、そして新しい状態からロボットが得る報酬、のタプル（ｔｕｐｌｅ）である。
【００２３】
しかし、経験が互いに非常に類似する又は同一である状況が存在する。そのような場合、メモリデータベース１３１は類似する経験のみを含むことになり、望ましくない学習結果につながる。従って、経験フィルタリングプログラム１２５のタスクは、メモリデータベース１３１に格納されるロボットの経験の多様性を大きくすることである。
【００２４】
補助記憶１３０は、メモリデータベース１３１及びニューラルネットワークパラメータデータベース１３２を格納する。メモリデータベース１３１は、四つのエレメントからなるタプルの集合を格納する。四つのエレメントは、状態（元の状態）、行動、報酬、そして次の状態である。
【００２５】
タプルは、訓練フェーズにおけるロボットの経験である。メモリデータベース１３１は、限られた容量（例えば、１００万経験）を有し、エンジニアにより予め決められている。メモリデータベース１３１が一杯になると、メモリデータベース１３１における最初の経験が削除され、新しい経験のための空きスペースが形成される。メモリデータベース１３１の構造例は、図３を参照して後に詳述する。
【００２６】
ニューラルネットワークパラメータデータベース１３２は、ニューラルネットワークにおけるノード間のリンク（ノードからの出力）の重みとバイアスを含む。重みとバイアスを使用して、ノードは他のノードに情報を伝える。バックプロパゲーション法を使用して重みとバイアスを最適化することで、ニューラルネットワークが各行動に対するＱ値をより正確に推定できるように、ニューラルネットワークパラメータデータベース１３２を更新する。ニューラルネットワークパラメータデータベース１３２の構成例は、図４を参照して後に詳述する。
【００２７】
図２は、実施形態１に係る学習システムの機能ブロック図を示す。仮想環境シミュレーション部１２１０は、実世界環境をシミュレートし、地図、障害物、物理法則等を含む。仮想環境シミュレーション部１２１０は、プロセッサ１１０が、仮想環境シミュレーションプログラム１２１を実行することが実現される。仮想環境シミュレーション部１２１０は、ロボットがどのように移動し、どのような行動を取るか、又、ロボットが壁や障害物に衝突するかどうか、を知ることができる。
【００２８】
ロボットの状態、行動、及び報酬は、経験フィルタリング部１２５０に送られる。報酬は予め設定されている。仮想環境シミュレーション部１２１０は、さらに、仮想世界においてロボットを動かすために、ロボットの行動をロボット制御部１２２０から受け取る。仮想環境シミュレーション部１２１０の処理フローは、図５及び６を参照して後に詳述する。
【００２９】
ロボット制御部１２２０は、ロボットの行動を決定する。ロボット制御部１２２０は、プロセッサ１１０がロボット制御プログラム１２２を実行することにより実現される。ロボット制御部１２２０は、センサデータをロボットの状態として、仮想環境シミュレーション部１２１０から受信し、その状態をニューラルネットワーク部１２３０に送信して、取ることができる各行動に対するＱ値を取得する。
【００３０】
ロボット制御部１２２０は、行動の決定に、Ｑ値情報を使用する場合と、使用しない場合がある。ロボット制御部１２２０は、イプシロン（ε）と呼ばれるパラメータを有し、それに基づき、Ｑ値を利用すべきか、ランダムな行動を探索すべきか決定する（ε−ｇｒｅｅｄｙ法）。パラメータεは、開発者に予め固定値（例えばε＝０．５）に設定される、又は、訓練時間に比例して、１から０まで減少する。
【００３１】
ロボット制御部１２２０は、数字をランダムに選択し、ε値と比較して、Ｑ値利用とランダムな行動探索と、いずれを選択するか判定する。最後に、ロボット制御部１２２０は、決定した行動を仮想環境シミュレーション部１２１０に送信し、仮想環境においてロボットに行動を取らせる。ロボット制御部１２２０の処理フローは、図７を参照して後に詳述する。
【００３２】
学習部１２４０は、訓練期間において、ニューラルネットワークが、入力がロボットの現在の状態とした場合に各行動に対するＱ値をより正確に推定できるように、ニューラルネットワークパラメータを最適化する。学習部１２４０は、学習プログラム１２４をプロセッサ１１０が実行することで実現される。学習部１２４０は、所定数の経験をメモリデータベース１３１からサンプリングし、バックプロパゲーションを行って、ニューラルネットワークの重みとバイアスを最適化する。学習部１２４０の処理フローは、図１０を参照して後に詳述する。
【００３３】
経験フィルタリング部１２５０は、仮想環境シミュレーション部１２１０から受信した新しい経験をメモリデータベース１３１に格納するか判定する。経験フィルタリング部１２５０は、経験フィルタリングプログラム１２５をプロセッサ１１０が実行することで実現される。
【００３４】
経験フィルタリング部１２５０は、新しい経験とメモリデータベース１３１に格納されている既存の経験との類似度を計算し、新しい経験を格納する確率を、類似度の計算結果に基づいて与える。新しい経験がメモリデータベース１３１に格納されている既存経験群と、高いトータル類似度（類似度の総計）を有する場合、その経験を格納する確率は低く、また、その逆が成り立つ。
【００３５】
図３は、実施形態１に係る、メモリデータベース１３１の模式図を示す。メモリデータベース１３１は、インデックス３０１、状態３０２、行動３０３、報酬３０４、次の状態３０５の、欄を有する。なお、メモリデータベースは、経験の情報を格納することができればどのような構造を有していてもよい。
【００３６】
インデックス３０１は、整数を示し、メモリデータベース１３１に格納されている経験の順序を示す。インデックス３０１は、メモリデータベース１３１に格納されているいずれの経験が、最も古く、メモリデータベース１３１が一杯であって新しい経験を格納する場合に削除される経験であるかを、示す。
【００３７】
状態３０２は、仮想世界における周囲環境についてのロボットのセンサ測定値の集合であって、センサ測定値の集合がロボットの状態と定義される。行動３０３は、正数値を示し、ロボットが取ることができる行動、つまり、行動ＩＤを示す。各数字は、特定の一つの行動を示す。例えば、行動１は、左回転を示し、行動２は直進を示し、行動３は右回転を示す。行動はロボットの能力と仕様に依存する。
【００３８】
報酬３０４は、ロボットが行動を取り次の状態に遷移した後に得ることができる報酬を定義する数値を示す。例えば、ロボットが壁に近く、直進する行動を取ることを決定する場合、結果として壁に衝突することになるので、得られる報酬は負の値である。ロボットがゴール（例えば顧客）に近く、顧客の範囲にとどまるように直進する行動を取ることを決定する場合、得られる報酬は正の値である。各状態の各行動に対する報酬は予め設定されている。
【００３９】
次の状態３０５は、ロボットが、状態３０２から行動３０３を取った後の、遷移状態である。この状態について、ロボットが報酬３０４を得ることができるか定義されている。次の状態３０５も、仮想世界における周囲環境についてのロボットのセンサ測定値の集合である。
【００４０】
図４は、実施形態１に係るニューラルネットワークパラメータデータベース１３２の模式図を示す。ニューラルネットワークパラメータデータベース１３２は、ＩＤ４０１、重み４０２、バイアス４０３の欄を有する。ニューラルネットワークパラメータデータベース１３２は、ニューラルネットワークパラメータの情報を格納していれば、どのような構造を有していてもよい。ＩＤ４０１は、ニューラルネットワークにおけるノード間の各リンク（ノードペア）を識別する。ＩＤ４０１の各値は、リンクの接続先ノードと接続元ノードのＩＤを下線によってつなぐ。例えば、ＩＤ３＿１及びＩＤ３＿２は、ノード１からノード３のリンク及びノード２からノード３へのリンクそれぞれを示す。
【００４１】
各リンク（ノードペア）に対して、重み４０２とバイアス４０３が関連付けられている。図４の例において、例えば、ＩＤ３＿１の重み４０２は８であり、バイアス４０３は２である。また、ＩＤ３＿２の重み４０２は１であり、バイアス４０３は１である。ノード３に対して、ノード１及びノード２のみが接続されているとして、ノード３の入力は、（（ノード１の出力×８＋２）＋（ノード２の出力×１＋１））である。
【００４２】
図５は、実施形態１に係る仮想環境の模式図を示す。図の地図は、壁５０１、障害物５０２、ロボット５０３、距離センサ５０４、顧客までの距離センサ５０５、及び顧客５０６を示す。壁５０１は、平面図における実世界の壁の形状を示す。ロボット５０３は、壁５０１を通り抜けることはできない。
【００４３】
障害物５０２は、ロボット５０３が通り抜けることができない実世界の障害物を示し、例えば、テーブル、椅子、カウンタ等である。ロボット５０３は、仮想環境において移動し、スピード性能や障害物を通り抜けることができないといった、物理法則に従う。ロボット５０３の位置は、ロボット５０３が、左、右、又は正面に進むといった行動を取る度に変化する。
【００４４】
距離センサ５０４は、ロボットから周囲の障害物までの距離を測定する。距離センサ５０４は、限られた範囲の障害物を検知することができ、特定の距離範囲に障害物が存在しない場合、測定値は最大値を示す。例えば、センサ範囲の最大値は３ｍである。障害物が存在する場合、測定値は、最大値より小さく、０より大きい。ロボットが障害物に衝突すると、測定値は０である。
【００４５】
顧客距離センサ５０５は、ロボット５０３から最も近い顧客までの距離を測定する。例えば、距離センサ５０４と顧客距離センサ５０５の測定値の組み合わせが、ロボット５０３の状態を示す。仮想世界における顧客５０６は、実世界における本物の顧客と似た振る舞いを示す。例えば、顧客５０６は仮想世界において移動することができ、物理法則に従う。
【００４６】
図６は、実施形態１に係る仮想環境シミュレーション部１２１０のフローチャートを示す。仮想環境シミュレーション処理は、プロセッサ１１０により実行される。まず、ステップ６０１において、仮想環境シミュレーション部１２１０は、仮想環境オブジェクト、例えば、壁、障害物、ロボットの位置、顧客の位置などを、設定する。
【００４７】
次に、ステップ６０２において、仮想環境シミュレーション部１２１０は、ロボット制御部１２２０から行動を受け取り、受け取った行動に従ってロボットを動かす。ステップ６０３において、ステップ６０２においてロボットが移動された後、仮想環境シミュレーション部１２１０は、新しい位置におけるロボットの状態と元の状態（行動直前の状態）とを、決定する。
【００４８】
ステップ６０４において、仮想環境シミュレーション部１２１０は、この新しい状態におけるロボットへの報酬を決定する。ステップ６０５において、仮想環境シミュレーション部１２１０は、集めた情報を統合する。具体的には、元の状態、ロボットが取った行動、報酬、そして新しい状態を一つのタプルに含める。
【００４９】
ステップ６０６において、仮想環境シミュレーション部１２１０は、新しい状態が終端状態であるか判定する。終端状態は、例えば、ロボットが壁に衝突したとき、又はロボットが成功裏に顧客の前に行きついたとき、等である。新しい状態が終端状態であるとステップ６０６で判定された場合（６０６：ＹＥＳ）、ステップ６０７において、仮想環境シミュレーション部１２１０は、ロボットの位置を所定の初期位置又はランダムな位置に、再設定する。
【００５０】
新しい状態が終端状態ではないとステップ６０６で判定された場合（６０６：ＮＯ）、仮想環境シミュレーション部１２１０は、ステップ６０８に進む。ステップ６０８において、仮想環境シミュレーション部１２１０は、ステップ６０５で統合した情報を経験フィルタリング部１２５０（経験フィルタリングプログラム１２５）に送る。統合した情報は、元の状態、ロボットの行動、報酬、新しい状態を含む。以上により、仮想環境シミュレーション処理は終了する。
【００５１】
図７は、実施形態１に係るロボット制御部１２２０のフローチャートを示す。ロボット制御処理は、プロセッサ１１０のより実行される。まず、ステップ７０１において、ロボット制御部１２２０は、センサデータを、ロボットの状態として、仮想環境シミュレーション部１２１０から受信する。
【００５２】
ステップ７０２において、ロボット制御部１２２０は、この状態をニューラルネットワーク部１２３０に転送し、ニューラルネットワーク部１２３０から、各行動についてのＱ値を受信する。ステップ７０３において、ロボット制御部１２２０は、０から１までの、一つの乱数を生成する。
【００５３】
ステップ７０４において、ロボット制御部１２２０は、乱数をεと比較する。ステップ７０４において乱数がεよりも大きくない場合（７０４：ＮＯ）、ステップ７０５において、ロボット制御部１２２０は、ランダムな行動を選択する。乱数がεより大きいとステップ７０４において判定された場合（７０４：ＹＥＳ）、ステップ７０６において、ロボット制御部１２２０は、最も高いＱ値の行動を選択する。
【００５４】
最後に、ステップ７０７において、ロボット制御部１２２０は、選択した行動を仮想環境シミュレーション部１２１０に送信する。以上により、ロボット制御処理が終了する。なお、ロボット制御部１２２０は、ε−ｇｒｅｅｄｙ法と異なるアルゴリズムに従って行動を選択してもよい。
【００５５】
図８は、実施形態１に係るニューラルネットワーク部１２３０のフローチャートを示す。ニューラルネットワーク処理は、プロセッサ１１０により実行される。ステップ８０１において、ニューラルネットワーク部１２３０は、他の機能部から、ロボットの状態の情報を受信する。
【００５６】
ステップ８０２において、ニューラルネットワーク部１２３０は、フィードフォワードニューラルネットワークを使用し、受信した状態を入力として、ニューラルネットワークパラメータデータベース１３２におけるパラメータを使用して、各行動に対するＱ値を出力する。ステップ８０３において、ニューラルネットワーク部１２３０は、行動それぞれに対するＱ値のリストを、要求元に返す。以上により、ニューラルネットワーク処理が終了する。
【００５７】
図９Ａ、９Ｂは、実施形態１に係るニューラルネットワークの例の説明図を示す。図９Ａは、上記のフィードフォワードニューラルネットワークを示す。フィードフォワードニューラルネットワークにおいて、入力層９０１、隠れ層９０２、そして出力層９０３が存在する。情報は、入力層９０１から隠れ層９０２、さらに出力層９０３へと進んでいく。
【００５８】
図９Ｂは、バックプロパゲーションニューラルネットワークを示す。バックプロパゲーションニューラルネットワークは、ネットワークにおける全ての重みについて、損失関数の勾配を計算する方法を示す。勾配は、最適化において、損失を最小化するように重みを更新するために使用される。そのため、望ましい出力９０６を知る必要があり、バックプロパゲーションニューラルネットワークを使用して、入力９０４に対してより正確に出力できるように、ネットワーク９０５において重みとバイアスが最適化される。
【００５９】
図１０は、実施形態１に係る学習部１２４０のフローチャートを示す。学習処理は、プロセッサ１１０により実行される。ステップ１００１において、学習部１２４０は、メモリデータベース１３１に十分な経験が格納されているかチェックする。十分な経験の閾値は、予め開発者によって設定されている。例えば、少なくとも５０００の経験がメモリデータベース１３１に格納されていれば十分と見なされる。
【００６０】
十分な経験がメモリデータベース１３１に存在しないと判定されると（１００１：ＮＯ）、学習処理は終了する。ニューラルネットワークのいずれのパラメータも更新されない。十分な経験がメモリデータベース１３１に存在すると判定されると（１００１：ＹＥＳ）、ステップ１００２において、学習部１２４０は、メモリデータベース１３１から、Ｎ個の経験をサンプリングする。Ｎは整数であって（例えば３２）、前もって開発者によって決められている。サンプリングされた経験は＜ｓｓ、ａａ、ｒｒ、ｓｓ´＞と表わされる。
【００６１】
ここで
ｓｓは元の状態のリストを示す。
ａａは元の状態においてロボットが取る行動のリストを示す。
ｒｒは新しい状態におけるロボットの報酬のリストを示す。
ｓｓ´はロボットが行動を取った後の新しい状態のリストを示す。
【００６２】
ステップ１００３において、メモリデータベース１３１から学習部１２４０がサンプリングした経験のリストに基づき、学習部１２４０は、ニューラルネットワークを以下のルールで訓練するために、ターゲット値（所望出力）を計算する。
【００６３】
ｓｓ´が終端状態である場合、ｔｔ＝ｒｒである。
そうでない場合、ｔｔ＝ｒｒ＋γｍａｘ［Ｑ（ｓｓ´、ａａ´）］である。
ここで、ｔｔはターゲット値、γは割引率である。
γは、０から１の間で予め開発者に設定される（例えば０．９）。
【００６４】
次に、ステップ１００４において、学習部１２４０は、損失関数（ｔｔ−Ｑ（ｓｓ、ａａ））２により、ニューラルネットワークの重みとバイアスを最適化するように、ミニバッチバックプロパゲーションを実行する。ステップ１００５において、学習部１２４０は、ニューラルネットワークパラメータデータベース１３２において、新しい重みとバイアスを更新する。以上により、学習処理は終了する。なお、上記学習処理は一例であって、他のアルゴリズムに従って学習処理が実行されてもよい。
【００６５】
図１１は、実施形態１に係る経験フィルタリング部１２５０のフローチャートを示す。経験フィルタリング処理は、プロセッサ１１０に実行される。まず、ステップ１１０１において、経験フィルタリング部１２５０は、新しい経験を仮想環境シミュレーション部１２１０から受信する。新しい経験は、元の状態、行動、報酬、そして新しい状態（ｓ、ａ、ｒ、ｓ´）を含む。
【００６６】
ステップ１１０２において、経験フィルタリング部１２５０は、新しい経験とメモリデータベース１３１内の他の経験群との間のトータル類似度を計算する。新しい経験（Ｍ１）と他の経験（Ｍ２）との間の類似度Ｓ（Ｍ１、Ｍ２）は、例えば、以下のように定義することができる。
【００６７】
【数１】
2018151876.tif 000003
【００６８】
ここで、
Ｅ（）は、ユークリッド距離であり、０から１までの値となるように規格化される。
Ｄ（ｘ，ｙ）は、ｘがｙに等しい場合に０、他の場合に１を示す。
Ｍ１．ｓ、Ｍ２．ｓは、新たしい経験と他の経験の元の状態を示す。
Ｍ１．ａ、Ｍ２．ａは、新たしい経験と他の経験の行動を示す。
Ｍ１．ｒ、Ｍ２．ｒは、新たしい経験と他の経験の報酬を示す。
Ｍ１．ｓ’、Ｍ２．ｓ’  は、新たしい経験と他の経験の次の状態を示す。
Ｓ（Ｍ１，Ｍ２）は、経験Ｍ１と経験Ｍ２の類似度を示し、０から１までの値となる。
【００６９】
新しい経験と他の既存の経験群との間のトータル類似度は、次のように計算される。
【００７０】
【数２】
2018151876.tif 000004
【００７１】
ここで、
ｎは、メモリデータベースに格納されている既存経験の数を示す。
Ｍｎｅｗは、新しい経験を示す。
Ｍｉは、メモリデータベースに格納されている既存経験を示す。
【００７２】
ステップ１１０３において、経験フィルタリング部１２５０は、新しい経験に確率を割り当て、この経験をメモリデータベース１３１に格納するか決定する。経験フィルタリング部１２５０は、新しい経験とメモリデータベース１３１に格納されている他の既存の経験群との間のトータル類似度に基づき、新しい経験を格納する確率を割り当てる。例えば、確率は、次のように決定される。
【００７３】
【数３】
2018151876.tif 000005
【００７４】
ステップ１１０４において、経験フィルタリング部１２５０は、０から１までの乱数を生成する。ステップ１１０５において、経験フィルタリング部１２５０は、乱数と確率Ｐ（Ｍｎｅｗ）を比較する。このように乱数と比較する統計的手法によって、全ての新しい経験に格納の可能性を残すことができ、特定の新たな経験を完全に無視することを避けることができる。なお、乱数に代えて予め設定された固定の閾値を使用してもよい。
【００７５】
確率Ｐ（Ｍｎｅｗ）が乱数以下ある場合（１１０５：ＮＯ）、経験フィルタリング部１２５０は、新しい経験をメモリデータベース１３１に格納することなく本処理を終了する。確率Ｐ（Ｍｎｅｗ）が乱数より大きい場合（１１０５：ＹＥＳ）、ステップ１１０６において、経験はメモリデータベース１３１に格納される。メモリデータベース１３１に格納する前に、経験フィルタリング部１２５０は、メモリデータベース１３１に格納されている既存経験数が、メモリデータベース１３１に格納される最大数に達しているか判定する。これにより、その後の処理を効率化する。
【００７６】
既存経験数がメモリデータベース１３１に格納される最大数よりも少なくない場合（１１０６：ＮＯ）、ステップ１１０７において、経験フィルタリング部１２５０は、経験インデックスに基づき（例えば最も小さいインデックスの経験が最も古い）、メモリデータベース１３１内の最も古い経験を削除する。
【００７７】
既存経験数がメモリデータベース１３１に格納される最大数よりも少ない場合（１１０６：ＹＥＳ）、経験フィルタリング部１２５０は、ステップ１１０８に移る。ステップ１１０８において、経験フィルタリング部１２５０は、新しい経験をメモリデータベース１３１に追加することで、メモリデータベース１３１を更新する。以上により、ニューラルネットワーク処理は終了する。
【００７８】
以上のように、本実施形態によれば、メモリデータベースから読み出した経験を使用して学習を行う経験リプレイにおいて、学習を好適化するようにメモリデータベースに格納する新たな経験を選択することができる。
【００７９】
上述のように、新しい経験とメモリデータベース内の全ての経験とのトータル類似度に基づき、新しい経験の格納の有無を判定することで、より適切に格納する新しい経験を選択することができる。他の例において、メモリデータベース内の一部の経験と新しい経験の類似度を使用してもよい。
【００８０】
新しい経験と同一の経験がメモリデータベースに格納されている場合に、新しい経験を格納することなく処理を終了してもよい。格納経験数がメモリデータベースの最大数未満の規定数に達した場合に、メモリデータベースから経験を削除してもよい。メモリデータベースの既存経験数が規定数に達していることを条件とすることで、無用は処理を回避できる。
【００８１】
類似度の計算は上記例に限定されず、例えば、コサイン類似度を使用することができる。新しい経験の確率を計算するとなく、トータル類似度と所定範囲の乱数を直接に比較し、その比較結果に基づいて新しい経験をメモリデータベースに格納するか判定してもよい。上記例は、ロボットの行動を学習する学習システムであるが、本実施形態の概念は、ロボットと異なるエージェントの行動を学習するシステムに適用することができる。
【００８２】
上述のように、メモリデータベースにおいて最も古い経験の削除は、経験のメモリデータベースへの格納順序に基づき削除する一例であり、格納順序に基づく他の方法が使用されてもよい。例えば、格納順序が最も古い経験から選択した複数（１より多い所定数）の既存経験において、新しい経験と類似度が最も大きい既存経験が削除されてもよい。本実施例のメモリデータベースの更新手法は、様々な機械学習に適用でき、ＤＱＮ（Ｄｅｅｐ  Ｑ−Ｎｅｔｗｏｒｋ）の他、ＤＤＰＧ（Ｄｅｅｐ  Ｄｅｔｅｒｍｉｎｉｓｔｉｃ  Ｐｏｌｉｃｙ  Ｇｒａｄｉｅｎｔ）や教師あり学習に適用できる。
【００８３】
＜実施形態２＞
実施形態２を、図１２を参照して説明する。実施形態１において、経験フィルタリング部１２５０は、経験インデックスに基づき、最も古い経験をメモリデータベース１３１から削除する。この方法は、他の経験と類似度が低い経験がメモリデータベース１３１において最も古い場合、その経験を削除する。これを回避するため、経験フィルタリング部１２５０は、メモリデータベース１３１における経験の多様性を維持又は増すように、メモリデータベース１３１における経験を削除するように構成される。
【００８４】
図１２は、実施形態２に係る経験フィルタリング部１２５０のフローチャートを示す。ステップ１２０１から１２０６は、図１１に示すフローチャートのステップ１１０１から１１０６に対応する。
【００８５】
ステップ１２０６において、経験フィルタリング部１２５０は、メモリデータベース１３１における経験数が、メモリデータベース１３１に格納される最大数より小さいか判定する。
【００８６】
メモリデータベース１３１における経験数が、メモリデータベース１３１に格納される最大数より小さくない場合（１２０６：ＮＯ）、ステップ１２０７において、経験フィルタリング部１２５０は、メモリデータベース１３１における各既存経験とメモリデータベース１３１における他の既存経験との間の、トータル類似度を計算する。一つの経験についてのトータル類似度計算は、例えば、次の数式に従う。
【００８７】
【数４】
2018151876.tif 000006
【００８８】
ここで、
Ｓ＊ｉは、メモリデータベースにおける経験ｉのトータル類似度である。
ｎは、メモリデータベースにおける経験の総数である。
【００８９】
次に、ステップ１２０８において、経験フィルタリング部１２５０は、最も高いトータル類似度を有するインデックスを特定する。
Index_to_delete = arg max(S*i)    (5)
【００９０】
経験フィルタリング部１２５０は、最も高いトータル類似度を有する経験を削除して、メモリデータベース１３１を更新する。複数の経験が最も高いトータル類似度を有する場合、任意の一つの経験が選択される。
【００９１】
メモリデータベース１３１における経験数が、メモリデータベース１３１に格納される最大数より小さい場合（１２０６：ＹＥＳ）、経験フィルタリング部１２５０は、ステップ１２０９に進む。ステップ１２０９において、経験フィルタリング部１２５０は、新しい経験をメモリデータベース１３１に格納して、メモリデータベース１３１を更新する。以上により、経験フィルタリング処理が終了する。
【００９２】
＜実施形態３＞
図１３から１６を参照して、実施形態３を説明する。実施形態２において、経験フィルタリング部１２５０は、新しい経験を格納するときにメモリデータベース１３１が一杯である場合に、メモリデータベース１３１内の各経験のトータル類似度を計算して、最もトータル類似度が高い経験を決定する。しかしメモリサイズが大きい場合、経験ペアの類似度の計算量が非常に多くなる。実施形態３は類似度マトリックスを使用し、経験フィルタリング部１２５０が、毎回、全ての経験ペアの類似度の計算を行うよりも効率的な処理を可能とする。
【００９３】
図１３は、実施形態３に係る学習システムの構成例を示す。補助記憶１３０における類似度マトリックス１３３以外の構成は、実施形態１に係る学習システムと同様である。類似度マトリックス１３３は、各経験ペアの類似度を格納し、経験フィルタリング部１２５０は、これを使用して、メモリデータベース１３１におけるいずれの既存経験が、最も高いトータル類似度有し、削除すべき経験であるか、決定する。
【００９４】
図１４は、実施形態３に係る学習システムの機能ブロック例を示す。類似度マトリックス１３３以外の構成は、実施形態１に係る学習システムと同様である。経験フィルタリング部１２５０は、新しい経験をメモリデータベース１３１に格納することを決定し、メモリデータベース１３１が一杯である場合、各経験ペアの類似度を計算する代わりに、類似度マトリックス１３３を調べ、最も高いトータル類似度を有する経験を決定する。類似度マトリックス１３３の例は、図１５を参照して後に詳述される。
【００９５】
図１５は、実施形態３に係る、類似度マトリックス１３３の説明図を示す。例として、メモリサイズ上限は５経験である。類似度マトリックス１３３は、経験ＩＤ１５０１、ｅｘｐ＿１  １５０２、ｅｘｐ＿２  １５０３、ｅｘｐ＿３  １５０４、ｅｘｐ＿４  １５０５、ｅｘｐ＿５  １５０６、そしてトータル１５０７の欄を有する。ｅｘｐ＿１からｅｘｐ＿５は、それぞれ経験の識別子である。なお、類似度マトリックス１３３は、既存経験間の類似度の情報を格納していれば、どのような構造を有してもよい。
【００９６】
経験ＩＤ１５０１は、現在のメモリに格納されている５経験のＩＤを含む。ｅｘｐ＿１  １５０２、ｅｘｐ＿２  １５０３、ｅｘｐ＿３  １５０４、ｅｘｐ＿４  １５０５、ｅｘｐ＿５  １５０６は、それぞれ、その欄名の経験を含む経験ペアの類似度を示す。同一経験は、１の類似度を有する。トータル１５０７は、各経験の、類似度の総計（トータル類似度）を示す。
【００９７】
図１６は、実施形態３に係る経験フィルタリング部１２５０のフローチャートを示す。図１１のフローチャートと比較して、ステップ１６０１から１６０６、１６０９は、図１１におけるステップ１１０１から１１０６、１１０９に対応する。図１１におけるステップ１１０７は、ステップ１６０７及び１６０８に変更され、ステップ１６１０が追加されている。
【００９８】
ステップ１６０６において、経験フィルタリング部１２５０は、メモリデータベース１３１における経験数が、メモリデータベース１３１に格納する最大数より小さいかチェックする。
【００９９】
メモリにおける経験数がメモリに格納する最大数より小さくない場合（１６０６：ＮＯ）、ステップ１６０７において、経験フィルタリング部１２５０は、類似度マトリックス１３３を調べ、最もトータル類似度が高い経験のインデックスを特定する。
Index_to_delete = arg max(Similarity_Matrix.Total)      (6)
【０１００】
ステップ１６０８において、経験フィルタリング部１２５０は、最もトータル類似度が高い経験を削除する。複数の経験が最も高いトータル類似度を有する場合、任意の一つが選択される。メモリデータベース１３１における経験数がメモリに格納する最大数より小さい場合（１６０６：ＹＥＳ）、経験フィルタリング部１２５０はステップ１６０９に進む。ステップ１６０９において、メモリデータベース１３１に新しい経験が追加されて、メモリデータベース１３１が更新される。
【０１０１】
ステップ１６１０において、経験フィルタリング部１２５０は、メモリデータベース１３１が一杯である場合には、類似度マトリックス１３３において、メモリデータベース１３１から削除された経験の情報を新しい経験の情報に置き換える。そうでない場合、経験フィルタリング部１２５０は、新たな経験の類似度を類似度マトリックス１３３に追加する。類似度マトリックス１３３において、トータル類似度も計算され、更新される。以上により、経験フィルタリング処理が終了する。
【０１０２】
＜実施形態４＞
実施形態１において、仮想ロボットは、仮想世界において行動を取る方法を学習する。実施形態４は、仮想ロボットが仮想世界で学習したことを現実に適用するため、現実のロボット端末をさらに含み、通信インタフェースを介してサーバに接続する。
【０１０３】
図１７は、実施形態４に係る学習システム及びそれを適用した実ロボットの構成例を示す。実施形態４に係る構成は、通信インタフェース１４０がサーバ１００に追加されている点を除き、実施形態１と同様である。通信インタフェース１４０は、サーバ１００をネットワーク１５０に接続するためのインタフェースである。
【０１０４】
ロボット端末２００は、プロセッサ２１０、メモリ２２０、センサ２３０、補助記憶２４０、通信インタフェース２５０を含む。これら構成要素はバスにより互いに接続されている。プロセッサ２１０は、メモリ２２０を参照して、様々な処理を実行する。メモリ２２０は、ロボット制御プログラム２２１及びニューラルネットワークプログラム２２２を格納する。図１７は一つのロボット端末２００を示すが、同様の構成を有する複数のロボット端末が、同様に制御されてもよい。
【０１０５】
補助記憶２４０は、ニューラルネットワークパラメータデータベース２４１を格納する。通信インタフェース２５０は、ロボット端末２００をネットワーク１５０に接続するためのインタフェースである。
【０１０６】
サーバ１００が訓練フェーズを終了すると、サーバ１００は、ロボット端末２００に、ニューラルネットワークパラメータデータベース２４１を更新する要求を、ネットワーク１５０を介して送信する。ニューラルネットワークパラメータは、サーバ１００からネットワーク１５０を介してロボットの補助記憶２４０にダウンロードされ、ニューラルネットワークパラメータデータベース２４１に格納される。
【０１０７】
ニューラルネットワークプログラム２２２は、実施形態１におけるニューラルネットワークプログラム１２３と同様である。ロボット制御プログラム２２１がロボットの行動を制御する。 
【０１０８】
図１８は、実施形態４に係る学習システムにおけるロボット端末２００の機能ブロック図を示す。ロボット制御部２２１０は、プロセッサ２１０が、ロボット制御プログラム２２１を実行することで実現される。ロボット制御部２２１０は、現在の状態として、センサ測定値をセンサ２３０から受信し、状態情報をニューラルネットワーク部２２２０に送信し、各行動に対するＱ値の応答を受信する。ロボット制御部２２１０は、常に最もＱ値が高い行動を取る。ロボット制御部２２１０の処理フローは図１９を参照して詳述される。
【０１０９】
図１９は、実施形態４に係るロボット制御部２２１０のフローチャートである。ロボット制御処理は、プロセッサ２１０により実行される。ステップ１９０１において、ロボット制御部２２１０は、センサ２３０からのセンサ測定値を現在の状態としてセンサ２３０から受信する。
【０１１０】
ステップ１９０２において、ロボット制御部２２１０は、この状態をニューラルネットワーク部２２２０に送信し、各行動に対するＱ値の応答を受信する。ステップ１９０３において、ロボット制御部２２１０は、最もＱ値が高い行動を選択する。ステップ１９０４において、ロボット制御部２２１０は、選択した行動を実行する。以上によりロボット制御処理が終了する。
【０１１１】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１１２】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード等の記録媒体に置くことができる。
【０１１３】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１１４】
１００  サーバ、１１０  プロセッサ、１２０  メモリ、１２１  仮想環境シミュレーションプログラム、１２２  ロボット制御プログラム、１２３  ニューラルネットワークプログラム、１２４  学習プログラム、１２５  経験フィルタリングプログラム、１３０  補助記憶、１３１  メモリデータベース、１３２  ニューラルネットワークパラメータデータベース、１３３  類似度マトリックス、１４０  通信インタフェース、１５０  ネットワーク、２００  ロボット端末、２１０  プロセッサ、２２０  メモリ、２２１  ロボット制御プログラム、２２２  ニューラルネットワークプログラム、２３０  センサ、２４０  補助記憶、２４１  ニューラルネットワークパラメータデータベース、２５０  通信インタフェース、３０１  インデックス、３０２  状態、３０３  行動、３０４  報酬、３０５  次の状態、４０１  ＩＤ、４０２  重み、４０３  バイアス、５０１  壁、５０２  障害物、５０３  ロボット、５０４  距離センサ、５０５  顧客距離センサ、５０６  顧客、９０１  入力層、９０２  隠れ層、９０３  出力層、１２１０  仮想環境シミュレーション部、１２２０  ロボット制御部、１２３０  ニューラルネットワーク部、１２４０  学習部、１２５０  経験フィルタリング部
【図１】
2018151876.tif 000007
【図２】
2018151876.tif 000008
【図３】
2018151876.tif 000009
【図４】
2018151876.tif 000010
【図５】
2018151876.tif 000011
【図６】
2018151876.tif 000012
【図７】
2018151876.tif 000013
【図８】
2018151876.tif 000014
【図９Ａ】
2018151876.tif 000015
【図９Ｂ】
2018151876.tif 000016
【図１０】
2018151876.tif 000017
【図１１】
2018151876.tif 000018
【図１２】
2018151876.tif 000019
【図１３】
2018151876.tif 000020
【図１４】
2018151876.tif 000021
【図１５】
2018151876.tif 000022
【図１６】
2018151876.tif 000023
【図１７】
2018151876.tif 000024
【図１８】
2018151876.tif 000025
【図１９】
2018151876.tif 000026