Duolingoはどれくらい機械学習使っているのか
語学学習アプリであるDuolingoは機械学習を至る所で使っていると耳にしたのですが、いったいどこで使っているのでしょうか?気になって調べてみました。
機械学習に対する自己理解を深め、その知見をほかの人に共有することを目的に、ブログ記事を執筆しました。私は機械学習の専門家ではないので間違っているかもしれません。この記事は私の Web サイト上でも公開されています( https://tokumaru.work/ja )
2025 年現在では、機械学習をインターネットサービスに適用するという事例は検索すればいくらでも出てくるような時代となりました。ただ、それをうまく活用できている事例 = うまく利用できていて、しっかりユーザー数がいるサービスというのはほんのひと握りだと思っています。
Duolingo という語学学習アプリ(皆さん一度は見たことがあると思いますが)は、その最たる例で、公式のブログなどによると様々なシーンで機械学習を利用しているそうです。
この記事では語学学習プラットフォームである Duolingo1 上で、どのように機械学習が活用され、製品においてどのような影響を与えているか、複数の機能などを参考に紹介します。
そもそも機械学習とは
機械学習と一言で言っても、それには様々な使い方があり、定義も人によって異なります。例えば、「あの赤くて丸いのは、多分リンゴだろう」という判断は、機械学習の一種です。
機械学習は、入力を、データに基づいて、出力を適切なものに変更するものという捉え方ができます。(少なくとも自分が理解している範囲では)
機械学習の種類
機械学習といえど、その種類は様々です。例えば、教師データの有無によって、教師あり学習と教師なし学習に分けられます。以下はおもな機械学習の種類です。
| 種類 | 説明 | 利用例 |
|---|---|---|
| 分類 | 入力に対する正解を学習させる(クラスを出力) | メールのスパム判定 |
| 回帰 | 入力に対する正解の値を学習させる | 不動産サービスでの相場予測(この場所なら、この値段だろう) メルカリの出品金額予測 -> 出品額推薦に用いる |
| クラスタリング | 教師なし学習。そのデータがどこのクラスに属するかを予測する | ニュースで同じイベントのニュースが何件も出てきちゃう問題を防ぐ(すでにこのニュースが出たから、同じグループのニュースはいらないよね) |
| 推薦 | 協調フィルタリングと、内容ベースフィルタリングがあるが、最近は両方使っていることがほとんど | ユーザーが好みそうなアイテムを提示する(この商品を買った人は、あの商品も買いそう) でも、そうすると、アイテムが売れてない場合おすすめできないので、内容ベースでもやることが多い |
| 近傍検索 | 似たものを探す。内容ベースフィルタリングと同じような技術で、ベクトル表現を用いる | word2vec とかだね。関連記事とかを見つけたりすることに使う? |
| 異常検知 | 外れ値検出や、変化点の検知 | 工場で、おかしな数字が出たら止める。(単一のパラメーターだけでない) |
| 強化学習 | 最適な方法を見つける | ゲーム AI(AlphaGo)とか、ロボット制御の活動が多いが、Web サイトの活用例などは比較的少ない |
教師データの必要性
教師データというのは、入力と出力のペアを教師として与えることで、モデルを学習させるものです。教師データがない場合は、教師なし学習ということになります。
例えば、教師データがあるものだと、「この画像は猫です」というようなものを学ばせて、そのあと違う猫を見せたら、それが猫かどうかを判断できるようになります。 教師がない場合は、これとは違う使い方になります。答えはないけど、分類をすること、例えば、ニュースで同じ記事が何件も出てきちゃうのを防ぐために、同じような内容のニュースをグループに分別するといった感じです。
これとは別で、強化学習というものもあります。人間は、褒められるとパフォーマンスが伸びますよね。あれと同じで、機械の動作にも点数(報酬)を与え、より高い報酬の動作を目指して最適な動作を見つけるというものです。
深層学習との違い
そのあとに研究が進んだ深層学習は、より複雑な言語、画像、動画などをもっと多い量学習させ、特徴を自動的に見つけてもらう者になります。 正直言って私はそこまで理解していないので、ここでは深層学習については触れません。(そもそも深層学習のデータ自体がブラックボックス化されており、ここで説明すること自体難しいのかもしれない)
Duolingo における使用例
では、Duolingo における使用例をいくつか見ていきましょう。最近の Duolingo は、Duolingo Max2と言って、LLM(大規模言語モデル)を利用したサービスを提供しており、こちらのほうが話題性はありますが、それ以外にも、機械学習を利用したサービス品質の向上に取り組んでいます。 むしろ、基本的なサービスは全てそれに依存しているのかもしれません。
1: コース改善の優先順位づけ
Duolingo では、入力欄に自由に単語を入力させ、答え合わせを行うシステムがあります。これは、従来の選択問題と違い、ユーザーが好きな内容を空欄に記述し、それをシステムが答え合わせを行う者になります。しかし、自由に入力できる仕組みである以上、設定された回答と完全に同じになることは稀です。そのため、回答システムにある程度柔軟性を持たせる必要があります。Duolingo では、このシステムの改善の優先順位づけに機械学習を利用しています。3
そもそも、このシステムの前に、問題の回答を編集するためのチームがあり、ボランティア(現在は中止しているとのこと)や、スタッフが担っていたそうです。そして、ユーザーが問題を解いた後に表示される、報告ボタンを通して、ユーザーからの報告を受け付けていたそうです。
しかし、ユーザーが増えるにつれ、その報告の件数は膨大になります。また、大半の報告は、ユーザーが本当に間違得ている問題を報告しているものであり、これだけのプラットフォームで報告された問題がDuolingo側の間違いなのか、ユーザーが自分の間違いを否定したくないから報告されたユーザーが間違って報告したのか判別するのは難しいわけです。
These days, about 10% of the reports we get are correct and require a fix; most of the remaining 90% contain some kind of mistake.
そのため、機械学習を使って、「本当に改善が必要な問題」を見つけているそうです。分類モデルの一種で、「この報告は無視してよいか、改善すべきか?」を判断してくれるモデルということです。 ユーザーが過去に入力したテキスト、そのユーザーの信憑性、正確なデータと文字がどれくらい剥離しているかの剥離度などを見るわけです。 また、間違いの特徴を検出(文法が間違っているのか、アメリカ英語のところをイギリス英語で答えるなどの正解であるべきバリエーションなのか)したりもするそうです
こうして分類することで、大半の無視して良い報告は無効となり、スタッフは本当に必要なものだけに注力できます。
ただ、モデルの精度にもよりますが、こういったシステムは、ごくまれに間違った回答をすることがあり、過信はできません。しかし、日々たくさんの報告があり、そもそもスタッフが人力でそれを確認できない状況下で、取りこぼしてしまった問題点を探して全て直すくらいなら、報告が多い、重要度の高いものから手をつけていくというアプローチは合理的だなと思いました。
記事によると実際にこの改善により、コース改善の効率が大幅に改善したとされています。
2: 広告の最適化
Duolingo では、収益化のため、広告を配信しています。これには内部広告と外部広告の 2 つがあり、内部広告は、Duolingo のサービス自体の宣伝で、外部広告は、外部のサービスの宣伝(いわゆるアフィリエイト広告)です。Duolingo では、アプリ内課金と広告による収益がおもな収益源となっています。
無料アプリ内で外部広告を表示するのは近年非常に多く見られますが、過剰な広告はユーザーの利便性を損ない、離脱率を高め、かえって収益を減らしてしまう可能性があります。
広告配信においては、広告の表示頻度や、広告の内容を最適化することが重要です。2025 年現在、Duolingo では内部広告か、外部広告のどちらを表示するのか?という判断を機械学習で行っているそうです。4
以前は A/B テストを行い、その結果に基づいて作成し、条件分岐的に広告を表示していたそうですが、このシステムに移行してから、年間数千万ドルの追加の収益をもたらしたそうです。また、以前のシステムは、複数のシステム間で連携し、断片化しており、バグや技術負債が発生していたそうですが、これらを機械学習のシステムに置き換えたことにより、シンプルで、スケーラビリティの高いシステムになったそうです。
The impact was fast and impressive. In the first few months, the new model delivered millions of dollars in incremental annual revenue. After refining the model and fixing some pre-existing bugs, that number grew to tens of millions per year. Today, our ads decision space has become Duolingo’s largest revenue source, driving roughly a quarter of our year-over-year revenue growth.
また、現在は、内部/外部広告の表示の判断だけでなく、より複雑な判断もモデル化しているそうです。(例えば、表示する内部広告の選定など)
3: アプリを開かせるようにする
ちょっと真面目な話が連続で出ていて疲れてしまうので、より体験しやすく、かつシンプルな、身近な機械学習の例も紹介します。
Duolingo を一度でも入れた人ならわかると思いますが、Duolingo は、とても戦略的にユーザーにアプリを開かせるようにしています。SNS で暴れまわっている緑色の鳥によるマーケティングだけでなく、メール配信、アプリのバックグラウンド通知など、様々な方法でユーザーにアプリを開かせるようにしています。スマホにたくさんのアプリが入っている今、ホーム画面の片隅にあるアプリを開かせるというのは非常に難しくなりました。一度開いてしまえばのめり込んでくれたとしても、そもそも開いてもらえないと、その先の学習はできません。
そのため、Duolingo では、機械学習を利用した通知アルゴリズムを構築し、なんとしてもユーザーにアプリを開かせるようにしているそうです。5
Duolingo では、テンプレートに基づき、ユーザーに様々な通知を送ります。以下はその例です。
- You’re on fire - Continue your 109 day Spanish streak on Duolingo.
- Streak wager reminder - You’re on day 2 of your 7-day streak wager! Now get to day 3!
- Ready for your trip? - Take 5 minutes to practice Italiannow
効果のある、より良い効果がある物を選択するとき、通常は多腕バンディット問題というものが出てきます。 「パチンコに行ったけど、どの台が当たるかわからないな。当たりやすい台を見つけるために色々試すべきか、今自分が知っている中で一番当たりやすい台を見つけるべきか?」と言えばわかりやすいかもしれません。これを Duolingo に置き換えると、「どの通知が一番ユーザーに効果をもたらすかを見つけるために色々試すべきか、今自分が知っている中で一番ユーザーに効果をもたらす通知を見つけるべきか?」と言えるかもしれません。
でも、これを機械学習に落とし込むと問題が発生するそうです。人間は怠惰な生き物なので人間は変化のないものを送り続けると行動を起こす確率が減少するらしく、同じ通知を何度も送るとアプリを開いてくれないのです。そのとき一番効果をもたらす通知を見つけても、それを連続して送り続けると、効果が薄くなってしまうというものです。
そのため、Duolingo では、工夫した新しいアルゴリズムにより、同じ通知を何度も送ることなく、ユーザーにアプリを開かせるようにしているそうです。先述のアルゴリズムで得た期待値に加え、ユーザーが忘却するということを考慮した上で、通知を送るようにしているそうです。パーソナライズといったことはせず、「この通知テンプレが一番人気だけど、この人はこの前にこの通知を見て、スコアが低いから、今日は違うのを送る」とか、「この通知を最後に表示してから時間が経ったので、スコアが回復した。通知を送ろう」というようなことをしているそうです。かなりシンプルに見えますが、多数のユーザーを抱えるサービスにおいて、計算量を減らすことは非常に重要なため、とても合理的に見えます。
機械学習と聞くと、モデルがあって、それに入力して…というのを私は創造していたのですが、考えてみると、毎日更新されるデータベースのデータや、ユーザーの行動ログに合わせて、計算を行い、意思決定を行っているということで立派な機械学習の例だと思います。
運用におけるリスク
このような、データドリブンな判断を多用する Duolingo では、様々なリスクが発生します、例えば、ケース 2 のような広告配信の判断をモデル化する場合、収益が増えたとしても、滞在時間にネガティブな影響を及ぼすかもしれません。
リスクの軽減 : A/B テスト
Duolingo では、A/B テストを行い、その結果に基づいて、システムを改善しているそうです。6 内製したテストツールを使い、実際にユーザーに対して新機能や実験を提供し、その結果を分析することで、システムの改善を行っているそうです。
内製したツールでは、常に監視すべき重要なメトリクスと、その実験ごとに追加で監視すべきメトリクスを設定し、それらを監視することで、システムの改善を行っているそうです。これにより、A/B テストのの反復をより速い速度で行うことができるようになったそうです。
Duolingo は機械学習によってどのような価値を生み出したのか
Duolingo は、機械学習を多用することで、システムのフローをシンプルで持続可能なものにし、収益性を向上させています。また、それらの新しいアプローチを導入する際に、以前と比較してどう変わったかをテストすることによって、システムの導入によって発生するネガティブな影響を最小限に抑えるようにしていることがわかりました。
参考文献・注釈
Footnotes
-
WILL MONROE, PH.D., DECEMBER 16, 2019 - how machine learning helps duolingo prioritize course improvements (Duolingo Blog) ↩
-
NAVEEN SHANKAR, MARCH 18, 2025 - how machine learning supercharged our revenue by millions of dollars ↩
-
[A Sleeping, Recovering Bandit Algorithm for Optimizing Recurring Notifications]((https://research.duolingo.com/papers/yancey.kdd20.pdf), JANUARY 10, 2020 ↩
-
LAVANYA APRAMEYA, JANUARY 10, 2020 - improving duolingo, one experiment at a time ↩
0人が0回拍手しました
関連記事
🤖 HTMLさえわかればできる!Astroでブログサイトを作ってみよう!
HTMLさえわかればできる!Astroでブログサイトを作ってみよう!
HTML さえわかればできる!Astro でブログサイトを作ってみよう!
なんかブログサイト作りたい、っていうときありますよね。
ある程度の規模のサイトなら、わざわざ Wordpress...
💻 GitHubでチーム開発してみよう
GitHubでチーム開発してみよう
GitHub、アカウント登録はしたけど開発者じゃないから使わないというそこのあなたのために、さっと使い方を説明した記事を書きました。
🤖 GoogleスプレッドシートをAPI経由で読み込もう!
GoogleスプレッドシートをAPI経由で読み込もう!
Google スプレッドシートを API 経由で読み込もう!
去年別のサイトで書いた記事を再公開したものです。
超簡単です。Google スプレッドシートに書いた情報を API...
🗓️ ライフログのシステムについて思うこと
ライフログのシステムについて思うこと
LLMの進歩によって人の行動やを言語化したり他者との会話を分析したりすることが簡単になった。でも、イマイチどれもしっくりこない気がしたので、技術的な面と、使いやすさの面から色々考えてみる。