新刊ピックアップ

「大規模言語モデル入門」の前書きを公開!

この記事を読むのに必要な時間:およそ 2 分

大規模言語モデル入門は、GPT、BERT、T5といったLLMのしくみから、最新のLLMに関する話題を取り上げ、理論と実装を丁寧に解説した書籍です。日本語データセットを試すことができる実装例を収録し、無料で試すことができるColabも話題になっています。本稿では、購入を迷われている方のために、本書の「前書き」の一部を公開します。

前書き

ChatGPTをはじめとする大規模言語モデルが世界的に大きな注目を集めています。大規模言語モデルは、大規模なテキストデータを使って訓練された大規模なパラメータで構成されるニューラルネットワークです。自然言語処理や機械学習の研究で培われてきた多くの知見をもとに開発され、特に2020年以降にパラメータ数およびテキストデータを大規模化することで飛躍的に性能が向上しました。近年の大規模言語モデルは非常に高性能であり、コンピュータが我々の住む世界のことをよく理解し、人間と自然にやりとりできるような新しい能力を獲得したと言えるでしょう。

また、近年はライブラリの充実や計算環境の普及にともなって、プログラミングの経験が少しあれば、ニューラルネットワークのモデルを手軽に動かしたり、データから学習させたりすることができるようになりました。大規模言語モデルの開発では、Hugging Faceが開発するtransformersというPythonライブラリが標準的に利用されています。このライブラリは、非常に洗練されたインターフェイスを提供しており、数十行程度のコードを書くだけで高度な処理を実装できます。本書は大規模言語モデルの技術的な側面に興味を持つ方に向けた入門書です。執筆にあたっては、理論と実装(プログラミング)の双方をバランスよく学べることを重視しました。本書の前半の理論的な解説では、大規模言語モデルの⁠先祖⁠であるword2vecからChatGPTに至るまでの技術的な変遷を系統立てて解説することを目指しました。またモデルの説明には、数式だけでなく図や例を加えて、なるべく直感的に理解できるように工夫しました。

本書の後半では、代表的な自然言語処理タスクについてtransformersなどを使って手を動かしながら、自然言語処理モデルの開発を学びます。本書ではすべて日本語のデータセットを使っており、実用的に使える日本語自然言語処理のモデルを作成します。本書の内容を一通り読むことで、大規模言語モデルのしくみを理解するとともに、自然言語処理のさまざまな課題を解決するモデルを開発できる基礎的な知識が身に付くはずです。

大規模言語モデルは新しい技術であり、実世界の問題をどのように解決できるのかはまだ未知数です。しかし、今後は特定の用途に特化したモデルが多数開発されていき、実用化における個別の課題を乗り越えて、非常に幅広い問題に応用されていくことは間違いないように思われます。こうした中で、本書は、現場で大規模言語モデルの開発や研究に携わる人に役立つ日本語のまとまった書籍を作りたいという想いから始まりました。本書をきっかけに、大規模言語モデルに携わる人が増えることで、日本国内における研究や開発、ひいては産業の活性化につながることを願っています。

対象読者と内容について

本書は、大規模言語モデルに興味のあるエンジニア、学生、研究者を対象にしています。

本書は、機械学習もしくはプログラミングの書籍の1冊目に読む本としておすすめできる本ではありません。本書では、Python プログラミングに関する基本的な知識があることを前提にしています。また、書籍内では機械学習・ニューラルネットワークに関する基礎的な内容について、詳細な説明を割愛している部分があり、本書を読む前にある程度の理解があることが望ましいです。なお、本書は大規模言語モデルの技術的な側面に興味を持つ読者を対象としており、ChatGPTの使い方やハウツーのような内容を含んでいません。大規模言語モデルに関係する法律や規制についても、本書では解説していません。

本書の構成

本書は、前半が理論編、後半が実装編になっています。理論編は基本的な内容から、執筆時点の最先端の内容まで順に解説しています。実装編は各章があまり依存せずに独立して読めるようになっており、興味のある章から読んだり、必要になった際に読んだりすることができるようになっています。

近年の大規模言語モデルの使い方として、自前の訓練データを使って再学習(ファインチューニング)してから使う方法と、再学習を行わずにテキスト(プロンプト)で指示や質問を入力して、モデルにテキストを生成させることでタスクを解く方法の二つがあります。本書では、前者の方法を第3章と第5章から第8章、後者の方法を第4章と第9章で扱っています。

第1章では、transformers を使ってコードを動かしながら基本的な自然言語処理のタスクについて概観したあと、単語埋め込みから大規模言語モデルまでの変遷と大規模言語モデルの概要について説明します。第2章から第4章が理論編です。大規模言語モデルは、分野としては急速に進展していますが、実はTransformerという優れたニューラルネットワークを大量のテキストデータを使って事前学習するという方法自体は変化していません。理論編では、大規模言語モデルを実現する技術に焦点をあてて詳しく解説します。第2章では、Transformer のしくみを各構成要素から詳細に説明します。第3章では、代表的な大規模言語モデルであるGPT、BERT、T5の事前学習、ファインチューニング、transformersでの基本的な使い方について解説したあと、トークナイゼーションや日本語の扱いについて説明します。第4章では、ChatGPTに代表されるテキストを生成する能力を持つ大規模言語モデルの近年の進展について解説します。特にモデルの大規模化による創発的能力の獲得や文脈内学習、アライメントを中心に扱います。

第5章から第9章までが実装編になっています。第5章では、日本語の言語理解能力をはかる標準的なデータセットであるJGLUEに含まれる感情分析、自然言語推論、意味的類似度計算、多肢選択式質問応答の四つのタスクを通じて、transformersを使った日本語自然言語処理の実装の基礎について説明します。第6章では、系列ラベリングという方法を用いて、固有表現認識モデルを開発します。固有表現認識の基礎を説明し、BERTを使った日本語固有表現認識モデルを実装した後、固有表現認識のデータセットを自分で構築する方法を紹介します。第7章は、系列変換という方法を用いた要約生成モデルを作成します。要約生成の基礎的な事項を説明し、T5 を用いて記事の見出しを自動生成するモデルを実装します。第8章では、文やパッセージを一つのベクトルとして表現する文埋め込みモデルを開発します。代表的な文埋め込みモデルであるSimCSEを実装し、任意のテキストに対してWikipediaから類似したテキストを検索できるシステムを作成します。

さて、第5章から第8章では大規模言語モデルを再学習することで自然言語処理のモデルを開発する方法を扱いました。第9章では、ChatGPTをAPI経由で使用して、日本語のクイズ問題を解く質問応答システムを開発します。質問応答についての基礎とChatGPTをAPI経由で使う基本的な方法を解説したあと、日本語の質問応答コンペティション「AI王」を題材として、ChatGPTを使った質問応答システムを開発します。次に、Wikipediaから質問に関連したパッセージを検索するモデルを開発し、ChatGPTに対して関連するパッセージをあわせて入力することで、より賢い質問応答システムを作る方法を説明します。

ソースコード

本書のソースコードは下記のGitHubリポジトリで公開されています。

https://github.com/ghmagazine/llm-book

本書のソースコードは第7章・第8章の一部を除いてGoogle Colabora-vtory(Colab)で動作します。Colabを使うと、特別な環境構築なしでブラウザ上でコードの編集や実行を行うことができます。