学習」タグアーカイブ

Duolingoをモチベーションを保ってやり続ける方法

Duolingo(デュオリンゴ)は様々な方法でユーザーのモチベーションを維持し、ユーザーにサービスを継続利用させようとしています。
モチベーションが続かないと、1日あたりの勉強時間は長くならないし、練習が継続しません。学習時間が短いとか、短期間で止めてしまっては語学学習で結果が出ることは一切ありません。

実際に1年間続けた私が、このモチベーション維持させるために提供される最低限のレッスン数、レッスン時間で実際にどのくらいのレッスン数ができるのかを解説します。

Duolingoの経験値システム

モチベーション維持につながるシステムの一つが、レッスン毎に付加されるXPという経験値に関するシステムです。
一定以上の経験値が溜まると、同じくらいレッスンをしている人のリーグに参加できて、経験値を競い合います。

この経験値は1レッスンあたり通常25XP程度ですが、2倍になったり、3倍になったりする仕組みがあり、この時間帯はしっかりレッスンしてXPを稼ごうと思うような仕掛けがあります。

DuolingoでXPを稼ぐには

Duolingoはデイリークエストとして3つのクエストが与えられます。
このクエストは毎日ランダムで提供されます。1日15分レッスンする、単に3回レッスンするような単純な物から、3回のレッスンで80%の正解率、パーフェクトな正解率のレッスンを3回、3回のレッスンで5連続正解など、難易度がちょっと高いような物まで、毎日違うクエストが3つ提供されます。

このデイリークエストをコンプリートすれば、翌日午前中のレッスン開始時の経験値数が開始から10分間の間は3倍になります。クエストをコンプリートしなくても、1つクリアしただけで、3倍の時間が10分延長される物もあります。

また、午前中に1回でもレッスンをすると、その日の夜のレッスンが15分間2倍に、夜6時以降にレッスンをすると翌日午前中のレッスンが15分間2倍になります。

このような2倍、3倍になるような状態でレッスンをすればXPはより稼げます。

XPを稼ぐとどうなるか

XP数を稼げる時間は、1日1時間程度ですが、XPが3倍、2倍の状態でレッスンをすると、1つのレッスンをどのくらい書けるかによりますが、1日1000XP程度溜まります。
この溜まったXP数に応じて、前述したリーグでどんどん勝ち上がっていきます。

リーグはブロンズ、シルバー、ゴールドなどから最終的にダイアモンドリーグにいきます。1日1000XP程度稼げれば、最短でダイヤモンドリーグに到達できます。

このダイヤモンドリーグの状態を維持しつけること、この状態を維持するために毎日午前中は特に多くレッスンするようになることがモチベーション維持につながります。

ダイヤモンドリーグに到達すると、1日3000XP稼いでいるような強者と同じリーグになったりしますので、自分のレッスン数と他人のレッスン数を比較してやる気が出る方も増えるのではと思います。

一部に1日万単位でXPを稼いでいる、不正な方法を使っているとしか思えないユーザーもいますが、現実的に可能な範囲内のユーザーと比較しましょう。

他のモチベーション維持

他にも他のユーザーとフレンドになる、レッスン継続日数を増やすなど様々な仕組みがありますが、最もモチベーション維持につながるのがこの経験値システムではと思います。

経験値倍増システムでどのくらいレッスンができるか

このシステムをうまく使い、3ヶ月くらいレッスンをすればダイヤモンドリーグに到達します。

この状態になるには、前日のクエストをクリアして午前中のレッスン開始時に10分間XPが3倍の状態でレッスンをするなどします。
前日夜のレッスンで15分間2倍のXPの権利を獲得しているので、3倍の状態で2倍の権利を使うと、3倍として扱われ、合計25分間は3倍のXPが稼げます。

3倍のXPとは、通常25XPのレッスンが最低でも25分間1回あたり75XPになるという意味です。

この間に、クエストのうち2つをクリアすれば、1つあたりクエスト強化時間が10分間追加されます。つまり2つのクエストをクリアすれば3倍のXPを稼げる時間は合計で45分間になります。

これでもう1つのクエストをクリアすれば、翌日10分間XPが3倍の権利がもらえます。

このレッスンは午前中にやるので、これだけで夜のレッスンで15分間2倍になる権利も得られます。

つまり、普通にレッスンを続けていくだけで、1日で45分間の3倍XPと、15分間の2倍XPが得られます。

レッスンの時間が1回あたり4分だとして、1回あたり75XP得られたとすると、午前中11回のレッスンで825XP。午後は4レッスンで300XP稼げます。1日あたり1125XPで、1週間で7875XPになります。

これだけで常にダイヤモンドリーグの状態を維持出来、さらに、Duolingo全体の学習者の中の0.1%に位置する学習状態になります。

この数値は365日のデータでは無く、1月途中から始めた11月末までのデータのようで、連続最長記録にある321日間のデータのようです。

累計XPが537,274とありますが、この場合は1日あたり約1,670XP。学習分数が28,506分ですが、1日あたりにすると学習分数は約89分です。

もっと低い数値でこの0.1%に入っている人もいるようなので、1日1時間程度の学習でもこの状態には行けると思います。もしも始めるなら年末にこの数値は出るので、年の早い内に始めましょう。

つまり、毎日XPを大量に稼げる午前中45分、夜15分のレッスンが最低限のモチベーション維持レッスン時間と勝手に定義づけます。

サボるとどうなるか

これでは毎日欠かさずにやらないといけないので、逆にプレッシャーや面倒くさくなってやる気を無くす人も出てくると思います。

仮に午前中できなかった、クエストの条件が高くてクリア出来なかった、うっかりやり忘れるような事もあります。

その場合も、1.5倍のXPがもらえたり、普通にクエストをクリアしていけば、翌日には3倍の権利がもらえたりします。
つまり、絶対に毎日やり続けなければこれが達成出来ないわけでもないです。月に一度くらいサボってもたいしたことはありません。

モチベーション維持の最低限でどのくらいレッスンができるか

この1時間のレッスン時間で約15回のレッスンが出来る場合、日本語での英語学習はどのくらいすすむでしょうか。すべてのレッスンを通常の通常のレッスンだけやると仮定します。

レッスン数は8995なので、1年間で5475レッスン可能です。この場合は1年ですべて終わらせることは出来ず、3520レッスンが残ります。

これはセクション5を終わらせるレッスン数です。CEFRで初級B1を終わらせた状態です。
ここまでが完璧な状態なら、英会話などはあまり苦労しない状態だと思いますが、完璧の基準はそれぞれなので、人によります。

つまり、人によりますが、Duolingoのレッスンをモチベーション維持出来る最低限レベル、午前中45分、夜15分やるだけで、Duolingoないではトップの学習層になるし、それなりにできるようになるということです。

AIを「使うだけ」で終わらせないために ― 数学ゼロから始めるAI理解ロードマップの補足解説

AIをしっかり理解して利用するための現実的な独習ロードマップ「数学ゼロから始めるAI理解の独学ロードマップ — 1年で理論も実装も攻略」の補足です。

特に数学の学習方法を間違えて、計算が出来ればいいだけ、難しい計算を手計算で、できるようにすることを目標にしないでください。
このあたりを間違えると、大学レベルの数学でつまずきますし、その後の実践学習で使うAI関連の式の理解にまで影響します。

多くの場合、途中で嫌にやって止めるか、ロードマップを自己流に解釈してわかったつもりで進み、高校レベルの数学で脱落し、ほとんどの方は大学レベルの数学で脱落します。

何を学習すればいいか、学習した後の実践までを補足しています。

AIは「使うだけ」と「理解して使う」で何が違うのか

AI関連はチャットボットなどを使うだけなら何の知識もなく可能です。
それ以上理解して使うには、

APIなどを使って中身はブラックボックスだが一応理解したことにした自称AIエンジニアとする
APIが具体的に何をしているかを関連論文の意味わかる状態まで理解したうえで、本当のAIエンジニアになって他にはないオリジナルのAIサービスを開発できる
などの、使えるレベルには大きな差があります。

車で言えば、乗客として乗るだけが、運転ができるレベル、部品の意味がわかって修理や改造ができるレベルなどでしょうか。

その上のレベルにAlexNetやTransformerなどを生み出す人達がいます。
このレベルに到達するには更なる学習、研究などが必要になります。自動車の組立などをする人が直接必要のない、燃焼力学、空気力学などを学習するような努力が必要になります。

そのための数学学習を1年間行う基本ルートを「数学ゼロから始めるAI理解の独学ロードマップ — 1年で理論も実装も攻略」として説明しています。

ここでのゴールはAI関連を理解するために最低限必要な数学知識をつけることです。
最終的に「ゼロから作るDeep Learning」に出てくる数式の意味がすべてわかる状態にします。このようなAI関連書籍で出てくる数式などを読んで理解したつもりになるのではなく、その計算がなんで必要なのか、その計算の意味を自分で理解できるレベルにするという意味です。

APIを使うだけのAIエンジニアの限界

例えば、生成するデータの創造性を高めるTransformerのTemperatureという数字があります。
この数字をいじれば出力結果が大きく変わることだけを知っているのがAPIを利用しているだけの自称AIエンジニアです。
その数字がなんのための物か、数式のどの部分に影響しているのかを理解して数字を調整できる、必要なら他の項目を調整できるのが本当のAIエンジニアと言えるでしょう。
この本当のAIエンジニアを目指すのが一連の学習ルートになります。

そのために具体的に何を使ってどう学習するのか、ロードマップでは1年でAI関連の数学理解をする基本を解説しました。その中では学習の流れを解説したので、学習するさいに課題となるポイントを解説します。
さらにその後の半年程度の追加学習で、より理解を深め、その先に行くための土俵作りも説明してます。

本当のAIエンジニアに必要な数学的理解とは

学習で重要な事は基礎をしっかり固めることです。
本当のAIエンジニアに必要な数学的基礎の理解とは、テストで良い点を取るために公式を使えることではなく、その数式が何を表しているかを自分の言葉で説明できるレベルの理解です。

初めの1ヶ月は中学数学までの復習をします。その後、3ヶ月ほどかけて高校数学の必要な範囲を学習します。
この基礎的な数学の学習で重要な事は、基礎的な計算ができるようになることではないです。

数学ゼロからAI理解を目指す学習ロードマップの考え方

例えば、計算方法だけを覚えて、計算ドリルを高速に正確に解けるようになる事がゴールではありません。
分数の割り算で分子と分母をひっくり返すことを知っているのですらすら解けるのではなく、なぜひっくり返すのか、逆数をかけていることなどをしっかり理解するということが最も重要です。

多くの方はこのあたりを勘違いして、自分は基礎的な計算ができるからと、数学の基本的な概念を理解せずにその先の分野にすすんでしまいます。大学数学では公式の丸暗記では乗り切れなくなり、大きな壁にぶつかります。

とはいえ、各分野で完全な理解をしないと先絶対すすんではいけない物ではありません。
本当にそれをやった場合、多くの方が前半で脱落してしまいます。よくわからないなら、とりあえず自分が理解した計算ルールだけでも先に進んでみましょう。

その状態で後の項目でまた壁にぶち当たってしまったら、ここまで戻ってきます。
それまでの学習成果から、以前の悩みがすぐに解消される事もあります。

どうしてもわからないことは、わからないという事を覚えておけば十分です。

なぜ中学・高校数学の理解がAIで重要なのか

例えば、計算ドリルなどで高速に計算できること、大学入学試験の問題をできるようになることを、ここでの目標にする事は間違っています。
このような学習自体に損はないですが、基礎的な計算を手計算で満足してできるようになれば十分です。計算はコンピュータにやらせればいいので、複雑な計算を手計算で高速に解ける必要は無いです。
他にも連立一次方程式はなにをやっているのか、因数分解とは何か、ベクトルとは何かのようなことをしっかり理解します。
連立一次方程式は複数の未知数の解を求める手法、因数分解は式を「積」の形にまとめる、ベクトルは向きと大きさを持つ矢印などのことを理解します。

もしも、学習内容が計算は出来るが、なんだか腑に落ちない場合、書籍などを読んでもパッとしない場合、これから自分が理解しようとしているチャットAIに聞いてみましょう。

マイナス×マイナスがプラスになるルールは覚えましたが感覚的に理解出来ません

大学数学(線形代数・微積分・確率)がAIでどう使われるか

その上で将来AI関連の学習を始めると、

連立一次方程式 – 予測誤差をゼロにするための最適な重み計算に使う
因数分解 – 膨大なデータを扱う際の計算を簡略化し「行列分解」として、ユーザーの好みと商品の特徴を抜き出すレコメンド機能に活用
ベクトル – 言葉や画像を数値の並びに変換し、データの類似度を判定

のような事に数学が使われていることが理解できるようになります。

中学生、高校生くらいが、将来なんの役に立つかわからないと思って学習させられている数学が、AIでは様々な分野で使われていることがこれだけでもわかると思います。

分数の割り算自体は、大学数学の線形代数で逆行列という概念が出てきた際に役立ちます。(2011年以前に高校入学していた場合は数学Cで学習します。なお数学Cはすべての高校生が学んでいません)
分数と同じように基礎的なことは他にもあります。例えば、マイナス同士のかけ算でプラスになる理屈のような初期段階で出てくるが、覚えただけで終わっている内容をしっかり理解している事も重要です。

そのために、難しい数式を解く解法の計算が主な受験参考書よりも、数学がわからない人向けにやさしく解説している講義系参考書などを使って、なぜその計算になるのかなどの理解を中心に学習することがおすすめです。

例えば受験向け参考書で学習する場合、チャート式なら白チャート、問題精講なら入門問題精講、他にも基本的な数学をしっかり解説した参考書や読み物などを利用しましょう。

中学レベルまでを1ヶ月、高校レベルを3ヶ月で合計4ヶ月を目安にします。

Pythonを電卓として使う準備

高校までの学習が終わるタイミングで、Pythonの学習をします。
ここでのPythonの学習はプログラミング初心者が、数式を電卓代わりにPythonで計算でできるようにすることが目的です。

NumPyというのを使い、一般的な数式をここで計算できる状態にします。
すでにPythonをある程度利用出来ている方は、数式をNumPyで処理できるようにすることを早めのタイミングで始めるのがいいでしょう。

PC上でPythonを使うには、Python環境のインストールや設定などの構築が一般的に必要ですが、Google Colabを使えば環境構築なしでブラウザ上で簡単に使えます。
NumPyなどに関するオンライン上の学習コンテンツを使うのが便利です。
Matplotlibでグラフを書けるようにすると、簡単にグラフが書けるようになるので、こちらも視覚的に数式を確認できるようになるので便利です。

もしも、この時点でPythonプログラミング自体をある程度理解したい場合でも、あまり深入りする必要は無いです。
基本的には計算ができるようになればいいです。それもすべて覚えるのではなく、初めは何かを見ながらその数式をNumPy用にかけるようになればいいだけです。
プログラミングがさっぱりわからなくて不安な場合は、何となくこうすればプログラミングができるレベルまで軽く学習しましょう。

最終的には「Pythonで動かして学ぶ!あたらしい機械学習の教科書」などを使ってAI関連の内容を学習することになるので、この時点でこのような書籍の基本的な部分で学習してもいいかもしれまません。

この時点で半年ほどかけて、AI関連で使う高校数学はある程度理解し、それらの数式をPythonで記述できるレベルになっている状態にします。

数学などが既にできる人は数ヶ月単位で期間が短くなります。

NumPyでの演算練習と高校レベルまでの数学復習を1ヶ月ほどで終わらせます。ここまでを5ヶ月程度を目安にします。

Pythonを電卓として使えるようにするのは便利です。しかしすべてこのように学習することが正解とは言えません。
例えば、NumPyで連立一次方程式の解法のガウスの消去法を自分でなんとかしようとするとかなり沼にはまってしまうでしょう。
しばらくやってうまく出来ない場合は、何が起きているのか理解した上で、早々にあきらめてより便利な方法に移行することも重要です。

大学レベルの数学を学習する

大学レベルの数学学習は、線形代数、微分積分、確率統計になりますが、AI関係で必要な内容だけでも各分野1ヶ月くらいかかります。

各分野1ヶ月で合計3ヶ月、復習1ヶ月として、最短でも4ヶ月ほど。実質は5ヶ月くらいかかるかもしれません。

大学レベルの学習を一通り終わらせるまで10ヶ月程度、復習を含めて、余裕を持って11ヶ月で終わらせる事を目安にします。

このレベルの学習は日本語の書籍などでも可能ですが、英語がわかれば欧米の大学が無料で提供している各種コンテンツを活用する事も有効です。

学習が終わったら「Pythonで動かして学ぶ!あたらしい機械学習の教科書」を使って、機械学習関連の計算ができるかを確認しましょう。

そして、「ゼロから作るDeep Learning」を実際に読み進めていきます。

ここで、今までの学習とAI関連がつながっているかを確認します。もしもさっぱりわからない場合は、勇気を持って基本的な部分から数学を理解しているかを復習しましょう。
しっかり学習出来ていれば、それぞれの内容と今までの数学の学習の内容がつながっていきます。

この一連の数学の学習を終わらせた後の実践練習の目安が約1ヶ月です。
小学生レベルの復習から初めて、ここまでで1年を目安にします。

1年でAI数学を理解する学習ステップ

ここまで1年間の学習でやっとAI関連数学の学習の基礎が出来た段階になりました。

しっかり学習が出来ていれば、関連書式が記号ばかりで意味不明だった物が、それぞれ意味がわかる状態になっています。
しかし、本格的に使えるするための学習はまだ続きます。

ゼロから作るDeep Learningの続編「ゼロから作るDeep Learning ❷ ―自然言語処理編」などで学習を続けます。

この追加学習を2ヶ月として、学習を始めて1年2ヶ月後には、ChatGPTやGeminiなどのチャットボットが何をやっているのかが理解できるようになります。

数学を理解した先にできるようになること

このあたりまで来たら、数学自体の学習はおおむね出来ているはずなので、電卓扱いのNumPyではなく、より実践的でよく使われているPyTorchを使えるようしていきます。

PyTorchを使った機械学習について学び、自分でファインチューニングして、自分専用AIアプリを作れるようになることを目標とします。
初めからPyTorchを使った方が便利ですが、便利すぎて学習になりません。初期段階は電卓扱いのNumPyで学習しましょう。

AI関連でPyTorchを使う学習には「最短コースでわかる PyTorch &深層学習プログラミング」などが役立ちます。

ここまでの学習で数学と、その数学を使ってAI関連コードの理解がかなり深まった状態です。

この状態になれば、Hugging Faceにある様々なAIコードを確認できるようになります。
既存のコードの意味がわかる、実際にPythonやPyTorchを使ってコードを書けるようになった段階で、ようやくAI関連の実践入れます。

Transformerを使うための知識はあるので、これを使って自分のデータでファインチューニングしてオリジナルAIサービスを作れるようになります。

とはいえ、いきなり何か作れと言われても難しいので「機械学習エンジニアのためのTransformers ―最先端の自然言語処理ライブラリによるモデル開発」で、Hugging Faceを使った開発を学習します。
そして「大規模言語モデル入門」でチャットボットをどうやって作って行くのかを学習します。

ここまでで1日2時間程度の学習で1年半程度の期間を目安にします。

半年程度で数学の基本及び数式をコンピュータを使って計算させる方法を学びます。
その後の半年程度で、AI関連の数学の内容を理解できるようにし、機械学習関連でどう使われているかまで学習します。
この1年ほど学習した段階で、AIの裏側で何の計算が行われているかがわかるようになります。

さらに半年程学んで、実際にAI関連アプリを作れるようになるまでの実践練習の期間です。
ここまできたら、何も知らずにAPIを使っているだけの自称AIエンジニアとの差がかなりついている状態になります。しかし、Transformerなどを生み出した本物のAIエンジニア・研究者との差はまだまだあります。

つまり、1年程度でAIで使われる数学関連の知識を身につけます。この時点で学習を一段落させてもいいですが、その後、半年かけてAI関連の開発の実践演習に入り、より理解を深めるか、さらにその先へと行くかという流れです。

この、1年半というのはかなりの期間だと思いますが、分数の割り算の意味がよくわかっていなかった人がこの短期間でAIアプリを開発できるようになるなら、すごい事ではと思います。

この内容は主に数学から離れていて、プログラミングの知識もない方向けにも、無理なく続けられる社会人向けの内容です。
仮に高校3年生くらいがこの内容を元に学習し、大学に入ってより深くAI関連の研究をしていけば、数年後には次のTransformerを生み出すようなトップクラスのAI技術者になっている可能性もあります。