目次
ChatGPTに自然言語処理について聞いてみる
昨今のChatGPTの勢いがすごいものがありますね。
確かに使ってみるとわかるのですが、結構質問に対しての優れた回答をしてくれます。
これだけすごいシステムですから、プログラミングをしている者からすると、中身を知りたくなりますよね。
そんなこんなで、GPTシリーズの初期の頃のバージョンであるGPT2の文書生成モデルはどんなものなのかをChatGPTに聞きながら実装してみました。
(ちなみにChatGPTの回答はファクトチェックしていません。なので、間違っている可能性もあります。そこをご了承のほど)
まずは、ChatGPTに以下のプロンプトを投げてみます。
「あなたはシステムエンジニアです。
GPT2のようなシステムを使って、自然言語処理を体感したいです。
環境はgoogle colab
言語はPython。
上記の仕様でPythonコードを書いてください。
一歩づつ考えて実行してください。」
ちなみに、最後の「一歩づつ考えて実行してください。」は、このプロンプトを投げると理数系の精度が上がるらしいプロンプトです。
英語だと
Let’s think step by step.
この一言で数学の計算問題が解けたとかどうとか。
なので、一応、上記の日本語版で付けてみました。
で、返ってきた答えがこれ。
ChatGPTが書いたプログラミングのコード
###### ChatGPTの回答ここから
「はい、理解しました。まずはGoogle ColabでGPT-2の自然言語処理を体験するために必要なライブラリをインストールする必要があります。
以下のコードをGoogle Colabのセルにコピー&ペーストして実行してください。
!pip install transformers
次に、GPT-2を使って文章生成を行うためのコードを以下に示します。
##### pythonコードここから
from transformers import pipeline, set_seed
# 乱数シードを設定
set_seed(42)
# パイプラインを定義
generator = pipeline('text-generation', model='gpt2')
# テキスト生成
text = generator("Hello, I'm ChatGPT and ", max_length=50, num_return_sequences=1)[0]['generated_text']
print(text)
##### pythonコードここまで
このコードをGoogle Colabにコピー&ペーストし、実行してください。すると、”Hello, I’m ChatGPT and “というテキストに続く50文字の文章が生成されます。
上記のコードでは、GPT-2を用いた文章生成を行うために、Transformersというライブラリを使用しています。まず、set_seed()を用いて乱数のシードを固定し、同じ条件下で実行した場合に同じ結果が得られるようにしています。次に、pipeline()を用いてtext-generationというパイプラインを定義しています。このパイプラインを使用すると、GPT-2による文章生成を行うことができます。
最後に、生成するテキストの初めとなる文字列と、最大の文字数、生成するテキストの数を指定し、文章を生成しています。生成された文章は、print()で出力しています。
以上が、Google ColabでGPT-2を使った自然言語処理の体験に必要なコードになります。ご参考にしてください。」
###### ChatGPTの回答ここまで
てか、短かっ。
もっと長々のコードが出力されると思いきや、ほんの数行です。
おまけにtransformersのライブラリを読み込んでの回答です。
Attention層を使ってゴニョゴニョではなく、端折っているところが何とも言えないのですが、シンプルイズベストということで、今回はこのコードを実行してみましょう。
「Hello, I’m ChatGPT and」以降の文章を生成してくれるみたいです。
google colabにコピペして実行する
上記コードをgoogle colabにコピペ。
で、実行します。
結果は見事に文書生成できています。
「Hello, I’m ChatGPT and irc.is. A friend of mine went on a vacation on a recent trip and I came across a list of people where they will send their information (such as how many hours they are, how they」
もちろん、文書の意味は大した回答にはなっていません。
ざっくりモデルですから仕方ないですね。
大ざっぱに自然言語処理の文書生成を知りたい方には、かえって数行のコードですから、わかりやすいかもです。
GPT-3もtransformersライブラリを使ってるのか?
ついでに聞いてみました。
「GPT3もtransformersライブラリを使っているのですか?」
ChatGPTの回答です。
「はい、GPT-3もTransformersライブラリを使用しています。Transformersライブラリは、自然言語処理に関するさまざまなタスクを実行するためのAPIを提供し、GPT-2やGPT-3などの事前学習済み言語モデルを含め、多くのニューラルネットワークモデルをサポートしています。」
とのことです。
(ファクトチェックしてないです。あしからず)
ChatGPTは勉強教材として最高のツール
さて、今回の内容で学べることは、ChatGPTはプログラミングの勉強教材としては結構使えるものだってことです。
書籍を読む時間のない方や、本格的な書籍ほどの知識は要らない、けど、ざっくりとした知見は欲しいって方には、ピンポイントで知りたいことを聞けるツールだってことです。
以前だとググって必要な情報を探したけど、結構時間がかかるんですよね。
ましてやコードが動かないってこともあるし。
ChatGPTの出力したコードはgoogle colabで動かすと大抵はOKですね。
もちろんエラーも出ますけど、その際はググったり、調べたりで修正していけばよろしいかと。
あと、ChatGPTがあるからって、全くの知識がない方がチャレンジしても難しいです。
とりあえず入門書や基本書みたいなのを2、3冊読んでから挑戦してみてください。
でないと、専門用語がわからないですよね。
さて、そんなこんなで、
お次はGBT-3から大規模言語モデルLLMの実装ですかね。
(google colabだけじゃGPU足りませーん)
プログラミングがさらに楽しくなりそうです。