(57)【要約】  スキル推定装置は、学習者が問題を解いた解答の正誤を２値のデータで示す正誤データを取得する正誤データ取得部と、問題を解くために必要なスキル、および、学習者が保持しているスキルを、スキル毎に当該スキルの有無を示す２値の確率変数で表すモデルを用いて、前記正誤データに基づく事後確率を最大化する解を探索することによって、問題を解くために必要なスキル、および、学習者が保持しているスキルを推定するスキル推定部と、を備える。
2019073712.tif 000002
【特許請求の範囲】
【請求項１】
学習者が問題を解いた解答の正誤を２値のデータで示す正誤データを取得する正誤データ取得部と、
問題を解くために必要なスキル、および、学習者が保持しているスキルを、スキル毎に当該スキルの有無を示す２値の確率変数で表すモデルを用いて、前記正誤データに基づく事後確率を最大化する解を探索することによって、問題を解くために必要なスキル、および、学習者が保持しているスキルを推定するスキル推定部と、
を備えるスキル推定装置。
【請求項２】
前記スキル推定部は、前記学習者が保持しているスキルの履歴を前記確率変数で表すモデルを用いて前記解を探索する、
請求項１に記載のスキル推定装置。
【請求項３】
前記スキル推定部は、問題を解くために必要なスキルを示す確率変数およびモデルのパラメータを引数として学習者が保持しているスキルを示す確率変数の値を求める関数に基づいて、学習者が保持しているスキルを示す確率変数が解探索空間から除外された前記解を探索する、
請求項１または請求項２に記載のスキル推定装置。
【請求項４】
前記モデルは、問題を解くために必要なスキル毎に、当該スキルが特定の問題を解くために必要か否かを示す２値の確率変数で表すモデルと、問題を解くために必要なスキル毎に、当該スキルを学習者が保持しているか否かを示す２値の確率変数で表すモデルとを含む
請求項１から３のいずれか一項に記載のスキル推定装置。
【請求項５】
学習者が問題を解いた解答の正誤を２値のデータで示す正誤データを取得する正誤データ取得部と、
問題を解くために必要なスキル、および、学習者が保持しているスキルを、スキル毎に当該スキルの有無を示す２値の確率変数で表すモデルを用いて、前記正誤データに基づく事後確率を最大化する解を探索することによって、問題を解くために必要なスキル、および、学習者が保持しているスキルを推定するスキル推定部と、
前記スキル推定部の推定結果に基づいて、学習者に提示する問題を選択する問題選択部と、
を備える学習支援装置。
【請求項６】
学習者が問題を解いた解答の正誤を２値のデータで示す正誤データを取得することと、
問題を解くために必要なスキル、および、学習者が保持しているスキルを、スキル毎に当該スキルの有無を示す２値の確率変数で表すモデルを用いて、前記正誤データに基づく事後確率を最大化する解を探索することによって、問題を解くために必要なスキル、および、学習者が保持しているスキルを推定することと、
を含むスキル推定方法。
【請求項７】
コンピュータに、
学習者が問題を解いた解答の正誤を２値のデータで示す正誤データを取得することと、
問題を解くために必要なスキル、および、学習者が保持しているスキルを、スキル毎に当該スキルの有無を示す２値の確率変数で表すモデルを用いて、前記正誤データに基づく事後確率を最大化する解を探索することによって、問題を解くために必要なスキル、および、学習者が保持しているスキルを推定することと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スキル推定装置、学習支援装置、スキル推定方法およびプログラムに関する。
【背景技術】
【０００２】
学習支援システムの１つに、学習者に問題を提示するシステムがある。問題を提示する際、学習者の能力を把握できれば、より適切な問題を提示し得る。そこで、学習者の能力を把握するための技術が提案されている。
例えば、非特許文献１に記載の技術では、問題を解く際の能力（Concept）の重要度、学習者が備えている能力をそれぞれ実数の行列で示す。この技術では、問題を解くために必要な能力と、学習者が備えている能力とで算出される推定値と、解答者による解答結果の実際値との差を最小にするように、学習者が備えている能力の推定を行う。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Shaghayegh Sahebi、外２名、"Tensor Factorization for Student Modeling and Performance Prediction in Unstructured Domain"、Proceedings of the 9th International Conference on Educational Data Mining、２０１６年、ｐ．５０２−５０６
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１に記載の技術では、推定結果を人が見ても容易には解釈できないと考えられる。特に、非特許文献１に記載の技術では、推定結果をもとに、スキルの内容を人間が解釈することは難しい。【０００５】
本発明の目的の一例は、上述の課題を解決することのできるスキル推定装置、学習支援装置、スキル推定方法およびプログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明の第１の態様にかかるスキル推定装置は、学習者が問題を解いた解答の正誤を２値のデータで示す正誤データを取得する正誤データ取得部と、問題を解くために必要なスキル、および、学習者が保持しているスキルを、スキル毎に当該スキルの有無を示す２値の確率変数で表すモデルを用いて、前記正誤データに基づく事後確率を最大化する解を探索することによって、問題を解くために必要なスキル、および、学習者が保持しているスキルを推定するスキル推定部と、を備える。【０００７】
本発明の第２の態様にかかる学習支援装置は、学習者が問題を解いた解答の正誤を２値のデータで示す正誤データを取得する正誤データ取得部と、問題を解くために必要なスキル、および、学習者が保持しているスキルを、スキル毎に当該スキルの有無を示す２値の確率変数で表すモデルを用いて、前記正誤データに基づく事後確率を最大化する解を探索することによって、問題を解くために必要なスキル、および、学習者が保持しているスキルを推定するスキル推定部と、前記スキル推定部の推定結果に基づいて、学習者に提示する問題を選択する問題選択部と、を備える。【０００８】
本発明の第３の態様にかかるスキル推定方法は、学習者が問題を解いた解答の正誤を２値のデータで示す正誤データを取得することと、問題を解くために必要なスキル、および、学習者が保持しているスキルを、スキル毎に当該スキルの有無を示す２値の確率変数で表すモデルを用いて、前記正誤データに基づく事後確率を最大化する解を探索することによって、問題を解くために必要なスキル、および、学習者が保持しているスキルを推定することと、を含む。【０００９】
本発明の第４の態様にかかるプログラムは、コンピュータに、学習者が問題を解いた解答の正誤を２値のデータで示す正誤データを取得することと、問題を解くために必要なスキル、および、学習者が保持しているスキルを、スキル毎に当該スキルの有無を示す２値の確率変数で表すモデルを用いて、前記正誤データに基づく事後確率を最大化する解を探索することによって、問題を解くために必要なスキル、および、学習者が保持しているスキルを推定することと、を実行させる。
【発明の効果】
【００１０】
この発明によれば、推定結果をもとに、スキルの内容を人間が比較的容易に解釈できるようになる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係る学習支援システムの機能構成を示す概略ブロック図である。
【図２】実施形態に係る学習支援装置の機能構成を示す概略ブロック図である。
【図３】実施形態に係る端末装置の機能構成を示す概略ブロック図である。
【図４】実施形態に係るスキル推定部が行う推定の概要を示す説明図である。
【図５】実施形態に係るスキル推定部がスキルの推定に用いるモデルをグラフィカルモデルで示す図である。
【図６】ロジスティック関数の値を示す図である。
【図７】実施形態に係るスキル推定部が行う処理の手順を示すフローチャートである。
【図８】本発明の別の実施形態に係るスキル推定装置の構成の例を示す図である。
【図９】本発明の別の実施形態に係る学習支援装置の構成の例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図１は、本発明の実施形態に係る学習支援システムの機能構成を示す概略ブロック図である。図１に示すように、学習支援システム１は、学習支援装置１００と、端末装置２００とを備える。学習支援装置１００と端末装置２００とは、通信ネットワーク９００を介して通信を行う。
【００１３】
学習支援システム１は、学習者であるユーザに対し、ユーザが保持しているスキルに応じた問題を提供する。ここでいうスキルは、問題を解くために必要な能力であり、特定の種類の能力に限定されない。例えば、スキルには知識が含まれていてもよいし、ノウハウが含まれていてもよい。
ユーザが保持しているスキルをユーザのスキルとも称する。
【００１４】
学習支援装置１００は、ユーザのスキルを推定し、推定したスキルに応じた問題を提供する。学習支援装置１００は、例えばワークステーション（Workstation）等のコンピュータを用いて構成される。学習支援装置１００は、スキル推定装置の例、および、問題提供装置の例に該当する。
図２は、学習支援装置１００の機能構成を示す概略ブロック図である。図２に示すように、学習支援装置１００は、サーバ側通信部１１０と、サーバ側記憶部１８０と、サーバ側制御部１９０とを備える。サーバ側制御部１９０は、スキル推定部１９１と、問題選択部１９２と、解答処理部１９３とを備える。
【００１５】
サーバ側通信部１１０は、他の装置と通信を行う。特に、サーバ側通信部１１０は端末装置２００と通信を行って問題を送信し、ユーザが問題を解いて出した解答（問題に対するユーザの解答）を受信し、解答に対する解説を送信する。
サーバ側記憶部１８０は、問題および解答や、スキル推定用のモデルなど各種情報を記憶する。サーバ側記憶部１８０は、学習支援装置１００が備える記憶デバイスを用いて構成される。
サーバ側制御部１９０は、学習支援装置１００の各部を制御して各種処理を行う。サーバ側制御部１９０は、学習支援装置１００が備えるＣＰＵ（Central Processing Unit、中央処理装置）がサーバ側記憶部１８０からプログラムを読み出して実行することで構成される。
【００１６】
スキル推定部１９１は、問題に対するユーザの解答の正誤に基づいて、ユーザが保持しているスキルおよび各問題を解くのに必要なスキルを推定する。
問題選択部１９２は、スキル推定部１９１が推定したスキルに基づいて、ユーザに提供する問題を選択する。
【００１７】
解答処理部１９３は、問題に対するユーザの解答に対する処理を行う。具体的には、解答処理部１９３は、解答の正誤を判定する。そして、解答処理部１９３は、判定結果を示す２値データ（正答又は誤答であることを示すデータ）と、問題番号、ユーザ番号、および、日時情報とを対応付けた正誤データを、サーバ側記憶部１８０に記憶させる。解答処理部１９３は、正誤データ取得部の例に該当する。
また、解答処理部１９３は、サーバ側記憶部１８０が記憶している解説の中から解答の正誤に応じた解説を選択し、解答を送信した端末装置２００へサーバ側通信部１１０を介して送信する。
【００１８】
端末装置２００は、学習支援システム１の端末装置として機能する。特に、端末装置２００は、学習支援装置１００から送信される問題を表示して、解答を入力するユーザ操作を受ける。端末装置２００は、得られた解答を学習支援装置１００へ送信し、学習支援装置１００から解説を受信し、受信した解説を表示する。さらに、端末装置２００は、次の問題を学習支援装置１００から受信すると、問題の表示、解答の取得および送信、解説の受信および表示を繰り返す。
【００１９】
端末装置２００は、例えばパソコン（Personal Computer；ＰＣ）、タブレット端末装置またはスマートフォン（Smartphone）などのコンピュータを用いて構成される。
学習支援システム１が備える端末の数は、複数であればよく、多いほどよい。ユーザ数が多いほど学習支援装置１００によるスキル推定の精度が高くなると期待されるため、端末装置２００の数が多いことが好ましい。
【００２０】
図３は、端末装置２００の機能構成を示す概略ブロック図である。図３に示すように、端末装置２００は、端末側通信部２１０と、表示部２２０と、操作入力部２３０と、端末側記憶部２８０と、端末側制御部２９０とを備える。
端末側通信部２１０は、他の装置と通信を行う。特に、端末側通信部２１０は、学習支援装置１００と通信を行うことにより、問題および解説を受信し、また、解答を送信する。
表示部２２０は、例えば液晶パネルまたはＬＥＤ（Light Emitting Diode、発光ダイオード）パネル等の表示画面を有し、各種画像を表示する。特に、表示部２２０は、学習支援装置１００が送信した問題および解説を表示する。
【００２１】
操作入力部２３０は、例えばキーボードおよびマウス等の入力デバイスを備え、ユーザ操作を受ける。特に、操作入力部２３０は、表示部２２０が問題を表示している状態で、学習者による解答の入力操作を受ける。
端末側記憶部２８０は、各種情報を記憶する。例えば、端末側記憶部２８０は、学習支援システム１の端末装置として動作するためのアプリケーションプログラムを記憶する。また、端末側記憶部２８０は、学習支援装置１００が送信した問題や解説を一時的に記憶する。端末側記憶部２８０は、端末装置２００が備える記憶デバイスを用いて構成される。
【００２２】
端末側制御部２９０は、端末装置２００の各部を制御して各種処理を実行する。例えば、端末側制御部２９０は、端末側通信部２１０を制御して、端末側通信部２１０に学習支援装置１００のサーバ側通信部１１０と通信を行わせる。また、端末側制御部２９０は、表示部２２０を制御して、表示部２２０に問題および解説を表示させる。また、端末側制御部２９０は、操作入力部２３０が受けたユーザ操作を解答等のデータに変換する。
通信ネットワーク９００は、学習支援装置１００と端末装置２００との通信を仲介する。通信ネットワーク９００は、特定の通信ネットワークに限定されない。例えば、通信ネットワーク９００はインターネットであってもよいが、これに限定されない。
【００２３】
次に、スキル推定部１９１が行うスキルの推定について説明する。
スキル推定部１９１がスキルを推定する環境として、以下の環境を想定する。
全部でＭ個の問題が用意されており、Ｎ人のユーザが問題を解く。いずれの問題も、その問題を解くのにＫ個のスキルのうち１つ以上を必要とする。上記のように、ここでいうスキルは、問題を解くための能力であり、特定の種類のものに限定されない。スキルは、問題を解くために必要な知識を含んでもよいし、具体化されない抽象的な能力を含んでもよい。また、ここでいうユーザは、学習支援装置１００が提供する問題を解く者である。
【００２４】
サーバ側記憶部１８０が、ユーザが問題を解いた順番および解答を各ユーザについて記録しておく。スキル推定部１９１は、この情報に基づいて、各問題を解くのに必要なスキル、および、各ユーザが保持しているスキル（取得済みのスキル）を推定する。
スキル推定部１９１は、個々のスキルの内容の解析は行わず、問題を解くのに必要なスキルと、ユーザが保持しているスキルとの対応関係を推定する。１つの問題と１人のユーザとを選択した場合に、その問題を解くのに必要なスキルのうちどのスキルをユーザが保持しているかを示すことで、問題選択部１９２が、次にユーザに提示する問題（次にユーザが解く問題）を選択する手がかりとすることができる。
【００２５】
図４は、スキル推定部１９１が行う推定の概要を示す説明図である。図４には、問題を解くのに必要なスキルＲと、複数のユーザ各々が保持しているスキルＺ１〜ＺＮと、各ユーザが問題を解いた結果（正誤）Ｘ１〜ＸＮとが、バイナリ（２値）の行列またはベクトルの形で示されている。
【００２６】
図４で、ＲＴ（問題スキル行列）における上付きの「Ｔ」は、行列またはベクトルの転置を示す。ＲＴの各列は、問題と対応付けられる。ＲＴの各行は、スキルと対応付けられる。ＲＴの要素の値「１」はスキルが必要であることを示し、「０」はスキルが不要であることを示す。
Ｚ１〜ＺＮ（学習者スキル行列）の各々の各列は、ユーザが問題を解いたタイミングと対応付けられる。Ｚ１〜ＺＮの各々の各行は、スキルと対応付けられる。
Ｘ１〜ＸＮ（正誤ベクトル）の各々は行ベクトルであり、各列は、問題に対するユーザのタイミングと対応付けられる。
【００２７】
これらのうち、各ユーザが問題を解いた結果は、観測可能である。一方、各ユーザが保持しているスキルを直接観測することはできない。また、スキル推定部１９１が個々のスキルの内容の解析を行わないことから、問題を解くのに必要なスキルも直接観測することはできない。
そこで、スキル推定部１９１は、各ユーザが問題を解いた結果から、問題を解くのに必要なスキル、および、各ユーザが保持しているスキルを推定する。学習支援装置１００は、問題を解くのにどのスキルが必要か、および、各ユーザがどのスキルを保持しているかを推定するが、各スキルがどのような内容のものかの解析は行わない。
【００２８】
図５は、スキル推定部１９１がスキルの推定に用いるグラフィカルモデルを示す。図５で丸印は確率変数を示す。矢印は、データの依存関係を示す。矢印の先の変数の値を決定する際、矢印の手前の変数の値を用いる。
図５では、１人のユーザｕについてのユーザスキルＺｕ，ｋ（ｔ）および正誤Ｘｕ（ｔ）が示されている。モデルは、他のユーザについても同様に、ユーザ毎のユーザスキルおよび正誤を含む。
一方、ｖ、μ１〜μｋ、ｗ１〜ｗｋは、各ユーザに共通である。
問題スキルＲについては各ユーザに共通で用意する。ユーザｕがステップｔで解いた問題の問題番号をｍｕ（ｔ）で示す。問題番号ｍｕ（ｔ）を用いて、ユーザｕがステップｔで解いた問題の問題スキルをＲｍｕ（ｔ）で示す。
【００２９】
スキルの推定のためのモデルを表記するために、以下に説明する変数または定数を用いる。
Ｍ：問題の総数。
なお、問題に１〜Ｍの問題番号を付して各問題を識別する。問題番号をｍで示す。ｍは、１≦ｍ≦Ｍの整数である。問題番号ｍの問題を、問題ｍと表記する。
【００３０】
Ｎ：ユーザの総数
なお、ユーザに１〜Ｎのユーザ番号を付して各ユーザを識別する。ユーザ番号をｕで示す。ｕは、１≦ｕ≦Ｎの整数である。ユーザ番号ｕのユーザを、ユーザｕと表記する。
Ｋ：スキルの総数
なお、スキルに１〜Ｋのスキル番号を付して各スキルを識別する。スキル番号をｋで示す。ｋは、１≦ｋ≦Ｋの整数である。スキル番号ｋのスキルを、スキルｋと表記する。
【００３１】
ｍｕ（ｔ）：ユーザｕがステップｔに解いた問題の問題番号を示す変数
なお、ｍｕ（ｔ）は、１≦ｍｕ（ｔ）≦Ｍの整数である。ここでいうステップは、ユーザが問題を解いたタイミングである。各ユーザは、１つのステップに１つの問題を解くと仮定する。ステップｔは、ユーザがｔ番目に問題を解いたタイミングである。ユーザｕがステップｔに解いた問題とは、ユーザｕがｔ番目に解いた問題である。ユーザが問題を解くタイミングは任意のタイミングでよい。特に、複数のユーザが同時に問題を解く必要はない。また、問題選択部１９２は、ユーザのスキルに応じて問題を提供するため、通常、問題を解く順番はユーザ毎に異なる。
【００３２】
Ｘｕ（ｔ）：ユーザｕがステップｔに問題を解いた解答の正誤を示す確率変数
なお、Ｘｕ（ｔ）は、０、１のいずれかの値をとる。「Ｘｕ（ｔ）＝０」は、解答が不正解であったことを示す。「Ｘｕ（ｔ）＝１」は、解答が正解であったことを示す。
Ｘｕ（１）〜Ｘｕ（ｔ）を要素とする行ベクトル（横ベクトル）をＸｕと表記する。
以下では、正誤Ｘｕ（ｔ）、正誤Ｘｕと表記する。
【００３３】
Ｚｕ，ｋ（ｔ）：ユーザｕがステップｔにスキルｋを保持しているか否かを示す確率変数
なお、Ｚｕ，ｋ（ｔ）は、０、１のいずれかの値をとる。「Ｚｕ，ｋ（ｔ）＝０」は、そのスキルを保持していないことを示す。「Ｚｕ，ｋ（ｔ）＝１」は、そのスキルを保持していることを示す。
Ｚｕ，１（ｔ）〜Ｚｕ，Ｋ（ｔ）を要素とする列ベクトル（縦ベクトル）をＺｕ（ｔ）と表記する。Ｚｕ（ｔ）は、式（１）のように示される。
【００３４】
【数１】
2019073712.tif 000003
【００３５】
全てのユーザおよび全てのステップについてのＺｕ（ｔ）をまとめてＺと表記する。
以下では、ユーザスキルＺ、ユーザスキルＺｕ（ｔ）、ユーザスキルＺｕ，ｋ（ｔ）と表記する。
Ｒｍ：問題ｍを解くために必要なスキルを示す確率変数
なお、Ｒｍは、Ｋ次元の行ベクトル（横ベクトル）で示される。Ｒｍの各要素は、０、１のいずれかの値をとる。但し、全ての要素が０である場合を除く。ｋ番目の要素の値が０である場合は、スキルｋが不要であることを示す。ｋ番目の要素の値が１である場合は、スキルｋが必要であることを示す。
【００３６】
Ｒｍ，ｋ：問題ｍを解くためにスキルｋが必要か否かを示す変数
なお、Ｒｍ，ｋは、Ｒｍのｋ番目の要素を示す。Ｒｍ，ｋを要素とする行列をＲと表記する。以下では、問題スキルＲ、問題スキルＲｍ、問題スキルＲｍ，ｋと表記する。
【００３７】
図５で、問題スキルＲｍｕ（ｔ）、ユーザスキルＺｕ，１（ｔ）〜Ｚｕ，Ｋ（ｔ）の各々から正誤Ｘｕ（ｔ）へ矢印が出ているように、正誤Ｘｕ（ｔ）は、問題スキルＲｍｕ（ｔ）およびユーザスキルＺｕ，１（ｔ）〜Ｚｕ，Ｋ（ｔ）に依存する。具体的には、問題スキルＲｍｕ（ｔ）およびユーザスキルＺｕ（ｔ）の下での正誤Ｘｕ（ｔ）の確率がベルヌーイ（Bernoulli）分布に従うものとして、式（２）のように規定する。
【００３８】
【数２】
2019073712.tif 000004
【００３９】
ここで、式（２）における「〜」は所定の分布に従うことを示す。Ｂｅｒｎは、ベルヌーイ分布を示す。具体的には、式（２）の右辺は、正誤Ｘｕ（ｔ）の値が、確率ｓ（０≦ｓ≦１）で「１」になり、確率１−ｓで「０」になることを示す。
式（２）のｓは、式（３）のように示される。
【００４０】
【数３】
2019073712.tif 000005
【００４１】
ここで、ｅｘｐ（ｘ）は、ｅのｘ乗を示す。ｅは、ネイピア数を示す。ａ、ｂはいずれも定数のパラメータである。ａの値、ｂの値は、いずれも予め定められる。
式（３）は、ロジスティック関数に式（４）を代入して得られる。
【００４２】
【数４】
2019073712.tif 000006
【００４３】
ロジスティック関数ｆ（ｘ）は、式（５）のように示される。
【００４４】
【数５】
2019073712.tif 000007
【００４５】
図６は、ロジスティック関数の値を示す。ロジスティック関数ｆ（ｘ）の値は、図６のグラフのように示される。式（３）のパラメータａは、グラフの傾きの調整パラメータである。ａの値が大きいほど、傾きが急になる。パラメータｂは、グラフの横方向の位置の調整パラメータである。グラフは、ｂの値だけｘ軸の正の方向に平行移動される。
【００４６】
「ｔ≧２」の場合のユーザスキルＺｕ，ｋ（ｔ）の値は、１つ前のステップでユーザが保持していたスキルに依存する。あるステップで保持していたスキルは、次のステップでも保持しているものとする。すなわち、「Ｚｕ，ｋ（ｔ−１）＝１」の場合、「Ｚｕ，ｋ（ｔ）＝１」とする。
ステップｔ−１でスキルｋを保持していなかった場合（Ｚｕ，ｋ（ｔ−１）＝０）、ユーザスキルＺｕ，ｋ（ｔ）の値は、ステップｔ−１で解いた問題がスキルｋを必要とするか否かに依存する。
【００４７】
ステップｔ−１で解いた問題がスキルｋを必要とする場合（Ｒｍｕ（ｔ−１），ｋ＝１）、その問題を解くことでスキルｋを身に付ける可能性があると考えられるので、ベルヌーイ分布に従って０または１に値を決定する。この場合、式（６）のように規定する。
【００４８】
【数６】
2019073712.tif 000008
【００４９】
μｋは、各スキルの獲得のし易さを示す確率変数であり、式（７）のように示される。
【００５０】
【数７】
2019073712.tif 000009
【００５１】
ここでＢｅｔａはベータ分布を示す。ξｋおよびζｋはベータ分布のパラメータであり、いずれもスキルごとに予め設定される。
ステップｔ−１で解いた問題がスキルｋを必要としない場合（Ｒｍｕ（ｔ−１），ｋ＝０）、その問題を解くことではスキルｋは身に付かないと考えられるので、「Ｚｕ，ｋ（ｔ）＝０」とする。
以上より、「ｔ≧２」の場合、Ｚｕ，ｋ（ｔ）の値は式（８）のように規定される。
【００５２】
【数８】
2019073712.tif 000010
【００５３】
一方、「ｔ＝１」の場合、Ｚｕ，ｋ（１）の値は、ユーザが予めスキルを保持していたか否かに依存する。この場合を式（９）のように規定する。
【００５４】
【数９】
2019073712.tif 000011
【００５５】
ｗｋは、ユーザがスキルｋを予め保持している可能性の高さを示す確率変数であり、式（１０）のように示される。
【００５６】
【数１０】
2019073712.tif 000012
【００５７】
γｋおよびηｋはベータ分布のパラメータであり、いずれもスキルごとに予め設定される。
Ｒｍは、多項分布に従うものとし、式（１１）のように規定する。
【００５８】
【数１１】
2019073712.tif 000013
【００５９】
Ｍｕｌｔは多項分布を示す。ｖは多項分布のパラメータであり、式（１２）のように示される。
【００６０】
【数１２】
2019073712.tif 000014
【００６１】
Ｄｉｒはディリクレ（Dirichlet）分布を示す。「α＝（α１，・・・，αＬ）」であり、「Ｌ＝２Ｋ−１」である。２Ｋ−１は、Ｋ個のスキルについて０、１の全ての組合せの数から、全て０の場合（必要なスキルが無い場合）を除いた数である。α＝（α１，・・・，αＬ）は、いずれもディリクレ分布のパラメータであり、予め設定される。
【００６２】
以下では、ｖ、μ１〜μＫ、ｗ１〜ｗＫをθまたはパラメータθと表記する。
このモデルを用いて、事後確率を最大にする問題スキルＲ、ユーザスキルＺ、パラメータθを求める。このような問題スキルＲ、ユーザスキルＺ、パラメータθを問題スキルＲｍａｘ、ユーザスキルＺｍａｘ、パラメータθｍａｘとすると、これらは式（１３）のように示される。
【００６３】
【数１３】
2019073712.tif 000015
【００６４】
ａｒｇｍａｘは、最大値を与える引数値（Argument Of Maximum）を意味する。式（１３）の右辺は、事後確率Ｐ（Ｒ，Ｚ，θ｜Ｘ）が最大となる問題スキルＲ、ユーザスキルＺおよびパラメータθの値を示す。
ここでは、式（１３）をギブスサンプリングにより計算する。式（１３）の事後分布からギブスサンプリングを行う場合、Ｐ（Ｒ｜Ｚ，θ，Ｘ）、Ｐ（Ｚ｜Ｒ，θ，Ｘ）、Ｐ（θ｜Ｒ，Ｚ，Ｘ）それぞれについてギブスサンプリングを行う方法が最も単純である。しかし、この方法では、現実的な時間で式（１３）の解は得られない。これはＰ（Ｒ，Ｚ｜θ，Ｘ）において、多くの異なるＲ’とＲ’’で、Ｐ（Ｚ｜Ｒ’，θ，Ｘ）×Ｐ（Ｒ’’｜Ｚ，θ，Ｘ）が非常に小さいため、Ｒがギブスサンプリングによりほとんど更新されなくなるからである。そこで、ＲとＺのサンプリングをＰ（Ｒ，Ｚ｜θ，Ｘ）に基づいて行うのではなく、確率が最大となるＲが同一である式（１４）の分布Ｐ’（Ｒ）からサンプリングを行う。
【００６５】
【数１４】
2019073712.tif 000016
【００６６】
ここで、Ｚｐは正規化定数である。
Ｚ’（Ｒ）は、式（１５）のように示される。
【００６７】
【数１５】
2019073712.tif 000017
【００６８】
すなわち、Ｚ’（Ｒ）は、Ｘとθが与えられた状態でのＲ、Ｚの分布において、問題スキルがＲの場合に、確率を最大にするユーザスキルＺである。
式（１４）を用いることで、あるＲから別のＲ’がサンプリングされる確率が、単純なギブスサンプリングのように非常に小さくなることがなくなり、現実的な時間で式（１３）の解を求めることができる。
ここで、Ｐ’（Ｒｍ｜Ｘ，Ｒ＼ｍ，θ）を考える。Ｒ＼ｍは、ＲからＲｍ（ｍ行目）を除いた残りである。Ｐ’（Ｒｍ｜Ｘ，Ｒ＼ｍ，θ）について、式（１６）の関係が得られる。
【００６９】
【数１６】
2019073712.tif 000018
【００７０】
式（１６）の括弧内「ｍａｘＺＰ（Ｚ，Ｘ｜Ｒ，θ）」は、ビタビ（Viterbi）アルゴリズムで効率的に計算できる。
式（１６）を用いると、Ｒｍがとり得る全ての場合の各々（スキル数Ｋの要素を持つ２値ベクトルで、［０，・・・，０］以外）について値が求まる。この値を正規化すると、各場合の確率である多項分布のパラメータが求まる。この多項分布に従ってＲｍの値を決定することができる。
Ｒの各行について、上記の確率分布を求め、得られた確率分布に基づいてサンプリングを行い、得られた値をＲの当該する行に入れる。
Ｒのすべての行のサンプリングを行った後、式（１６）の括弧内「ｍａｘＺＰ（Ｚ，Ｘ｜Ｒ，θ）」を用いてＺ’を求める。
【００７１】
θについては、式（１７）を考える。
【００７２】
【数１７】
2019073712.tif 000019
【００７３】
式（１７）のＺには、式（１６）のｍａｘＺで得られたユーザスキルＺを用いる。
式（１７）より、ｖについて式（１８）を得られる。
【００７４】
【数１８】
2019073712.tif 000020
【００７５】
ここで、ｎｒｌは、問題スキルＲの行のうちＢｉｎａｒｙ（ｌ）である行の出現数を示す。Ｂｉｎａｒｙ（ｌ）は、１０進数ｌの２進化を示す。Ｒの行がとり得る全てのパターンについて、Ｒでの出現数を数え、得られた出現数に応じた確率分布を設定する。
ｗについては式（１９）を得られる。
【００７６】
【数１９】
2019073712.tif 000021
【００７７】
ここで、ｎｚｋ１は、ベクトルＺ：，ｋ（１）の中での１の出現回数を示す。「：」はワイルドカードを示す。従って、Ｚ：，ｋ（１）は、任意のユーザについてステップ１でのスキルｋの有無を示す。ｎｚｋ０は、ベクトルＺ：，ｋ（１）の中での０の出現回数を示す。ステップ１でスキルｋを保持していたユーザの人数および保持していなかったユーザの人数を、ユーザが予めスキルｋを保持していた確率に反映させる。
μについては式（２０）を得られる。
【００７８】
【数２０】
2019073712.tif 000022
【００７９】
ここで、ｎｚｋ１０１は、行列Ｚ１〜ＺＮ，Ｒにおいて、任意のｕ，ｔに関し「Ｒｍｕ，ｋ（ｔ）＝１」、「Ｚｕ，ｋ（ｔ）＝０」、「Ｚｕ，ｋ（ｔ＋１）＝１」の３つ組の出現数を示す。すなわち、ｎｚｋ１０１は、スキルｋを必要とする問題を解いたときにユーザがスキルｋを獲得した回数を示す。
【００８０】
ｎｚｋ１００は、行列Ｚ１〜ＺＮ，Ｒにおいて、任意のｕ，ｔに関し、「Ｒｍｕ，ｋ（ｔ）＝１」、「Ｚｕ，ｋ（ｔ）＝０」、「Ｚｕ，ｋ（ｔ＋１）＝０の３つ組の出現数を示す。すなわち、ｎｚｋ１００は、スキルｋを必要とする問題を解いたユーザがスキルｋを獲得しなかった回数を示す。これらの回数を、スキルｋを必要とする問題を解くことによるスキルｋの習得のし易さに反映させる。
事後確率については、式（２１）に基づいて算出される。
【００８１】
【数２１】
2019073712.tif 000023
【００８２】
図７は、スキル推定部１９１が行う処理の手順を示すフローチャートである。
＜ステップＳ１０１＞
スキル推定部１９１は、モデルパラメータα、∀ｋ（γｋ，ηｋ，ξｋ，ζｋ）、ａ、ｂ、Ｋに初期値を設定する。これらのモデルパラメータに値を設定することで、確率分布が設定される。これらの初期値は、人手（学習支援装置１００の管理者）によって予め設定されていてもよい。ステップＳ１０１の後、ステップＳ１０２へ進む。
【００８３】
＜ステップＳ１０２＞
スキル推定部１９１は、正誤Ｘの入力を受け付ける。具体的には、スキル推定部１９１は、解答処理部１９３が生成した正誤データをサーバ側記憶部１８０から読み出す。ステップＳ１０２の後、処理がステップＳ１０３へ進む。
＜ステップＳ１０３＞
スキル推定部１９１は、問題スキルＲおよびパラメータθを確率分布に従ってランダムに設定する。スキル推定部１９１は、設定したＲ、θを、それぞれＲｍａｘ、θｍａｘにも設定する。ステップＳ１０３の後、処理がステップＳ１０４へ進む。
【００８４】
＜ステップＳ１０４＞
スキル推定部１９１は、ユーザスキルＺを確率分布に従ってランダムに設定する。スキル推定部１９１は、設定したＺを、Ｚｍａｘにも設定する。ステップＳ１０４の後、処理がステップＳ１０５へ進む。
＜ステップＳ１０５＞
スキル推定部１９１は、ｍａｘ＿ｐｏｓｔｅｒｉｏｒに初期値−∞を設定する。ｍａｘ＿ｐｏｓｔｅｒｉｏｒは、今までに得られた最大の事後確率を示す。ステップＳ１０５の後、処理がステップＳ１１１へ進む。
【００８５】
＜ステップＳ１１１＞
スキル推定部１９１は、ループＬ１１を開始する。ループＬ１１では、予め定められている最大ループ回数に到達するまで処理を繰り返す。ステップＳ１１１の後、処理がステップＳ１１２へ進む。
＜ステップＳ１１２＞
スキル推定部１９１は、問題スキルＲｍをサンプリングし、問題スキルＲを更新する。具体的には、スキル推定部１９１は、問題毎に（すなわち、各ｍについて）式（１６）に基づいて問題スキルＲｍの分布を決定し、得られた分布に従って問題スキルＲｍの値を決定する。スキル推定部１９１は、決定した問題スキルＲｍの値を問題スキルＲに入力する。スキル推定部１９１は、問題スキルＲを更新した後、式（１６）に基づいてユーザスキルＺを更新する。ステップＳ１１２の後、処理がステップＳ１１３へ進む。
【００８６】
＜ステップＳ１１３＞
スキル推定部１９１は、パラメータθをサンプリングする。具体的には、スキル推定部１９１は、式（１８）〜式（２０）に基づいて、ｖ、ｗ１〜ｗＫ、μ１〜μｋの各値の分布を決定し、得られた分布に従って各値を決定する。スキル推定部１９１は、得られた値をｖ、ｗ１〜ｗＫ、μ１〜μｋそれぞれに入力する。ステップＳ１１３の後、処理がステップＳ１１４へ進む。
【００８７】
＜ステップＳ１１４＞
スキル推定部１９１は、式（２１）に基づいて事後確率を算出する。ステップＳ１１４の後、処理がステップＳ１１５へ進む。
＜ステップＳ１１５＞
スキル推定部１９１は、得られた事後確率がｍａｘ＿ｐｏｓｔｅｒｉｏｒより大きいか否かを判定する。大きいと判定した場合、処理がステップＳ１１６へ進む。大きくないと判定した場合、処理がステップＳ１１７へ進む。
【００８８】
＜ステップＳ１１６＞
スキル推定部１９１は、ｍａｘ＿ｐｏｓｔｅｒｉｏｒ、Ｒｍａｘ、Ｚｍａｘ、θｍａｘを更新する。具体的には、スキル推定部１９１は、ステップＳ１１４で算出した（今回の）事後確率をｍａｘ＿ｐｏｓｔｅｒｉｏｒに入力する。また、スキル推定部１９１は、ステップＳ１１２で得られたＲをＲｍａｘに入力し、ステップＳ１１２で得られたＺをＺｍａｘに入力し、ステップＳ１１３で得られたθをθｍａｘに入力する。ステップＳ１１６の後、処理がステップＳ１１７へ進む。
【００８９】
＜ステップＳ１１７＞
スキル推定部１９１は、ループＬ１１の終端処理を行う。具体的には、ループＬ１１の繰り返し回数が、最大ループ回数に達したか否かを判定する。スキル推定部１９１は、ループＬ１１の繰り返し回数が最大ループ回数に達していないと判定した場合は、ステップＳ１１２に戻り、ループＬ１１の処理を繰り返す。一方、スキル推定部１９１は、ループＬ１１の繰り返し回数が最大ループ回数に達したと判定した場合は、ループＬ１１を終了し、ステップＳ１２１へ進む。
＜ステップＳ１２１＞
スキル推定部１９１は、得られたＲｍａｘ、Ｚｍａｘ、θｍａｘを処理結果として出力する。ステップＳ１２１の後、図７の処理を終了する。
【００９０】
以上のように、解答処理部１９３は、学習者が問題を解いた解答の正誤を２値のデータ（２つの値をとるデータ）で示す正誤データを取得する。スキル推定部１９１は、問題を解くために必要なスキル毎に当該スキルを学習者が保持しているか否かを示す２値の確率変数（２つの値をとる確率変数）で表すモデルを用いて、正誤データに基づく事後確率を最大化する解を探索することによって、問題を解くために必要なスキル、および、学習者が保持しているスキルを推定する。これにより、学習支援システム１では、問題スキルＲの推定結果をもとに、それぞれのスキルの内容を人間が比較的容易に解釈することができるようになる。
【００９１】
また、スキル推定部１９１は、学習者が保持しているスキルの履歴を確率変数で表すモデルを用いて解を探索する。ユーザが問題を解くことによってスキルが向上することが見込まれる。スキル推定部１９１は、スキルの向上を模擬してスキルの推定を行うことができ、この点で、より高精度にスキルの推定を行うことができる。
【００９２】
また、スキル推定部１９１は、問題を解くために必要なスキルを示す確率変数およびモデルのパラメータを引数として学習者が保持しているスキルを示す確率変数の値を求める関数に基づいて、学習者が保持しているスキルを示す確率変数が解探索空間から除外された解探索を行う。これにより、ある問題スキルＲから別の問題スキルＲ’がサンプリングされる確率が非常に小さくなることを防ぐことができるため、現実的な時間で解の探索が行える。
【００９３】
なお、スキル推定部１９１が、Ｚｕ，ｋの値が０から１に変わるステップを範囲で持つようにしてもよい。Ｚｕ，ｋの値が０から１に変わるステップの候補が複数存在する場合がある。そこで、Ｚｕ，ｋ＝［４，６］のように、Ｚｕ，ｋの値が０から１に変わるステップの候補を示すようにしてもよい。
【００９４】
また、スキル推定部１９１が、Ｋの値を自動推定するようにしてもよい。例えば、正誤データを学習用データとテスト用データとに分けておく。そしてスキル推定部１９１は、テスト用データを用いていろいろなＫの値についてスキルの推定を行い、推定精度が最も良かったＫの値を採用する。
【００９５】
具体的には、スキル推定部１９１は、「Ｋ＝２，・・・，Ｋ＿ｍａｘ」までの各Ｋの値について推定を行い、それぞれについてＲｍａｘおよびθｍａｘを取得する。Ｋ＿ｍａｘは、Ｋの上限値として予め定められている整数の定数（Ｋ＿ｍａｘ≧３）である。そして、スキル推定部１９１は、テスト用のデータの正誤Ｘｕについて、Ｘｕ（ｔ＞Ｔ）の部分をサンプリングにより予測する。Ｘｕは、正誤Ｘの部分行列（ベクトル）であり、ユーザｕが問題を解いた正誤を示す。Ｘｕ（ｔ＞Ｔ）は、Ｘｕのうちｔ＞Ｔの部分である。Ｔは、予め定められた整数の定数（Ｔ≧２）である。スキル推定部１９１は、予測精度が最も良かったＫの値を採用する。また、θのサンプリングに代えて、θの期待値を用いるようにしてもよい。
【００９６】
本発明の実施形態の適用例として、ユーザのスキルに応じた問題を提供してもよい。例えば、問題に対するユーザの解答が不正解であった場合、その問題を解くために必要なスキルをユーザが全て保持しているか否かを判定する。ユーザが保持していないスキルが有れば、そのスキルを必要とする問題を提供する。一方、その問題を解くために必要な問題を全て保持している場合、ケアレスミス、或いは、問題に不慣れ等の原因が考えられるので、同様のスキルの問題をさらに提供する。
【００９７】
また、問題に対するユーザの解答が正解であった場合も、その問題を解くために必要なスキルをユーザが全て保持しているか否かを判定する。ユーザが保持していないスキルが有れば、そのスキルを必要とする問題を提供し、偶然解けたのか、そのスキルを既に習得済みかを判定することができる。一方、その問題を解くために必要なスキルを全て保持している場合、他のスキルを必要とする問題を提供する。
【００９８】
また、本発明の実施形態の適用例として、問題の体系化の補助を行ってもよい。専門家が有している経験的な知識の学習等では、問題が体系化されていないことが多い。このような場合、本発明の実施形態による問題スキルの推定を用いることで、どの問題とどの問題とに必要なスキルが共通するかを推定することができる。必要なスキルが共通する問題を纏めて問題の体系化を行ってもよい。
【００９９】
次に、図８および図９を参照して本発明の一つの実施形態の構成について説明する。図８は、本発明の一つの実施形態に係るスキル推定装置の構成の例を示す。図８に示すスキル推定装置１０は、正誤データ取得部１１と、スキル推定部１２とを備える。
かかる構成にて、正誤データ取得部１１は、学習者が問題を解いた解答の正誤を２値のデータで示す正誤データを取得する。スキル推定部１２は、問題を解くために必要なスキル、および、学習者が保持しているスキルを、スキル毎に当該スキルの有無を示す２値の確率変数で表すモデルを用いて、正誤データに基づく事後確率を最大化する解を探索して、問題を解くために必要なスキル、および、学習者が保持しているスキルを推定する。モデルは、問題を解くために必要なスキル毎に、当該スキルが特定の問題を解くために必要か否かを示す２値の確率変数で表すモデルと、問題を解くために必要なスキル毎に、当該スキルを学習者が保持しているか否かを示す２値の確率変数で表すモデルとを含んでもよい。
これにより、スキル推定装置１０では、問題スキルの推定結果をもとに、それぞれのスキルの内容を人間が比較的容易に解釈できるようになる。
【０１００】
図９は、本発明の実施形態に係る学習支援装置の構成の例を示す。図９に示す学習支援装置２０は、正誤データ取得部２１と、スキル推定部２２と、問題選択部１３とを備える。かかる構成にて、正誤データ取得部２１は、学習者が問題を解いた解答の正誤を２値のデータで示す正誤データを取得する。スキル推定部２２は、問題を解くために必要なスキル、および、学習者が保持しているスキルを、スキル毎に当該スキルの有無を示す２値の確率変数で表すモデルを用いて、正誤データに基づく事後確率を最大化する解を探索することによって、問題を解くために必要なスキル、および、学習者が保持しているスキルを推定する。問題選択部２３は、スキル推定部２２の推定結果に基づいて、学習者に提示する問題を選択する。
【０１０１】
これにより、学習支援装置２０では、問題スキルの推定結果をもとに、それぞれのスキルの内容を人間が比較的容易に解釈できるようになる。また、学習支援装置２０では、ユーザのスキルに応じた問題を提供することができ、この点で適切な問題をユーザに提供できる。
【０１０２】
サーバ側制御部１９０の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することで各部の処理を行ってもよい。ここでいう「コンピュータシステム」は、ＯＳや周辺機器等のハードウェアを含む。
「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含む。
「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【０１０３】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【０１０４】
この出願は、２０１７年１０月１３日に出願された日本国特願２０１７−１９９７９６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１０５】
本発明は、スキル推定装置、学習支援装置、スキル推定方法およびプログラムに適用してもよい。
【符号の説明】
【０１０６】
１  学習支援システム
１０  スキル推定装置
１１、２１  正誤データ取得部
１２、２２、１９１  スキル推定部
２０、１００  学習支援装置
２３、１９２  問題選択部
１１０  サーバ側通信部
１８０  サーバ側記憶部
１９０  サーバ側制御部
１９３  解答処理部
２００  端末装置
２１０  端末側通信部
２２０  表示部
２３０  操作入力部
２８０  端末側記憶部
２９０  端末側制御部
９００  通信ネットワーク
【図１】
2019073712.tif 000024
【図２】
2019073712.tif 000025
【図３】
2019073712.tif 000026
【図４】
2019073712.tif 000027
【図５】
2019073712.tif 000028
【図６】
2019073712.tif 000029
【図７】
2019073712.tif 000030
【図８】
2019073712.tif 000031
【図９】
2019073712.tif 000032
【国際調査報告】
2019073712.tif 000033
2019073712.tif 000034
2019073712.tif 000035
2019073712.tif 000036