学習曲線

学習はどのように進むのか

学習という現象を考えるにあたり、最も基本的なデータは学習曲線(learning curve)だろうと思います。学習心理学は経験科学ということになっているので、まずは実際の学習曲線を見てみましょう。

 左のグラフは、ラットを対象として「レバーを押せばエサがもらえる」「音刺激のあとに電気ショックが来る」という訓練を行った際に音刺激の提示中にラットがレバーを押した回数を表しています。これは恐怖条件づけと呼ばれる手続きで、音刺激の後には電気ショックが来ることを学習し、恐怖反応が獲得されたことでレバー押し行動が抑制されたと解釈されています。

 本当にその解釈でいいのかという問題(反応強度はどんな心理過程を反映しているのか問題)は、別途扱うことにしてここでは立ち入りません。一方で、試行を追うごとに行動が変化していることは間違いありません。このように、学習とは「経験によって時々刻々と行動が変化していくこと」こそが本質であろうと思われます。

 グラフの横軸はどちらの例でも試行、縦軸はいわば学習された反応の強度です。左のグラフではレバー押しが減っていっていますが、これは音刺激の後には電気ショックが来ることを学習し、恐怖反応が獲得されたことでレバー押し行動が抑制されたことの現れと解釈されています。本当にその解釈でいいのかという問題(反応強度はどんな心理過程を反映しているのか問題)は、別途扱うことにしてここでは立ち入りません。なんにせよ、学習経験により行動が変化するということ自体は間違いありません。

 左のグラフは、人間の実験参加者に対して人物Aと人物Bの画像を呈示し、人物Aは攻撃的な言葉を、人物Bは中性的な言葉をかけてくるという訓練を行って、それぞれの人物が攻撃的な言葉をかけてくる可能性を評価させた結果です。横軸は試行数、縦軸は「攻撃的な言葉をかけてくるかどうかの予測」を表しており、上に行くほど攻撃的な言葉をかけてくると予測し、下に行くほどかけてこないと予測していることを示しています。黒のグラフは人物Aに対する予測、白のグラフは人物Bに対する予測の程度を表しています。

 グラフを見るかぎり、実験参加者は人物Aに対しては「攻撃的な言葉をかける」、人物Bに対しては「かけてこない」という予測を徐々に形成していることがわかります。グラフの形も、上下が反転してはいますがほぼ同じ形状であり、ラットの恐怖条件づけの結果のグラフとも対応します。このように、学習曲線は多くの場合、訓練試行の初期には大きく変化し、徐々に変化が小さくなって横ばいに近づくという「負の加速」と呼ばれる形状をとることが多く、この形状は種を問わず確認することができます。

 この結果を、随伴性理論の示すところと対応させてみます。実験の手続きでは、人物Aと攻撃的な言葉はどの試行でも対呈示され、人物Bは攻撃的な言葉とは一切対呈示されませんでした。つまり、この手続きでは人物Aと攻撃的な言葉の関係は随伴性空間の右下の隅に対応します。一方、人物Bについては随伴性空間の左上になります(上図の矢印参照)。最終的に獲得される行動(予測の程度)については、確かに随伴性空間上の位置に対応しているため、「随伴性と行動が対応する」といってもよさそうです。

 しかし、この実験では最初から最後まで人物Aについても人物Bについても、攻撃的な言葉とのあいだの随伴性は変化していません。にもかかわらず、予測の程度については試行を追うごとに変化しています。随伴性理論のページで紹介したアイデアは、「刺激間の確率的関係が行動の質や強度を決める」というものでした。これ自体は実験的にもおおむね確認されていますが、その一方で随伴性理論は「刺激間の確率的関係を生活体がどうやって学習するか」あるいは「刺激間の確率的関係はどのような過程をたどって学習されるか」については何も教えてくれません。

 こうした齟齬は、随伴性理論においては「刺激間の確率関係と行動との関係」が注目されていたのに対して、学習曲線は「試行数と行動との関係」が記述されているという違いによります。随伴性理論では「刺激間の確率的関係を行動に変換する写像(関数)」でしたが、学習曲線が表しているのは試行や時間の関数としての反応強度であり、「試行数を入力すると反応強度を出力する」というような関数です。そこで、「試行や時間の変化の関数としての学習」という観点から学習曲線を見てみることにします。

変化を追いかける

 上のグラフは、横軸に学習の試行、縦軸に反応強度を取った典型的な学習曲線です。「本当に学習はこうした曲線のかたちで進むのか」も知りたいところですが、それは他のページで扱います。学習の第1試行の実施時にはまだ反応はゼロで、そこから経験を積むにつれて反応強度が上昇していき、徐々に反応強度の上昇が鈍くなって横ばいに近くなる、というかたちになっています。

 各試行で何が起こっているのか(何をどのように学習しているか)はわかりませんが、観測された(とりあえずの)事実を精査するということで、学習曲線上の変化に注目します。この学習曲線を与えてくれる関数をf、そして第n試行における反応強度をf(n)と表記することにします。目標は、この関数fの中身を知ることです。

 まず、第1試行での行動はまだ何も学習されていない最初の段階なので、反応強度はゼロ、つまりf(1) = 0です。そして第1試行での経験の結果として、第2試行での反応強度、つまりf(2)が決まっていると考えられます。同様に、続く第3試行での反応強度f(3)は、第1試行と第2試行の学習経験が足し算された結果として決まっていると考えられます。ここで、各試行の学習経験によって変化した量をΔf(デルタ・エフ;随伴性判断で紹介したΔPと同じく、差分を表すもの)と表記することにします。すると、各試行での反応強度fは、上のグラフに書き込んだように示すこともできますし、数式を使えば次のように書くこともできます。

くどいようですが、改めてこれを学習曲線のグラフに書き込み、整理します。

学習曲線の関数f(x)を、「試行数をxとして入力すると反応強度を返してくれる関数」とみなします。なので、第1試行の反応強度はf(1)、第2試行はf(2)、と記述できます。

f(x)がいきなりわかればいいのですが、そうもいきません。そこで、各試行で生活体が何を学習しているのか、つまり各試行ごとの変化に注目します。

最も単純なアイデアとして、「毎試行同じことをしているのだから同じ程度だけ学習する」と仮定してみます。学習する量をaとおいてみると、Δf = aとなります。

仮にa= 10として書いたf(x)のグラフが左図です。おそらく想像通りかと思いますが、毎試行同じ量だけ学習が進むことになると、f(x)は直線になります。明らかに、これは実際の学習曲線とは違うことになってしまいます。つまり、同じ手続きを毎回行っているからといって同じ量の変化が起きていると考えるのは、少なくとも反応強度については誤りです。

学習曲線としては不適切でしたが、「変化量Δfが定数であれば、関数fは直線になる」ということについて補足していきます。

「各試行における反応強度の変化量をΔfとおいたうえで、学習曲線全体の関数fを知りたい」という動機がありました。そのうえで、最も単純なアイデアとして変化量Δfをaという定数にしてみた(そして失敗した)わけですが、この仮定のままf(1)やf(2)といった各試行での反応強度を追いかけてみます。

以下、どこまでも続けていけるわけですが、関数f(x)の値はxが1増加するごとにaだけ増加していきます。

 この関数の値の列(0, a, 2a, 3a...)は、上の式にみるように、初項(最初の項、つまりf(1))が0、公差(各項のあいだの差、つまりΔf)がaの等差数列(各項のあいだの差が等しい数列)です。上の式の3行目および4行目のように、第n項と第n+1項のあいだの関係を示した式を漸化式あるいは差分方程式と呼びます(漸化式と差分方程式は厳密には違いがありますがここでは立ち入りません。また、3つの項のあいだの関係、あるいは4つの項のあいだの関係を示したものもあります)。この漸化式では第n項(第n試行目)の値を知るためには一つ前の項の数値が必要になるので、ここからf(n)とf(n+1)の両方が含まれているのではなく、f(n)だけの式を求めたくなります。

 f(n)は、「初項から第n項まで各項での変化量を足したもの」になります。これを丁寧に式で書くと下のようになります。

  式の1行目は、「f(n)は初項f(1)に対して変化量Δfを(n-1)回足してやれば求まる」ということを言っています。そして、(n-1)回足し合わせることを和の記号(Σ、シグマ)で書き直したのが2行目です。シグマの記号は、ここでは「kを1からn-1まで変化させてすべて足し算する」という意味になっています。いま、Δf(k)に1から(n-1)を入れていくと、Δf(1)、Δf(2)、Δf(3)・・・Δf(n-1)となるので、これをすべて足し算するのは1行目の式と同じことになります。そして、いまΔfはaという定数にしてありますので、Δf(1)、Δf(2)、・・・Δf(n-1)と書いてあってもすべてaです。つまり「aを(n-1)回足し算したもの」なので、a(n-1)になります。

 したがって、f(n) = f(1) + a(n-1)です。いま、f(1)は0と決めてありましたので、f(n) = an-aとなり、第n項(学習曲線的には第n試行)の数値をすぐに求めることができます。そしてこの式をグラフにすると、「傾きがaの直線」になることがわかります。

 長くなってきたのでまとめます。

 今回は、学習曲線について考えました。学習曲線とは、「学習訓練の各試行における反応の変化」を表したもので、学習曲線の関数f(x)を、「試行数をxとして入力すると反応強度を返してくれる関数」とみなしましたしたがって、第1試行の反応強度はf(1)、第2試行はf(2)、と記述できました。学習曲線の関数f(x)の中身を知りたいところだったのですが、残念ながら全体はわからないので、各試行ごとの変化を使うことにしたわけです。

 すると、各試行ごとの変化量を足し算していくことで全体の関数を導けることがわかりました。今回の例では各試行ごとの変化量を定数aと置いたので、学習曲線ではなく学習「直線」になってしまい、実験事実とは一致しませんでした。これは、各試行ごとの変化量を試行ごとに変えなければならないことを示しています。試行ごとの変化量をうまく記述できれば、学習曲線のかたちをうまく説明するような関数が作れるかもしれません。

 今回行った「変化量を足していく」という操作は、実は積分と呼ばれる演算と実質的に同じです。そして「試行ごとの変化量を求める」ということは、微分と呼ばれる演算と対応します。微分・積分というととっつきにくく聞こえるかもしれませんが、学習曲線に当てはめて言うと、「試行(正確には時点)ごとの反応強度の変化量を求めるのが微分、試行(時点)ごとの変化量から全体を求めるのが積分」といえます(注:微分の逆演算としてのみ積分をとらえるのは十分でない、という指摘をいただきました。より厳密な「積分」の理解には測度論などが必要ですが、ここでは紹介していないため高校数学で扱う程度の粗さで説明しています)。

 微分や積分という操作は、学習のように「試行や時間の経過とともに変化していくもの」を扱ううえではとても便利な道具です。変化量の取り扱いや設計と学習曲線についての議論の続きは、別ページで紹介します。