はじめに
小学校で習う足し算の筆算を、強化学習のエージェントに解かせてみました。
同じエージェントに、問題をどんな分布と順番で出すかだけを変えて学習させ、何が変わるかを比べます。
この記事では、この分布と順番の組をカリキュラム条件と呼びます。
比べたカリキュラム条件は次の4つです。
| カリキュラム条件 | どう出題するか |
|---|---|
| 一様ランダム | 0〜9999の数を一様に2つ引いて足させる |
| 桁数一様 | 先に桁数(1〜4桁)を一様に選び、その桁数の数を引く。順番はつけない |
| 教科書順 | 小学校の教科書の単元の並びに沿って、やさしい単元から順に出す |
| 水道方式 | 水道方式という計算指導の体系の考え方に沿って、単元を順に出す |
水道方式は、数学者の遠山啓らが1950年代の終わりごろに提唱した計算指導の体系です。
教科書とは違う順番で計算を教えることで知られています。中身は後で説明します。
教科書順の単元は、学習指導要領の学年配当と一般的な教科書の並びをもとに作りました。
算数の授業を受けた記憶があって、強化学習を少し触ったことがある人なら読めるように書きました。
結果を先に
- 水道方式の順番で出したエージェントが、最終的な正答率がいちばん高く、学習をやり直したときのばらつきもいちばん小さくなりました。
- 教科書順で出したエージェントは、8+5 のような「1桁どうしで繰り上がりがある足し算」を、5回の学習すべてで1問も解けませんでした。
- 一様ランダムで出したエージェントは、反対に 3+4 のような「1桁どうしで繰り上がりがない足し算」を1問も解けませんでした。
- 二つの失敗は、どちらも筆算の最後に左端へ「1」を書くか、何も書かずに終えるかを決める場面で起きていました。
実験の設定と用語
筆算のルール
扱う問題は、0〜9999の整数どうしの足し算です。
エージェントは一の位から順に、1か所ずつ答えを書いていきます。
1回の行動で決めることは2つあります。
- その位の答えの欄に書く数字(0〜9、または空欄のまま)
- 次の位に繰り上がりの印を付けるかどうか
この組み合わせで、行動は11×2で22通りです。
位を全部書き終えたら、最後にもう1回だけ行動します。
繰り上がりが残っていれば答えの左端に1を書き、残っていなければ空欄のまま終える、という行動です。
この記事では、この最後の1回を「左端の処理」と呼びます。
L桁の問題は、L回の位の計算と1回の左端の処理で、L+1回の行動で終わります。
47+6 なら次の3回です。
| 回 | 書く場所 | 正しい行動 |
|---|---|---|
| 1 | 一の位 | 7+6=13 なので3を書き、十の位に繰り上がりの印を付ける |
| 2 | 十の位 | 4+1=5 なので5を書く。6の側には十の位がないので空欄として扱う |
| 3 | 左端の処理 | 繰り上がりが残っていないので、空欄のまま終える |
報酬は、正しい手順と完全に一致する行動をするたびに+1を与えます。
1回でも違う行動をしたら、その回の報酬は0で、その問題はそこで打ち切りです。
小学校の授業では筆算の手順どおりに書くことを求められるので、それに合わせました。
暗算で答えをまとめて書くような行動はできません。
正解の定義も決めておきます。1問の行動がすべて正しい手順と一致したときだけ、その問題を正解と数えることにしました。
エージェントに見せるもの
エージェントには筆算の紙面全体を見せます。紙面は6列×4行のマス目です。
繰り上がりの印 . . . . 1 .
上の数 . . . . 4 7
下の数 . . . . . 6
答え . . . . . 3
上の図は 47+6 の1回目を終えたところです。. は空欄を表します。
各マスは0〜9か空欄の11通りなので、11次元のone-hotで表します。
6列×4行×11で、264次元のベクトルです。
今どの列を書く番かは教えません。
エージェントは書きかけの答えの行を見て、次にどの列を書くのかを自分で判断する必要があります。
学習の設定
| 項目 | 値 |
|---|---|
| アルゴリズム | PPO(stable-baselines3) |
| ネットワーク | 全結合256-256(MlpPolicy) |
| 並列環境数 | 8 |
| 学習率 | 3e-4 |
| エントロピー係数 | 0.05 |
| 学習ステップ数 | 2000万(1ステップは行動1回) |
| シード | 1つのカリキュラム条件につき5つ |
シードは乱数の種です。同じカリキュラム条件で、乱数の種だけを変えて5回学習させました。
CPUで10本を同時に走らせて、1本あたり約5時間かかりました。
評価に使う問題
学習とは別に、固定した問題で正答率を測ります。
| 問題の集まり | 中身 |
|---|---|
| 桁数均等セット | 2つの数の桁数の組み合わせ16通り(1桁+1桁〜4桁+4桁)から150問ずつ。主な指標 |
| 型別セット | 後で説明する水道方式の型分けに沿った9つの型から150問ずつ |
| 一様セット | 0〜9999から一様に2000問 |
一様セットは、一様ランダムの条件で学習に使うのと同じ分布の問題です。
0〜9999から一様に引くと、81%が4桁どうしになります。両方とも2桁以下になるのは1万問に1問です。
水道方式の用語
水道方式は、足し算の問題を次の言葉で分類します。
| 用語 | 意味 | 例 |
|---|---|---|
| 素過程 | 1桁+1桁の100通りの足し算。どの筆算もこの組み合わせでできている | 3+4、8+5 |
| 複合過程 | 素過程を組み合わせてする、2桁以上の足し算 | 23+45 |
| 一般型 | 2つの数の桁数がそろっていて、どの位にも0がない問題 | 23+45、28+35 |
| 特殊型 | 0を含む問題や、桁数がそろっていない問題 | 30+42、47+6 |
| 空位 | 片方の数にその位がないこと | 47+6 の十の位では、6の側の十の位が空いている |
水道方式では、まず素過程をまとめて練習し、それから複合過程に進みます。
複合過程では一般型を先に教え、特殊型は後回しにしてまとめて扱うのが特徴です。
名前は、一般型を水源にして、そこから特殊型へ水道管で水を流すように教えていく、というたとえから来ています。
実験1: 一様ランダムで出すとどうなるか
まず一様ランダムで出して学習させました。
500万ステップの時点では、1問まるごとの正答率はほぼ0%でした。
これで打ち切っていたら、一様ランダムでは学べないと結論するところでした。
2000万ステップまで延ばすと、800万ステップあたりから正答率が上がり始めました。
この実験は3シードで、一様セットでは平均80%まで解けるようになりました。
ところが桁数均等セットでは58%にとどまります。
4桁を含む問題は7〜8割解ける一方で、2桁+1桁と1桁+2桁は5%、1桁+1桁は41%でした。
一様ランダムでよく出る長い問題は解けて、めったに出ない短い問題が解けません。
人間の子どもとは逆の順番で解けるようになっています。
間違いでいちばん多かったのは左端の処理で、桁数均等セットの全問の28.8%を占めました。
一様ランダムで出すと、左端の処理はほとんど毎回5列目で起きます。
エージェントは「位を全部書き終えたら左端の処理をする」という手順ではなく、「5列目に来たら左端の処理をする」という場所で覚えてしまった、と私は考えています。
短い問題では左端の処理が2列目や3列目に来るので、対応できません。
実験2: 出題の順番を変える
比べる4つのカリキュラム条件
冒頭の4つのカリキュラム条件を、それぞれ5シードずつ2000万ステップ学習させました。
教科書順と水道方式は、単元を順に進みます。
最後の単元を終えたあとは、2000万ステップまで桁数一様で出題し、この期間を総復習と呼ぶことにしました。
桁数一様の条件は、比べるための対照として入れました。
教科書順や水道方式で正答率が上がったとき、その理由は順番かもしれませんし、短い問題をたくさん見せたことかもしれません。
順番をつけずに同じ分布だけを見せる条件があれば、二つを分けて考えられます。
教科書順の単元
数の大きさで区切り、学年が上がるごとに桁を1つずつ増やします。
| 単元 | 学年 | 内容 | 例 |
|---|---|---|---|
| T1 | 1年 | 1桁+1桁、繰り上がりなし(0を含む) | 3+4、5+0 |
| T2 | 1年 | 10いくつ+1桁、繰り上がりなし | 13+4 |
| T3 | 1年 | 1桁+1桁、繰り上がりあり | 8+5 |
| T4 | 1年 | 何十+何十、2桁+1桁の繰り上がりなし | 20+30、32+5 |
| T5 | 2年 | 2桁+2桁、繰り上がりなし | 23+45 |
| T6 | 2年 | 2桁+2桁と2桁+1桁、繰り上がりあり(答えは2桁) | 28+35、47+6 |
| T7 | 2年 | 答えが3桁になる2桁の足し算、3桁+1桁と3桁+2桁の繰り上がりなし | 76+58、345+23 |
| T8 | 3年 | 3桁を含む足し算全般 | 358+267、199+1 |
| T9 | 3年 | 4桁を含む足し算全般 | 3628+1574 |
教科書順では、1年生のうちから 32+5 のような桁数がそろっていない問題が出てきます。
1つの単元の中でも、0を含む問題や桁数がそろっていない問題が混ざって出るようにしました。
水道方式の単元
水道方式の単元は、問題の型で区切りました。2桁で一般型から特殊型までを一通り練習し、それから3桁と4桁に広げる順番です。
| 単元 | 内容 | 例 |
|---|---|---|
| W1 | 素過程。1桁+1桁の100通り(繰り上がりなしとありを混ぜる) | 3+4、8+5、0+7 |
| W2 | 2桁の一般型、繰り上がりなし | 23+45 |
| W3 | 2桁の一般型、繰り上がりあり(答えが3桁になるものも含む) | 28+35、76+58 |
| W4 | 2桁の特殊型。0を含む問題と、片方が1桁の問題 | 30+42、47+6、5+38 |
| W5 | 3桁と4桁の一般型 | 358+267、3628+1574 |
| W6 | 3桁と4桁の特殊型。0を含む問題、桁数がそろっていない問題、繰り上がりが2回以上続く問題 | 305+97、999+1 |
教科書順と水道方式では、まず桁数がそろっていない問題を出す時期が違います。教科書順は1年生から出し、水道方式は一般型を練習したあとにまとめて出します。
もう1つの大きな違いは、1桁+1桁の扱いです。教科書順は繰り上がりなし(T1)と繰り上がりあり(T3)を別の単元に分けます。水道方式は100通りを1つの単元(W1)でまとめて出します。
単元の進め方
- 5万ステップごとに、今の単元の問題200問を解かせて、90%以上正解したら次の単元へ進む
- 1つの単元に使えるのは200万ステップまでとし、超えたら正答率にかかわらず次の単元へ進む
- 出題の8割は今の単元から、2割はそれまでの単元から出す(復習)
- 最後の単元を終えたら、2000万ステップまで桁数一様で出す(総復習)
単元ごとの問題は、桁数の組み合わせを一様に選んでから、その単元の条件に合う問題を一様に引いて作りました。
結果
全体の正答率
| カリキュラム条件 | 桁数均等セット | 型別セット | 一様セット | 桁数均等セットで50%に届いたステップ数 |
|---|---|---|---|---|
| 一様ランダム | 62.9% ± 13.5 | 57.3% ± 9.2 | 82.4% | 1620万〜1790万(2シードは届かず) |
| 桁数一様 | 80.8% ± 11.9 | 76.5% ± 10.9 | 25.9% | 380万〜640万 |
| 教科書順 | 55.4% ± 9.5 | 51.3% ± 6.6 | 9.6% | 1380万〜1960万(1シードは届かず) |
| 水道方式 | 86.4% ± 8.4 | 80.7% ± 6.0 | 25.8% | 870万〜920万 |
正答率は5シードの平均で、±の後ろはシード間の標準偏差です。
一様セットはほぼ4桁どうしの問題なので、一様ランダムで学習したエージェントだけが高くなります。
水道方式は、桁数均等セットでも型別セットでも最も高い正答率になりました。シード間のばらつきも4つの中で最も小さく、5シードとも870万〜920万ステップで50%に届いています。
ただし、正答率が上がり始めるのがいちばん早かったのは、順番をつけない桁数一様でした。
水道方式は桁数一様より300万ステップほど遅れて追いつき、最後にわずかに上回りました。
この差はシード間のばらつきと重なる程度で、5シードでは水道方式のほうが上とは言い切れません。
型別の正答率
型別セットの9つの型は、次の順に判定して決めました。
1桁+1桁なら素過程、桁数がそろっていなければ空位、0を含めば「0を含む」、繰り上がりが2回以上続けば連鎖、答えの桁が増えれば「最上位へ繰り上がり」、それ以外は繰り上がりの有無で分けます。
水道方式は9つの型のうち6つで最も高く、どの型も4割を下回りませんでした。
目立つのは2つの0%です。
教科書順は「素過程・繰り上がりあり」が0%、一様ランダムは「素過程・繰り上がりなし」が0%でした。
教科書順は 8+5 が解けない
シード0のエージェントに、同じ4問を解かせた答案です。赤枠が間違えた行動です。
教科書順のエージェントは、8+5 の一の位では3を書いて、繰り上がりの印も正しく付けています。
間違えたのは左端の処理です。1を書くべきところに4を書き、さらに繰り上がりの印も付けました。
十の位を、まだ計算が続くふつうの位として扱っています。
5シードのうち4シードが、このように左端の処理で間違えました。残りの1シードは一の位で間違えました。
単元の記録を見ると、何が起きたかが分かります。
T1とT2は繰り上がりのない問題だけなので、左端の処理の正解は毎回「空欄のまま終える」です。
エージェントはT1とT2を10万〜15万ステップずつで90%以上解けるようになりました。
次のT3で 8+5 に進むと、今度は左端に1を書かなければなりません。
しかし5シードとも、200万ステップかけて正答率0%のまま打ち切られました。
その後の約600万ステップの総復習でも直りませんでした。
水道方式のW1は、繰り上がりのある問題とない問題を最初から混ぜて出します。
こちらは5シードとも10万ステップほどで90%以上解けるようになり、最後まで1桁+1桁をほぼ落としませんでした。
一様ランダムは 3+4 が解けない
一様ランダムのエージェントは、3+4 の一の位で7を書いたあと、左端の処理で空欄のまま終えることができません。
5シードを合わせた750問のうち708問で、左端に数字を書いて間違えました。多くは0を書いていました。
4桁どうしの問題ばかりで学んだので、上の位にも数字があるのが当たり前になっていると考えられます。
左端の処理での間違い
桁数均等セットの全問のうち、左端の処理で間違えた割合は次のとおりです。
| カリキュラム条件 | 左端の処理で間違えた割合 |
|---|---|
| 一様ランダム | 25.4% |
| 教科書順 | 6.1% |
| 桁数一様 | 1.3% |
| 水道方式 | 0.1% |
実験1で見つけた「左端の処理を場所で覚えてしまう」問題は、水道方式ではほぼ起きませんでした。
考察
一様ランダムと比べると、桁数一様と水道方式はどちらも短い問題や桁数がそろっていない問題を解けるようになりました。
この改善の大部分は、順番ではなく、短い問題を見せたかどうかで説明がつきます。順番をつけない桁数一様でも同じように改善したからです。
順番の効果がいちばんはっきり出たのは、1桁+1桁の扱いでした。
教科書順のように繰り上がりなしを先に固めると、左端の処理で「空欄のまま終える」しかしない癖がつき、後から直りませんでした。
水道方式のように素過程の100通りをまとめて出すと、この癖はつきません。
素過程をまとめて練習するという水道方式の考え方が、強化学習のエージェントでもそのまま差になって表れた、と読める結果です。
一方で、水道方式の強みがすべての型で出たわけではありません。
0を含む問題は、水道方式でも43%しか解けませんでした。
一様ランダムは74%で、4つの中で最も高くなっています。0〜9999から一様に引くと、0を含む4桁の数がよく出るためです。
注意点
- 教科書順の単元は、学習指導要領の学年配当と一般的な教科書の単元の並びをもとに作りました。
- 1年生の足し算は、本来は筆算ではなく、10のまとまりを作って考える暗算で教えます。この実験ではすべて筆算の手順で解かせています。教科書順のT3での失敗は、実際の授業にはない場面で起きています。
- 単元の進め方の基準(90%)に届いた単元はほとんどなく、ほぼすべての単元が200万ステップで打ち切られました。そのため教科書順(9単元)は総復習が約600万ステップ、水道方式(6単元)は約1000万ステップと、総復習の長さに差があります。教科書順の全体の正答率が低いのには、この差も関係しています。ただし 8+5 が0%のままなのは、600万ステップの総復習でも直らなかった結果なので、総復習の短さだけでは説明できません。
- ネットワークは、紙面を平たく並べたベクトルを全結合層に入れる単純な構成です。紙面の列の構造を生かすネットワークに変えると、4つの順位が変わる可能性があります。
- 5桁+5桁の問題は、どのカリキュラム条件でも1問も解けませんでした。6列目に何かを書く経験が一度もないためです。
- シードは5つです。差が小さいところは、シードを増やすと結論が変わるかもしれません。
まとめ
足し算の筆算を強化学習のエージェントに解かせて、カリキュラム条件を4通り比べました。
水道方式の順番で出したエージェントが、最終的な正答率と安定性で最も良い結果になりました。
教科書順は 8+5 を、一様ランダムは 3+4 を、それぞれ1問も解けませんでした。どちらも、筆算の最後に左端へ1を書くかどうかの判断でつまずいていました。




