(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-11
(45)【発行日】2023-01-19
(54)【発明の名称】機械学習プログラム、機械学習方法および機械学習装置
(51)【国際特許分類】
G06Q 50/02 20120101AFI20230112BHJP
【FI】
G06Q50/02
(21)【出願番号】P 2019042111
(22)【出願日】2019-03-08
【審査請求日】2021-12-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】飯村 由信
【審査官】田上 隆一
(56)【参考文献】
【文献】特開2017-169511(JP,A)
【文献】特開2015-219651(JP,A)
【文献】特開2013-051887(JP,A)
【文献】特開2019-030253(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
それぞれ標本農作物の育成環境の情報と所定の状態が観測された基準日から当該標本農作物の収穫日までの所要日数とを対応付けた複数のレコードを含む訓練データと、前記複数のレコードが示す複数の標本農作物および他の農作物を含む農作物集合について収穫日に対する収穫数の実績分布を示す総数データとを取得し、
育成環境の情報から所要日数の確率分布を算出する予測モデルを生成し、前記訓練データを用いて、前記予測モデルにより算出される前記確率分布の誤差を評価して前記予測モデルを更新することを繰り返す学習処理を開始し、
前記学習処理の途中において、前記複数のレコードが示す育成環境の情報から前記予測モデルにより算出される複数の確率分布を合成して、収穫日に対する収穫数の予測分布を算出し、前記予測分布と前記総数データが示す前記実績分布との間の類似度に基づいて、前記学習処理の停止タイミングを判定する、
処理を実行させる機械学習プログラム。
【請求項2】
前記標本農作物および前記他の農作物はそれぞれ果実であり、
前記基準日は、着果が観測された着果日であり、
前記標本農作物の育成環境の情報は、当該標本農作物の着果日から収穫日までの間の気温および日射量を含む、
請求項1記載の機械学習プログラム。
【請求項3】
前記停止タイミングの判定では、前記予測モデルが更新される毎に前記類似度を評価し、前記類似度のピークが検出されると、前記学習処理を停止し、前記類似度のピークに対応する前記予測モデルを学習結果として出力する、
請求項1または2記載の機械学習プログラム。
【請求項4】
前記複数のレコードはそれぞれ前記基準日を含み、
前記停止タイミングの判定では、前記複数のレコードに対応する前記複数の確率分布を前記基準日に基づいて合成して、前記複数の標本農作物について収穫日に対する収穫数の標本予測分布を算出し、前記農作物集合に対する前記複数の標本農作物の標本割合と前記標本予測分布とから、前記農作物集合について前記予測分布を算出する、
請求項1乃至3の何れか一項に記載の機械学習プログラム。
【請求項5】
前記停止タイミングの判定では、前記類似度が所定の基準以上類似することを示す場合に、前記学習処理を停止する、
請求項1乃至4の何れか一項に記載の機械学習プログラム。
【請求項6】
コンピュータが、
それぞれ標本農作物の育成環境の情報と所定の状態が観測された基準日から当該標本農作物の収穫日までの所要日数とを対応付けた複数のレコードを含む訓練データと、前記複数のレコードが示す複数の標本農作物および他の農作物を含む農作物集合について収穫日に対する収穫数の実績分布を示す総数データとを取得し、
育成環境の情報から所要日数の確率分布を算出する予測モデルを生成し、前記訓練データを用いて、前記予測モデルにより算出される前記確率分布の誤差を評価して前記予測モデルを更新することを繰り返す学習処理を開始し、
前記学習処理の途中において、前記複数のレコードが示す育成環境の情報から前記予測モデルにより算出される複数の確率分布を合成して、収穫日に対する収穫数の予測分布を算出し、前記予測分布と前記総数データが示す前記実績分布との間の類似度に基づいて、前記学習処理の停止タイミングを判定する、
機械学習方法。
【請求項7】
それぞれ標本農作物の育成環境の情報と所定の状態が観測された基準日から当該標本農作物の収穫日までの所要日数とを対応付けた複数のレコードを含む訓練データと、前記複数のレコードが示す複数の標本農作物および他の農作物を含む農作物集合について収穫日に対する収穫数の実績分布を示す総数データとを記憶する記憶部と、
育成環境の情報から所要日数の確率分布を算出する予測モデルを生成し、前記訓練データを用いて、前記予測モデルにより算出される前記確率分布の誤差を評価して前記予測モデルを更新することを繰り返す学習処理を開始し、前記学習処理の途中において、前記複数のレコードが示す育成環境の情報から前記予測モデルにより算出される複数の確率分布を合成して、収穫日に対する収穫数の予測分布を算出し、前記予測分布と前記総数データが示す前記実績分布との間の類似度に基づいて、前記学習処理の停止タイミングを判定する処理部と、
を有する機械学習装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は機械学習プログラム、機械学習方法および機械学習装置に関する。
【背景技術】
【0002】
コンピュータを利用したデータ分析として、機械学習が行われることがある。機械学習では、結果が既知である複数の事例を示す訓練データをコンピュータに入力する。コンピュータは、訓練データを分析して、要因(説明変数や独立変数と言うことがある)と結果(目的変数や従属変数と言うことがある)との間の関係を一般化した予測モデルを生成する。生成された予測モデルを用いることで、未知の結果を予測することができる。
【0003】
機械学習は、農作物の収穫予測に用いられることがある。例えば、農作物の最適収穫日を予測する予測装置が提案されている。提案の予測装置は、収穫前の異なる複数の日に撮像された農作物の画像と、当該農作物が実際に収穫された収穫日とを含む教師データを収集する。予測装置は、教師データから機械学習により予測モデルを生成し、予測モデルに対象の農作物の画像を入力して対象の農作物の収穫日を予測する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
農作物の収穫予測を可能とする機械学習では、気温や日射量などの育成環境を説明変数とし、着果日などの基準日から収穫日までの所要日数を目的変数とする予測モデルを生成することが考えられる。しかし、農作物は、同じ育成環境のもとで育てても成長速度が異なるという個体差をもっている。特に、一部の種類の農作物は個体差が大きい。これに対して、一般的な機械学習は、説明変数の1つの値に対して目的変数の1つの期待値(最も可能性が高い値)を算出する予測モデルを生成する。その結果、実際は収穫日にばらつきが生じるにもかかわらず、予測モデルによれば多くの農作物の予測収穫日が特定の日に集中することになり、実情から乖離した予測結果となってしまうおそれがある。
【0006】
1つの側面では、本発明は、農作物の収穫予測の精度が向上した予測モデルを生成する機械学習プログラム、機械学習方法および機械学習装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
1つの態様では、コンピュータに以下の処理を実行させる機械学習プログラムが提供される。それぞれ標本農作物の育成環境の情報と所定の状態が観測された基準日から標本農作物の収穫日までの所要日数とを対応付けた複数のレコードを含む訓練データと、複数のレコードが示す複数の標本農作物および他の農作物を含む農作物集合について収穫日に対する収穫数の実績分布を示す総数データとを取得する。育成環境の情報から所要日数の確率分布を算出する予測モデルを生成し、訓練データを用いて、予測モデルにより算出される確率分布の誤差を評価して予測モデルを更新することを繰り返す学習処理を開始する。学習処理の途中において、複数のレコードが示す育成環境の情報から予測モデルにより算出される複数の確率分布を合成して、収穫日に対する収穫数の予測分布を算出し、予測分布と総数データが示す実績分布との間の類似度に基づいて、学習処理の停止タイミングを判定する。
【0008】
また、1つの態様では、コンピュータが実行する機械学習方法が提供される。また、1つの態様では、記憶部と処理部とを有する機械学習装置が提供される。
【発明の効果】
【0009】
1つの側面では、農作物の収穫予測の精度が向上した予測モデルを生成できる。
【図面の簡単な説明】
【0010】
【
図1】第1の実施の形態の機械学習装置の例を説明する図である。
【
図2】第2の実施の形態の情報処理システムの例を示す図である。
【
図3】機械学習装置のハードウェア例を示す図である。
【
図4】収穫予測のデータフローの例を示す図である。
【
図5】期待値を出力する予測モデルの使用例を示す図である。
【
図6】確率分布を出力する予測モデルの使用例を示す図である。
【
図7】学習不足の予測モデルの使用例を示す図である。
【
図8】過学習した予測モデルの使用例を示す図である。
【
図9】機械学習の停止タイミング例を示す図である。
【
図10】機械学習のデータフローの例を示す図である。
【
図11】機械学習装置の機能例を示すブロック図である。
【
図12】気象データと標本データと総数データのテーブル例を示す図である。
【
図14】機械学習の手順例を示すフローチャートである。
【
図15】機械学習の手順例を示すフローチャート(続き)である。
【
図16】収穫予測の手順例を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0012】
図1は、第1の実施の形態の機械学習装置の例を説明する図である。
第1の実施の形態の機械学習装置10は、農作物の収穫予測に用いる予測モデルを機械学習によって生成する。機械学習装置10を、情報処理装置やコンピュータと言うこともある。機械学習装置10は、クライアント装置でもよいしサーバ装置でもよい。
【0013】
機械学習装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性の半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0014】
記憶部11は、訓練データ13および総数データ14を記憶する。訓練データ13および総数データ14は、収穫済みの農作物に関する履歴データである。訓練データ13および総数データ14は、前年に収穫された農作物など過去に収穫された農作物の育成状況や収穫状況を示す。訓練データ13が示す農作物と総数データ14が示す農作物は、同じ年に収穫されたものである。訓練データ13および総数データ14は、1年分の農作物を示す単年データであってもよいし、複数年分の農作物が混在した複数年データであってもよい。農作物には果実が含まれ得る。果実は、野菜や果物など植物の食用の実であり、農家によって栽培される。農作物は、同じ育成環境で育てても成長に個体差があり、収穫可能日にばらつきが生じる。農作物は、パプリカなど成長の個体差が大きい種類でもよい。
【0015】
訓練データ13は、収穫された農作物全体(農作物集合)の一部である標本農作物に関する複数のレコードを含む。農作物集合のうち標本農作物は、育成状況や収穫状況について個別の詳細情報を収集したものである。農作物集合のうち他の農作物は、個別の詳細情報を収集しなかったものである。農作物集合に対する標本農作物の割合(標本割合)は、0.01%~0.3%程度でよい。詳細情報の収集には手間がかかるためである。
【0016】
訓練データ13に含まれる複数のレコードは、それぞれ、標本農作物の育成環境の情報と所要日数とを対応付けている。育成環境の情報は、気温や日射量など農作物の成長と相関のある指標を含む。例えば、育成環境の情報は、下記の基準日から収穫日までの間の平均気温および平均日射量を含む。ただし、農作物の成長と相関が認められれば、基準日より前の気温や日射量を用いてもよいし、累積気温や累積日射量を用いてもよい。標本農作物によって基準日が異なることがある。基準日が異なると、結果的にその標本農作物に対応付けられる育成環境の情報も変わることがある。所要日数は、標本農作物について所定の状態が観測された基準日から、当該標本農作物が収穫された収穫日までの日数である。例えば、基準日は、植物が実をつけたことが観測された日(着果日)である。ただし、基準日は、着果前に植物が所定の状態になった日でもよいし、着果後に標本農作物が所定の状態になった日でもよい。収穫管理が週単位で行われている場合、所要日数の単位が週であってもよい。
【0017】
総数データ14は、訓練データ13が示す標本農作物および他の農作物を含む農作物集合について、収穫日に対する収穫数(収穫された農作物の個数)の実績分布を示す。各農作物は、十分に成長したと農家が判断した日に植物から切り離されて収穫される。着果日の違いや成長の個体差により、収穫日にばらつきが生じる。収穫管理が週単位で行われている場合、総数データ14は、収穫日の属する週に対する収穫数の実績分布を示してもよい。総数データ14は、出荷管理のために収集され、訓練データ13よりも収集の手間が少ない。
【0018】
例えば、訓練データ13に含まれる1つのレコードは、特定の平均気温や平均日射量のもとで育成された標本農作物について、着果日から収穫日までの所要日数が8週間であったという情報を示す。また、訓練データ13に含まれる別のレコードは、別の平均気温や平均日射量のもとで育成された標本農作物について、着果日から収穫日までの所要日数が7週間であったという情報を示す。総数データ14は、標本農作物および他の農作物を含む12,000個の農作物のうち、ある週に3,700個が収穫され、その次の週に5,800個が収穫され、その次の週に2,500個が収穫されたという情報を示す。
【0019】
処理部12は、学習処理15を実行して予測モデル16を生成する。予測モデル16の生成には、遺伝的プログラミング(GP:Genetic Programming)、重回帰分析、ニューラルネットワーク(NN:Neural Network)など、様々な機械学習アルゴリズムを使用することが可能である。予測モデル16は、育成環境の情報を説明変数として受け付け、所要日数の確率分布を目的変数として出力する統計モデルである。訓練データ13の所要日数の単位が週である場合、予測モデル16は、週数の確率分布を出力するようにしてもよい。予測モデル16は、最も確率が高い所要日数(所要日数の期待値)のみを出力する代わりに、複数の所要日数それぞれの確率を出力するように学習される。例えば、予測モデル16は、特定の平均気温および平均日射量に対して、7週間が30%、8週間が50%、9週間が20%という確率分布を出力する。
【0020】
学習処理15では、処理部12は、訓練データ13を用いて、予測モデル16により算出される確率分布の誤差を評価して予測モデル16を更新することを繰り返す。例えば、処理部12は、訓練データ13に含まれる複数のレコードそれぞれについて、当該レコードが示す育成環境の情報を予測モデル16に入力し、当該レコードが示す所要日数を用いて、予測モデル16が出力する確率分布の誤差を評価する。そして、例えば、処理部12は、誤差が小さくなるように、予測モデル16に含まれる係数を更新する。ニューラルネットワークの場合、ノード間のエッジ(シナプス)の重みが更新される。
【0021】
ここで、処理部12は、学習処理15において予測モデル16を更新する繰り返し(イテレーション)の回数を制御する。イテレーション回数が少ない場合、予測モデル16が出力する確率分布は、訓練データ13に対する誤差が大きく訓練データ13へのフィッティング精度が低いものとなる。イテレーション回数の増加に応じて、予測モデル16が出力する確率分布は、訓練データ13に対する誤差が段階的に小さくなり、訓練データ13へのフィッティング精度が段階的に高くなっていく。
【0022】
ただし、訓練データ13が示す標本農作物は全体の農作物集合に対して少数であると共に、農作物の成長には個体差がある。よって、訓練データ13が示す所要日数の標本は、全体の農作物集合に対する真実の確率分布を忠実に表しているとは限らず、バイアスが存在する。このため、イテレーション回数を増やし過ぎると、過学習により、予測モデル16が訓練データ13に過度にフィットするものとなってしまう。過学習された予測モデル16が出力する確率分布は、分散が過度に小さいものとなり、個体差により所要日数がばらつくという真実の確率分布から乖離したものとなるおそれがある。
【0023】
そこで、処理部12は、総数データ14を参照して、学習処理15における予測モデル16の更新を適切なタイミングで停止するようにする。
具体的には、処理部12は、学習処理15の途中において、訓練データ13に含まれる複数のレコードが示す育成環境の情報から、現在の予測モデル16により複数の確率分布を算出し、これら複数の確率分布を合成して予測分布17を算出する。予測分布17は、例えば、予測モデル16が更新される毎に算出される。予測分布17は、標本農作物および他の農作物を含む農作物集合について収穫日に対する収穫数の分布を予測したものである。
【0024】
訓練データ13が、着果日などの基準日が異なる標本農作物のデータを含んでいる場合、例えば、訓練データ13に基準日を含めておき、予測モデル16が出力する複数の確率分布を基準日に応じてシフトして合成すればよい。予測モデル16が週数の確率分布を出力する場合、予測分布17は、収穫日の属する週に対する収穫数の分布を示してもよい。また、処理部12は、標本割合を用いて、標本農作物の収穫数の予測分布を全体の農作物集合の収穫数の予測分布17に変換してもよい。例えば、予測分布17は、標本農作物および他の農作物を含む12,000個の農作物のうち、ある週に3,600個が収穫され、その次の週に6,000個が収穫され、その次の週に2,400個が収穫されるという予測を示す。
【0025】
そして、処理部12は、予測分布17と総数データ14が示す実績分布との間の類似度を評価し、類似度に基づいて学習処理15の停止タイミングを判定する。学習処理15の初期では、予測モデル16を更新する毎に予測モデル16の出力が真実の確率分布に近付き、その結果として予測分布17が総数データ14に近付く。一方、過学習になると、予測モデル16を更新する毎に予測モデル16の出力が過度に分散の小さいものとなり真実の確率分布から遠ざかり、その結果として予測分布17が総数データ14から遠ざかる。
【0026】
そこで、例えば、処理部12は、予測モデル16が更新される毎に類似度を評価して類似度のピークを検出し、ピークが検出されると学習処理15を停止して、ピークに対応する予測モデル16を学習結果として出力する。処理部12は、予測分布17と総数データ14が示す実績分布との間の類似度を示す指標として両者の誤差(総数誤差)を算出し、総数誤差が最小になるタイミングを検出するようにしてもよい。誤差は、収穫日毎に予測収穫数と実績収穫数の差の二乗を合計した残差平方和でもよい。また、処理部12は、類似度の評価結果が、予測分布17と総数データ14が示す実績分布とが所定の基準以上類似することを示す場合に、学習処理15を停止することとしてもよい。
【0027】
第1の実施の形態の機械学習装置10によれば、気温や日射量などの育成環境の情報から、着果日などの基準日から収穫日までの所要日数を予測する予測モデル16が生成される。よって、農作物の収穫日および収穫数の予測が可能となる。また、予測モデル16は、所要日数の期待値ではなく所要日数の確率分布を出力するように学習される。よって、同じ育成環境のもとで育てても成長速度が異なるという農作物の個体差の性質を考慮して、収穫日のばらつきを表現することが可能となる。
【0028】
また、訓練データ13に含まれる個々のレコードに対して予測モデル16の予測結果の誤差を評価することに加え、訓練データ13の全体から予測される収穫数の予測分布17と総数データ14が示す収穫数の実績分布との間の類似度が評価される。そして、この類似度に基づいて、学習処理15による予測モデル16の更新のイテレーションが停止される。よって、過学習により予測モデル16が過度に分散の小さい確率分布を出力するようになることを抑制でき、予測モデル16の予測精度が向上する。
【0029】
特に、個々の標本農作物について基準日や収穫日などの詳細情報を収集することは農家の負担が大きいことから、訓練データ13が十分な数の標本農作物のデータを含んでいないことがある。また、成長の個体差から、訓練データ13が示す所要日数にはバイアスがある。このような訓練データ13を用いて予測モデル16を生成すると、過学習が生じた場合に、予測モデル16が不適切な分散をもつ確率分布を出力してしまう可能性が高い。これに対して、機械学習装置10によれば、過学習が抑制され、予測モデル16が適切な分散をもつ確率分布を出力でき、収穫日のばらつきを表現することが可能となる。
【0030】
なお、少ない訓練データから、できる限り予測精度の高い予測モデルを生成する機械学習技術として、クロスバリデーション法がある。クロスバリデーション法では、データ集合を複数のブロック(例えば、10個のブロック)に分割し、それら複数のブロックの1つをテストデータとして選択し、残りのブロック(例えば、9個のブロック)を訓練データとして選択する。訓練データを用いて予測モデルを生成し、テストデータを用いて予測モデルの予測精度を測定する。テストデータとして選択するブロックを変えることで、予測モデルの生成を複数回(例えば、10回)繰り返す。
【0031】
すなわち、クロスバリデーション法は、訓練データに含まれるレコードを入れ替えながら予測モデルの生成を繰り返すことで、できる限り予測精度の高い予測モデルが生成されるレコードの組み合わせを発見するものである。しかし、使用可能なレコードが非常に少ない場合、データ集合を適切に複数のブロックに分割することが難しく、クロスバリデーション法によっても農作物の収穫予測の精度を向上させることは容易でない。
【0032】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
【0033】
第2の実施の形態の情報処理システムは、機械学習を利用して農作物の収穫日および収穫数を予測する。収穫日および収穫数の予測は、農家が出荷先と契約する際の基礎資料として使用することができる。第2の実施の形態の情報処理システムは、成長の個体差が大きく収穫日のばらつきが大きい農作物の管理に好適である。第2の実施の形態では、農作物の種類としてパプリカを想定する。ただし、第2の実施の形態の情報処理システムは、パプリカ以外の農作物の管理に適用することも可能である。
【0034】
第2の実施の形態の情報処理システムは、ビニールハウス20、ネットワーク30、気象データサーバ31および機械学習装置100を含む。
ビニールハウス20の屋内は、パプリカを栽培する農地として標本栽培エリア21および一般栽培エリア22を含む。標本栽培エリア21で栽培されるパプリカは、農家が着果日および収穫日を個別に観測する標本果実である。一般栽培エリア22で栽培されるパプリカは、着果日および収穫日を個別に観測しない果実である。標本栽培エリア21で栽培される標本果実は、標本栽培エリア21と一般栽培エリア22を合わせた果実全体の約0.1%である。ただし、出荷管理のため、収穫日毎の収穫総数はカウントされる。また、農地を標本栽培エリア21と一般栽培エリア22に分けず、農地内に点在する幾つかの木の果実を標本果実として選択してもよい。また、
図2には1つのビニールハウスを示しているが、農地が複数のビニールハウスに分割されていてもよい。
【0035】
ビニールハウス20の屋内には、センサ23が設置されている。センサ23は、少なくとも気温および日射量を測定するセンサデバイスである。センサ23が測定する気温および日射量は、ビニールハウス20の屋内のものであり、屋外の気温および日射量とは異なる。センサ23は、測定されたデータを定期的に所定の情報処理装置に送信する。
【0036】
ネットワーク30は、インターネットなどの広域データ通信ネットワークを含む。ネットワーク30には、気象データサーバ31および機械学習装置100が接続されている。センサ23がネットワーク30に接続されることもある。
【0037】
気象データサーバ31は、現在日以降の気象予報を示す気象予報データを提供するサーバコンピュータである。気象予報データは、公的機関または民間気象会社により提供される。気象データサーバ31は、機械学習装置100からの要求に応じて気象予報データを機械学習装置100に送信する。気象予報データは、現在日以降の屋外の予報気温および予報日射量を含む。予報気温および予報日射量は、1時間毎の数値であることが好ましい。数値は、翌日の午前6時の気温および日射量といった日単位の予報でもよいし、翌週の午前6時の平均気温および平均日射量といった週単位の予報でもよいし、翌月の午前6時の平均気温および平均日射量といった月単位の予報でもよい。
【0038】
機械学習装置100は、機械学習により予測モデルを生成し、予測モデルを用いてパプリカの収穫日および収穫数を予測するコンピュータである。機械学習装置100は、過年度(例えば、前年度)における個々の標本果実の着果日および収穫日を示す標本データを収集する。また、機械学習装置100は、センサ23によって測定された気温および日射量を示す気象データを収集する。機械学習装置100は、標本データおよび気象データを用いて、パプリカの着果から収穫までに要する所要日数を、着果から収穫までの間の気温および日射量から予測する予測モデルを生成する。
【0039】
機械学習装置100は、標本栽培エリア21において今年度のパプリカの着果が観測されてから収穫時期になる前に、予測モデルを用いて所要日数を予測する。このとき、機械学習装置100は、気象データサーバ31から気象予報データを受信する。予測モデルの入力に対応する気温および日射量は、予測日以前の期間についてはセンサ23で測定されたものを使用し、予測日以降の期間については気象予報データのものを使用する。機械学習装置100は、標本果実の着果日および着果数と、予測モデルが出力する所要日数と、標本果実の割合(0.1%)から、パプリカの収穫日および収穫数を予測する。
【0040】
なお、機械学習装置100は、クライアントコンピュータでもよいしサーバコンピュータでもよい。また、機械学習装置100は、農家が所有するコンピュータでもよいし、データセンタなど情報処理事業者が所有するコンピュータでもよい。機械学習装置100を農家が所有している場合、例えば、機械学習装置100は、広域データ通信ネットワークを介さずにセンサ23から気象データを受信し、農家のユーザから標本データの入力を受け付ける。機械学習装置100を農家が所有していない場合、例えば、機械学習装置100は、農家が所有する端末装置から、広域データ通信ネットワークを介して気象データおよび標本データを受信する。また、第2の実施の形態では、機械学習装置100が予測モデルの生成と予測モデルを用いた収穫予測の両方を行っているが、両者を異なるコンピュータが行うようにしてもよい。例えば、サーバコンピュータが予測モデルを生成し、クライアントコンピュータが予測モデルを用いて収穫予測を行ってもよい。
【0041】
図3は、機械学習装置のハードウェア例を示す図である。
機械学習装置100は、CPU101、RAM102、HDD103、画像インタフェース104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。上記ユニットはバスに接続されている。CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。気象データサーバ31なども同様のハードウェアを有する。
【0042】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、機械学習装置100は複数のプロセッサを備えてもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0043】
RAM102は、CPU101が実行するプログラムやCPU101が演算に使用するデータを一時的に記憶する揮発性の半導体メモリである。なお、機械学習装置100は、RAM以外の種類のメモリを備えてもよく、複数のメモリを備えてもよい。
【0044】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性ストレージである。なお、機械学習装置100は、フラッシュメモリやSSD(Solid State Drive)など他の種類のストレージを備えてもよく、複数のストレージを備えてもよい。
【0045】
画像インタフェース104は、CPU101からの命令に従って、機械学習装置100に接続された表示装置111に画像を出力する。表示装置111として、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイ、プロジェクタなど、任意の種類の表示装置を使用することができる。また、機械学習装置100に、プリンタなど表示装置111以外の出力デバイスが接続されてもよい。
【0046】
入力インタフェース105は、機械学習装置100に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112として、マウス、タッチパネル、タッチパッド、キーボードなど、任意の種類の入力デバイスを使用することができる。また、機械学習装置100に複数種類の入力デバイスが接続されてもよい。
【0047】
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、半導体メモリなど、任意の種類の記録媒体を使用することができる。媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0048】
通信インタフェース107は、ネットワーク30に接続され、気象データサーバ31など他の情報処理装置と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【0049】
次に、予測モデルを用いた収穫予測の方法について説明する。なお、第2の実施の形態では、着果の観測および収穫の管理は週単位で行うものとする。そこで、標本データの着果日および収穫日は1週間のうちの特定の曜日の日付である。また、予測モデルが出力する所要日数は週数を示し、予測収穫日は1週間のうちの特定の曜日の日付となる。
【0050】
図4は、収穫予測のデータフローの例を示す図である。
ある日に1以上の標本果実の着果が観測されると、標本データとして着果日211および標本着果数212が採取される。着果日211は農家が着果を観測した日であり、標本着果数212はその日に着果した標本果実の個数である。例えば、着果日211が10月23日であり、標本着果数212が5個である。
【0051】
すると、着果日211から収穫時期までの期間について、説明変数としてビニールハウス20の屋内の平均気温213および平均日射量214が算出される。平均気温213および平均日射量214は、それぞれ1時間毎の数値である。よって、説明変数は48次元のベクトルとなる。なお、第2の実施の形態では、説明変数として平均気温および平均日射量を使用しているが、累積気温や累積日射量など他の指標とすることも可能である。
【0052】
平均気温213および平均日射量214は以下のように算出される。着果日から予測日の前日までの期間については、センサ23により測定されたビニールハウス20の屋内の測定気温221および測定日射量222が使用される。予測日から収穫時期までの期間については、気象予報データの予報気温223および予報日射量224が使用される。
【0053】
ただし、予報気温223および予報日射量224は、屋外の気温および日射量である。そこで、環境パラメータ227を用いて、予報気温223がビニールハウス20の屋内の予想気温225に変換され、予報日射量224がビニールハウス20の屋内の予想日射量226に変換される。環境パラメータ227は、屋外の気温と屋内の気温の関係、および、屋外の日射量と屋内の日射量の関係を示す。例えば、環境パラメータ227は、屋外の気温を屋内の気温に変換する一次式と、屋外の日射量を屋内の日射量に変換する一次式とを含む。環境パラメータ227は予め用意されている。環境パラメータ227は、ビニールハウス毎に個別に調整された個別パラメータであってもよいし、様々なビニールハウスに共通に適用される汎用パラメータであってもよい。
【0054】
測定気温221および予想気温225が平均化されて平均気温213が算出され、測定日射量222および予想日射量226が平均化されて平均日射量214が算出される。すると、予め生成された予測モデル210に平均気温213および平均日射量214が入力され、予測モデル210から所要日数215が出力される。所要日数215は、着果から収穫までの日数の予測である。着果日211に所要日数215を加えることで、収穫日216が算出される。収穫日216は、着果日211に着果した果実の好適な収穫日の予測である。例えば、所要日数215が8週間であり、収穫日216が12月18日である。
【0055】
また、標本着果数212から標本収穫数217が算出される。標本収穫数217は、着果日211に観測された標本果実のうち、収穫日216に収穫される標本果実の個数の予測である。ここでは、予測モデル210が所要日数215として所要日数の期待値を出力することを想定しているため、標本収穫数217は標本着果数212と同じである。例えば、標本収穫数217は5個である。ただし、後述するように、所要日数の確率分布を出力する予測モデルを生成することもできる。その場合、標本収穫数217は、所要日数毎の標本果実の個数を示す。所要日数毎の標本果実の個数は、標本着果数212に所要日数毎の確率を乗ずることで算出することができる。
【0056】
そして、標本収穫数217が収穫数218に変換される。収穫数218は、着果日211に着果したと予測される果実であって、収穫日216に収穫される果実の個数の予測である。着果日211に着果したと予測される果実には、観測された標本果実とそれ以外の果実とが含まれる。収穫数218は、標本収穫数217と標本割合219から算出される。標本割合219は、果実全体に対する標本果実の割合である。収穫数218は、標本収穫数217を標本割合219で割る、すなわち、標本収穫数217に標本割合219の逆数を乗ずることで算出できる。例えば、標本割合219が0.1%であり、収穫数218が500個÷0.1%=500個×1,000=5,000個である。
【0057】
このようにして、着果日211に着果した果実について、収穫日216に収穫数218の果実が収穫されると予測される。例えば、10月23日に着果した果実について、12月18日に5,000個の果実が収穫されると予測される。異なる着果日の予測を合算することで、全体の収穫日および収穫数を予測することが可能である。
【0058】
ただし、パプリカは成長の個体差が大きいため、実際には着果日が同じでも収穫日にばらつきが生じる。このため、所要日数の期待値を出力する予測モデル210を使用すると、全体の収穫日および収穫数の予測が実情から乖離するおそれがある。
【0059】
図5は、期待値を出力する予測モデルの使用例を示す図である。
異なる着果日に標本着果数231,232,233が測定されたとする。標本着果数231は、10月23日に着果が観測された5個の標本果実を示す。標本着果数232は、10月30日に着果が観測された3個の標本果実を示す。標本着果数233は、11月6日に着果が観測された4個の標本果実を示す。
【0060】
標本着果数231,232,233それぞれに対して所要日数が予測される。ここでは、所要日数の期待値を出力する予測モデルを使用するものとする。すると、標本着果数231に対して、10月23日以降の平均気温および平均日射量から所要日数の期待値が算出される。標本着果数232に対して、10月30日以降の平均気温および平均日射量から所要日数の期待値が算出される。標本着果数233に対して、11月6日以降の平均気温および平均日射量から所要日数の期待値が算出される。異なる着果日に対しては異なる平均気温および平均日射量が使用されるため、異なる所要日数の期待値が算出され得る。ここでは、標本着果数231に対する所要日数が8週間、標本着果数232に対する所要日数が7週間、標本着果数233に対する所要日数が6週間である。
【0061】
すると、標本収穫数234,235,236が予測される。標本収穫数234は、10月23日から8週間後の12月18日に収穫が予測される5個の標本果実を示す。標本収穫数235は、10月30日から7週間後の12月18日に収穫が予測される3個の標本果実を示す。標本収穫数236は、11月6日から6週間後の12月18日に収穫が予測される4個の標本果実を示す。標本収穫数234,235,236を合計すると、12月11日に0個の標本果実が収穫され、12月18日に12個の標本果実が収穫され、12月25日0個の標本果実が収穫されるという予測になる。
【0062】
標本割合=0.1%を用いてこれらの標本収穫数を全体の収穫数に変換すると、収穫数237,238,239が予測される。収穫数237は、12月11日に収穫が予測される0個の果実を示す。収穫数238は、12月18日に収穫が予測される12,000個の果実を示す。収穫数239は、12月25日に収穫が予測される0個の果実を示す。このように、所要日数の期待値を出力する予測モデルを使用すると、特定の収穫日に収穫数が集中するという予測になることがある。しかし、実際には個体差により収穫日にばらつきが生じるため、収穫数237,238,239の信頼度は低い。そこで、所要日数の期待値ではなく所要日数の確率分布を出力する予測モデルを使用する。
【0063】
図6は、確率分布を出力する予測モデルの使用例を示す図である。
標本着果数231,232,233それぞれに対して所要日数の確率分布が予測される。標本着果数231に対して、10月23日以降の平均気温および平均日射量から所要日数の確率分布が算出される。標本着果数232に対して、10月30日以降の平均気温および平均日射量から所要日数の確率分布が算出される。標本着果数233に対して、11月6日以降の平均気温および平均日射量から所要日数の確率分布が算出される。
【0064】
異なる着果日に対しては異なる平均気温および平均日射量が使用されるため、異なる所要日数の確率分布が算出され得る。ここでは、標本着果数231に対する確率分布は、7週間が30%、8週間が50%、9週間が20%である。標本着果数232に対する確率分布は、6週間が30%、7週間が50%、8週間が20%である。標本着果数233に対する確率分布は、5週間が30%、6週間が50%、7週間が20%である。
【0065】
すると、10月23日の標本着果数231に対して標本収穫数241,242,243という分布が予測される。標本収穫数241は、12月11日に収穫が予測される5個×30%=1.5個の標本果実を示す。標本収穫数242は、12月18日に収穫が予測される5個×50%=1.5個の標本果実を示す。標本収穫数243は、12月25日に収穫が予測される5個×20%=1.0個の標本果実を示す。
【0066】
同様にして、10月30日の標本着果数232に対して標本収穫数244,245,246という分布が予測される。標本収穫数244は、12月11日に収穫が予測される3個×30%=0.9個の標本果実を示す。標本収穫数245は、12月18日に収穫が予測される3個×50%=1.5個の標本果実を示す。標本収穫数246は、12月25日に収穫が予測される3個×20%=0.6個の標本果実を示す。
【0067】
また、11月6日の標本着果数233に対して標本収穫数247,248,249という分布が予測される。標本収穫数247は、12月11日に収穫が予測される4個×30%=1.2個の標本果実を示す。標本収穫数248は、12月18日に収穫が予測される4個×50%=2.0個の標本果実を示す。標本収穫数249は、12月25日に収穫が予測される4個×20%=0.8個の標本果実を示す。
【0068】
標本収穫数241,244,247を合計すると、12月11日に3.6個の標本果実が収穫されるという予測になる。標本収穫数242,246,248を合計すると、12月18日に6.0個の標本果実が収穫されるという予測になる。標本収穫数243,246,249を合計すると、12月25日に2.4個の標本果実が収穫されるという予測になる。標本割合=0.1%を用いてこれらの標本収穫数を全体の収穫数に変換すると、収穫数251,252,253が予測される。収穫数251は、12月11日に収穫が予測される3,600個の果実を示す。収穫数252は、12月18日に収穫が予測される6,000個の果実を示す。収穫数253は、12月25日に収穫が予測される2,400個の果実を示す。このように、確率分布を出力する予測モデルを使用することで、収穫日のばらつきを表現でき、収穫数251,252,253の信頼度が高くなる。
【0069】
ここで、所要日数の確率分布を出力する予測モデルを、どの様に学習すればよいかが問題となる。典型的な機械学習は、訓練データを用いて予測モデルの出力の誤差を評価し、誤差が小さくなるように予測モデルの係数を更新することを繰り返す。予測モデルには、GPモデル、重回帰モデル、ニューラルネットワークなど様々な機械学習モデルを使用できる。イテレーション回数が少ないうちは、予測モデルの出力の誤差が大きく訓練データに対するフィッティング精度が低い。イテレーション回数が多くなるほど、予測モデルの出力の誤差が小さくなり訓練データに対するフィッティング精度が高くなる。訓練データに対する誤差が十分に小さくなるまで上記を繰り返すことが多い。
【0070】
一方で、農作物の収穫予測の場合、個々の標本果実の観察および追跡は農家の負担が大きいため、標本果実は少数に限られており機械学習に使用できる訓練データは少量になる。また、パプリカは成長の個体差が大きいこともあり、これら少数の標本果実の所要日数は収穫果実全体の所要日数のばらつきを正確に表現しているわけではない。このため、訓練データに対する誤差が十分に小さくなるまでイテレーション回数を増やすと、予測モデルが訓練データに過度にフィッティングする過学習が発生しやすい。少量の訓練データから過学習された予測モデルは、分散が過度に小さい確率分布を出力する。その結果、予測モデルが出力する確率分布の信頼度が低下してしまう。
【0071】
図7は、学習不足の予測モデルの使用例を示す図である。
イテレーション回数が少ない初期段階の予測モデルを考える。学習不足の予測モデルが出力する確率分布は、所要日数を十分に絞り込めておらず分散が大きい。
【0072】
10月23日の着果に対して、予測モデルは7週間が33%、8週間が33%、9週間が33%という確率分布を出力する。すると、標本着果数231が5個であるため、12月11日に1.7個、12月18日に1.7個、12月25日に1.7個という標本収穫数が予測される。同様に、10月30日の着果に対して、予測モデルは6週間が33%、7週間が33%、8週間が33%という確率分布を出力する。すると、標本着果数232が3個であるため、12月11日に1.0個、12月18日に1.0個、12月25日に1.0個という標本収穫数が予測される。11月6日の着果に対して、予測モデルは5週間が33%、6週間が33%、7週間が33%という確率分布を出力する。すると、標本着果数233が4個であるため、12月11日に1.3個、12月18日に1.3個、12月25日に1.3個という標本収穫数が予測される。
【0073】
上記の標本収穫数を収穫日毎に合計すると、12月11日は4.0個、12月18日は4.0個、12月25日は4.0個と算出される。標本割合=0.1%を用いると、全体の収穫数254,255,256が予測される。収穫数254は、12月11日の収穫数として4,000個を示す。収穫数255は、12月18日の収穫数として4,000個を示す。収穫数255は、12月25日の収穫数として4,000個を示す。
【0074】
このように、学習不足の予測モデルを使用すると、確率分布の分散が過度に大きくなり所要日数が適切に絞り込まれない。その結果、予測される収穫数254,255,256が過度にばらつくことになり信頼度が低下してしまう。
【0075】
図8は、過学習した予測モデルの使用例を示す図である。
イテレーション回数が多く過学習された予測モデルを考える。過学習された予測モデルが出力する確率分布は、訓練データが示す所要日数に適合し過ぎており分散が小さい。
【0076】
10月23日の着果に対して、予測モデルは7週間が0%、8週間が100%、9週間が0%という確率分布を出力する。すると、標本着果数231が5個であるため、12月11日に0個、12月18日に5個、12月25日に0個という標本収穫数が予測される。10月30日の着果に対して、予測モデルは6週間が0%、7週間が100%、8週間が0%という確率分布を出力する。すると、標本着果数232が3個であるため、12月11日に0個、12月18日に3個、12月25日に0個という標本収穫数が予測される。11月6日の着果に対して、予測モデルは5週間が0%、6週間が100%、7週間が0%という確率分布を出力する。すると、標本着果数233が4個であるため、12月11日に0個、12月18日に4個、12月25日に0個という標本収穫数が予測される。
【0077】
上記の標本収穫数を収穫日毎に合計すると、12月11日は0個、12月18日は12個、12月25日は0個と算出される。標本割合=0.1%を用いると、全体の収穫数257,258,259が予測される。収穫数257は、12月11日の収穫数として0個を示す。収穫数258は、12月18日の収穫数として12,000個を示す。収穫数259は、12月25日の収穫数として0個を示す。
【0078】
上記の例では、収穫数257,258,259は、
図5に示した収穫数237,238,239と同一になっている。すなわち、確率分布を出力する予測モデルを使用しても、過学習により分散が過度に小さくなってしまうと、結果的に期待値を出力する予測モデルに近い予測結果が得られることになり予測結果の信頼度が向上しない。
【0079】
予測モデルが出力する確率分布の分散は、機械学習のイテレーション回数の増加に応じて小さくなる。そのため、機械学習のイテレーションを適切な回数で停止することで、確率分布の分散を適切な大きさに誘導することができる。そこで、機械学習のイテレーションを何れのタイミングで停止すればよいかが問題となる。
【0080】
ここで、過年度のパプリカの栽培について、着果から収穫までの所要日数の実績を示す標本データは、少数の標本果実についてのみ収集される一方、収穫日毎の全体の収穫数の実績を示す総数データは、出荷管理のために農業機械などを用いて収集されている。そこで、機械学習装置100は、予測モデルの係数を更新するイテレーション毎に、そのときの予測モデルと訓練データと標本割合から過年度の全体の収穫数を予測し、予測と総数データが示す実績とを比較して、イテレーションを停止するタイミングを判定する。全体の収穫数は、訓練データに対して
図6と同様の方法を適用することで予測できる。
【0081】
予測モデルが出力する確率分布の分散が過度に大きい場合、全体の収穫数の予測は実績と類似しない可能性が高い。また、予測モデルが出力する確率分布の分散が過度に小さい場合も、全体の収穫数の予測は実績と類似しない可能性が高い。一方、予測モデルが出力する確率分布の分散が実際の収穫日のばらつきを反映して最適である場合、全体の収穫数の予測と実績との間の類似度が最大になる可能性が高い。そのため、機械学習装置100は、類似度が最大になったときの予測モデルを学習結果として採用する。
【0082】
図9は、機械学習の停止タイミング例を示す図である。
イテレーション回数の増加に応じて、特定の平均気温および平均日射量に対して予測モデルが出力する確率分布は、確率分布261,262,263のように変化する。
【0083】
確率分布261は、学習不足の予測モデルから出力されるものであり、
図7の予測モデルに対応する。すなわち、確率分布261の分散は過度に大きい。確率分布262は、最適な予測モデルから出力されたものであり、
図6の予測モデルに対応する。すなわち、確率分布262の分散はパプリカの収穫日のばらつきを反映して最適である。確率分布263は、過学習された予測モデルから出力されたものであり、
図8の予測モデルに対応する。すなわち、確率分布263の分散は過度に小さい。
【0084】
機械学習装置100は、予測モデルが確率分布261を出力するとき、訓練データから
図7と同様の方法で収穫数分布264を予測する。収穫数分布264は、収穫日毎の全体の収穫数の予測を示す。収穫数分布264は、収穫数254,255,256に相当する。すなわち、機械学習装置100は、訓練データのレコード毎に、平均気温および平均日射量を予測モデルに入力して収穫数の確率分布を算出し、確率分布に標本着果数を乗じて収穫日毎の標本収穫数を算出する。機械学習装置100は、訓練データのレコード毎の予測を合計し、標本割合の逆数を乗じて収穫日毎の収穫数を算出する。
【0085】
収穫数分布264が予測されると、機械学習装置100は、収穫数分布264と収穫数分布267とを比較して誤差(総数誤差)を算出する。収穫数分布267は、訓練データと同じ年度の収穫状況であって、収穫日毎の全体の収穫数の実績を示す。収穫数分布267は、12月11の収穫数が3,700個、12月18日の収穫数が5,800個、12月25日の収穫数が2,500個であることを示す。総数誤差の指標として、例えば、残差平方和を用いる。残差平方和は、収穫日毎に予測と実績の間で収穫数の差の二乗を算出し、差の二乗を合計した数値である。収穫数分布264と収穫数分布267の残差平方和は、5,580,000である。よって、総数誤差は大きい。
【0086】
次に、機械学習装置100は、予測モデルが確率分布262を出力するとき、訓練データから
図6と同様の方法で収穫数分布265を予測する。収穫数分布265は、収穫数251,252,253に相当する。収穫数分布265が予測されると、機械学習装置100は、収穫数分布265と収穫数分布267とを比較して総数誤差を算出する。収穫数分布265と収穫数分布267の残差平方和は、60,000である。よって、総数誤差は予測モデルが確率分布261を出力するときよりも小さい。
【0087】
次に、機械学習装置100は、予測モデルが確率分布263を出力するとき、訓練データから
図8と同様の方法で収穫数分布266を予測する。収穫数分布266は、収穫数257,258,259に相当する。収穫数分布266が予測されると、機械学習装置100は、収穫数分布266と収穫数分布267とを比較して総数誤差を算出する。収穫数分布266と収穫数分布267の残差平方和は、58,380,000である。よって、総数誤差は予測モデルが確率分布262を出力するときよりも大きい。
【0088】
このようにして、機械学習装置100は、予測モデルが確率分布262を出力するときに総数誤差が最小になった、すなわち、類似度が最大になったことを検出する。すると、機械学習装置100は、機械学習のイテレーションを停止し、確率分布262を出力する予測モデルを学習結果として出力する。
【0089】
図10は、機械学習のデータフローの例を示す図である。
予測モデル270の生成に使用する訓練データは、着果日の異なる複数のレコードを含む。訓練データの各レコードは、着果日271、標本着果数272、標本日数分布273、平均気温277および平均日射量278を含む。標本日数分布273は、所要日数毎の標本収穫数を示す。標本日数分布273は、個数で表現されていてもよいし、個数を標本着果数272で割った確率で表現されていてもよい。例えば、標本日数分布273は、7週間が40%、8週間が60%、9週間が0%であることを示す。
【0090】
平均気温277は、1時間毎の屋内の気温であって着果日271から収穫日までの期間で平均化したものである。平均日射量278は、1時間毎の屋内の日射量であって着果日271から収穫日までの期間で平均化したものである。よって、平均気温277および平均日射量278はそれぞれ24次元のベクトルであり、合わせて48次元のベクトルになる。平均気温277は、センサ23によって測定された測定気温275から算出される。平均日射量278は、センサ23によって測定された測定日射量276から算出される。訓練データは過年度の標本果実を示しているため、着果日271から収穫日までの測定気温275および測定日射量276は既知であり、気象予報データは使用しなくてよい。
【0091】
また、訓練データとは別に収穫数274を示す総数データが予め用意される。収穫数274は、収穫日毎の収穫数の実績である。例えば、収穫数274は、12月11日に3,700個の果実が収穫され、12月18日に5,800個の果実が収穫され、12月25日に2,500個の果実が収穫されたことを示す。
【0092】
機械学習が開始されると、予測モデル270の係数が初期化される。訓練データのレコード毎に、予測モデル270に平均気温277および平均日射量278が入力され、予測モデル270から所要日数分布281が出力される。所要日数分布281は、所要日数毎の収穫確率の予測を示す。例えば、所要日数分布281は、7週間が33%、8週間が33%、9週間が33%であることを示す。訓練データのレコード毎に、所要日数分布281と標本日数分布273が比較されて誤差が算出される。そして、訓練データのレコード毎の誤差が合算されて、訓練データ全体に対するモデル誤差282が算出される。
【0093】
訓練データのレコード毎の誤差には、例えば、残差平方和を用いる。この残差平方和は、所要日数毎に所要日数分布281の値と標本日数分布273の値の差を二乗し、複数の所要日数について差の二乗を合計した指標である。所要日数分布281と標本日数分布273の比較は、33%と40%の比較など確率同士の比較として行ってもよい。また、所要日数分布281と標本日数分布273の比較は、確率に標本着果数272を乗ずることで、1.7個と2個の比較など個数同士の比較として行ってもよい。
【0094】
モデル誤差282が算出されると、モデル誤差282が小さくなるように予測モデル270の係数が更新される。予測モデル270の係数を更新する際には、1つ前の係数を退避しておく。以上の予測モデル270の更新からモデル誤差282の算出までが1回のイテレーションである。下記の停止判定によってイテレーションの停止が決定されるまで予測モデル270の更新が繰り返される。停止判定はイテレーション毎に実行される。停止判定は、予測モデル270が所要日数分布281を出力してから予測モデル270が次に更新されるまでの間に、イテレーションを中断して実行してもよい。また、上記のイテレーションと並列に停止判定を実行してもよい。異なるプロセッサまたはプロセッサコアを用いて、イテレーションと停止判定を並列実行してもよい。
【0095】
所要日数分布281が算出されると、訓練データのレコード毎に、収穫確率に標本着果数272を乗じて標本収穫数283が算出される。標本収穫数283は、所要日数毎の標本果実の収穫数の予測を示す。例えば、標本収穫数283は、5個の標本果実のうち、7週間が1.7個、8週間が1.7個、9週間が1.7個であることを示す。
【0096】
訓練データのレコード毎の標本収穫数283の所要日数が、着果日271に基づいて、収穫日が揃うようにシフトされる。例えば、10月23日の7週間後は10月30日の6週間後に相当するため、着果日271が10月30日であるレコードに対応する標本収穫数283は、着果日271が10月23日であるレコードに対応する標本収穫数283に対して1週間後ろにシフトされる。訓練データの複数のレコードについて、収穫日が揃った標本収穫数283が収穫日毎に合算される。
【0097】
そして、合算された標本収穫数に標本割合284の逆数を乗じて(標本割合284で割って)収穫数285が算出される。例えば、合算された標本収穫数が1,000倍される。収穫数285は、収穫日毎の果実全体の収穫数の予測を示す。例えば、収穫数285は、12月11日に4,000個の果実が収穫され、12月18日に4,000個の果実が収穫され、12月25日に4,000個の果実が収穫されるという予測を示す。
【0098】
収穫数285が算出されると、収穫数285と収穫数274とが比較されて総数誤差286が算出される。総数誤差286には、例えば、残差平方和を用いる。そして、前回のイテレーションの総数誤差286と今回のイテレーションの総数誤差286とが比較される。今回の総数誤差286が前回の総数誤差286以下であれば、イテレーションの継続が決定される。この場合、モデル誤差282に応じて予測モデル270が更新される。
【0099】
一方、今回の総数誤差286が前回の総数誤差286より大きければ、イテレーションの停止が決定される。この場合、予測モデル270は更新されない。最適な予測モデル270の係数は前回のイテレーションの係数であるため、退避しておいた予測モデル270の係数が読み出され、学習結果として出力される。すなわち、収穫数274と収穫数285の類似度が最大になり、総数誤差286が最小になったことが検出される。ここでは、最適な予測モデル270の係数に到達する前は総数誤差286が単調に減少し、最適な予測モデル270の係数に到達した後は総数誤差286が単調に増加すると仮定している。
【0100】
次に、機械学習装置100の機能について説明する。
図11は、機械学習装置の機能例を示すブロック図である。
機械学習装置100は、気象データ記憶部121、標本データ記憶部122、総数データ記憶部123、予測モデル記憶部124、データ収集部125、データ加工部126、機械学習部127、イテレーション制御部128および収穫予測部129を有する。気象データ記憶部121、標本データ記憶部122、総数データ記憶部123および予測モデル記憶部124は、例えば、RAM102またはHDD103の記憶領域を用いて実現される。データ収集部125、データ加工部126、機械学習部127、イテレーション制御部128および収穫予測部129は、例えば、プログラムを用いて実現される。
【0101】
気象データ記憶部121は、過年度の着果日から収穫日までの気象データと、今年度の着果日から予測日の前日までの気象データを記憶する。気象データは、センサ23によって測定された測定気温および測定日射量を含む。また、気象データ記憶部121は、今年度の予測日以降の気象予報データを記憶する。気象予報データは、気象データサーバ31から収集される。気象予報データは、屋外の予報気温および予報日射量を含む。また、気象データ記憶部121は、屋外の予報気温および予報日射量を、屋内の予想気温および予想日射量に変換するための環境パラメータを記憶する。
【0102】
標本データ記憶部122は、過年度の標本果実毎の着果日および収穫日を示す標本データと、今年度の標本果実毎の着果日を示す標本データを記憶する。また、標本データ記憶部122は、全体の果実に対する標本果実の割合である標本割合を記憶する。
【0103】
総数データ記憶部123は、過年度の収穫日毎の収穫数を示す総数データを記憶する。
予測モデル記憶部124は、学習結果としての予測モデルを記憶する。
データ収集部125は、気象データ記憶部121、標本データ記憶部122および総数データ記憶部123に記憶される各種のデータを収集する。データの収集方法として、データ収集部125は、ユーザからデータの入力を受け付けることがある。また、データ収集部125は、他の情報処理装置からデータを受信することがある。
【0104】
データ加工部126は、気象データ記憶部121に記憶された過年度の気象データと、標本データ記憶部122に記憶された過年度の標本データを加工して、着果日が異なる複数のレコードを含む訓練データを生成する。具体的には、データ加工部126は、過年度の標本データから着果日を抽出し、着果日毎に標本着果数をカウントし、着果日毎に着果日と収穫日の差から標本日数分布を算出する。また、データ加工部126は、過年度の気象データから、着果日毎に着果日から収穫日までの測定気温および測定日射量を抽出し、1時間毎の平均気温および平均日射量を算出する。
【0105】
また、データ加工部126は、気象データ記憶部121に記憶された今年度の気象データおよび気象予報データと、標本データ記憶部122に記憶された今年度の標本データを加工して、収穫予測用の入力データを生成する。具体的には、データ加工部126は、今年度の標本データから着果日を抽出し、着果日毎に標本着果数をカウントする。また、データ加工部126は、今年度の気象データから、着果日毎に着果日から予測日の前日までの測定気温および測定日射量を抽出する。データ加工部126は、気象予報データから、予測日から収穫時期までの予報気温および予報日射量を抽出し、気象データ記憶部121に記憶された環境パラメータを用いて、屋内の予想気温および予想日射量に変換する。そして、データ加工部126は、着果日毎に着果日から収穫時期までの通算の1時間毎の平均気温および平均日射量を算出する。
【0106】
データ加工部126は、訓練データを機械学習部127に提供する。また、データ加工部126は、総数データ記憶部123に記憶された総数データをイテレーション制御部128に提供する。データ加工部126は、入力データを収穫予測部129に提供する。
【0107】
機械学習部127は、異なる着果日についての複数のレコードを含む訓練データを用いて機械学習を行う。使用する機械学習アルゴリズムは予め指定されている。生成される予測モデルは、着果から収穫までの所要日数の確率分布を出力する。機械学習部127は、予測モデルの係数を更新して訓練データに対するモデル誤差を算出することを繰り返す。機械学習部127は、イテレーション制御部128からイテレーションの停止が指示されると、1つ前の予測モデルを予測モデル記憶部124に出力する。
【0108】
イテレーション制御部128は、機械学習部127が予測モデルを更新する毎に、予測モデルが出力する所要日数分布と標本着果数と標本割合から、過年度の収穫日毎の全体の収穫数を予測し、総数データが示す実績と比較する。イテレーション制御部128は、全体の収穫数の予測と実績の間の総数誤差を算出し、総数誤差が前回より増えている場合、イテレーションを停止するよう機械学習部127に指示する。
【0109】
収穫予測部129は、予測モデル記憶部124に記憶された予測モデルとデータ加工部126から提供される入力データに基づいて、今年度の収穫日毎の収穫数を予測する。具体的には、収穫予測部129は、今年度の平均気温および平均日射量を予測モデルに入力し、着果日毎の所要日数分布を予測する。収穫予測部129は、着果日に所要日数を加えて収穫日を算出すると共に、所要日数分布が示す確率に標本着果数を乗じて標本収穫数を算出し、標本割合の逆数を乗じて収穫数に変換する。収穫予測部129は、異なる着果日の収穫数を収穫日毎に合算し、収穫日毎の全体の収穫数を予測する。
【0110】
収穫予測部129は、収穫日毎の全体の収穫数の予測結果を出力する。例えば、収穫予測部129は、表示装置111に予測結果を表示する。また、例えば、収穫予測部129は、HDD103などの不揮発性ストレージに予測結果を保存する。また、例えば、収穫予測部129は、プリンタなどの他の出力デバイスに予測結果を出力する。また、例えば、収穫予測部129は、他の情報処理装置に予測結果を送信する。
【0111】
図12は、気象データと標本データと総数データのテーブル例を示す図である。
気象データテーブル131は、気象データ記憶部121に記憶される。気象データテーブル131は、過年度の気象データを含む。今年度の気象データや気象予報データも、気象データテーブル131と同様のテーブルで管理することが可能である。気象データテーブル131は、日時、気温および日射量の項目を含む。日時は、1時間刻みである。気温は、気温の1時間の平均である。気温の単位は、例えば、℃である。日射量は、瞬間日射量の1時間の平均である。日射量の単位は、例えば、kW/m
2である。
【0112】
標本データテーブル132は、標本データ記憶部122に記憶される。標本データテーブル132は、過年度の標本データを含む。今年度の標本データも、標本データテーブル132と同様のテーブルで管理することが可能である。ただし、今年度の標本データについては収穫日は登録されない。標本データテーブル132は、品種、果実番号、着果日および収穫日の項目を含む。品種は、パプリカの品種であり、果実の色が異なる赤品種と黄品種と橙品種を含む。収穫予測は品種毎に行われる。果実番号は、標本果実を個々に識別する識別番号である。同じ品種の中で一意な果実番号が標本果実に付与される。着果日は、標本果実の着果が観測された日である。収穫日は、標本果実を収穫した日である。ただし、データ管理の都合上、着果日および収穫日は1週間の中の特定の曜日の日付である。
【0113】
総数データテーブル133は、総数データ記憶部123に記憶される。総数データテーブル133は、過年度の総数データを含む。総数データテーブル133は、収穫日、赤個数、黄個数および橙個数の項目を含む。収穫日は、果実を収穫した日である。ただし、データ管理の都合上、収穫日は1週間の中の特定の曜日の日付である。赤個数は、赤品種の収穫数である。黄個数は、黄品種の収穫数である。橙個数は、橙品種の収穫数である。
【0114】
図13は、訓練データテーブルの例を示す図である。
訓練データテーブル134は、気象データテーブル131および標本データテーブル132に基づいて生成され、機械学習に使用される。訓練データテーブル134は、着果日、標本着果数、目的変数および説明変数の項目を含む。着果日は、標本データテーブル132に出現する着果日である。標本着果数は、標本データテーブル132に登録された標本果実のうち着果日が同じ標本果実の個数である。
【0115】
目的変数は、標本日数分布である。標本日数分布は、6週間が0個、7週間が2個、8週間が3個のように、所要日数毎の標本果実の個数である。所要日数は、標本データテーブル132の着果日と収穫日の差である。所要日数毎の標本果実は、標本データテーブル132に登録された標本果実のうち所要日数が同じ標本果実である。所要日数毎の標本果実の個数の合計は、標本着果数に一致する。
【0116】
説明変数は、1時間毎の平均気温および1時間毎の平均日射量を含む。1時間毎の平均気温は、着果日から収穫日までの各日付の気温を気象データテーブル131から抽出し、0時、1時、2時、…のように時刻で分類して平均化することで算出される。1時間毎の平均日射量は、着果日から収穫日までの各日付の日射量を気象データテーブル131から抽出し、0時、1時、2時、…のように時刻で分類して平均化することで算出される。なお、ある着果日に対応する収穫日は、標本日数分布で1以上の標本果実が収穫された収穫日のうち、最後の収穫日でもよいし最初の収穫日でもよいし中心の収穫日でもよい。
【0117】
次に、機械学習装置100の処理手順について説明する。
図14は、機械学習の手順例を示すフローチャートである。
(S10)データ収集部125は、気象データと標本データと総数データを収集する。機械学習は品種毎に行う。ただし、品種を予測モデルの説明変数に加えてもよい。
【0118】
(S11)データ加工部126は、標本データから着果日を抽出し、標本果実を着果日で分類する。データ加工部126は、着果日毎に標本果実をカウントして訓練データの標本着果数とする。また、データ加工部126は、着果日と収穫日の差である所要日数を算出し、各所要日数の標本果実をカウントして訓練データの標本日数分布とする。
【0119】
(S12)データ加工部126は、着果日毎に気象データから、着果日から収穫日までの気温および日射量を抽出する。データ加工部126は、抽出した気温を時刻で分類し、各時刻の気温の平均を訓練データの平均気温とする。また、データ加工部126は、抽出した日射量を時刻で分類し、各時刻の日射量の平均を訓練データの平均日射量とする。
【0120】
(S13)機械学習部127は、予測モデルの係数を初期化する。
(S14)機械学習部127は、訓練データのレコードを1つ選択する。
(S15)機械学習部127は、平均気温および平均日射量を示す48次元の説明変数のデータを予測モデルに入力し、予測モデルから目的変数のデータを読み出すことで所要日数分布を予測する。所要日数分布は、所要日数毎の確率を示す。
【0121】
(S16)機械学習部127は、ステップS14で訓練データの全てのレコードを選択したか判断する。全てのレコードを選択した場合はステップS17に進み、訓練データに未選択のレコードがある場合はステップS14に戻る。
【0122】
(S17)機械学習部127は、訓練データのレコード毎に、ステップS15で予測された所要日数分布と標本日数分布とを比較して誤差を算出する。誤差は、例えば、残差平方和である。機械学習部127は、訓練データ全体に対するモデル誤差を算出する。例えば、モデル誤差は、訓練データのレコード毎の誤差の合計である。
【0123】
図15は、機械学習の手順例を示すフローチャート(続き)である。
(S18)イテレーション制御部128は、訓練データのレコードを1つ選択する。
(S19)イテレーション制御部128は、ステップS15で機械学習部127が算出した所要日数分布の確率に標本着果数を乗じて、所要日数毎の標本収穫数を予測する。
【0124】
(S20)イテレーション制御部128は、ステップS18で訓練データの全てのレコードを選択したか判断する。全てのレコードを選択した場合はステップS21に進み、訓練データに未選択のレコードがある場合はステップS18に戻る。
【0125】
(S21)イテレーション制御部128は、異なる着果日の標本収穫数を、収穫日が揃うように着果日に応じてずらし、収穫日毎に標本収穫数を集計する。
(S22)イテレーション制御部128は、収穫日毎の合計の標本収穫数に標本割合の逆数を乗じて、収穫日毎の全体の収穫数を予測する。
【0126】
(S23)イテレーション制御部128は、総数データが示す収穫日毎の収穫数の実績とステップS22で算出した収穫日毎の収穫数の予測とを比較し、総数誤差を算出する。総数誤差は、例えば、残差平方和である。
【0127】
(S24)イテレーション制御部128は、ステップS14~S17でモデル誤差を評価するイテレーションが2回目以降であるか判断する。イテレーションが2回目以降の場合はステップS25に進み、1回目である場合はステップS26に進む。
【0128】
(S25)イテレーション制御部128は、今回の総数誤差が前回の総数誤差より大きいか判断する。今回の総数誤差が前回の総数誤差より大きい場合はステップS26に進み、今回の総数誤差が前回の総数誤差以下である場合はステップS27に進む。
【0129】
(S26)イテレーション制御部128は、機械学習部127にイテレーション継続を指示する。機械学習部127は、現在の予測モデルの係数を退避し、ステップS17で算出したモデル誤差が小さくなるように係数を更新する。そして、ステップS14に戻る。
【0130】
(S27)イテレーション制御部128は、退避してある予測モデルの係数を読み出し、1つ前のイテレーションで使用した予測モデルを予測モデル記憶部124に出力する。
図16は、収穫予測の手順例を示すフローチャートである。
【0131】
(S30)データ収集部125は、今年度の気象データと標本データを収集する。また、データ収集部125は、予測日以降の気象予報データを収集する。
(S31)データ加工部126は、標本データから着果日を抽出し、標本果実を着果日で分類する。データ加工部126は、着果日毎に標本着果数をカウントする。
【0132】
(S32)データ加工部126は、気象予報データから、予測日から収穫時期までの予報気温および予報日射量を抽出する。データ加工部126は、環境パラメータを用いて、予報気温および予報日射量を屋内の予想気温および予想日射量に変換する。
【0133】
(S33)データ加工部126は、着果日毎に気象データから、着果日から予測日の前日までの測定気温および測定日射量を抽出する。データ加工部126は、測定気温および予想気温を時刻で分類し、各時刻の平均気温を算出する。また、データ加工部126は、測定日射量および予想日射量を時刻で分類し、各時刻の平均日射量を算出する。
【0134】
(S34)収穫予測部129は、着果日を1つ選択する。
(S35)収穫予測部129は、選択した着果日に対応する平均気温および平均日射量を予測モデルに入力し、所要日数分布を予測する。
【0135】
(S36)収穫予測部129は、選択した着果日に対応する標本着果数を、所要日数分布が示す確率に乗じて、所要日数毎の標本収穫数に変換する。
(S37)収穫予測部129は、ステップS34で、標本データに出現する全ての着果日を選択したか判断する。全ての着果日を選択した場合はステップS38に進み、未選択の着果日がある場合はステップS34に戻る。
【0136】
(S38)収穫予測部129は、異なる着果日の標本収穫数を、収穫日が揃うように着果日に応じてずらし、収穫日毎に標本収穫数を集計する。
(S39)収穫予測部129は、収穫日毎の合計の標本収穫数に標本割合の逆数を乗じて、収穫日毎の全体の収穫数を予測する。
【0137】
(S40)収穫予測部129は、収穫日毎の収穫数を示す予測結果を出力する。例えば、収穫予測部129は、予測結果を表示装置111に表示する。
第2の実施の形態の情報処理システムによれば、過年度の着果から収穫までの所要日数とその期間の平均気温および平均日射量とを対応付けた訓練データを用いて、平均気温および平均日射量から所要日数を予測する予測モデルが学習される。そして、学習された予測モデルと今年度の着果状況から、今年度の収穫日および収穫数が予測される。よって、パプリカの収穫前に農家の運営にとって有用な情報を提供することができる。
【0138】
また、予測モデルは所要日数の期待値ではなく所要日数の確率分布を出力するよう学習される。よって、同じ育成環境のもとで育てても成長速度が大きく異なるというパプリカの個体差の性質を考慮して、収穫日のばらつきを予測することが可能となる。また、学習途中の予測モデルを用いて訓練データから予測される全体収穫数と過年度の実際の全体収穫数とが比較され、総数誤差が最小になったことが検出されると機械学習のイテレーションが停止され、総数誤差が最小になったときの予測モデルが出力される。よって、過学習により予測モデルが過度に分散の小さい確率分布を出力するようになることを抑制でき、予測モデルの予測精度を向上させることができる。また、少ない標本データからであっても、収穫日のばらつきを適切に反映した予測モデルが生成される。よって、標本果実を観測して標本データを採取する農家の負担を軽減できる。
【符号の説明】
【0139】
10 機械学習装置
11 記憶部
12 処理部
13 訓練データ
14 総数データ
15 学習処理
16 予測モデル
17 予測分布