ChatGPT はチャット型のAIで、今までのAIとは全く異なる次元になっており衝撃を受けています。何がすごいのかを探っていきます。未来がやってきました
ChatGPTの衝撃
会話型のAIというと有名なところでは Apple の Siri があげられます。音声の解析能力はかなり高く感心したものです。
しかし、会話を始めると途端に浅さが露呈します。それは文脈をとらえることができなので会話レベルは2歳児にも劣ります。今のAIはこのレベルが限界なのかと思っていたのですが、ChatGPTは文脈をとらえて的確に回答してくれます
質問: おやつにはコーヒーに何がいいかな
回答: コーヒーと一緒に食べるおやつとしては、色々なものがありますが、一般的には以下が人気です:
1. ケーキやパン: 甘いものとコーヒーの相性は良いです。
2. バニラクリーム入りのドーナツ: バニラとコーヒーの味が合います。
3. クッキー: シンプルなものですが、コーヒーとの相性も良いです。
4. トースト: 味が濃いトーストはコーヒーと合います。
これらはあくまで一例です。お好みに応じて選んでみてください。
質問: 饅頭はどうかな
回答: 饅頭はコーヒーとの相性は良いかもしれません。甘いものとコーヒーは相性が良い傾向にありますから、饅頭も同じように美味しく楽しめるかもしれません。また、饅頭は柔らかい食感とコーヒーの苦味が調和して、特別な味わいを楽しめるかもしれません。試してみてください。
文脈を的確にとらえて、日本語での会話が成立していることに驚きです。
ネット社会への影響度
Google は検索エンジンでNo.1のシェアを持っています。いわゆるググるです。 この使い方が一転するでしょう。ググる場合はいかに適切なキーワードを与え、それらしいリンクを開いて結果を探していました。
ChatGPT があれば、自然な文で聞けば回答がその場で出てきます。ネットに不慣れな高齢者や子供でも。 ChatGPFはネットの膨大な情報をもとに回答を作り出しています。今のネット情報は情報にどん欲な ChatGPTの餌にも見えますね。
ChatGPTはOpenAI という会社で開発されていますが、マイクロソフトが多大な投資を行っています。マイクロソフトがBing にこの技術を取り入れ逆転のチャンスを狙っているということです。Googleにとっては検索による広告収入が崩れることを意味するので死活問題で、Google もチャットAIである Bard をテストリリースしたようです。2023年はマイクロソフトの逆襲の年となり、大きくビジネスモデルが変化することは間違いないです。
利用方法
OpenAI のWEBサイトから利用できます。
利用にあたってはメールアドレスが必要です。
制限
AIとして学習は 2020~2021年のデータを元にしています。そのため今日の天気には答えられません。
質問: 今日の天気は ?
回答: 申し訳ありませんが、私は現在の日付と時刻の情報を持っていないため、今日の天気をお答えすることはできません。また、私は実際の気象データにアクセスする能力も持っていないため、実際の天気情報を提供することもできません。
会話例
ChatGPT にプログラミングしてもらうことさえできてしまいます。
質問: C++でスレッドプログラム作って
回答: C++でスレッドを作るには、C++11から標準ライブラリに実装された「std::thread」を使うことができます。このクラスを使うと、簡単にマルチスレッドプログラミングを実現することができます。
以下は、C++11から使用可能な「std::thread」を使って、2つのスレッドを作成する例です。
#include <iostream> #include <thread> void thread_function1() { std::cout << "Thread 1 is running" << std::endl; } void thread_function2() { std::cout << "Thread 2 is running" << std::endl; } int main() { std::thread t1(thread_function1); std::thread t2(thread_function2); std::cout << "Main thread is running" << std::endl; t1.join(); t2.join(); return 0; }
素晴らしい。しかし、サイトからただ引用してきた可能性があるので変更をお願いしてみる。
質問: 4本のスレッドが動くように変更して
回答: 以下は、4つのスレッドを作成する例です。
#include <iostream> #include <thread> void thread_function1() { std::cout << "Thread 1 is running" << std::endl; } void thread_function2() { std::cout << "Thread 2 is running" << std::endl; } void thread_function3() { std::cout << "Thread 3 is running" << std::endl; } void thread_function4() { std::cout << "Thread 4 is running" << std::endl; } int main() { std::thread t1(thread_function1); std::thread t2(thread_function2); std::thread t3(thread_function3); std::thread t4(thread_function4); std::cout << "Main thread is running" << std::endl; t1.join(); t2.join(); t3.join(); t4.join(); return 0; }
文脈をとらえていることに衝撃です。会話が成立している。
プログラム入門は chatGPT先生がいればほとんどできてしまうのではないか。
とはいえ、単純に4回呼び出したのでは頭が悪すぎるので、コーディング力があるかを試してみる。
質問: 配列は使わないの?
回答: 配列を使用することもできます。例えば、以下のように4つのスレッドを配列として管理することができます。
#include <iostream> #include <thread> void thread_function(int id) { std::cout << "Thread " << id << " is running" << std::endl; } int main() { std::thread threads[4]; for (int i = 0; i < 4; i++) { threads[i] = std::thread(thread_function, i+1); } std::cout << "Main thread is running" << std::endl; for (int i = 0; i < 4; i++) { threads[i].join(); } return 0; }
この例では、配列「threads」を定義して、各要素を個別のスレッドとして初期化しています。「thread_function」関数には、スレッドのIDを渡しています。これにより、各スレッドは自分自身のIDを使ってメッセージを出力することができます。
意味を理解して配列を使うようになっています。すごい時代になってきました。
本人には意識は無いようですが、昔イメージしていた AI に近いイメージに近いのではないでしょうか。