【比較】BERTとGPT-3はどちらがいいのか?

AI、機械学習

どちらもTransformerを利用して話題になった自然言語処理モデルです。

自然言語処理の分野で2大巨匠とも言えるモデルを比較します。

BERTに特化した記事は別記事にしています。

どちらもTransformerを利用しているのであれば、できることは同じ?

性能の良いほうを使えばいいよね

と思ってしまいますが、それぞれ特徴があり得意分野も異なります。

今回の記事は、BERTとGPT-3の違いに着目して書いていきます。

得意分野

それでは得意分野から見ていきましょう。

BERT

文章分類、質問応答が得意です。これはBERTが生まれた背景から考えると理解できます。

Googleは様々な検索ワードをもとに利用者が最も欲しい情報にすぐにたどり着けるように検索結果を日々向上させています。

さらにスマートスピーカーといった音声での検索クエリにも対応しなければならない課題を解消するためにBERTは生まれました。

GPT-3

一方、GPT-3のほうはどうでしょうか。対話応答、要約等の文章生成タスクが主に得意です。

実際文章の精度はかなり高いです。GPT-2の時点で「危険すぎるAI」と呼ばれてましたが、GPT-3ではさらに進化しました。GPT-2はあまり実用的なレベルではなかったですが、GPT-3では実用化まであと一歩と期待できる精度が得られます。

せっかくなのでChatGPTにも聞いてみました。

BERT(Bidirectional Encoder Representations from Transformers)とGPT-3(Generative Pretrained Transformer 3)は、大規模な言語モデルです。両者は、自然言語処理タスクにおいて優れた性能を発揮しますが、その特徴は異なります。

BERTは、文書中の単語の前後の単語を同時に考慮することで、単語の意味を理解するためのモデルです。BERTは、単語の埋め込みベクトルを学習することで、文書中の単語の意味を捉えることができます。BERTは、自然言語処理タスクの入力として文書を受け取り、文書の意味を推定することができます。

GPT-3は、文章を生成するためのモデルです。GPT-3は、文章の生成において、前後の文脈を考慮します。GPT-3は、文章の生成を行うことで、文章の意味を推定することができます。

BERTとGPT-3は、その特徴が異なるため、どちらが優れているかは決定づけられません。どちらが適切な選択肢かは、利用するアプリケーションやニーズによって異なります。

BERTは、文書中の単語の意味を捉えることができるため、文書の意味を理解するタスク(例えば意味的文書分類や意味的エンティティ抽出)に適しています。一方、GPT-3は、文章の生成が得意であるため、文章の生成タスク(例えば文章生成や自然言語生成)に適しています。

ChatGPTの回答

コンセプト

BERT

大量のデータによって言語の枠組みを学習する「事前学習」と、比較的少量のデータを特定のタスクでパフォーマンスが出るように学習する「ファインチューニング」の組み合わせて利用する仕組みです。

このコンセプトによって、特定タスクで推論させる場合は少量のデータで済むというメリットがあります。データが少量で済むということは学習時間も短くなるのでさらにメリットありますね。

GPT-3

次にGPT-3のメリットですが、そもそもGPTが生まれた背景は「できる限り汎用的に利用できる」というコンセプトのもと開発された経緯があります。

GPT-2までは微妙でしたが、GPT-3では事前学習だけで驚くほどパフォーマンスの良い結果が得られます。

しっかりと特定タスクにファインチューニングされたBERTには及びませんが、ちょっと遊びで使ってみる程度には十分使えて、精度もそこそこです。

利用ケース

どちらかというと企業で利用されるBERTと、営業やセールス的にインパクトのあるデモなどで活用されるGPT-3と利用シーンは分かれてきます。

GPT-3のほうが、初見は面白くてすごいと思うことが多いですが、実用化の面ではGPT-3は「もうちょっとかなー」という印象です。

その代わり、かなり汎用的に利用できるため工夫次第では、AIのすごさを一般コンシューマー向けにアピールするには有効な手段です。

「どちらが優れている」というものでもないので、目的に応じて使い分けていきましょう。

BERT

  • 文書分類
  • 文章分類
  • 文章要約
  • QA
  • チャットボット
  • 翻訳
  • など

GPT-3

  • 文章生成
  • 会話応答
  • ポエム、架空の記事生成
  • デモ各種(自然言語からプログラムコード生成なども、エンジニア向けにはそこそこ受けます)
  • など

利用方法

BERT

本家GoogleのBERTは以下から入手できます。

GitHub - google-research/bert: TensorFlow code and pre-trained models for BERT
TensorFlow code and pre-trained models for BERT. Contribute to google-research/bert development by creating an account o...

あと、メジャーなのはhuggingfaceのtransformersを使うと簡単に利用できます。

今では日本語のpre-trained(事前学習)モデルもあるので、日本語でも活用できるようになりました。

GitHub - huggingface/transformers: 🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.
🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX. - GitHub - huggingface/transformers:...

インストール方法(huggingface transformersの場合)

pip install transformers

分類タスク(Classification)で利用する場合の例です。

BERTを利用したい場合、「model_name」のところにBERTのモデル名を記載します。

from transformers import AutoTokenizer, AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

詳しくは、以下の公式サイトにインストール方法やチュートリアルがあるのでこのあたりを参照すれば一通り動くようになります。

Installation
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

GPT-3

以下のOpenAI APIからアカウントを申し込みます。

Product
Our API platform offers our latest models and guides for safety best practices.

以前は、申し込み後利用できるようになるまでしばらく待たされましたが、今ではすぐに使えるようになっているようです。

あと、僕が利用していたときは無料枠が決まっていて、枠の範囲では無料で利用できました。あと期間は3か月間でした。

とくにアカウント作成でクレジットカードを登録するわけではないので、使いすぎて勝手にお金請求されるようなことは無いと思います。

「GET STARTED」ボタンを押すと、アカウント作成画面になるので、アカウントを作ります。

ログインすると、「API Key」を取得できますので、Pythonとかでそのキーを使って利用します。

Pythonから利用する場合は、以下のようにインストールします。

# pip install openai

実際利用する場合は以下のとおり、キーを指定すれば利用できるようになります。

openai.api_key = <入手した「API Key」>

プログラムの例文は公式ガイドにたくさん記述がありますので、以下を参考に。

OpenAI API
Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.

翻訳とか、自然言語からプログラムコード作成とか面白そうなものがいろいろありますね。

以下のチャットが1番わかりやすいと思いますので、最初はチャットで遊んでみるのがいいかなと思います。

OpenAI API
Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.

import os
import openai

openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(
  model="text-davinci-002",
  prompt="You: What have you been up to?\nFriend: Watching old movies.\nYou: Did you watch anything interesting?\nFriend:",
  temperature=0.5,
  max_tokens=60,
  top_p=1.0,
  frequency_penalty=0.5,
  presence_penalty=0.0,
  stop=["You:"]
)

「prompt」に入力文を記述します。GPT-3はBERTと違ってタスクに合わせたファインチューニングをする必要がなく、期待する回答が得られるように例文を途中まで記載します。

「Few-Shot」と呼ばれるもので、この「Few-Shot」がチューニングの役割を果たします。

あなた:何をしているのですか?
友達:古い映画を見ています。
あなた:何か面白いものを見ましたか?
友達:

この例文では以下の回答が得られます。(文章は翻訳して日本語にしています)

はい、私は「The Omen and Troy.」を見ました。

説明動画

最初は文章ではなかなか頭に入らないと思いますので、紹介動画を集めました。

Youtubeでも企業が提供している動画など、比較的信頼できそうなソース元を選びました。

BERT

もともとUdemy用の講義のようですが、一部無料でYoutubeに公開されているようです。

私も以前Udemyで講義を視聴しました。

GPT-3

解説動画です。概要をさっと理解するには十分でしょう。



以下の動画は英語ですが、GPT-3がどれだけの精度で文章生成できるかGPT-3にインタビューしている動画です。

多少は会話が成り立っていると見えるように演出はあると思いますが、GPT-3の推論精度が見ていて感じとれると思います。

教育講義

無料ではないですが、信頼できる講義や長時間の動画が見たい場合は以下のオンライン学習プラットフォームがあります。

企業向けにも提供されていますので、信頼度は高いです。(信頼度は高いですが、有料です)

無料で学習進めたい場合、僕はYoutubeの動画で十分かなと思っています。

ただ、会社に教育実績とか受講報告とかを登録できる場合は、「有料コンテンツの講義を受けた」という実績はアピールになると思います。

「Youtubeの動画見ました」だと、なかなか会社も評価しずらいですが、世界的な学習プラットフォームのUdemyであれば、教育実績として報告しても恥ずかしくないでしょう。

中には履歴書に書くエンジニアもいました。

業務実績があるのがベストですが、実績のない人を採用するのはリスクがあるので、教育だけでも受講しているとわかれば採用する側も安心感はあります。


世界最大級のオンライン学習サイトUdemy




上記URLにアクセスして、「BERT」と検索すると講義の概要が確認できます。

無料の講義は視聴したことはないですが、無料のコンテンツも少しはあるようです。

まとめ

開発元発表年得意分野学習パラメータ数活用技術
BERTGoogle2018年文章分類、質問応答Transformer
GPT-3OpenAI2020年文章生成、要約1,750億Transformer

コメント

タイトルとURLをコピーしました