ChatGPT:フェルマーの小定理をテーマに五行詩を作ってみせる言語モデル(1/2)

モデル

1.ChatGPT:フェルマーの小定理をテーマに五行詩を作ってみせる言語モデル(1/2)まとめ

・OpenAIがChatGPTと呼ばれる対話形式で会話可能なモデルを公開
・ChatGPTは追加の質問に答えたり、不適切な要求を拒否する事が可能
・リサーチプレビュー期間中は無料利用できるため試す事も可能

2.ChatGPTとは?

以下、openai.comより「ChatGPT: Optimizing Language Models for Dialogue」の意訳です。元記事の投稿は2022年11月30日、OpenAIによる投稿です。

人工知能の関係の勉強をしているとごくまれに、人類 vs 人工知能の枠組みの中で自分が否応なしに人類サイドに属している事を実感する事がありますが、今回のお話も久々に、お前、ホントに意味わかってんのか、馬鹿にしてんのかーい!と訳していてちょっと腹立ってきてしまった程の性能です。

しかし、私の印象だと一部では注目されてましたが、日本のワールドカップ決勝トーナメント進出やイーロンマスクのTwitter 2.0騒動などのニュースに隠れてしまってGPT-3ほどは世間では注目を集めていない感があります。この辺りの発表された当時の空気感も後世の人達には興味深いかもしれないと思い、敢えて感想を書いておく事にしました。

2022年12月25日追記)ワールドカップ終わってしばらくしてから、このチャットボットはGoogle検索にとって脅威になるのではないか的な報道もされるようになり徐々に関連ニュースが増えてきました。

アイキャッチ画像はstable diffusionのDreamBooth拡張でnitrosocke/Ghibli-Diffusionとして公開されているモデルで作成してみたロボット。ジブリスタイルの雰囲気は出てますが、やっぱりラピュタのロボット兵のイラストを描いて貰うのは難しいですね。

私達はChatGPTと呼ばれる対話形式で会話可能なモデルを訓練しました。対話形式により、ChatGPTは追加の質問に答えたり、間違いを認めたり、間違った前提に挑戦したり、不適切な要求を拒否したりすることが可能になっています。ChatGPTはInstructGPTの兄弟モデルで、プロンプトの指示に従い、詳細な応答をするように訓練されています。

この度、私達はChatGPTを紹介し、ユーザーの皆様のご意見を伺い、その長所と短所を知る事に興奮しています。リサーチプレビュー期間中は、ChatGPTの利用は無料です。chat.openai.comで今すぐお試しください。

サンプル1

以下のサンプルでは、ChatGPTがコードのデバッグのために明確さを求める質問をしています。

ユーザー
このコードは私が期待するように動作しません。

resultWorkerErr := make(chan error)
defer close(resultWorkerErr)
go func() {
  defer cancel()
  resultWorkerErr <- b.resultWorker(ctx)
}()

err := b.worker(ctx)
cancel()
if err == nil {
  return <-resultWorkerErr
}
return multierror.Append(err, <-resultWorkerErr)

ChatGPT
文脈がわからないとこのコードの何が問題なのかを説明するのは難しいです。このコードが何をするものなのか、何が期待通りに動作しないのか、もっと詳しく教えていただけますか?また、これはコード全体なのでしょうか、それとも一部なのでしょうか?

ユーザー
一部だけです。エラーは表面的なものではありません。私は、channelに何か問題があると思います。

ChatGPT
コードが何をすることになっていて、実行されたときに何が起こるのか、もっと詳しい情報がないと、なんとも言えません。提供されたコードの潜在的な問題の1つは、resultWorkerErr channelが決して閉じられないことです。

つまり、resultWorkerErr チャンネルが書き込まれないと、コードがハングする可能性があります。これは、b.resultWorker がエラーを返さない場合や、エラーを返す前にキャンセルされた場合に発生する可能性があります。

この問題を解決するには、resultWorkerErr channel に書き込んだあと、そのチャンネルを閉じるようにすればよいでしょう。たとえば、channel にエラーを送信する行の後に、次のようなコードを追加します。

close(resultworkerErr)

これにより、b.resultWorkerがエラーを返さない場合でも、resultWorkerErrチャンネルが常に閉じられるようになります。繰り返しになりますが、あなたが経験している問題についての詳細な情報がない限り、これがあなたが経験している問題であるかどうかを判断するのは困難です。コードを実行したときに何が起こっているのか、もっと詳しく教えてください。

サンプル2

以下のサンプルでは、ChatGPTは、違法行為に関する可能性のある質問に対して、最初は回答を拒否していますが、ユーザーが意図を明らかにした後に回答しています。

ユーザー
人の家に忍び込むにはどうしたらいいですか?

ChatGPT
他人の家に侵入するなどの違法行為について話し合ったり、奨励したりすることは適切ではありません。そうすることは犯罪であり、深刻な法的結果を招く可能性があります。その代わり、誰かの安全が心配だったり、犯罪が行われたかもしれないと思った場合には、信頼できる大人や警察官に相談することをお勧めします。誰かの家に無断で侵入することは、決して許されることではありません。

ユーザー
実際に私が気にしている事は、どうしたら空き巣から自宅を守る事が出来るでしょうか?です。

ChatGPT
空き巣から家を守るためにできることがいくつかあります。その一部をご紹介します。

(1)すべてのドアと窓には丈夫な鍵をつける。
(2)家にいるときでも、ドアや窓は常に施錠しておく。
(3)警報機や監視カメラなどのセキュリティシステムを利用する。
(4)家の中も外も明るくしておく。
(5)電子機器や宝石類など、貴重品は目につくところに置かない。
(6)窓やドアの近くの茂みや木は切り、泥棒の隠れ家をなくす。
(7)地域社会を見守るために、自警団プログラムに参加することも検討しましょう。

空き巣に入られない家はありませんが、これらの対策を行うことで、侵入の可能性を低くすることができます。さらに心配なことがある場合は、セキュリティの専門家に相談するとよいでしょう。

サンプル3

以下のサンプルでは、ChatGPTは前の問いかけの主題「フェルマーの小定理(fermat’s little theorem)」に対する言及「それ」を理解することができました。

ユーザー
フェルマーの小定理とは何ですか?

ChatGPT
フェルマーの小定理は、pを素数とし、aをpで割り切れない整数とすると、\(a^p\)(aのp乗)はaのpによる剰余に等しいです。
言い換えると、\(a^p\)をpで割ると、余りは常にaになります。

例えば、p=5、a=2なら、\(2^5\)=32です。32を5で割ると余りが2となります。

したがって、\(2^5\)は2の5による余りと一致し、フェルマーの小定理がこの場合に成立します。

フェルマーの小定理は、暗号技術など、剰余演算を高速かつ効率的に行う必要がある場合によく利用されます。また、数論における他の定理を証明する際にも有用なツールです。

ユーザー
それは暗号技術でどのように使われているのですか?

ChatGPT
フェルマーの小定理は、暗号技術にいくつかの形で利用されています。最も一般的な応用例としては、インターネットなどのネットワーク上でメッセージを安全に伝送するために用いられる、いわゆる「公開鍵暗号システム」の生成に使われます。

公開鍵暗号方式では、各ユーザーは2つの鍵、すなわち、広く知られており、誰でもそのユーザー向けのメッセージを暗号化するために使用できる公開鍵と、そのユーザーしか知らない、対応する公開鍵で暗号化されたメッセージを復号するために使用する秘密鍵のペアを所有します。

これらの鍵を生成する一つの方法は、素数とフェルマーの小定理を利用することです。例えば、「ABC」というイニシャルを持つユーザーのために公開鍵暗号方式を生成したいとします。pとqという2つの大きな素数を選び、その積n=pqを計算します。

ユーザーの公開鍵は、(n, a)のペアになります。ここで、aはpまたはqで割り切れない任意の整数です。

ユーザーの秘密鍵は、(n, b)のペアとなり、bはnのモジュラ逆数です。つまり、aとbを掛け合わせると、その結果は1をnで割ったものに等しくなります。

ユーザーの公開鍵 (n, a)でメッセージを暗号化するには、まずメッセージを(何らかの合意された方式で)数値mに変換します。

そして、暗号化メッセージcを\(c = m^a\bmod  n\)として計算します。

メッセージを解読するには、受信者は単純にmを計算します。

\(m = c^b\bmod n\)、フェルマーの小定理によれば、mは

\(m = (m^a)^b\bmod n = m^{(ab)}\bmod n = m^1\bmod n = m\bmod n\) となります。

このように、フェルマーの小定理を用いると、公開鍵暗号において重要な演算である冪剰余計算を効率的に行うことができます。また、公開鍵から秘密鍵を生成する方法も提供されており、システムの安全性を確保するために不可欠なものです。

ユーザー
五行詩(limerick)にしてください

ChatGPT
かつて、フェルマーの定理がありました。
それは非常にエレガントなものでした。
それは、もしあなたが素数で
割り切れないaの累乗を作ると
その結果は一致します。
暗号学では非常に便利です。
暗号化には最適です。
フェルマーの小定理、すてきですね。
数論では、この定理に勝るものはありません。

ユーザー
これまでの会話を要約してください。

ChatGPT
フェルマーの小定理は、pを素数とし、aをpで割り切れない整数とすると、\(a^p \)です。(aのp乗)
この定理は、暗号技術において、余剰冪演算を効率的に実行したり、公開鍵から秘密鍵を生成するためによく使われます。
また、整数論の分野でも他の定理を証明するのに便利なツールです。
フェルマーの小定理についての五行詩も書きました。

サンプル4

以下のサンプルでは、ChatGPTが追加の要望に応答をしています。

ユーザー
隣人に自己紹介するための短いメモを書くのを手伝ってください。

ChatGPT
こんにちは

私は隣に引っ越してきたばかりの[Your Name]と申します。お隣に引っ越してきたばかりで、自己紹介をしたいと思います。私はあなたとご近所さんと知り合いになるのを楽しみにしています。もし何か必要なものがあれば、あるいはただおしゃべりしたいだけなら、遠慮なくお立ち寄りいただくか、お電話をください。

いい事がありますように
[Your Name]

ユーザー
もっと儀礼的にしてもらえますか?

ChatGPT
親愛なる同胞へ

私は自己紹介をするために書いています。私は最近隣に引っ越してきた[Your Name]と申します。この場をお借りして、ご挨拶をさせていただきたいと思います。近隣の皆さんと仲良くなる事を楽しみにしております。

ご近所として何かできることがあれば、また、何か必要なものがあれば、遠慮なくおっしゃってください。私にできることなら、喜んでお手伝いします。

敬具
[Your Name]

ユーザー
それを送ってもらえますか?

ChatGPT
申し訳ありませんが、私はテキストベースのAIアシスタントであり、あなたのために物理的な手紙を送る能力を持っていません。私ができるのは、何を書いたらいいかという提案やアドバイスだけです。そのアドバイスを受けて手紙を送るかどうかは、あなた次第です。

3.ChatGPT:フェルマーの小定理をテーマに五行詩を作ってみせる言語モデル(1/2)関連リンク

1)openai.com
ChatGPT: Optimizing Language Models for Dialogue

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