はじめに
本連載では、拙著『独学で鍛える数理思考』『独学で鍛える数理思考2』(技術評論社)を題材に、高校数学と最先端AIのつながりを見てきました。第1回では、2冊12章の全体像を1枚の対応表として示しました。第2回では①ベクトルによる類似度計算、②行列による大規模データ処理、③微分による学習・最適化、④確率によるモデル化・推定、⑤物理学に基づく考察、という5つの共通項を取り上げました。第3回では、それらの数理がAIの「嘘」を見極めるうえでどのように役立つのかを考察しました。
今回は、2冊12章を別の角度から見渡してみましょう。取り上げるのは、先端技術の数理モデルを設計し、その精度を高めていくまでのプロセスです。情報検索、商品推薦、画像分類、文章生成、ロボットの行動学習など、各章で扱う対象は大きく異なります。しかし、各章の計算をたどると、数理モデルを作り、精度改善していく過程には多くの共通点が読み取れます。
本稿では、その過程を次の4つのステップに整理します。
- 問題を定義する
- 損失関数を設計する
- 最適化計算を実行する
- 反復計算によって更新する
この4つのステップでは、技術によっては非常に高度な数理が要求されるものもありますが、その根幹となる部分は高校数学で学ぶ内容で十分理解できると思われます。これから、2冊12章を見渡しながら、各ステップと関係の深い章を取り上げ、先端技術の数理モデルがどのように作られ、改善されていくのかを見ていきましょう。
図1 問題設定から学習までの4つのステップと、それぞれのステップの解説を含む章の対応関係(©cross-X Inc.)
ステップ1:問題を定義する
AIの開発は、解くべき問題を定義するところから始まります。誰がどのような場面で使うのか、何を入力として受け取り、どのような結果を返すのか、どの範囲までを対象とし、どのような制約を守るのか、などを検討します。加えて、何ができれば目的を達成したと言えるのかを決めることも重要です。こういった考察は、技術開発に限らず実務の場面でも広く求められるでしょう。
続いて、現実の対象から計算に使う「量」、簡単に言えば「定量化して計算に利用する対象」を選び、それらの関係を数式化します。この過程が、問題を数理モデルに落とし込む作業です。現実の目的や条件を整理する考察と、それらを数理モデルとして数式化する考察を反復しながら、解くべき問題の輪郭を明確にしていきます。このような考察を具体的かつ実践的に示しているのが、本シリーズの大きな特徴の1つです。
この点の考察プロセスとして、特に初学者の方でもわかりやすいように丁寧に示したのが1冊目第1章「情報検索を実現する数理」です。ここでは、「良い検索結果を返す」という目的から考え始めます。ただし、「良い検索」には、利用者が入力した検索キーワードとの関連性、情報の新しさや信頼性、表示速度など、さまざまな要素が含まれます。この章では、その中から検索キーワードとWebページ(文書)の関連性に焦点を絞り、関連性の高いWebページ(文書)を上位に並べる問題として扱います。そのために、検索キーワードと各Webページ(文書)の関連性を数値で表しますが、その際に用いるのが、文書内における単語の出現頻度を表すTF(Term Frequency、単語頻度)と、多くの文書に現れるありふれた単語の重要度を下げるIDF(Inverse Document Frequency、逆文書頻度)です。
数理的な観点では、TFでは割合、IDFでは反比例や対数の考え方が使われます。この2つを組み合わせたものが、情報検索で広く使われてきたTF-IDFモデルです。これにより、検索結果の良し悪しという曖昧な問題を、単語の重要度を計算する問題へ置き換えることで、検索順位を数理的に考えられるようになります。
1冊目第5章「音声解析を実現する数理」では、音にどのような周波数成分が含まれているのかを調べるという問題を考えます。そのために、「空気を伝わる音」を時間とともに変化する波として捉え、コンピュータで分析できる数値へ変換します。ここで中心となるのが、一定の条件を満たす関数を三角関数の和として表すフーリエ解析です。このアプローチにより、複雑な音の波形を「周波数の異なる単純な波の重ね合わせ」として表せば、各周波数成分がどれだけ含まれているのかを計算できます。本書では、三角関数から出発し、フーリエ級数展開、さらに離散フーリエ変換までを順に導出しています。
2冊目第3章「物体認識を実現する数理」では、画像に写っているものを分類するという問題を扱います。その問題に対して、Vision Transformer(ViT)は画像の表し方を工夫しました。画像をパッチと呼ばれる小さな区画に分け、それぞれを一列の数値に変換し、文章の単語に相当するトークンとして処理します。パッチを単語のように扱うことで、文章理解や文章生成で大きな成果を上げ、現代のテキスト生成AIのパラダイムとなったTransformerを画像認識の分野へと応用したのです。
以上の考察の通り、問題の定義には、目的、対象範囲、入力と出力、制約、成功とみなす条件を定めることに加え、現実の対象から計算に使う量を選び、その関係を数理モデルとして表すことも含まれます。数式化は、この一連の考察を具体化するための重要なプロセスです。数式で表したあとも、その式が現実の問題を適切に反映しているか、重要な条件を落としていないか、前提に無理や矛盾がないかなどを検討する必要があります。こうした反復的な考察を重ねることで、問題の定義が次第に明確になります。
ステップ2:損失関数を設計する
解くべき問題と目標が決まったら、数理モデルの予測が目標からどのくらいズレているのかを計測します。予測と目標のズレを1つの数値で表す関数を損失関数と呼びます。機械学習では、多くの場合、この損失関数の値が小さくなるようにモデルを学習させます。そのため、どのような損失関数を置くかによって、モデルが何を良い予測とみなすのかが変わってしまいます。
1冊目第2章「商品推薦を実現する数理」では、利用者が商品に付ける評価値を予測します。予測した評価値と実際の評価値との差を、推薦システム(レコメンドシステム)の分野では残差と呼ぶこともあります。しかし、すべての残差をそのまま足し合わせても、予測全体のズレの大きさを適切に測ることはできません。残差には正の値と負の値が混在するため、個々の予測が大きく外れていても、互いに打ち消し合って総和が0に近くなることがあるからです。そこで、残差を2乗してから足し合わせます。2乗した値は0以上になるため、予測した評価値と実際の評価値との差が大きいほど、損失が大きくなるように設計できます。このように、残差を2乗した値の総和を最小にする考え方が最小二乗法です。以上の考察は、私たちがECサイトなどで日常的に触れるレコメンドを題材としているので、損失関数の設計例としては比較的考えやすいテーマではないでしょうか。
1冊目第3章「画像分類を実現する数理」では、写真に写っている動物が「犬」「猫」「鳥」のどれなのかを予測する数理モデルを設計し、候補ごとの確率を計算します。犬の写真に対して「犬」に高い確率を出せていれば、もっともらしい予測ができていると言えます。この「観測されたデータ(ここでは正解)が、モデルのもとでどのくらい起こりやすいか」を表す量が尤度、つまり予測の「尤(もっと)もらしさ」の度合いです。写真が複数あるときは、「1枚目は犬、2枚目は猫……」というように、各写真について正解となる分類結果が同時に得られる確率を考えるため、尤度は1枚ごとの確率の掛け算になります(各写真の結果は互いに影響しないと仮定します)。ただし、確率は1以下の数なので、普通は掛け算を重ねるほど値はどんどん小さくなり、そのままでは計算しにくくなります。
そこで対数を使い、掛け算を足し算へ変換します。これによって式を扱いやすくしたものが対数尤度関数です。対数を取っても数の大小関係は変わらないので、尤度と対数尤度は、どちらを最大にしても答えは同じです。一方、機械学習では損失を最小化する形で計算することが多いため、対数尤度の符号を反転して「小さいほど良い」向きに直した負の対数尤度を損失関数として用います。このようにして、高校で学ぶ「対数を取ると掛け算が足し算に変わる」という性質が、画像分類の損失関数を作る際に使われています。
同じ対数の性質は、他にも2冊目第4章「マルチモーダルを実現する数理」で扱うContrastive Language-Image Pre-training(CLIP)の学習にも現れます。CLIPは、対応する画像と文章を近づけ、対応しない組を遠ざけるように学習します。そのズレを測るInfoNCE損失の導出でも、確率の積を対数によって和へ変換します。
商品推薦、画像分類、画像と文章を結び付けるCLIPでは、予測する対象もモデルの構造も異なります。それでも、2乗によってズレの符号をそろえることや、対数によって積を和へ変えることが、損失関数の設計に共通して使われています。この点、2乗の計算や対数の考え方は、いずれも高校数学で学んだ基礎的な内容です。高校数学で履修済みの数理的枠組みが、最先端AIのコアとなる数理モデルを強固に支えていることを知れば、数学を学ぶモチベーションが変わってくるのではないでしょうか。
ステップ3:最適化計算を実行する
損失関数を作ったあとは、その値が小さくなるようにモデル内部の「数値」を調整します。モデルの振る舞いを決めるこれらの数値をパラメータと呼びます。具体的には、パラメータを動かしたときに損失がどのように変わるのかを調べ、損失が減る方向を求めます。この変化の割合を計算するために用いるのが微分です。
AIのモデルには多数のパラメータがあるため、実際には各パラメータについて変化の割合を求める偏微分を用います。また、深層学習モデルでは、ある層が出力した値を次の層が入力として受け取る処理を何段も重ねています。このように、ある関数の出力を別の関数の入力としてつないだものを合成関数といいます。各層に対応する関数が順に合成されることで、モデル全体が複雑な一つの関数として表されます。そして、このような合成関数を微分するために必要となるのが、合成関数の微分、すなわち連鎖律です。
2冊目第2章「深層強化学習を実現する数理」では、微分、偏微分、合成関数の微分の基礎を解説したあと、深層学習の誤差逆伝播法へ進みます。誤差逆伝播法は、出力側で計算した損失の勾配を、連鎖律によって前の層へ順に伝え、各パラメータに関する偏微分を効率よく求める方法です。これにより、連鎖律を用いた計算を各層で整理し、既に求めた結果を再利用することで、大量のパラメータに関する微分を効率よく計算できます。
1冊目第6章「衛星測位を実現する数理」でも、微分と合成関数の微分が使われます。GPSでは、複数の衛星から届く信号をもとに、受信機の位置と時計のズレを求めます。同じ章の「連立方程式を設計する―全微分と合成関数の微分―」では、位置や時計のズレをわずかに変えたとき、衛星との距離に関する式がどのように変化するのかを計算します。このとき、複数の変数が同時に変化するときの影響を表す全微分が、現在地を求める計算に使われています。実際の衛星測位ではより複雑かつ高度な計算手法が扱われていますが、本章ではその基本原理を捉えられるように工夫しています。
2冊目第6章「物体操作を実現する数理」では、ロボットアームを動かすために必要な力を求めます。アームの位置、速度、エネルギーなどを時間の関数として表し、微分を重ねながらオイラー=ラグランジュ方程式を導出します。特に、関節角の変化がアーム先端の位置へ与える影響やアーム先端の速度を求める際には、合成関数の微分が必要です。
深層強化学習、衛星測位、ロボットアームは、一見すると全く分野の異なる技術です。しかし、いずれも変数が少し変化したときに、計算結果がどのように変わるかを微分によって捉える点は共通しています。ただし、微分の役割は同じではありません。深層学習の最適化では、微分の結果を用いて損失を減らす方向を求めます。一方、衛星測位やロボットアームでは、位置や角度などの変化が計算結果にどのような影響を与えるかを表すために微分が使われています。こういった共通点や相違点を数理的な視点から考察することは、抽象化と具体化を高度に繰り返す思考の鍛錬として極めて優れたアプローチではないでしょうか。
ステップ4:反復計算によって更新する
微分によって損失が減る方向を求めたら、その方向に向けてパラメータを少し動かします。そして、移動後の位置で再び損失と微分を計算し、パラメータの値を更新します。この処理を繰り返し、損失が小さくなるパラメータへ近づいていく方法が勾配降下法です。
ここで、「現在の値から次の値を求める」という計算は、高校数学で学ぶ漸化式と同じ形をしていると言えます。1冊目第2章「商品推薦を実現する数理」では、勾配降下法の計算を更新式として設計し、具体的な数値を代入しながら、評価値の予測がどのように変わるのかを確かめます。微分によって、その時点における損失の勾配を求めますが、勾配は損失が最も大きく増加する方向を表すため、勾配降下法ではその反対方向へパラメータを更新します。勾配と更新式を使った計算を繰り返すことで、モデルは学習データに対する損失を小さくすることを目指します。
2冊目第1章「強化学習を実現する数理」では、ロボットが試行錯誤を通じて行動を学びます。固定した方策に従ったときの状態価値の推定値を反復的に更新する反復方策評価や、行動した結果を使って行動価値の推定値を逐次的に更新するQ学習など、反復計算が章全体を通して登場します。最初は適切な行動を知らないロボットも、得られた報酬を使って価値の見積もりを更新し、次第に良い行動を選べるようになります。
2冊目第5章「自律移動を実現する数理」で扱うカルマンフィルタも、更新を繰り返す手法です。ロボットの移動から次の位置を予測し、センサーの観測値を得たあとで推定を修正します。この予測と修正を繰り返しながら、ロボットの現在地を推定します。本書では、位置の平均と不確かさを表す分散について更新式を導き、設定した条件のもとで、更新後の事後分布が正規分布として表されることを数学的帰納法によって示します。
反復計算は、学習や推定に加え、文章を生成する場面でも使われます。1冊目第4章「文章生成を実現する数理」で扱うTransformerは、それまでに出力したトークンをもとに、次のトークンを予測します。そして、新しく出力したトークンを入力に加え、次の予測を行います。この自己回帰と呼ばれる処理を繰り返すことで、文章がトークン単位で作られていきます。
商品推薦のパラメータ更新、強化学習における行動価値の改善、カルマンフィルタによる位置推定、Transformerによる文章生成には、現在の値から次の値を求めるという共通点があります。高校数学の漸化式、あるいはそれに通底するアプローチは、AIが学習し、推定し、出力を生成するプロセスを構築するための基本原理と言えるのです。
考察の例:4つのステップに沿って、Deep Q-Networkを数理的に概観する
ここまで、4つのステップをそれぞれ関係の深い章とともに見てきました。実際のAIでは、これらのステップが一連の計算としてつながっています。その具体例として、『独学で鍛える数理思考2』の第2章で扱うDeep Q-Network(DQN)を簡単に考察してみましょう。
DQNは、簡潔に言えば強化学習のQ学習とニューラルネットワークを組み合わせ、行動の価値を学習する手法です。同章の「深層学習モデルの最適化方法を考察する―損失関数とTDターゲット―」では、DQNの学習を設計し、実際にパラメータを更新するまでの計算を丁寧に解説しています。
図2 Deep Q-Network(DQN)を例に、4つのステップを概観する(©cross-X Inc.)
まず、問題を定義します。DQNでは、ロボットやAIが置かれている状況を状態、選べる動きを行動、行動の結果として得る評価を報酬として定めます。そのうえで、将来にわたって得られる報酬の見込みが大きくなる行動を選ぶことを目標とします。さらに、各状態における行動の価値をQ値として表し、その値をニューラルネットワークで予測する数理モデルへ落とし込みます。
次に、損失関数を設計します。DQNは、実際に得られた報酬と、次の状態で選べる行動のうち最も高いQ値の推定値を組み合わせ、学習時の目標を作ります。この目標をTDターゲット(Temporal Difference Target)と呼びます。さらに、ニューラルネットワークが出したQ値とTDターゲットとの差を取り、その差を2乗して損失とします。したがって、予測と目標が離れるほど損失が大きくなり、両者が一致すれば損失は0になります。
続いて、最適化計算を実行します。連鎖律を使い、誤差逆伝播法によって各パラメータが損失へ与える影響を求めます。その計算結果から、損失を減らすためにパラメータを動かす方向がわかります。
最後に、反復計算によって更新します。勾配降下法の更新式を用いてパラメータを修正し、同じ計算を繰り返します。さらに、DQNでは過去の経験を保存し、その中から一部をランダムに選んで学習する経験再生や、TDターゲットの計算に用いるネットワークを別に用意するターゲットネットワークの仕組みによって、学習を安定させます。
DQNの学習を順にたどると、状態・行動・報酬を定めて数理モデルで表し、予測と目標のズレを測り、微分によってパラメータを動かす方向を求め、更新を繰り返すという流れが見えてきます。高校数学では別々に学んだ2次関数、微分、合成関数、数列などの数理的枠組みが、1つのAIを学習させるために組み合わさっています。
このように、先端技術を数理的に読み解く際には、この4つのステップを確認すると技術の仕組みを整理しやすくなるでしょう。どのような目的と条件のもとで、何を解こうとしているのか。現実の対象をどのような数理モデルで表しているのか。予測のズレをどのように測るのか。損失を減らす方向をどのように求め、何を繰り返し更新するのか。専門用語が多い技術でも、この順に考えることで、数理モデルの設計と学習の流れを具体的に捉えられるはずです。
結び
本稿では、AIの数理モデルを作り、精度を高める過程を4つのステップに分けて考えました。高校数学は、先端技術の仕組みを理解するための出発点として、欠かすことのできない役割を担っていることが、これらの考察からはっきりと読み取れます。
以上のような考察では、高度な数理思考が要求されます。その鍛錬のために、『独学で鍛える数理思考』『独学で鍛える数理思考2』では、必要となる数学を各章の「Lesson」で復習し、途中式を省略せずに解説しています。内容を理解するには、紙とペンを用意し、途中の計算を自分で確かめながら読み進める時間と鍛錬が必要です。その過程を通じて、情報検索、画像分類、文章生成、強化学習、自律移動、物体操作といった異なる技術が、共通する数学によって支えられていることを実感できるはずです。その過程で鍛えられる数理的思考力は、他の先端技術に対しても応用できるだけでなく、生涯にわたって自らを支える力となると私は信じています。