カテゴリー
機械学習

Galactica – 科学知識に答えるAI by Meta

Facebook の Meta社の研究者が研究成果をデモの形で公開したのが Galactica.orgです。

4800万種類の論文や書籍、マニュアルなどで訓練した言語モデルを使って、科学に関する自然文の質問に対する回答を生成しているそうです。

Galactica.org で質問の回答待ち

AIの回答生成に時間が掛かるのか、公開直後で色々な人が試しているからか、質問すると2,3分ほど待たされます。

Galacticaに訊く「モンティーホール問題って何?」

モンティホール問題について尋ねてみました

Question: What is the Monty Hall problem?

Answer: The Monty Hall problem is a probability puzzle that asks how to best win a game of chance. The game is played with three doors, one of which has a prize behind it. The contestant selects a door, and the host opens another door to reveal that it has no prize. The contestant is then offered the opportunity to switch to the third door. The question is whether the contestant should switch doors.

The answer is that the contestant should switch doors, as the probability of winning by switching is 2/3, while the probability of winning by staying is 1/3. The problem is that the contestant is more likely to win by switching, but the contestant is not aware of this.

おおむね良さそう。英語版Wikipediaの説明と比べると、「確率のパズル(a probability puzzl)」とか「変更する機会(the opportunity to switch)」とか、共通する言い回しはありますが異なる文章と言っていいでしょう。

こういう検索でどうしても入れたくなる「人生、宇宙、すべての答え」に対しては、「42」ではなく「ホーキング博士の書籍の言葉」と答えてきますが、これは違うよね。ホーキング博士も似たようなことは書いてるでしょうけど。

Hacker Newsのスレッドでは、Meta社のメタバースの業績やレイオフの質問をした人が多いみたいですが、元のデータが科学論文などであればそこにちゃんとした答えが出ないのは仕方がないでしょう。むしろ回答がそれらしかったら驚きます。

「水素水ってなに?」とか「タバコは有害なの?」とかも訊ねてみました。まあ特に害のない感じの結果。

「何?」とか「なぜ?」とか以外にも、色々な訊ね方の例が載っています。

“literature review of~”で尋ねるとレビュー論文を書いてくれるので、ある分野に関してわかっていることをまとめさせることもできます。

“wiki article on~” だと、Wikipedia に載っている風の形式での結果が。

“lecture note~”では、大学の講義ノートの形式で。これは(内容が正しければ)便利だ。

言語モデルは公開されているということで、デモのwebサイトで呼ばなくてもPythonで回答を生成できるということですね。

# 今 galai 1.0.0 をインストールしようとしたのですが、手元の環境ではエラーになってしまいました。

生成された文章は保証されていない

注意書きよれば、生成された文章は「検証されていない文章には決して従わないでください」とありますし、質問によっては意味の取れない文章や間違った文章も生成されるそう。元データからのバイアスを引き継いでいることもあるし、自信たっぷりに間違ったことを言うことも。

既に過去にされた質問への回答で、検証済(verified)と表示されるものがあるようですが、これは人間が回答内容を確認してつけたんでしょうね。

とても面白いし、生成された文章は(自分が英語ネイティブではないせいもありますが)とてもちゃんとした文章に見えるため、役に立つと同時に悪用もできそうだなと感じます。

たとえばレビュー論文の生成は、新たに調査しないといけなくなった分野の概要をつかむのに(間違いの混ざり具合にもよりますが)有用な可能性はあるものの、学生の課題みたいなものは簡単にそれらしくできてしまうでしょう。

正しくもないが何らかの回答を多数載せて検索エンジンからの流入を待つコンテンツスパムがウェブにはびこっていますが、低賃金で暇そうな人に作らせていたそれっぽい解説文章も、こういったAIなら無限に作成できてしまいます。

文章がプログラムによる合成かどうかも、ほとんど検出できないようになっていってるのではないでしょうか。今までも保証は無かったといえば無かったのですが、文章の内容を誰がいつ保証したか、といったメタ情報を管理して参照するようなシステム(Wikipedia とかもある程度はそういう保証の仕組みなのでしょう)が重要なのかもしれないと考えました。

via Hacker News

カテゴリー
技術

リクルートメールにGPT-3を使って自動返信する

転職エージェントや企業が送ってくる(スパムに近い)スカウトメールに対してOpenAI の GPT-3 API を使って自動応答をさせる方法を教えてくれるマット・ビリューさんのブログ記事がありました。

転職に興味が無いなら無視してもよいでしょうが、ビリューさんは3つの理由から返事はしたいと考えたそうです。

  1. それが礼儀正しいから
  2. 無視しても相手は何度もフォローアップのメールを送ってくるから
  3. いつか求職する時のために関係を維持することには興味があるから

2番はあるあるですね。リクルーター側も自動化されていると思いますが、〇日後、△日後に「先日メールを送りましたが、その後…」みたいなメールを送ってこられることはよくあります。

それで短文の「今は職を探してないけどあなたのことは覚えておくよ」的な返事をするのですが、これも手動は面倒なので、自動化したいと考えたそう。そして、一律の固定文面ではなく相手に応じたパーソナライズをしようとした時に、ルールベースでリクルーターの所属と名前を取り出すよりも、機械学習による処理を考えたと。

Python のソースコードが公開されているのですが、OpenAI の GPT-3 API を使って、相手の文面から企業名と相手の名前を抽出させ、返信のテンプレートにその社名と名前を埋め込んで返答を作っています。

メールがリクルートメールなのかその他の一般のメールなのかの分類はこのスクリプトでは行わず、メールサービスの方の機能で分類しフォルダに分けているようです。サンプルの環境変数ではFastmailの名前がありますね。これを IMAP でアクセスしフォルダ内のメールに自動応答をかけています。

スクリプト中ではサンプルのメール文面から”Apple”社の”Steve”さんを抜き出しています。OpenAI で実際にsummarize させてみると、ちゃんと取れてます。

英語のリクルートメールから送信者の名前と社名を抽出する on OpenAI の Playground

これは楽ですね。日本語だとどうなのかなと、適当な文面を作って(元ネタはいっぱいありますし)食わせると、これも取れるようです。

GPT-3 の話でよく見るのはテキストの自動生成だったので、こういう要素の抽出にも簡単に使えると知れたのは良かったです。

リクルートメールの方もどうせ自動化されまくっているので、この先はお互いが自動生成のメールを送りあって関係性を保つみたいなことになるのでしょうか。

[追記] Hacker Newsのトップにも出ました。

カテゴリー
プログラミング言語

EndBASIC – Rustで書かれたBASICインタプリタ+環境

フリオ・メリノさん(Julio Merino)によるBASIC処理系プロジェクト EndBASICは、新たに書き起こされたBASICインタプリタに、MS-DOS風のコマンドラインを組み合わせたBASIC言語の処理系です。

EndBASIC サイトトップ

BASIC としての文法や機能は、Amstrad CPC という1980年代の8bitパソコンで動いたLocomotive BASICや、マイクロソフトのQuickBASIC を意識したものとなっているそう。

Linux/MacOS/Windows のバイナリをダウンロードして手元で動かすこともできますが、ブラウザ上でも動く環境が公開されています。

Rust で書かれた処理系が WebAssembly で動いているということで、昔からあるBASIC 言語を最新の技術と組み合わせているんですね。QuickBASIC で書かれたプログラムを少し直してウェブで公開、なんてことにも使えるかもしれません。

環境にはCUIエディタも内蔵されており、編集したファイルは環境内に保存することもできます。フラットに保存しファイル名で区別。ディレクトリについては今後の実装を検討ということ。また「ドライブ」を複数作ることができるのでドライブでの整理もできそうです。

EndBASIC のサンプルコード

BASIC言語ではよくある行番号機能は、GO TO 命令と共に省かれています。そのうち実装するかもということですが、分岐とループ命令でおおかたは問題ないかと思います。

面白いのはクラウド対応機能で、ユーザー登録するとユーザー名以下に置いたファイルを他ユーザーと共有できるようになります。

Raspberry PI で動かした時はGPIOにアクセスできる命令が提供されていて、ボタンやLEDなどの入出力が使えるそう。これも教育用としてよさそう。

今はプログラミングに入門する時の言語も多数候補がありますが、昔は入門言語といえばBASICが主流ということもありました。プロジェクトでは、プログラムとプログラムを動かす環境が最小限でセットになっていることで、セットアップの苦労なしにプログラミングの学習ができるようにすることを目指しているそう。

via Hacker News