知性とはなにか ヒトとAIのあいだ
『知性とはなにか ヒトとAIのあいだ』を読みました。ディテールには甘い所はあるが、面白いとは思う。ディテールの甘い所は多々ある。まず、気になったのはGPUとCPUの比較をしたコラム。基本的に整数の演算しかできない。というのは恐らく、浮動小数点の説明を初学者向けに省略したから起きている。
基本的に、多くのCPUでは多くの科学技術演算に必要な倍精度浮動小数点あたりをターゲットに、比較的少数の演算器を実装している。ここからはみ出すのはベクトル計算機であり、現在、商業的には殆ど成功していない。従って、ベクトル計算機に対比して、現在の多くのコンピュータをスカラ計算機と呼ぶこともある。
従って、コラムで言う以下の項目は実は統合して一つの事実をさしている。
- 小数の演算が速い
- 並列計算で加速できる
つまり、通常のCPUは少数の浮動小数点演算器による処理が行われており、深層学習モデルのモデリングの際に必要とする多数の演算には最適化されていない。そして、深層学習モデルの演算においては実は高精度の演算は必ずしも必要ではないので、GPUの実装している半精度などの浮動小数点処理の並列計算がよくフィットする。
もう一つの、ディテールの甘さは、2章の深層学習から生成AIへで発生している。恐らく、データリッチなことが深層学習の性能に影響を与えたのは確かだろう。この辺は実際に、スケーリング則のような経験則と符合している。しかし、過去において、データが少なかったことだけが深層学習を妨げていたわけではない。
それには、過去2回のニューラルネットワークブームとその終焉を探る必要がある。ニューラルネットワークモデルの嚆矢となったのは1943年のウォーレン・マカロックとウォルター・ピッツの研究と思われるがここから続く最初のニューラルネットワークブームにとどめをさしたのがS・パパートやマービン・ミンスキーのパーセプトロン限界説だ。
その後、福島邦彦のネオコグニトロンなどを経て、バックプロパゲーションが再発見され、再度のニューラルネットワークブームがやってくる。しかし、それはこの本でも書かれている通り、オーバーフィッティングという壁にぶつかり、表舞台では殆ど見かけなくなる。しかし、その時にはオーバーフィッティングともう一つの壁があった、それが勾配消失問題である。
初期の、ニューラルネットワークでは多くの場合、活性化関数としてシグモイド関数を使用していた。
シグモイド関数は以下のものである。
$$ \varsigma_1 (x) = \frac{1}{1+e^{-x}} $$
しかし、この定義を見れば分かる通り、シグモイド関数の微分値が1を超えることは絶対にない。従って、バックプロパゲーション学習において誤差を逆伝搬させていく過程で宿命的に、勾配はゼロになる運命を辿る。
従って、この本では1980年代に多量のデータがあったならばとしたが、活性化関数をシグモイド関数にしている限り、深層学習モデルは作りえない。
そして、なぜでは、シグモイド関数が使われたのかと疑問に思われるはずだ。当然、それには理由があり、シグモイド関数は便利な特性がいくつもあるからだ。一つは全ての点で微分でき、数学的に都合がいい。今日、よく用いられるReLUなどは勾配消失問題には答えられるが一方で微分不可能な点があり、数学的には美しくない。
ただし、この本の場合には最終的に、非線形非平衡多自由度系に持っていくのが主題であるから、これら自体は致命的ではない。ただ、なぜ、性能向上が起きたのかを推定するならば、これらのブレークスルーを無視すべきではないと思える。たしかに、これらのブレークスルーだけでは説明は付かないとは思えるが無視すべきではないとは思うのだ。
さて、自然言語処理も読み解いていく。自然言語処理の場合には、Attention機構の導入が一つのブレイクスルーになっている。自然言語処理の場合には、まず、古典的な自然言語処理があった。これは、字句解析、構文解析、意味解析を積み上げていく手法であるが、弱点は明白で、字句解析、構文解析、意味解析を積み上げていくため、それぞれの段階で誤差が累積し、意味解析に至るまでに実質使い物にならなくなる。
少し説明すると、まず、以下のような構造になっていると想定する。
意味解析模式図
この時、例えば、字句解析は95%、構文解析は単独では85%の精度で解析をできるとする。しかし、実際には構文解析の時点では$ 0.95 * 0.85 \sim 0.81 $ で実際には、81%程度にまで精度は低下する。当然、その次の意味解析もで精度的にはほぼ使い物にならない水準になる。実際に、ヘルプデスクの機械支援をテーマとして、2006年から2008年頃にかけて自然言語処理に取り組んでいたが、精度面では実用にはその時点では遠かった。当然、この時点ではLLM等というものはまだなかった。
今日の、大規模言語モデルでは、Attention機構の導入によって演算量で多くのブレイクスルーがあったため、深層学習モデルでEnd-to-endで学習させることで、誤差が積みあがる問題を回避して、実用的な言語モデルとした。これが、重要な発展となっている。この事実を踏まえて読み進めるとよくわかると思われる。
Attention機構の利用が必要だった理由も明白で、初期の深層学習ベースの自然言語処理ではRNNの再帰モデルが用いられていた。しかし、純粋なRNNだと、並列処理との具合が悪く、GPUで高速化とは行かなかった、処理が逐次的にしか回らないので、どうしても処理が遅くなる。実際に、CNNに変えたりとか幾つかの提案はあった最終的に出てきたのが、Attention機構でこれが用いられたのが実用的には本書で出てきたBERTとなる。結果的に、世間はAttention機構一色になった。
RNNを簡易的に書くと以下のようになる。
$$ \begin{aligned} t = 0: & \quad [x_0] \rightarrow [h_0] \rightarrow [y_0] \\ t = 1: & \quad [x_1] \rightarrow [h_1] \rightarrow [y_1] \\ t = 2: & \quad [x_2] \rightarrow [h_2] \rightarrow [y_2] \\ & \quad \vdots \\ t = T: & \quad [x_T] \rightarrow [h_T] \rightarrow [y_T] \end{aligned} $$