coLinux日記

coLinuxはフリーソフトを種として、よろずのシステムとぞなれりける。

ChatGPTのAPIを使った、LINEの AIチャットくん を使ってみる。

2023-04-08 13:55:19 | コンピュータ言語
久しぶりの投稿です。

LINEでChatGPTが使える「AIチャットくん」が公開されたので使ってみました。
ChatGPTをそのまま使うのはちょっと気になってやめていましたが、APIが公開されて早速このような機能が出てきたので利用することにしたわけです。

試しに何か質問してみようと思い、「そういえば以前使っていた乱数生成のツールをまた使おうとしたら正確な名前を忘れていた」ということで、次のような質問にしました。

(Q1とかA1は便宜的に付加したもので、質問と回答を意味します。適当に改行してあります。)

--- ここから --------------------
Q1
乱数生成で、評価の高いツールはなんですか?

A1
有名な乱数生成ツールには、以下のものがあります。

1. Mersenne Twister - 非常に高品質で、多くのプログラミング言語に実装されています。
2. XORShift - 高速で、シンプルなアルゴリズムです。
3. PCG - 優れたランダム性と高速性を兼ね備えています。
4. AES-CTR-DRBG - 暗号化のために使用されるアルゴリズムで、高品質の乱数を生成できます。

これらのツールは、科学的なシミュレーション、ランダムなアート、セキュリティ用途など、多くの分野で使用されており、高い評価を受けています。
--- ここまで --------------------

探していたものは、1.のMersenne Twister がであることが分かりました。
以前使用してからだいぶたっているので、最近は各種言語からも使えるはずでは?と予想して次の質問をしました。

--- ここから --------------------
Q2.
Mersenne twister は、python からも使えますか?

A2.
はい、Mersenne Twisterは
Pythonで標準ライブラリ`random`モジュールで使用することができます。
`random`モジュールは、Pythonの様々なバージョンで利用可能であり、
Mersenne Twisterの実装も含まれています。
以下は、Mersenne Twisterを使用するための簡単な例です。

```python
import random

# 0から1までの浮動小数点数を生成
random_number = random.random()
print(random_number)

# 範囲を指定して整数を生成
random_integer = random.randint(1, 10)
print(random_integer)

# Mersenne Twisterを使用して乱数を生成
random.seed(10) # シード値を設定
for i in range(5):
print(random.random())
```

このように `random` モジュールで使用することができます。
--- ここまで -------------------------------

Python の randomモジュールが Merusenne Twister を使っていたとは、初めて知りました。個人的に、今回の質問の大きな収穫です。
そこで、確認も兼ねて次の質問をしました。

--- ここから -------------------------------
Q3.
c言語のような言語のrand()だと乱数生成が単純だったように思うのですが、python は違うのですね。

A3.
はい、C言語の`rand()`は線形合同法というアルゴリズムを使って単純に乱数を生成しますが、
Pythonの`random`モジュールは、メルセンヌ・ツイスターという高品質な擬似乱数生成器を使っています。
これは、よりランダム性が高く、より偏りのない乱数を生成することができます。
また、Pythonの`random`モジュールには、様々な便利な関数が用意されており、
乱数生成における様々な操作を簡単に行うことができます。
--- ここまで -------------------------------

Pythonの乱数生成の説明と共に、C言語の rand()の確認と、このツールの読み方「メルセンヌ・ツイスター」も分かりました。ネット上で読み方が記入されており、それをChatGPTが拾ってきたようです。

この例からも分かるように、プログラミングや何かツールを作ろうとしたとき役立ちそうです。メルセンヌ・ツイスターは最初に種となる数字を与えると記憶していたので、その辺はどうなっているのか気になりますが、それは別の検索等で確認すればよさそうです。

しかしながら、この問答を理解するためには、
C言語、Python、乱数生成 など
の前提となる知識が必要です。今回は、昔メルセンヌ・ツイスターを使っていたので問答の理解の役にたちました。
そうでなければ、その後単独でメルセンヌ・ツイスターを実際に使ってみて生成される高品質な乱数を実感し、Python の random モジュールもそうなっているかを調べる必要があるわけです。

今回、Twitter で、 ChatGPT は知識を増幅するもの、という話を見かけたので、
これを裏付ける事例として紹介してみました。例えば以下のツィートなどを参考にしました。

『すでに多くの人が言っているけど、ChatGPTは人間の能力の代替というより「増幅」装置の側面が強くて、未来の仕事では、英語やプログラミングはもちろん、自分が関わっている領域(業界、職種)に精通しているかが鍵になるなということがよく分かる。つまりは「ちゃんと勉強しろ」ってことで、私ももっ…』

https://twitter.com/nori76/status/1643842667951034368?t=RDEZ_c5kXkE1WyKAPqgJHw&s=03

や、

『ChatGPT(GPT-4)はどうも自然言語やプログラミング言語を取り扱う能力に長けた人の能力を増幅させる力があるとみた。増幅する方向は処理速度、反復による質の向上などが上げられる。これをうまく仕事に応用すれば、生産性を桁外れに上げてくれるはずだ。可能性の検証はもちろん、実用性の検証もしたい。』

https://twitter.com/alfredplpl/status/1637790454237499397?t=i9-KAbFGRa-X9siqqJqJhA&s=03

です。

「知識を増幅できるが、そのためには予め前提となる知識が必要である。」ということで、
今後益々知識習得の重要性が分かりますね。

コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 子供用に、古いノートパソコ... | トップ | SimplePrograms で Python を... »
最新の画像もっと見る

コメントを投稿

コンピュータ言語」カテゴリの最新記事