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

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

▶ みずほ情報総研株式会社の特許一覧

特許7314328学習システム、学習方法及び学習プログラム
<>
  • 特許-学習システム、学習方法及び学習プログラム 図1
  • 特許-学習システム、学習方法及び学習プログラム 図2
  • 特許-学習システム、学習方法及び学習プログラム 図3
  • 特許-学習システム、学習方法及び学習プログラム 図4
  • 特許-学習システム、学習方法及び学習プログラム 図5
  • 特許-学習システム、学習方法及び学習プログラム 図6
  • 特許-学習システム、学習方法及び学習プログラム 図7
  • 特許-学習システム、学習方法及び学習プログラム 図8
  • 特許-学習システム、学習方法及び学習プログラム 図9
  • 特許-学習システム、学習方法及び学習プログラム 図10
  • 特許-学習システム、学習方法及び学習プログラム 図11
  • 特許-学習システム、学習方法及び学習プログラム 図12
  • 特許-学習システム、学習方法及び学習プログラム 図13
  • 特許-学習システム、学習方法及び学習プログラム 図14
  • 特許-学習システム、学習方法及び学習プログラム 図15
  • 特許-学習システム、学習方法及び学習プログラム 図16
  • 特許-学習システム、学習方法及び学習プログラム 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2023-07-14
(45)【発行日】2023-07-25
(54)【発明の名称】学習システム、学習方法及び学習プログラム
(51)【国際特許分類】
   G06N 3/088 20230101AFI20230718BHJP
【FI】
G06N3/088
【請求項の数】 9
(21)【出願番号】P 2022002464
(22)【出願日】2022-01-11
【審査請求日】2022-01-11
(73)【特許権者】
【識別番号】592131906
【氏名又は名称】みずほリサーチ&テクノロジーズ株式会社
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(72)【発明者】
【氏名】永田 毅
(72)【発明者】
【氏名】竹田 康亮
(72)【発明者】
【氏名】前川 秀正
(72)【発明者】
【氏名】世古 千博
(72)【発明者】
【氏名】小泉 拓
(72)【発明者】
【氏名】水谷 麻紀子
(72)【発明者】
【氏名】根本 裕也
(72)【発明者】
【氏名】橋本 大樹
(72)【発明者】
【氏名】森 悠史
(72)【発明者】
【氏名】玉垣 勇樹
(72)【発明者】
【氏名】岩渕 耕平
(72)【発明者】
【氏名】小永吉 健太
(72)【発明者】
【氏名】信夫 大志
【審査官】山本 俊介
(56)【参考文献】
【文献】特開2012-084117(JP,A)
【文献】特開2019-191895(JP,A)
【文献】叶内 円ほか,自己組織化写像の拡張によるモーションキャプチャシステムの頑健化,情報処理学会研究報告,日本,社団法人情報処理学会,2008年05月01日,Vol.2008, No.36,pp.137-144
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
自己組織化マップを生成する制御部を備えた学習システムであって、
前記制御部が、
入力データに対して、既存ノードの中で近接ノードを特定し、
前記入力データと前記近接ノードの中で最寄りノードとの距離を算出し、
前記距離が最大距離よりも大きい場合には、前記入力データを用いて新規ノードを前記既存ノードに追加し、前記近接ノードと前記新規ノードとの距離に応じて、前記新規ノード及び前記近接ノードの活性値及び年齢を更新し、
前記距離が最大距離以下の場合には、前記入力データと前記近接ノードとの距離に応じて、前記近接ノードの位置、活性値及び年齢を更新し、
各ノードの活性値及び各パスの活性値を用いて、前記年齢から活性度を算出し、前記算出した活性度に応じて、前記ノード及び各パスの存否を決定して、自己組織化マップを生成することを特徴とする学習システム。
【請求項2】
前記制御部が、
前記入力データの各要素データにおいて、他の要素データまでの距離が近い順に、所定個の距離を特定し、
前記特定した距離の統計値により、前記最大距離を算出することを特徴とする請求項1に記載の学習システム。
【請求項3】
前記制御部が、
前記入力データの各要素データを用いて、順次、距離が前記最大距離未満の他の要素データを特定し、
前記各要素データと前記他の要素データとの距離に応じて、各要素データの活性値及び年齢を算出し、
各ノードの活性値と前記年齢とから活性度を算出し、前記算出した活性度に応じて、初期の前記既存ノードを決定することを特徴とする請求項2に記載の学習システム。
【請求項4】
前記入力データとして、説明変数値と目的変数値とを組み合わせたデータセットを用いることを特徴とする請求項1~3の何れか一項に記載の学習システム。
【請求項5】
前記制御部が、
前記入力データを用いて生成した自己組織化マップにおいて、検証用データの説明変数値に応じたノードの説明変数値を予測し、
前記検証用データの説明変数値と、前記予測した説明変数値との差分に応じて、前記自己組織化マップを構成するノードを移動させることを特徴とする請求項4に記載の学習システム。
【請求項6】
前記制御部が、
前記入力データを用いて生成した自己組織化マップにおいて、検証用データの説明変数値に応じた各ノードの寄与に応じて説明変数値を予測し、
前記検証用データの説明変数値と、前記予測した説明変数値との差分に応じて、前記自己組織化マップのノードを移動させることを特徴とする請求項4に記載の学習システム。
【請求項7】
前記制御部が、
前記入力データを用いて生成した自己組織化マップにおいて、検証用データの説明変数値に応じた各ノード及びパスの寄与に応じて説明変数値を予測し、
前記各ノード及びパスの寄与に応じて、前記ノード及びパスを削除することを特徴とする請求項4に記載の学習システム。
【請求項8】
制御部を備えた学習システムを用いて、自己組織化マップを生成する方法であって、
前記制御部が、
入力データに対して、既存ノードの中で近接ノードを特定し、
前記入力データと前記近接ノードの中で最寄りノードとの距離を算出し、
前記距離が最大距離よりも大きい場合には、前記入力データを用いて新規ノードを前記既存ノードに追加し、前記近接ノードと前記新規ノードとの距離に応じて、前記新規ノード及び前記近接ノードの活性値及び年齢を更新し、
前記距離が最大距離以下の場合には、前記入力データと前記近接ノードとの距離に応じて、前記近接ノードの位置、活性値及び年齢を更新し、
各ノードの活性値及び各パスの活性値を用いて、前記年齢から活性度を算出し、前記算出した活性度に応じて、前記ノード及び各パスの存否を決定して、自己組織化マップを生成することを特徴とする学習方法。
【請求項9】
制御部を備えた学習システムを用いて、自己組織化マップを生成するためのプログラムであって、
前記制御部を、
入力データに対して、既存ノードの中で近接ノードを特定し、
前記入力データと前記近接ノードの中で最寄りノードとの距離を算出し、
前記距離が最大距離よりも大きい場合には、前記入力データを用いて新規ノードを前記既存ノードに追加し、前記近接ノードと前記新規ノードとの距離に応じて、前記新規ノード及び前記近接ノードの活性値及び年齢を更新し、
前記距離が最大距離以下の場合には、前記入力データと前記近接ノードとの距離に応じて、前記近接ノードの位置、活性値及び年齢を更新し、
各ノードの活性値及び各パスの活性値を用いて、前記年齢から活性度を算出し、前記算出した活性度に応じて、前記ノード及び各パスの存否を決定して、自己組織化マップを生成する手段として機能させるための学習プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、自己組織化マップを生成する学習システム、学習方法及び学習プログラムに関する。
【背景技術】
【0002】
機械学習において、自己組織化マップ(SOM:Self-organizing maps)を利用する場合がある(例えば、特許文献1を参照)。この自己組織化マップはコホネンによって提案されたモデルであり、教師なし学習によって入力データを任意の次元へ写像することができる。自己組織化マップでは、Hebb則を利用する。このHebb則では、2つのニューロンが同時発火を繰り返すとニューロン間のシナプスの伝達効率が増強される。また逆に、同時発火が長期間、起こらないと、そのシナプスの伝達効率は減退する。すなわち、Hebb則は、情報処理に重要な経路が増強され、不要な経路は省かれていく法則である。
【0003】
また、学習中に必要に応じてニューロンを増殖させる学習手法として、進化型自己組織化マップ(ESOM:Evolving SOM)と呼ばれる手法も検討されている(非特許文献1を参照。)。更に、自己増殖型ニューラルネットワーク(SOINN:Self-Organizing Incremental Neural Network)も検討されている(例えば、非特許文献2を参照)。このSOINNは、Growing Neural Gas(GNG)と自己組織化マップ(SOM)を拡張した追加学習可能なオンライン教師なし学習手法である。具体的には、動的に形状が変化する非定常で、かつ複雑な形状を持つ分布からオンラインで得られる入力に対して、ネットワークを自己組織的に形成し、適切なクラス数と入力分布の位相構造を出力する。
【0004】
図16図17を用いて、このESOMのオンライン学習処理を説明する。
図16に示すように、まず、初期ノードを設定する(ステップS01)。具体的には、入力データD(i)(ここで、i=1~M)の中からランダムに2個を選択し、初期ノードと設定する。この場合、データインデックスi=1とする。
【0005】
次に、勝者ノードを決定する(ステップS02)。
ここでは、図17(a)に示すように、D(i)に最も近いノードn1(第1勝者、距離d1)と2番目に近いノードn2(第2勝者、距離d2)を求める。
【0006】
次に、第1勝者までの距離d1が基準距離より長いかどうかを判定する(ステップS03)。
距離d1が基準距離よりも長い場合(ステップS03において「YES」の場合)には、D(i)をノードに更新する(ステップS04)。そして、勝者ノードに基づいて、n1をn2に,D(i)をn1に更新する。更に、パスの活性値の初期化(As(n1,:)=0)を行なう。
【0007】
図17(b)に示すように、新たなノードn1を生成する。
一方、距離d1が基準距離以下の場合(ステップS03において「NO」の場合)には、ノード位置及びパス活性値を更新する(ステップS05)。
【0008】
具体的には、図17(c)に示すように、D(i)とn1,n2の距離に応じた活性値a1,a2を求める。
【0009】
【数1】
また、ノード位置とパス活性値As(n1,n2)を、以下に示すように更新する(Hebb則)。
【0010】
【数2】
そして、mod(i,指定間隔)=0の場合は、活性値が最小値となるパスを削除する(ステップS06)。
【0011】
次に、終了かどうかを判定する(ステップS07)。ここで、i=Mの場合(ステップS07において「YES」の場合)にはオンライン学習処理を終了する。一方、i≠Mの場合(ステップS07において「NO」の場合)には、「i=i+1」として、ステップS02以降の処理を繰り返す。
【先行技術文献】
【特許文献】
【0012】
【文献】特開2008-250848号公報
【非特許文献】
【0013】
【文献】古川徹生,“自己組織化マップ入門”,国立大学法人九州工業大学,[online],2017年6月3日,[令和3年11月12日検索],インターネット<URL:http://www.brain.kyutech.ac.jp/~furukawa/data/SOMtext.pdf>
【文献】深津卓弥 他,“SOINNとは何か”,知能と情報,日本知能情報ファジィ学会誌,Vol.30,No.2,pp.98-105,[令和3年11月12日検索],インターネット<URL:https://www.jstage.jst.go.jp/article/jsoft/30/2/30_98/_pdf>
【発明の概要】
【発明が解決しようとする課題】
【0014】
しかしながら、ESOMの学習処理には、ノードの削除機能がないため、ノイズ(孤立点)の影響を受けやすいという課題がある。また、パラメータ(パスの削除間隔)により結果が大きく変わるため、必要なパスを削除する場合があり、調整が困難である。
【課題を解決するための手段】
【0015】
上記課題を解決する学習システムは、自己組織化マップを生成する制御部を備える。そして、前記制御部が、入力データに対して、既存ノードの中で近接ノードを特定し、前記入力データと前記近接ノードとの距離を算出し、前記距離が最大距離よりも大きい場合には、前記入力データを用いて新規ノードを前記既存ノードに追加し、前記近接ノードとの距離に応じて、前記新規ノード及び前記近接ノードの活性値及び年齢を更新し、前記距離が最大距離以下の場合には、前記入力データと前記近接ノードとの距離に応じて、前記近接ノードの位置、活性値及び年齢を更新し、各ノードの活性値及び各パスの活性値を用いて、前記年齢から活性度を算出し、前記算出した活性度に応じて、前記ノード及び各パスの存否を決定して、自己組織化マップを生成する。
【発明の効果】
【0016】
効率的に的確な自己組織化マップを生成することができる。
【図面の簡単な説明】
【0017】
図1】第1実施形態の学習システムの説明図である。
図2】第1実施形態のハードウェア構成の説明図である。
図3】第1実施形態の処理手順の説明図である。
図4】第1実施形態の処理手順の説明図である。
図5】第1実施形態の距離テーブルの説明図である。
図6】第1実施形態の処理手順の説明図である。
図7】第1実施形態の処理手順の説明図である。
図8】第1実施形態の処理手順の説明図である。
図9】第1実施形態の処理手順の説明図であって、(a)は入力データの配置、(b)は新規ノードの追加、(c)は既存ノードの更新の説明図である。
図10】第1実施形態の入力データの説明図である。
図11】ESOMにおいて、パスの削除間隔を変更した場合の説明図であって、(a)は20ステップ、(b)は30ステップ、(c)は40ステップの説明図である。
図12】第1実施形態において、ノードの近接データ数を変更した場合の説明図であって、(a)は40個、(b)は50個、(c)は60個の説明図である。
図13】第2実施形態の処理手順の説明図である。
図14】第3実施形態の処理手順の説明図である。
図15】変更例の処理手順の説明図である。
図16】従来の処理手順の説明図である。
図17】従来の処理手順の説明図であって、(a)は入力データの配置、(b)は新規ノードの追加、(c)は既存ノードの更新の説明図である。
【発明を実施するための形態】
【0018】
(第1実施形態)
図1図12に従って、学習システム、学習方法及び学習プログラムを具体化した一実施形態を説明する。本実施形態では、自己組織化マップを、オンライン(リアルタイム)で生成する場合を想定する。ここでは、パスとノードに年齢を導入し、活性度=活性値/年齢が閾値以下のノードとパスを削除する。
【0019】
図1に示すように、本実施形態の学習システムは、ユーザ端末10、支援サーバ20を用いる。
(ハードウェア構成例)
図2は、ユーザ端末10、支援サーバ20等として機能する情報処理装置H10のハードウェア構成例である。
【0020】
情報処理装置H10は、通信装置H11、入力装置H12、表示装置H13、記憶装置H14、プロセッサH15を有する。なお、このハードウェア構成は一例であり、他のハードウェアを有していてもよい。
【0021】
通信装置H11は、他の装置との間で通信経路を確立して、データの送受信を実行するインタフェースであり、例えばネットワークインタフェースや無線インタフェース等である。
【0022】
入力装置H12は、利用者等からの入力を受け付ける装置であり、例えばマウスやキーボード等である。表示装置H13は、各種情報を表示するディスプレイやタッチパネル等である。
【0023】
記憶装置H14は、ユーザ端末10、支援サーバ20の各種機能を実行するためのデータや各種プログラムを格納する記憶装置である。記憶装置H14の一例としては、ROM、RAM、ハードディスク等がある。
【0024】
プロセッサH15は、記憶装置H14に記憶されるプログラムやデータを用いて、ユーザ端末10、支援サーバ20における各処理(例えば、後述する制御部21における処理)を制御する。プロセッサH15の一例としては、例えばCPUやMPU等がある。このプロセッサH15は、ROM等に記憶されるプログラムをRAMに展開して、各種処理に対応する各種プロセスを実行する。例えば、プロセッサH15は、ユーザ端末10、支援サーバ20のアプリケーションプログラムが起動された場合、後述する各処理を実行するプロセスを動作させる。
【0025】
プロセッサH15は、自身が実行するすべての処理についてソフトウェア処理を行なうものに限られない。例えば、プロセッサH15は、自身が実行する処理の少なくとも一部についてハードウェア処理を行なう専用のハードウェア回路(例えば、特定用途向け集積回路:ASIC)を備えてもよい。すなわち、プロセッサH15は、以下で構成し得る。
【0026】
(1)コンピュータプログラム(ソフトウェア)に従って動作する1つ以上のプロセッサ
(2)各種処理のうち少なくとも一部の処理を実行する1つ以上の専用のハードウェア回路、或いは
(3)それらの組み合わせ、を含む回路(circuitry)
プロセッサは、CPU並びに、RAM及びROM等のメモリを含み、メモリは、処理をCPUに実行させるように構成されたプログラムコード又は指令を格納している。メモリすなわちコンピュータ可読媒体は、汎用又は専用のコンピュータでアクセスできるあらゆる利用可能な媒体を含む。
【0027】
(各情報処理装置の機能)
図1を用いて、ユーザ端末10、支援サーバ20の機能を説明する。
ユーザ端末10は、本システムを利用するユーザが用いるコンピュータ端末である。
【0028】
支援サーバ20は、自己組織化マップを生成するコンピュータシステムである。この支援サーバ20は、制御部21、入力データ記憶部22、学習結果記憶部23を備えている。
【0029】
制御部21は、後述する処理(取得段階、学習段階、出力段階等を含む処理)を行なう。このための学習プログラムを実行することにより、制御部21は、取得部210、学習部211、出力部212等として機能する。
【0030】
取得部210は、ユーザ端末10から入力データを取得する処理を実行する。
学習部211は、自己組織化マップを生成する処理を実行する。
出力部212は、自己組織化マップを出力する処理を実行する。
【0031】
入力データ記憶部22には、自己組織化マップの作成に用いる情報(入力データ)が記録される。この入力データは、自己組織化マップの作成に用いるデータを取得した場合に記録される。入力データは、異なる次元からなる複数の要素データを備えたベクトルである。
【0032】
学習結果記憶部23には、自己組織化マップが記録される。この自己組織化マップは、学習処理の実行時に記録される。自己組織化マップは、複数次元空間に配置されたノードと、ノード間を繋ぐパスとからなるマップが記録される。そして、各パス及び各ノードは年齢に関する情報を保持する。この年齢は、新たな入力データの取得時に「1」だけ増加される。更に、各パス及び各ノードは、活性値に関する情報を保持する。活性値は、各パス及び各ノードの有効性(存在意義)を表す指標である。
【0033】
更に、学習結果記憶部23には、ノード間の最大距離dmaxが記録される。この最大距離dmaxは、新規のノードの生成の要否判定のために用いられる。
更に、学習結果記憶部23には、ノード削除閾値、パス削除閾値が記録される。ノード削除閾値、パス削除閾値は、自己組織化マップの更新時のノードやパスの存否を判定するために用いられる。
【0034】
(マップ生成処理)
次に、図3を用いて、マップ生成処理を説明する。ここでは、支援サーバ20の制御部21の取得部210は、ユーザ端末10から入力データを取得する。そして、取得部210は、入力データを入力データ記憶部22に記録する。
【0035】
まず、支援サーバ20の制御部21は、入力データの解析処理を実行する(ステップS101)。具体的には、制御部21の学習部211は、入力データD(i)からノードを作成する場合に用いる最大距離dmaxを算出する。ここでは、全データ数Nに対して、ノードの近傍データ数Nn、考慮する勝者数Nwを予め設定しておく。
【0036】
図4を用いて、入力データの解析処理(ステップS101)を説明する。
ここでは、まず、支援サーバ20の制御部21は、各データ間の距離の算出処理を実行する(ステップS201)。具体的には、制御部21の学習部211は、すべての2つの入力データD(i)の組み合わせの距離を算出する。
この場合、図5に示すように、各データ間の距離(d12,d13,…,d23,…)を算出した距離テーブル500を作成する。
【0037】
次に、支援サーバ20の制御部21は、各データについて、近傍データとの距離の算出処理を実行する(ステップS202)。具体的には、制御部21の学習部211は、距離テーブル500において、距離を昇順に並び替えて、長さがNn番目までの距離を取得する。
【0038】
次に、支援サーバ20の制御部21は、平均値の算出処理を実行する(ステップS203)。具体的には、制御部21の学習部211は、取得したNn番目までの距離の平均値(統計値)を算出する。そして、この平均値をノード間の最大距離dmaxとして、学習結果記憶部23に記録する。
【0039】
次に、図3に示すように、支援サーバ20の制御部21は、初期化処理を実行する(ステップS102)。ここでは、制御部21の学習部211は、パラメータ、初期ノードを決定する。
【0040】
具体的には、図6を用いて、初期化処理(ステップS102)を説明する。ここでは、すべての入力データD(i)をノードとして取り扱う。
まず、支援サーバ20の制御部21は、i=1から、順次、入力データD(i)を処理対象として特定して、以下の処理を繰り返す。
【0041】
支援サーバ20の制御部21は、最大距離内の近傍データの特定処理を実行する(ステップS301)。具体的には、制御部21の学習部211は、処理対象の入力データD(i)からの距離が最大距離dmax以内の全ての近傍データを特定する。
【0042】
次に、支援サーバ20の制御部21は、ノード活性値の計算処理を実行する(ステップS302)。具体的には、制御部21の学習部211は、以下の式により、各近傍データのノード活性値Aw(ni)を計算する。
【0043】
【数3】
次に、支援サーバ20の制御部21は、ノード活性度配列の生成処理を実行する(ステップS303)。具体的には、制御部21の学習部211は、1次元の配列で、全ノードの活性値を並べた[Arate_W(i) i=1~N]を生成する。この[Arate_W(i) i=1~N]は、1次元の配列で、全ノードの活性値が入る。次に、学習部211は、ノード活性度Arate_W(i)を算出する。このノード活性度Arate_W(i)は、ノードniから最大距離dmax内のデータのノード活性値の和を、年齢で割ったものである。
【0044】
次に、支援サーバ20の制御部21は、最大距離以上の近傍データの特定処理を実行する(ステップS304)。具体的には、制御部21の学習部211は、処理対象の入力データD(i)からの距離が最大距離dmax以上の他の入力データD(j)を特定する。
【0045】
次に、支援サーバ20の制御部21は、パス活性値の計算処理を実行する(ステップS305)。具体的には、制御部21の学習部211は、以下の式により、各近傍データ(入力データD(j))のパス活性値As(n1,n2)を計算する。ここで、パスの両端のノードをn1とn2とし、d1はノードn1・データD(j)間の距離、d2はノードn2・データD(j)間の距離である。
【0046】
【数4】
次に、支援サーバ20の制御部21は、パス活性度配列の生成処理を実行する(ステップS306)。具体的には、制御部21の学習部211は、2次元の配列で、全パスの活性値を並べた[Arate_S(i,j)i=1~N, j =1~N]を生成する。この[Arate_S(i,j) i=1~N, j =1~N]は、2次元の配列で、全パスの活性値が入る。次に、学習部211は、パス活性度Arate_S(i,j)を算出する。このパス活性度Arate_S(i,j)は、パス(i,j)に属するデータのノード活性値の和を、年齢で割ったものである。
以上の処理を、全ての入力データについて繰り返して実行する。
【0047】
次に、支援サーバ20の制御部21は、初期ノードの設定処理を実行する(ステップS307)。
図7を用いて、初期ノードの設定処理(ステップS307)を説明する。
【0048】
ここでは、まず、支援サーバ20の制御部21は、ノード活性度のソート処理を実行する(ステップS401)。具体的には、制御部21の学習部211は、ノード活性度Arate_W(i)の高い順に入力データD(i)を並び替える。
【0049】
次に、支援サーバ20の制御部21は、ノード候補の特定処理を実行する(ステップS402)。具体的には、制御部21の学習部211は、活性度の高い入力データD(i)を、ノード候補として、順次、特定する。
【0050】
次に、支援サーバ20の制御部21は、最大距離未満かどうかについての判定処理を実行する(ステップS403)。具体的には、制御部21の学習部211は、ノード候補と、既登録のノードとの距離を算出し、最大距離dmaxと比較する。
【0051】
既登録のノードとの距離が最大距離以上と判定した場合(ステップS403において「NO」の場合)、支援サーバ20の制御部21は、初期ノードの追加処理を実行する(ステップS404)。具体的には、制御部21の学習部211は、ノード候補を新規ノードとして追加し、学習結果記憶部23に記録する。
【0052】
一方、既登録のノードとの距離が最大距離未満と判定した場合(ステップS403において「YES」の場合)、支援サーバ20の制御部21は、初期ノードの追加処理(ステップS404)をスキップする。
【0053】
次に、支援サーバ20の制御部21は、終了かどうかについての判定処理を実行する(ステップS405)。具体的には、制御部21の学習部211は、活性度が最も低い入力データD(i)について処理を終了した場合、終了と判定する。
【0054】
終了でないと判定した場合(ステップS405において「NO」の場合)、支援サーバ20の制御部21は、ノード候補の特定処理(ステップS402)以降の処理を繰り返す。
一方、終了と判定した場合(ステップS405において「YES」の場合)、支援サーバ20の制御部21は、初期ノードの設定処理(ステップS307)を終了する。
【0055】
次に、図6に示すように、支援サーバ20の制御部21は、削除閾値の設定処理を実行する(ステップS308)。
【0056】
図8を用いて、削除閾値の設定処理(ステップS308)を説明する。
ここでは、支援サーバ20の制御部21は、ノード活性度のソート処理を実行する(ステップS501)。具体的には、制御部21の学習部211は、ノード活性度Arate_W(i)を降順に並べ替える。
【0057】
次に、支援サーバ20の制御部21は、ノード削除閾値の特定処理を実行する(ステップS502)。具体的には、制御部21の学習部211は、指定順位(Ndw)のノード活性度Arate_W(i)の値をノード削除閾値として特定し、学習結果記憶部23に記録する。
【0058】
次に、支援サーバ20の制御部21は、パス活性度のソート処理を実行する(ステップS503)。具体的には、制御部21の学習部211は、パス活性度Arate_S(i,j)を降順に並べ替える。
【0059】
次に、支援サーバ20の制御部21はパス削除閾値の特定処理を実行する(ステップS504)。具体的には、制御部21の学習部211は、指定順位(Nds)のパス活性度Arate_S(i,j)をパス削除閾値として特定し、学習結果記憶部23に記録する。
【0060】
次に、図3に示すように、オンライン学習処理を実行する。この処理は、オンラインで新たな入力データD(i)を取得した場合に行なわれる。ここでは、「i=1~M」とする。
【0061】
まず、支援サーバ20の制御部21は、勝者ノード及び距離の特定処理を実行する(ステップS103)。具体的には、制御部21の学習部211は、学習結果記憶部23に記録された自己組織化マップを構成するノード(既存ノード)の中で、近接ノードとして、N個のノード(第1勝者~第N勝者)を特定する。ここでは、学習部211は、新たに取得した入力データD(i)の位置が近い順番にN個のノード(第1勝者~第N勝者)を特定する。そして、学習部211は、入力データD(i)と各勝者(第1勝者~第N勝者)との各距離(d1~dn)を算出する。
【0062】
図9(a)に示すように、2個の勝者(第1勝者n1,第2勝者n2)を特定して、入力データD(i)からの各距離d1,d2を算出する。
次に、支援サーバ20の制御部21は、最大距離より遠いかどうかについての判定処理を実行する(ステップS104)。具体的には、制御部21の学習部211は、最寄りのノードとの距離d1と最大距離dmaxとを比較する。
【0063】
距離d1が最大距離dmaxより遠い場合(ステップS104において「YES」の場合)、支援サーバ20の制御部21は、新規ノードの追加処理を実行する(ステップS105)。具体的には、制御部21の学習部211は、入力データD(i)を新規ノードとして学習結果記憶部23に記録する。
図9(b)に示すように、ノードn1,n2をそれぞれノードn2,n3として、入力データD(i)をノードn1として追加している。
【0064】
次に、支援サーバ20の制御部21は、ノード及びパスの情報初期化処理を実行する(ステップS106)。具体的には、制御部21の学習部211は、年齢と活性値とを初期化する。
【0065】
図9(b)に示すように、以下の式により、各ノードの情報を初期化する。ここでは、ノードn1について、初期化する。
【0066】
【数5】
【0067】
【数6】
ここで、dは各ノードniとノードn1との距離である。
【0068】
また、ノードn1,n2のパスの情報を更新する。
【0069】
【数7】
【0070】
【数8】
また、ノードn1,n3のパスの情報を更新する。
【0071】
【数9】
【0072】
【数10】
一方、距離d1が最大距離以下の場合(ステップS104において「NO」の場合)、支援サーバ20の制御部21は、入力データと第N勝者までの活性値anの算出処理を実行する(ステップS107)。ここでは、新規ノード及び既存の第N勝者までの活性値an(n=1~N)を求める。具体的には、制御部21の学習部211は、以下の式を用いて、活性値を算出する。
【0073】
【数11】
ここで、「d」は各ノードniと入力データD(i)との距離である。
【0074】
次に、図9(c)に示すように、支援サーバ20の制御部21は、ノード位置、パス活性値の更新処理を実行する(ステップS108)。具体的には、制御部21の学習部211は、以下の式によりノード位置を更新する。
【0075】
【数12】
ここで、「g」は、学習率を表す係数である。
【0076】
更に、学習部211は、以下の式によりパス活性値Asを更新する。
【0077】
【数13】
制御部21の学習部211は、以下の式によりノード活性値Awを更新する。
【0078】
【数14】
制御部21の学習部211は、以下の式によりパス活性値Asを更新する。
【0079】
【数15】
次に、支援サーバ20の制御部21は、年齢の更新処理を実行する(ステップS109)。具体的には、制御部21の学習部211は、Age_w,Age_sにそれぞれ「1」を加算して更新する。
【0080】
次に、支援サーバ20の制御部21は、ノード活性度、パス活性度の算出処理を実行する(ステップS110)。具体的には、制御部21の学習部211は、以下の式によりノード活性度Arate_wを算出する。
【0081】
【数16】
以下の式によりパス活性度Arate_sを算出する。
【0082】
【数17】
次に、支援サーバ20の制御部21は、活性度が閾値を下回るパス及びノードの削除処理を実行する(ステップS111)。具体的には、制御部21の学習部211は、活性度が閾値を下回るノード及びパスを削除する。
【0083】
次に、支援サーバ20の制御部21は、終了かどうかについての判定処理を実行する(ステップS112)。具体的には、制御部21の学習部211は、「i=M」の場合に、すべての入力データについて終了と判定する。
この場合には、オンライン学習処理を終了する。
一方、終了でないと判定した場合(ステップS112において「NO」の場合)、支援サーバ20の制御部21は、「i=i+1」としてステップS103以降の処理を繰り返す。
【0084】
本実施形態によれば、以下のような効果を得ることができる。
(1-1)本実施形態においては、支援サーバ20の制御部21は、入力データの解析処理を実行する(ステップS101)。これにより、ノード間の最大距離dmaxを算出することができる。
【0085】
(1-2)本実施形態においては、支援サーバ20の制御部21は、初期化処理を実行する(ステップS102)。これにより、ノード間の最大距離を考慮して初期ノードを設定することができる。また、削除閾値を設定することができる。
(1-3)本実施形態においては、距離d1が最大距離より遠い場合(ステップS104において「YES」の場合)、支援サーバ20の制御部21は、新規ノードの追加処理を実行する(ステップS105)。次に、支援サーバ20の制御部21は、ノード及びパスの情報初期化処理を実行する(ステップS106)。これにより、入力に応じて、新たなノードを設定することができる。
【0086】
(1-4)本実施形態においては、距離d1が最大距離以下の場合(ステップS104において「NO」の場合)、支援サーバ20の制御部21は、入力データと第N勝者までの活性値anの算出処理を実行する(ステップS107)。次に、支援サーバ20の制御部21は、ノード位置、パス活性値の更新処理を実行する(ステップS108)。これにより、ノードとパスの利用状況を評価することができる。
【0087】
(1-5)本実施形態においては、支援サーバ20の制御部21は、年齢の更新処理(ステップS109)、ノード活性度、パス活性度の算出処理(ステップS110)を実行する。これにより、時間(年齢)の概念を導入してHebb則に対応させて、ノードとパスに活性度(=活性/年齢)を導入することができる。この活性度により、ノードやパスの有効性を把握することができる。
【0088】
(1-6)本実施形態においては、支援サーバ20の制御部21は、活性度が閾値を下回るパス及びノードの削除処理を実行する(ステップS111)。これにより、活性度が閾値以下のものを削除することができる。従って、孤立したノードを削除することができる。また、削除する必要のないパスを削除することがない。この結果、少ないパラメータで安定した学習が可能である。
【0089】
以下に、ESOMと本願発明との効果の違いを示す。
図10に示すマップ600に対して、2次元データにESOMを適用する。
図11は、ESOMにおいて、パスの削除間隔を変更してクラスタリングを行なった結果である。図11(a)はパスの削除間隔が「20ステップ」、図11(b)は「30ステップ」、図11(c)は「40ステップ」である。この場合、削除間隔によりクラスタリング(グレーの濃度)の結果がかなり異なる。このため、妥当な削除間隔が特定し難いため、試行錯誤が必要になる。
【0090】
図12では、本願発明において、ノード近傍のデータ数を変更している。図12(a)は近傍データ数が「40個」、図12(b)は「50個」、図12(c)は「60個」である。この場合、クラスタリングにおいて、いずれの場合も、同様の結果が得られている。従って、パラメータの指定が容易である。
【0091】
(第2実施形態)
次に、図13に従って、学習システム、学習方法及び学習プログラムを具体化した第2実施形態を説明する。第1実施形態では、教師なし学習について説明した。第2実施形態では、教師あり学習に適応するように変更した構成であり、上記第1実施形態と同様の部分については、同一の符号を付し、その詳細な説明を省略する。この場合には、学習時に、説明変数と目的変数をカップリングしたデータセットを用いて、自己組織化マップを作成する。
【0092】
図13を用いて、教師あり学習処理を説明する。
まず、支援サーバ20の制御部21は、入力データの取得処理を実行する(ステップS601)。具体的には、制御部21の学習部211は、説明変数及び目的変数からなる入力データを取得する。そして、学習部211は、説明変数の変数値と目的変数の変数値とを結合して、入力データを構成する。
【0093】
次に、支援サーバ20の制御部21は、図3に示すマップ生成処理を実行する(ステップS602)。ここでは、生成したマップを学習結果記憶部23に記録する。
次に、支援サーバ20の制御部21は、説明変数と目的変数の調整処理を実行する(ステップS603)。具体的には、制御部21の学習部211は、学習の精度を検証する。そして、学習の精度が基準値に達していない場合には、学習部211は、学習のハイパーパラメータである調整係数を変更して、マップ生成処理(ステップS602)を繰り返す。この繰り返しにより、学習の精度が基準値以上の最適値を探す交差検証を実行する。これにより、目的変数の変数値に調整係数を乗算して目的変数の影響を調整する。
【0094】
そして、予測時には、支援サーバ20の制御部21は、新たな入力データの取得処理を実行する(ステップS611)。具体的には、制御部21の取得部210は、ユーザ端末10から、説明変数の変数値のみを含む入力データを新たに取得する。
【0095】
次に、支援サーバ20の制御部21は、自己組織化マップを用いた予測処理を実行する(ステップS612)。具体的には、制御部21の出力部212は、入力データの説明変数の変数値に最も近いノードを特定する。そして、出力部212は、特定したノードの目的変数値を取得する。更に、出力部212は、目的変数値を調整係数で除算する。
【0096】
以上、本実施形態によれば、上記(1-1)~(1-6)と同様の効果に加えて、以下に示す効果を得ることができる。
【0097】
(2-1)本実施形態では、支援サーバ20の制御部21は、入力データの取得処理を実行する(ステップS601)。これにより、目的変数及び説明変数を含めた入力データを用いて、自己組織化マップを作成することができる。そして、自己組織化マップを用いた距離の計算により予測できるので、予測結果の説明性が高い。
【0098】
(2-2)本実施形態では、支援サーバ20の制御部21は、説明変数と目的変数の調整処理を実行する(ステップS602)。これにより、説明変数と目的変数とをバランスさせた自己組織化マップを生成することができる。
【0099】
(第3実施形態)
次に、図14に従って、学習システム、学習方法及び学習プログラムを具体化した第3実施形態を説明する。第2実施形態では、教師あり学習について説明した。第3実施形態では、検証用データを用いて、ノード位置を調整するように変更した構成であり、上記第2実施形態と同様の部分については、同一の符号を付し、その詳細な説明を省略する。学習時に、説明変数と目的変数をカップリングして、自己組織化マップを作成する。
【0100】
例えば、検証用データの説明変数値を用いた予測結果において、ノードn1を予測した場合を想定する。そして、ノードn1の目的変数値よりも、ノードn2の目的変数値の方が、検証用データの目的変数値(正解)に近い場合を想定する。この場合、説明変数の各次元の距離d(ノード寄与)を比較することで、悪影響を与えている次元を特定することができる。この検証用データとしては、自己組織化マップの作成時のデータ(教師データ)を用いてもよいし、教師データ以外のデータ(検証のみを目的とするデータ)を用いてもよい。
【0101】
図14を用いて、マップ調整処理を説明する。
ここでは、ノード毎、検証用データ毎に以下の処理を繰り返す。
まず、支援サーバ20の制御部21は、検証用データについて、予測値の算出処理を実行する(ステップS701)。具体的には、制御部21の取得部210は、検証用データの説明変数値を、自己組織化マップに入力する。次に、出力部212は、最も近接するノード(最近接ノード)を特定する。そして、出力部212は、最近接ノードの目的変数値を予測値として取得する。
【0102】
次に、支援サーバ20の制御部21は、ノード寄与の算出処理を実行する(ステップS702)。具体的には、制御部21の学習部211は、以下の差分を用いてノード寄与dAi,jを算出する。
【0103】
【数18】
次に、支援サーバ20の制御部21は、移動ベクトルの計算処理を実行する(ステップS703)。具体的には、制御部21の学習部211は、以下の式を用いて移動ベクトルdVi,jを算出する。
【0104】
【数19】
以上の処理を、すべての検証用データについて終了するまで繰り返す。
次に、支援サーバ20の制御部21は、移動ベクトルの平均ベクトルの算出処理を実行する(ステップS704)。具体的には、制御部21の学習部211は、以下の式を用いて移動ベクトルdVi,meanを算出する。
【0105】
【数20】
以上の処理を、すべてのノードについて終了するまで繰り返す。
次に、支援サーバ20の制御部21は、移動ベクトルを用いてノード調整処理を実行する(ステップS705)。具体的には、制御部21の学習部211は、調整係数を乗算した移動ベクトルdVi,meanを用いて、ノードを移動させる。
【0106】
次に、支援サーバ20の制御部21は、精度の算出処理を実行する(ステップS706)。具体的には、制御部21の出力部212は、検証用データの説明変数を、調整した自己組織化マップに入力して、目的変数値を予測する。そして、出力部212は、予測した目的変数値と、検証用データの目的変数とを比較して、正解の割合(精度)を算出する。
【0107】
次に、支援サーバ20の制御部21は、収束かどうかについての判定処理を実行する(ステップS707)。具体的には、制御部21の学習部211は、先行作成のマップの精度と今回作成のマップの精度とを比較する。そして、精度が向上している場合には、収束していないと判定する。なお、収束判定は、精度向上の有無に限定されるものではない。例えば、精度向上が所定範囲内の場合に、収束と判定してもよい。
【0108】
精度が向上しており、収束でないと判定した場合(ステップS707において「NO」の場合)、支援サーバ20の制御部21は、今回作成のマップの精度を初期精度として設定して、ステップS701以降の処理を繰り返す。
一方、精度が向上しておらず、収束と判定した場合(ステップS707において「YES」の場合)、支援サーバ20の制御部21は、マップ調整処理を終了する。
【0109】
以上、本実施形態によれば、上記(1-1)~(1-6)、(2-1)、(2-2)と同様の効果に加えて、以下に示す効果を得ることができる。
【0110】
(3-1)本実施形態では、支援サーバ20の制御部21は、ノード寄与の算出処理を実行する(ステップS702)。これにより、ノード寄与に応じて、予測失敗の原因を分析することができる。すなわち、各次元における「検証用データと正解ノードとの距離」と「検証用データと不正解ノード」との大小関係により、予測に良い影響を与えるノードと予測に悪影響を与えるノードとを識別できる。
【0111】
(3-2)本実施形態では、支援サーバ20の制御部21は、移動ベクトルの計算処理を実行する(ステップS703)。これにより、予測失敗の原因となったノードを移動させて、自己組織化マップを改善できる。
【0112】
本実施形態は、以下のように変更して実施することができる。本実施形態及び以下の変更例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
・上記第1実施形態では、オンライン学習処理を実行する。自己組織化マップを生成できれば、オンライン処理に限定されるものではなく、バッチ処理によって生成した自己組織化マップを用いて、クラスタリングを行なうようにしてもよい。
・上記第1実施形態では、支援サーバ20の制御部21は、入力データの解析処理を実行する(ステップS101)。ここで、最大距離dmaxを算出する。最大距離dmaxは、入力データを代表する統計値であれば、算出方法は限定されない。また、最大距離dmaxの初期値を予め設定しておき、入力データ数の増加に応じて再計算してもよい。
【0113】
・第2実施形態において、支援サーバ20の制御部21は、自己組織化マップを用いた予測処理を実行する(ステップS612)。具体的には、制御部21の出力部212は、入力データの説明変数の変数値に最も近いノードを特定する。ここで、最も近いノードn1に接続する複数のノードを用いて、回帰で目的変数を予測してもよい。
この場合、最も近いノードn1にパスにより接続している他のノードを利用して、複数のノードを特定してもよい。
【0114】
・上記第3実施形態では、ノード寄与を用いてノード位置を調整する。ここで、パスの寄与に基づいて、調整するようにしてもよい。例えば、検証用データの説明変数値を用いて予測したノードn1の目的変数値よりも、ノードn2の目的変数値の方が、検証用データの目的変数値(正解)に近い場合を想定する。この場合、説明変数の各次元の距離Dを比較することで、悪影響を与えている次元を特定する。マップ調整処理は、第3実施形態の〔数18〕を用いる方法に限定されない。
【0115】
図15を用いて、他のマップ調整処理を説明する。
ここでは、検証用データ毎に以下の処理を繰り返す。
まず、支援サーバ20の制御部21は、ステップS701と同様に、検証用データについて、予測値の算出処理を実行する(ステップS801)。
【0116】
次に、支援サーバ20の制御部21は、ステップS702と同様に、ノード寄与の算出処理を実行する(ステップS802)。
次に、支援サーバ20の制御部21は、パス寄与の算出処理を実行する(ステップS803)。具体的には、制御部21の学習部211は、以下の差分を用いてパス寄与dAk,lを算出する。
【0117】
【数21】
以上の処理を、すべての検証用データについて終了するまで繰り返す。
次に、支援サーバ20の制御部21は、ノードの寄与の合計処理を実行する(ステップS804)。具体的には、制御部21の学習部211は、以下の式を用いてノードの寄与の合計dASiを算出する。
【0118】
【数22】
次に、支援サーバ20の制御部21は、パスの寄与の合計処理を実行する(ステップS805)。具体的には、制御部21の学習部211は、以下の式を用いてパスの寄与の合計dASkを算出する。
【0119】
【数23】
次に、支援サーバ20の制御部21は、悪影響ノード及び悪影響パスの特定処理を実行する(ステップS806)。具体的には、制御部21の学習部211は、ノードの寄与の合計dASi、パスの寄与の合計dASkを、それぞれ降順で並べ替える。そして、学習部211は、上位所定数を悪影響ノード及び悪影響パスとして特定する。
【0120】
次に、支援サーバ20の制御部21は、悪影響ノード、パスの削除処理を実行する(ステップS807)。具体的には、制御部21の学習部211は、特定した悪影響ノード及び悪影響パスを削除する。
【0121】
ノードの寄与の合計dASiが正の場合や、パスの寄与の合計dASkが正の場合、予測に悪影響を与える可能性が高い。そこで、ノードの寄与やパスの寄与に応じて、影響を与えるノードやパスを削除することができる。
【符号の説明】
【0122】
10…ユーザ端末、20…支援サーバ、21…制御部、210…取得部、211…学習部、212…出力部、22…入力データ記憶部、23…学習結果記憶部。
【要約】
【課題】効率的に的確な自己組織化マップを生成するための学習システム、学習方法及び学習プログラムを提供する。
【解決手段】支援サーバ20の制御部21が、入力データに対して、既存ノードの中で近接ノードを特定し、入力データと近接ノードとの距離を算出し、距離が最大距離よりも大きい場合には、入力データを用いて新規ノードを既存ノードに追加し、近接ノードとの距離に応じて、新規ノード及び近接ノードの活性値及び年齢を更新し、距離が最大距離以下の場合には、入力データと近接ノードとの距離に応じて、近接ノードの位置、活性値及び年齢を更新し、各ノードの活性値及び各パスの活性値を用いて、年齢から活性度を算出し、活性度に応じて、ノード及び各パスの存否を決定して、自己組織化マップを生成する。
【選択図】図1
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17