記憶とニューラルネットワーク
日常の経験から
「あれ? なにを話してたんだっけ?」
なんて思うことはありませんか?
長く複雑な話をしているとき、最初の方でなにの話をしていたのか忘れてしまうことがあります。いわゆる「ド忘れ」というやつ。
これは聞いている側も事情は同じです。
友人と会話をしていて、
「わたし関西の生まれなんだけど、中学生のときに親の転勤で東京に来て(ここから東京で過ごしたエピソードが延々とつづく)……昨日は表参道のカフェで3時間くらい話してたんだけど、いまでもたまに関西弁が出ちゃうんだよね」
こんな調子で話をされたら最後に「?」となるでしょう。結論である「たまに関西弁が出る」とその根拠となる「関西の生まれである」があまりにも離れすぎていて論理のつながりを見失ってしまうからです。
あるいはこんな経験はありませんか?
何かをしようとして立ち上がったちょうどその瞬間、奥さんから買い物を頼まれたり、散らかった机の上が気になって片づけをしているうちに何をしようと立ち上がったのか忘れてしまった。何かをしようとしていたことだけは覚えているのに、注意を逸らされてしまい何かを忘れてしまう。誰でも一度は経験があるのではないかと思います。
映画「メメント」の記憶障害
2000年の映画「メメント」[1] では、記憶に障害をもった主人公レナードの悲喜劇が描かれていました。彼は、過去の強盗事件で頭部に損傷を受けて以来、新しい記憶を数分以上覚えておくことができません。ネタバレになるため詳しくは書けませんが、悪漢から逃亡している途中でなぜ走っているのかを忘れてしまったり、自分を侮辱した相手に怒りが湧いても数分後にはすっかり元通りの笑顔で相手と話してしまいます。
主人公レナードの記憶障害は前向性健忘として知られており『カンデル神経科学 第2版』でも紹介されています。この障害を負った患者は、一時的な記憶(ワーキングメモリ)や過去の記憶は正常なのに、新しい情報を長期記憶に変換することができません。電話番号を覚えようとしたら、数秒〜数分は復唱できますが、すこしでも注意がそらされると忘れてしまいます。何度同じ人に出会っても、その人を思い出すことができません。
一秒だけの世界
もっと極端な例も考えてみましょう。
もしも、一時的な記憶(ワーキングメモリ)がほとんど機能せず、たった一秒前のことを覚えておくことができない、としたらどうなるでしょうか? 毎秒ごとにあなたは目覚め、一秒間だけの現在を生きることになったとしたら?
それはきっと、映画のフィルムをコマごとに切断して、適当にシャッフルしたものをコマ送りで見せられているような体験でしょう。
たとえ周囲の世界が時系列どおりに進んでいたとしても、一秒前を記憶できないわたしたちにとっては意味も必然性もなく、ただ物事がランダムに起こっているように思えるに違いありません。
一秒以上の時間が存在しない、およそ人間的とはいえない人生です。外界の刺激に反応することを繰り返すだけのアメーバのような生き方に近いのかもしれません[2]。
もちろん、あくまで空想の話です。
幸いにしてわたしたちは一時的な記憶を持っています。読書をするときに文章を追いながら内容を理解することができますし、ケトルでお湯が沸いたら、蓋を開けたカップラーメンに注ぐことを覚えていられます。目の前でスケッチブックがめくられて各ページに「H」「E」「L」「L」「O」という文字が順番に描かれていれば、「HELLO (こんにちは)」であることがわかります。
ニューラルネットワークと記憶
しかし、古典的なニューラルネットワークでは「以前に起こったことを何も覚えることができない」のが普通でした[3]。
たとえば、深層学習(ディープラーニング)ブームの初期では、手書き数字の認識や、写真に写った車や人を検出するニューラルネットワークが典型的な AI の例として紹介されていました[4]。
これらのネットワークでは、写真や画像を入力として受け取って、所定のタスク(手書き数字を読み取ったり、車や人を検出したり)を実行することはできますが、それまでに実行したタスクの結果を覚えて、後続のタスクに情報を伝えることができません。目の前の数字が「6」であることは分かっても、今までに読み込んだ数列 「31415926」が円周率の数字を羅列したものであることは分かりませんでした[5]。
知覚はできるが記憶はできなかった、といってもいいでしょう。
手書き文字認識や物体検出のような「入力に対して常に同じ結果を出力する」タスクであればこれでも問題ありませんが、けれども、時系列に並んだ入力(「時系列データ」)を扱うタスクではうまく機能しません。
たとえば、機械翻訳や文章生成などの自然言語タスクでは、扱うのは「単語が並んだ文章」という時系列データです。文章では各単語がどのように並んでいるかに意味があり、決してランダムに並んでいるわけではありません。他にも毎日の売上データ、毎時間の気温、株価、音声など、世の中には時系列データがあふれています。
時系列データの処理では、データの周期性やトレンドといったデータ間の依存関係が重要になります。時系列に並んだ値をひとつずつ処理するだけのネットワークでは、これらの依存関係をうまく表現できませんでした。
では、この「弱点」を克服するためにどうしたらいいのでしょうか?
答えは、ニューラルネットワークに再帰的な構造を組み込むことでした。
あるデータ$${x_n}$$を入力とするときに、そのひとつ前の入力
$${x_{n−1}}$$の出力$${h_{n−1}}$$も入力として受け取るようにネットワークを構成します[6] 。そして、$${x_{n+1}}$$を入力とするときは$${x_n}$$の出力$${h_n}$$も使われ、さらにその次の$${x_{n+2}}$$……というように、ある時点におけるネットワークの状態が、それより以前の入力の情報をもつことで「記憶をもつ」ことができるようになりました。
この再帰型ニューラルネットワークは上記の単純なものから、多くの研究者によって洗練されていきました。
たとえば、単純な再帰型ニューラルネットワークだと、時系列上で大きく距離を隔てた情報が失われてしまうことがありました。わたしたちが長い世間話で当初の話題を忘れがちなように、単純に情報を引き継いでいくだけでは過去の情報はどんどん薄まっていきます。
この問題に対処するために、進化した再帰型ニューラルネットワークでは、不必要な情報は忘却することができ、覚えておくべき新しい情報で上書きすることができるようになっています[7]。
そして大規模言語モデルへ
古典的なニューラルネットワークが再帰的な「記憶」を獲得し、時系列データを扱えるようになったことは大きな一歩でした。そして、ここから更なる進化を遂げていき、現在の潮流である基盤モデル——その中でも特に重要な大規模言語モデルへとつながっていきます。
大規模言語モデルとは、非常に巨大な文書のデータセットで学習された言語モデルであり、タスクに特化した学習をほとんど行うことなく多様なタスクを処理することができます。
たとえば、OpenAI の GPT-3 はインターネット上の広範なデータを使い、実に 5000 億語に近いデータで事前学習を行っています[8]。 GPT-3 は対話的に少数の例をテキストで与えるだけで、翻訳、質問応答、ニュース記事の要約や生成、はては簡単な計算を処理することができます[9]。
最後に
この連載では,ソフトウェア・エンジニアである筆者が『カンデル神経科学』を読んで感じたこと・面白かったこと、特に AI に関することを紹介してきました。多少駆け足ではありましたが、現在大きく注目されている大規模言語モデルや拡散生成モデルについても書くことができました。
AI 技術は今後ますます社会に浸透し、さまざまな驚きや問題提起をもたらすでしょう。最後に、OpenAI の CEO であるサム・アルトマンの言葉を引用して終わりたいと思います。
2023.2.24 石川 尊教(@takanori_is)