Work Article

FoxGPT

サイトURL

FoxGPTへのリンクはこちらから!

ソースコード

コードはこちらからご覧ください!

FoxGPTの概要

FoxGPTは会話AIとなっており、 ユーザーが好きなワードを入力すると、AIが処理をしてなるべく自然な応答を返してくれる優れモノです。なお、FoxGPTと題していますが、ChatGPTとは無関係のシステムであり、AI部分はOpenNMTのtransformerモデルで自作したものを使用しています。つまりAPIで簡単に作っているわけではないということです。

コミュニケーションについて(哲学的に)

『人間のように話すことのできるAIを自作する』というSFチックなことが本プロジェクトのメインテーマです。ですが、人間の行動を分析した際に「コミュニケーション」とは非常に複雑な動作の集合体であるのは明らかでしょう。例えば、コミュニケーションには「おはようございます」といえば「おはようございます」と返す定型文のようなものもあれば、「明日からはお出かけに行くんだ♪」と聞いて「えー楽しそうだね。おみやげよろしくね」と返す共感などの「感情」を返すものまで千差万別、色とりどりに存在していますよね。これを自作するというのはなかなか難しいことがわかります。
ですが、人間はこれらの会話が自然にできてしまう。なぜか?。それは幼少期から人間は周囲の人の会話を聞いて、「こういえば、ああいう」を無意識に機械学習しているからだとAthenaiは考えます。つまり、人間のコミュニケーションというのは、問に対する答えを何回も繰り返しているだけで、このように定型的な応答であればコンピュータでもできてしまうわけです。そしてこれを部分的に証明したのがFoxGPTというわけです。

AIの作成について

前置きが長くなったので、そろそろAIの作成方法についてお話します。前節で書いたようにコミュニケーションは「AならばBである」の無限の繰り返しであると考えられます。このような考え方を専門用語で「ルールベース」型のAIと呼びます。しかし、これではプログラマ側が必死にルールを作成する必要があり、極めて大変です。そこで、FoxGPTではTransformerによる機械学習型のAIを採用しています。
具体的にはSNSから「Aさん:今日はおなかすいたー」「Bさん:じゃあご飯食べに行こう」、「Aさん:明日はゲームの新発売」「Bさん:楽しみだね」などのデータを収集し、これをAIに学習させることで、「○○」という単語には「○○」というワードを返せばいいのだと規則性を学習させることでAI作成します。この方法のメリットは学習の方法を決めれば自動的にコンピュータが学習してくれるので、ルールをわざわざ作らなくていいということです。なぜならSNSを使っているユーザーが無意識に教師データを作ってくれるからであり、X(Twitter)社がSNSのクローラーに最近厳しくなったのもこれが一因の一つでしょう。

Webサイトの実装について

FoxGPTでは,入力フォームやFoxGPTからの返信処理をPHPでしています。一方、OpenNMTはPythonで作成されています。 そこで。本システムではPHPとPyrhonという2つの異なる言語でプロセス間通信を行うことで、円滑なコミュニケーション が可能になるように設計しています。プロセス間通信をする場合、ソケット通信、シグナル通信、ネームパイプの3つを検討しましたが、今回の開発ではネームパイプを利用して実装しています。具体的には出力用と入力用の2つのネームパイプを用意し、写真のようにPHPとPythonの各プログラムが記述を随時行うことで、コミュニケーションがとれるようになっています。