(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
以下、ニューラルネットワークにおいて、複数の入力項目(要因)それぞれの結果に対する影響の大きさを定量分析する方法について説明する。本実施形態においては、病気(出力)に対する複数の食品(入力)の影響を分析する病因分析装置102(要因分析装置)を対象として説明する。
【0013】
図1は、病因分析システム100のハードウェア構成図である。
病因分析システム100において、病因分析装置102は、インターネット110を介して、病院108および複数のクライアント端末106a、106b・・・106n(以下、まとめて言うときや特に区別しないときには「クライアント端末106」と総称する)と接続される。クライアント端末106は、スマートフォンなどの携帯端末であってもよいし、ラップトップPCなどの汎用コンピュータであってもよい。クライアント端末106とインターネット110は無線接続されるが、有線接続されてもよい。クライアント端末106のユーザ(被験者)には、あらかじめユーザIDが付与される。
【0014】
病因分析装置102は、病気に影響を与える食品を特定する。詳細は後述するが、病因分析装置102は、多数の被験者の食事履歴(以下、「摂食情報」とよぶ)と被験者が罹患した病気の情報(以下、「罹患情報」とよぶ)を集積し、食事と病気の因果関係をニューラルネットワークによりモデル化する(以下、「病因モデル」とよぶ)。
【0015】
図2は、病因分析装置102の機能ブロック図である。
病因分析装置102の各構成要素は、CPU(Central Processing Unit)および各種コプロセッサなどの演算器、メモリやストレージといった記憶装置、それらを連結する有線または無線の通信線を含むハードウェアと、記憶装置に格納され、演算器に処理命令を供給するソフトウェアによって実現される。コンピュータプログラムは、デバイスドライバ、オペレーティングシステム、それらの上位層に位置する各種アプリケーションプログラム、また、これらのプログラムに共通機能を提供するライブラリによって構成されてもよい。以下に説明する各ブロックは、ハードウェア単位の構成ではなく、機能単位のブロックを示している。
病因分析装置102は、ウェブサーバを含む構成であってもよいし、クライアント端末106は、携帯型の通信端末と、これにインストールされたウェブブラウザを含む構成であってもよい。
【0016】
病因分析装置102のユーザとしては、摂食情報および罹患情報に基づいて病因を探究する研究者が想定される。
病因分析装置102は、ユーザインタフェース処理部120、通信部124、データ処理部122およびデータ格納部126を含む。
ユーザインタフェース処理部120は、タッチパネル、マウス、キーボード等の入力インタフェースを介してユーザからの操作を受け付けるほか、画像表示や音声出力など、ユーザインタフェースに関する処理を担当する。通信部124は、インターネット110を介してクライアント端末106および病院108(病院108のシステム)との通信処理を担当する。データ格納部126は各種データを格納する。データ処理部122は、ユーザインタフェース処理部120や通信部124により取得されたデータ、データ格納部126に格納されているデータに基づいて各種処理を実行する。データ処理部122は、ユーザインタフェース処理部120、通信部124およびデータ格納部126のインタフェースとしても機能する。
【0017】
ユーザインタフェース処理部120は、ユーザからの入力を受け付ける入力部128と、ユーザに対して画像や音声等の各種情報を出力する出力部130を含む。
【0018】
通信部124は、データセット取得部136を含む。
データセット取得部136は、クライアント端末106から摂食情報、病院108から罹患情報を取得する。一人の被験者についての摂食情報と罹患情報をまとめて「データセット」とよぶ。摂食情報は、選択式のアンケートに対する被験者の回答から得る。
【0019】
アンケートは、週1回から年1回程度、定期的に行われる。アンケートには200種類の食品が表示される。ユーザは、食品ごとに、(Q1)1週間あたり何回食べたか、(Q2)1回の摂取量はどの程度かという2つの質問に回答する。質問(Q2)は、「たくさん/普通/少しだけ」の3つから選ぶ。「たくさん」には「3」、「普通」には「2」、「少しだけ」には「1」が対応づけられる。全食品についての回答結果が摂食情報として病因分析装置102に提供される。アンケートは、病因分析装置102からクライアント端末106にウェブページとして提供されてる。このほかにも、アンケートを冊子として提供し、入力部128は被験者がマークシートに入力した回答からデータセットを取得してもよい。
【0020】
病院108は、健康診断の診断結果を病因分析装置102に送信する。診断結果は病気ごとに「罹患している(真)」「罹患していない(偽)」の2値が示される。データセット取得部136は、この診断結果を罹患情報として取得する。なお、被験者は罹患した病気を自己申告により病因分析装置102に通知してもよい。罹患情報においては、脳卒中、心筋梗塞などのさまざまな病気が対象となる。病気の種類ごとに病因モデル(ニューラルネットワーク・モデル)が用意される。
【0021】
データ処理部122は、入力設定部104、出力設定部112、モデル調整部114、影響値算出部116および寄与度算出部118を含む。
入力設定部104は、摂食情報に基づいて、各病因モデルの入力値を設定する。たとえば、被験者P1が食品Aを1週間あたり4回摂取し、1回の摂取量が「少しだけ」であるとき、入力設定部104は食品A(入力項目)の入力値を4×1=4として算出し、病因モデルにおける食品Aに対応する入力ノードに「4」を設定する。入力設定部104は、入力値を既知の方法により0〜1の範囲に正規化してもよい。
【0022】
出力設定部112は、罹患情報に基づいて、各病因モデルの出力(教師データ)を設定する。たとえば、被験者P1が脳卒中に罹患しているときには、脳卒中に対応する病因モデルの出力ノードのうち「真(TRUE)」に対応する出力ノードに「1」、「偽(FALSE)」に対応する出力ノードに「−1」を設定する。このようにして、摂食情報と罹患情報が病因モデルの「教師データ」となる。モデル調整部114は、出力(罹患情報)に基づいて、病因モデルの重み係数を調整する。影響値算出部116は影響値を計算する。寄与度算出部118は寄与度を計算する。病因モデル、影響値および寄与度の詳細は後述する。
【0023】
図3は、病因モデル160の概念図である。
本実施形態における病因モデル160は、ニューラルネットワークにより形成される。
図3に示す病因モデル160は、入力層、出力層および2層の中間層1,2を含む。病因モデル160は病気ごとに用意されるが、以下においては脳卒中に対応する病因モデル160を対象として説明する。すなわち、
図3に示す病因モデル160は、ある人の摂食履歴に基づいて、その人が将来的に脳卒中になる可能性を予測するためのモデルである。
【0024】
入力層はn個のノード(以下、「入力ノード」ともよぶ)と1個のバイアス項162を含む。バイアス項162は、「1」を常時出力する調整用のノードである。入力ノードは「X」と表記する。中間層1はn1個のノード(以下、「第1中間ノード」ともよぶ)と1個のバイアス項162を含む。第1中間ノードは「U1」と表記する。中間層2はn2個のノード(以下、「第2中間ノード」ともよぶ)と1個のバイアス項162を含む。第2中間ノードは「U2」と表記する。また、入力ノードの出力値は小文字の「x」にて表記する。中間ノードの出力値、出力ノードの出力値についても同様に小文字表記する。
【0025】
出力層は2個のノード(以下、「出力ノード」ともよぶ)を含む。出力ノードは「Y」と表記する。出力ノードY
1は偽(脳卒中ではない)に対応し、出力ノードY
2は真(脳卒中である)に対応する。出力ノードY
1(偽)の出力値y
1が正、出力ノードY
2(真)の出力値y
2が負のときは脳卒中になる可能性が低いという予想を示し、出力ノードY
1(偽)の出力値y
1が負、出力ノードY
2(真)の出力値y
2が正のときは脳卒中になる可能性が高いという予想を示す。出力ノードY
1(偽)の出力値y
1と出力ノードY
2(真)の出力値y
2が同符号またはゼロであるときには、判定不能を意味する。
【0026】
入力ノードXは入力項目(食品)に対応する。たとえば、入力ノードX
1は「タマゴ」、入力ノードX
2は「カップラーメン」に対応する。食品が200種類あるときには、nは200となる。入力設定部104は、上述の方法により、食品ごとの入力値を設定する。
【0027】
重み係数wは、ノードとノードのつながりの強さ(結合度)を表現する可変数である。バイアス項162とノードの間の重み係数はbと表記する。たとえば、重み係数w2
1,2は、第1中間ノードU1
1と第2中間ノードU2
2の結合度を示す。また、重み係数b2
3は、中間層1のバイアス項162と第2中間ノードU2
3の結合度を示す。
【0028】
各ノードの活性化関数f(x)は、下記の式(1)に示すReLU(Rectified Linear Unit)関数である。
【数1】
式(1)のxは、ノードに対する入力値の合計値を示す。たとえば、第1中間ノードU1
1は、入力ノードX
1〜X
nおよびバイアス項162の合計(n+1)個のノードから入力値を取得する。第1中間ノードU1
1のReLU関数は、この(n+1)個の入力値の合計値をその入力値xとして取得する。ReLU関数f(x)は、x≧0のときf(x)=xとなり、x<0のときにはf(x)=0となる線形関数である。
【0029】
ReLU関数を想定したとき、出力ノードY
1(偽)の出力値y
1は、下記式(2)により表される。
【数2】
【0030】
式(2)のu2
i、すなわち、第2中間ノードU2の出力値を更に展開すると、下記式(3)となる。
【数3】
【0031】
式(3)のu1
j、すなわち、第1中間ノードU1の出力値を更に展開すると、下記式(4)となる。
【数4】
【0032】
式(4)は、最終的には、下記のような多項式(5)として表現される。
【数5】
【0033】
すなわち、出力値y
1は、入力項目1〜nそれぞれの影響度を累積させたものとして表現できる。式(5)のE1は、出力値y
1に対する入力項目X
1(入力値x
1)の影響力を示す。以下、このような入力項目ごとの結果に対する影響力の大きさを「第1影響値」とよぶ。第1影響値は下記式(6)、バイアス項162の出力値y
1に対する影響値は下記式(7)として表現できる。
【数6】
【数7】
【0034】
出力値y
2についても同様である。式(6)からも明らかなように、入力ノードX
k(入力項目k)の出力値y
1に対する第1影響値Ekは、「入力ノードX
kの出力値x
k」と「入力ノードX
kから出力ノードY
1へ至るすべての経路の重みの積和」を乗算することにより求められる。第1影響値Ekは、入力項目kが結果y
1にどのくらいの影響を与えているかを示す。たとえば、入力項目kが「納豆」であれば、第1影響値Ekは「脳卒中に罹患しない(結果y
1)」という事実に対して、「納豆」がどの程度の影響を与えているか、いいかえれば、納豆が脳卒中予防にどれだけ有効か、を定量的に示す。
【0035】
あるノードのReLU関数が0を出力するときには、そのノードは病因モデル160の出力値に影響を及ぼさない。たとえば、第1中間ノードU1pが0を出力するときには第1中間ノードU1pに関わる影響経路(エッジ)は実質的に除外されることになる。
【0036】
図4(a)は出力値y
1に対する第1影響値を示す図である。
図4(b)は出力値y
2に対する第1影響値を示す図である。
ユーザID=P01の被験者(以下、「被験者(P01)」のように表記する)は、脳卒中の経験者である。このため、出力設定部112は学習に際して「偽」に対応する出力値y
1に「−1」、「真」に対応する出力値y
2に「+1」を設定する。入力設定部104は、脳卒中の病因モデル160の各入力ノードに被験者(P01)の摂食情報に基づいて入力値を設定する。これらが教師データとなる。
【0037】
モデル調整部114は、既知の誤差逆伝播法により、各重み係数wを調整する。他の被験者についても同様であり、教師データとなるデータセットを設定し、重み係数を更に調整する。このようにして、多数の被験者、好ましくは、2000名以上の被験者のデータセットに基づいて、重み係数を調整することにより、病因モデル160の判定精度を高める。
図4(a)によれば被験者(P01)の調整後の「偽」に対応する出力値y
1は「−0.32」となり、
図4(b)によれば「真」に対応する出力値y
2は「0.26」となる。すなわち、病因モデル160は、被験者(P01)は、脳卒中に罹患する可能性が高いと判定している。被験者(P01)は、実際には脳卒中の経験者であるから、病因モデル160はユーザ(P01)が脳卒中に罹患する可能性を摂食情報から正しく判定可能できている。したがって、新たなユーザの摂食情報を病因モデル160に入力すれば、このユーザが将来的に脳卒中になるか否かを予測できる。
【0038】
摂食情報は、ユーザのアンケートに対する回答に基づいて取得される。このため、十分な回答が得られない可能性もある。200種類の食品それぞれに対して、ユーザがすべて回答するとは限らない。無回答の食品(入力項目)については、入力設定部104は入力値として「0」を設定する。
【0039】
図5(a)は出力値y
1に対する第2影響値を示す図である。
図5(b)は出力値y
2に対する第2影響値を示す図である。
影響値算出部116は、更に、第1影響値Eを下記の方法により補正する。まず、下記の式(8)により、第1影響値Ek(1≦k≦n)から中間影響値Fkを計算する。
【数8】
式(8)は、入力項目k(食品k)の出力値y
1に対する中間影響値Fkを示す。被験者(P01)について取得された全入力項目について、第1影響値Ek(P01)の絶対値を合計する。この合計値を「調整値」とよぶ。影響値算出部116は、調整値により第1影響値を除することで中間影響値Fkを算出する。中間影響値Fkは入力項目kの入力全体に占める「割合」を示す。たとえば、食品1,2,3のすべてをよく摂取している被験者の中間影響値Fkは、食品1のみを偏食している被験者の中間影響値Fkよりも小さくなる。中間影響値Fkは、被験者の食生活全体に占める食品kの摂取率(偏食性・嗜好性)を考慮した上で、食品kの出力値y
1に対する影響度を指標化するものである。
【0040】
調整値を第1影響値Eの単純合計ではなく、第1影響値Eの絶対値和としているのは、、合計時に第1影響値が正負相殺するのを防ぐためである。調整値は、このほかにも、すべての第1影響値の平方和として算出されてもよい。
【0041】
ただし、食品1,2,3のうち、食品1については正規回答し、食品2,3については無回答だった被験者が食品2,3をまったく摂取していないと判断することは早計かもしれない。もしかしたら、この被験者は、単に、食品2,3を実際には摂取しているにも関わらず、回答を怠っただけなのかもしれない。すなわち、ある食品mについての第1影響値Emがゼロとなるのは、被験者が食品mをまったく摂取していない場合もあれば、食品mを摂取しているにも関わらず無回答になっている場合もある。後者の可能性は無視できないため、中間影響値に対して、更に、式(9)に示す補正係数を乗じる。
【数9】
たとえば、200種類の食品のうち、有効な回答がなされた食品(入力項目)の数が150のときには、補正係数は0.75(=150/200)となる。中間影響値Fを補正係数により補正した後の値を「第2影響値」とよぶ。第2影響値Gkは、アンケートに対する有効回答率を考慮した上で、食品kの出力値y
1に対する影響度を指標化するものである。第1影響値から中間影響値を経由して第2影響値を生成する処理のことを「影響値の正規化」とよぶ。第1影響値、中間影響値、第2影響値は、いずれも、ある被験者についての結果(脳卒中)に対する要因(食品)それぞれの影響力を示すものであり、被験者全体についての一般論ではない。影響値は、被験者ごとに計算される。
【0042】
まとめると、ある食品k(入力項目k)の「脳卒中にかからない(偽)」に対応する出力値y
1への影響は、下記の各種条件により変動する。
(C1)脳卒中にかかっていない被験者が、食品kを多量に摂取しているとき、食品kは脳卒中に対してポジティブに影響する、いいかえれば、食品kの出力値y
1に対する第2影響値Gkが高くなる。
(C2)脳卒中にかかっていない被験者が、食品k以外の食品をあまり摂取していないとき、いいかえれば、食品kを偏食しているとき、第2影響値Gkは高くなる。
(C3)脳卒中にかかっていない被験者が、食品k以外の多くの食品について無回答であるとき、いいかえれば、アンケートにおける有効回答が少ないときには、第2影響値Gkは高くなる。補正係数は、無回答または不正規回答が多いときに、この被験者からえられたデータセットの病因モデル160に対する影響力を抑制する。
【0043】
図6は、第2影響値の計算過程を示すフローチャートである。
図6に示す処理は、被験者から新たなデータセットが取得されるごとに実行される。データセット取得部136は、ある被験者からデータセット(摂食情報と罹患情報)を取得する(S10)。入力設定部104は、摂食情報から入力値を計算し、病因モデル160の入力ノードに設定する(S12)。出力設定部112は、罹患情報に基づいて、病因モデル160の出力ノードに出力値(正解の値)を設定する(S14)。
【0044】
モデル調整部114は、上記入力および出力に基づいて、誤差逆伝播法により重み係数wを調整する(S16)。影響値算出部116は、入力項目ごとに第1影響値を算出する(S18)。影響値算出部116は、第1影響値を補正し、中間影響値を経由して、第2影響値を算出する(S20)。
【0045】
データセットが取得されるごとに、データセットに基づいて病因モデル160の修正が行われる。また、病因モデル160が修正されるごとに全ユーザについての影響値も再計算される。
【0046】
図7は、結果に対する要因の寄与度を示す図である。
寄与度算出部118は、複数のデータセットについて、入力項目ごとに第2影響度Gの平均値を算出する。食品kの出力y
1に対する第2影響度Gk
1の平均値を「第1寄与度Hk
1」、食品kの出力y
2に対する第2影響度Gk
2の平均値を「第2寄与度Hk
2」とよぶ。寄与度は、複数の被験者についての結果(脳卒中)に対する要因(食品)それぞれの影響力を示すものである。
【0047】
たとえば、
図5によれば、入力項目3の出力y
1に対する第2影響度Gkは、−1.78、−3.93、0、−1.18・・・である。したがって、入力項目3の出力y
1に対する第1寄与度H3
1は、これらの平均値である。ただし、寄与度算出部118は、被験者(P03)の第2影響度E3=0は平均値計算から除外する。被験者(P03)については、食品3について有意なデータが得られていないためである。入力項目3の出力y
2についても同様である。
【0048】
寄与度算出部118は、入力項目kについて、第1寄与度Hk
1の絶対値と第2寄与度Hk
2の絶対値の平均値を「寄与度」として算出する。寄与度は、正方向であれ負方向であれ、その入力項目が結果に及ぼす影響力を指標化したものである。たとえば、ある食品kが、脳卒中予防によく効く場合でも、脳卒中を引き起こしやすい場合でも寄与度は大きくなる。
【0049】
図7は、脳卒中に対応した病因モデル160から算出された各種食品の寄与度を示す。
図7によれば、食品1は第1寄与度(偽)が5.36、第2寄与度(真)は−5.19であるから、食品1は脳卒中予防に効果があることがわかる。食品1の寄与方向「偽」は、食品1が脳卒中(結果)に対して抑制的に働くことを意味する。
【0050】
また、
図7によれば、食品2は第1寄与度(偽)が−3.95、第2寄与度(真)が3.45であるから、食品kは脳卒中の原因になりやすいことがわかる。食品2の寄与方向「真」は、食品2が脳卒中(結果)に対して促進的に働くことを意味する。
【0051】
寄与度算出部118は、200種類の食品それぞれについて、第1寄与度、第2寄与度および寄与度を算出し、寄与度の大きさを順位付けする。通信部124または入力部128は、
図7に示すリストをユーザに提示する。
【0052】
以上、実施形態に基づいて病因分析システム100を説明した。
病因分析装置102(要因分析装置)によれば、結果に対するさまざまな入力項目(要因)の寄与度を定量評価できる。結果に影響を及ぼす思わぬ要因を特定できる可能性がある。寄与度を計算することにより、入力項目を絞りやすくなる。回答対象となる食品数が多い場合、アンケートに答えて摂食情報を提供する作業が煩雑化する可能性がある。寄与度に基づいて、病気に影響しにくい食品をアンケート項目から外すことにより、アンケートの選択肢を合理的に削減できる。
【0053】
影響値算出部116は、第1影響値を正規化するため、アンケートの回答不備にともなう分析への悪影響を抑制しやすくなる。大量のデータセットを分析することで寄与度を求めるときにも、不備のあるデータを計算対象から除外することにより、アンケートの回答不備にともなう悪影響を抑制できる。
【0054】
なお、本発明は上記実施形態や変形例に限定されるものではなく、要旨を逸脱しない範囲で構成要素を変形して具体化することができる。上記実施形態や変形例に開示されている複数の構成要素を適宜組み合わせることにより種々の発明を形成してもよい。また、上記実施形態や変形例に示される全構成要素からいくつかの構成要素を削除してもよい。
【0055】
病因モデル160は1種類である必要はなく、複数種類が用意されてもよい。たとえば、中間層の階層数が異なる複数種類の病因モデル160が用意されてもよいし、複数種類の活性化関数に対応した複数種類の病因モデル160が用意されてもよい。複数の病因モデル160のうち、もっとも予測精度の高い病因モデル160を採用すればよい。
【0056】
病院108は、あるユーザQの健康診断で異常値が検出されたとき、ユーザQの罹患情報を病因分析装置102に送信してもよい。このとき、病因分析装置102は、ユーザQの摂食情報と罹患情報に基づいて、病因モデル160を補正してもよい。
【0057】
本実施形態における病因モデル160の活性化関数はReLU関数であるとして説明した。活性化関数はReLU関数以外であってもよいが、線形関数であることが望ましい。
【0058】
影響値の正規化あるいは寄与度の算出においては、無回答の入力項目については計算対象から除外するとして説明した。このほかにも、所定範囲内に収まらない異常値が検出されるときには、非正規入力であるとして計算対象から除外してもよい。
【0059】
一人の被験者から複数回のデータセットを得たときには、入力設定部104は入力値を平均処理してもよい。たとえば、ある被験者Rの1回目のアンケートでは「納豆」の入力値が10であり、2回目のアンケートでは「納豆」の入力値が20であれば、入力設定部104は被験者Rについての「納豆」の入力値を平均値の15に設定すればよい。
【0060】
病因モデル160は食品以外の入力項目に対応する入力ノードを有してもよい。たとえば、性別(男:1、女:2)、年齢(20歳未満:1、30代:2・・・)を入力値として設定してもよい。
【0061】
本実施形態においては、病因モデル160は背反事象に対応する2つの出力ノードを備えるとして説明した。病因モデル160(ニューラルネットワーク・モデル)の出力ノードは1つであってもよいし、3以上であってもよい。
【0062】
本実施形態においては、摂食情報と罹患情報の相関関係を病因モデル160により連結することで病因を探り、病気を予測するとして説明した。食事以外にも、心理テストなどにより判定される精神傾向(たとえば、ポジティブな性格とネガティブな性格)、身長や体重などの身体情報、性別、居住地域、人種、年齢、本人または親の病歴などを病因モデル160の入力データに含めてもよい。このような分析を行うことにより、たとえば、女性は肺がんにかかりにくい、温暖地方の居住者は脳卒中にかかりにくいなど、食事以外の病因についても分析が可能となる。
【0063】
本実施形態に示した要因分析手法は、病因分析以外にも応用可能である。たとえば、野球チームの勝利には、防御率、チーム打率、1番バッターの出塁率などのさまざまな要因のうち、どの要因が寄与しているのかを探ることができる。自動車の売れ行きには、ディーラー数、価格、燃費など各要因がどの程度寄与しているかを探ることができるかもしれない。