大規模言語モデル入門 の輪読会を開催したので、発表に使った資料を一部修正して公開します。
自然言語処理とは?
人間が日常的に使っている言語をコンピュータによって扱う方法について研究する学問です。
以前までは各自がデータを用意して独自のモデルを作成したが、ここ数年で訓練済みの学習モデルを使って方法が標準的になってきている。さらにここ数年で、個人単位では外部から学習済みモデルを利用しつつ、企業単位では企業ごとに言語モデルを開発戦争のような状態が広がっているようにみられる。
Transformersとは?
Hugging Faceの学習済みモデルを利用するためのPythonライブラリ。
細かい話だが、
TransformersはPythonライブラリのことを指しており、
Transformerはモデルのアーキテクチャのことなので表現に注意。
この本ではtransformersライブラリを使って色々なタスクのサンプルを紹介している。
↓Transformers
↓Transformer
transformersで何ができる?
transformersを使うとHugging Faceから学習済みモデルを引っ張ってくることで、下記のようなタスクが数行のコードで実行できる。
- 文書分類:ポジティブ・ネガティブのどちらかに文章を分類する。
- 自然言語推論:2つのテキスト間の論理関係を予測する。
- 意味的類似度計算:2つのテキスト間の意味合いの近さをスコア化する。
- 固有表現認識:テキストに含まれる固有んも表現(人名や国名など)を抽出する。
- 要約生成:長い文章を短い文章にまとめる。
transformersの使い方
実際の使い方やコードについては、公式のレポジトリにまとまっているため、ここでは割愛します。
この時点での初歩的なポイントをまとめると下記のようになる。
- pipelineを使うと、Hugging Faceでモデルごとにタグ付けされたタスクについて簡単に実行できる。
- Auto Classesというクラス群を使うと、タスクに合わせた適切な実装を自動的に選択してくれる。
- AutoModelやAutoTokenizerにはfrom_pretrainedというメソッドが用意されており、モデルの保存されているフォルダを渡せばタスクが実行できる。
単語埋め込み(Word Embedding)とは
一般的には文章や単語(コーパス)をベクトルで表現したもののことを言う。
雑に言うと、単語の意味を数値の羅列にできると解釈できる。
歴史的にはword2vecという手法が2013年に生まれ、NNの性能が大きく改善された。
昨今では、大規模な言語のデータセットに対し、自己教師あり学習による事前学習を行なったモデルを、転移学習によって課題に応じたタスクに適用する方法は大規模言語モデルによる自然言語処理の基本となっている。
大規模言語モデルとは?
ここでタイトル回収。
自然言語に対して大規模なコーパスから事前学習した大規模なニューラルネットワークのこと。
大規模言語モデルの具体的なモデルは下記のようなものがある。
- BERT
- GPT
- XLNet
- RoBERTa