1

無料アプリ「Duolingo」は、母語でない語学を楽しく学べるように工夫されたサービスで、2013年にはAppleが選ぶ年間ベストアプリ「iPhone App of the Year」にも選ばれるなど高い評価を得ています。そのDuolingoでは学習を効果的に行うためにどう復習すれば良いのかを、機械学習を利用した記憶の忘却ペース予測によってユーザーごとに個別に判断し、確かな学習効果を上げているそうです。

How we learn how you learn | Making Duolingo Blog

http://making.duolingo.com/how-we-learn-how-you-learn

Duolingoアプリには、「skill strength meter」と呼ばれる指標があります。以下のアプリ画面の各アイコンの下に表示されている、オレンジ色のアンテナのようなマークがskill strength meterで、4段階の2以下になるとそろそろその分野を学習する時期だとユーザーにアドバイスする役割を持っています。



また、Duolingoではユーザーの学習の履歴を参考に弱点となる単語やフレーズをカード形式で表示して、反復しやすいような仕組みが採用されています。自分の苦手なポイントを徹底的に反復して克服できるため、効果的に語彙力を鍛えられるというわけです。



このようなユーザーそれぞれに最適な学習スケジュールをどうやって算出しているのかについて、Duolingoは公式ブログでその裏側を種明かししています。

学習した事柄は、学習直後には100%記憶していても、時間が経つにつれて次第に記憶が薄れていくものです。以下の図は、記憶が薄れる割合をグラフにしたもので、この例では学習したことを50%の割合で忘れてしまう「半減期」は1日経過後で、学習直後から急激に忘却が始まり、その後、忘却のペースが緩やかになることが示されています。Duolingoによると、50%ほどの割合で忘れてしまう半減期に近いタイミングで再び学習することが、記憶の定着には非常に有効だとのこと。



とはいえ、ユーザーが学習した項目が、いつ半減期を迎えるのかは個々のユーザーによっても、学習した内容によっても異なるため、半減期の正確な時期を見抜くことは非常に難しいものです。そこでDuolingoは、Duolingoアプリから得られる数百万人のユーザーの統計情報を機械学習で分析することで、半減期の時期を平均化する統計モデルを考案しています。

その結果、Duolingoは学習ポイントである半減期「HLR」を予測し忘却の割合を最小化するための以下のHLR関数を導き出したとのこと。なお、この研究については、Duolingoは別に論文(PDFファイル)として公表しています。



さらにDuolingoは、学習効果を高められる学習スケジュールをたてるために、ドイツの心理学者ヘルマン・エビングハウスが考案した「忘却曲線」を参考にしています。1880年代にエビングハウスは被験者に無意味なアルファベットの羅列を記憶させ、記憶が失われたときに再びそのアルファベットを記憶するのに必要な時間を計測したところ、時間の経過とともに再学習に必要な時間が長くなる、という発見をしました。これをグラフ化したものが忘却曲線で、忘却曲線に従えば記憶が失われるペースの速い、すなわち学習するのが難しい項目についてはより短い間隔で反復することが望ましいということになります。



そこで、Duolingoでは、反復学習したときに正解したか不正解だったかで、次回の復習までのペースを変更しています。つまり、正解した問題が再び現れるまでの間隔を広げるのに対して、不正解だった場合には次回までの間隔を短くすることで、学習を効果的にしているとのこと。



また、Duolingoはユーザーから得た情報を解析することで、比較的早く身につけることのできる易しい単語となかなか記憶に定着しない難しい単語などをスコア化しているとのこと。この単語の学習の難易度はHLR関数の変数に利用することで、ユーザーの学習スケジュール作りにいかされています。



HLR関数システムは他のアルゴリズムよりも、誤差率が最も低かったとのこと。なお、Duolingoの初期のバージョンで使っていたLeitnerシステムに比べて現在のHLR関数システムは誤差率を約半分まで低くすることに成功しているそうです。



Duolingoによると、学習効果を高める半減率の予測システムのHLRを導入することで、ユーザーの演習保持率が9.5%、演習数が1.7%増加し、全体の利用量が12%増加したとのこと。Duolingoはデータに裏付けされた高い学習効果をもたらすシステムを構築することで、ユーザーを惹きつけることに成功しているようです。