ユニファ開発者ブログ

ユニファ株式会社プロダクトデベロップメント本部メンバーによるブログです。

「オナラをしたのは誰だ!」生成AIに犯人はわかるのか?

みなさんこんにちは。

生成AI全盛のいま、「自分の仕事はいつなくなるんだろう」という恐怖と日々戦っているエンジニアの柿本です。

マーヴェリックも言っていますね。

いつかその日が来るかもしないが、それは今日ではない。

引用元: 映画 トップガン マーヴェリック

むしろ生成AIをルクミーに組み込んで付加価値を爆上げしてやるぜ!のマインドで精進しております。

とはいえ生成AIサービスもいろいろあるので、どれを使うべきか迷いますね。

ということで、今日は生成AIを比較してみた話をします。

推論? なにそれおいしいの?

ルクミーでも2023年から、おたよりや連絡帳などに文章作成を支援する機能「たよれるくん(β)」を提供開始しました。

保育AIサイトも立ち上げましたので是非ご覧ください!

lookmee.jp

これからも生成AIを活用した機能提供を進めていくために、いろいろな生成AIを比較調査しています。

ところが、生成AIごとの得手不得手もありますし、バージョンが上がると急に賢くなったり、値段もコロコロ変わるので、どの生成AIを使うべきかのキャッチアップが大変です。

特に今の生成AIブームの火付け役となった GPT は、 GPT-4o が出たかと思ったら半年もせずに o1 プレビュー版が出ました。

で、 GPT-4o と o1 は何が違うのかをネットで調べると、端的にいうと「推論がより得意である」ということらしいです。

そもそも「推論」って言葉が難しいですが、 SPI 試験で見たことがあるような問題が得意なのだろう、と理解しております。

ということで実際に比較してみました。

GPT-4o vs OpenAI o1

今回は gpt-4o-minio1-mini で比較します。
(たまたま o1-preview の調子が悪かったので、mini で比較します。)

まずは小手調べの マラソン順位問題

生成AIの「頭の良さ」を調べるときに使われることがある問題です。

マラソンで4位の人を抜くと、自分は何位になるでしょうか?

キャプチャ取得元: OpenAI の Playground コンソール(以下同じ)

gpt-4o-mini の回答

マラソンで4位の人を抜くと、自分は4位になります。ただし、抜いた人は5位に下がります。従って、自分は4位、抜いた人は5位になるということです。

o1-mini の回答

マラソンで4位の人を抜くと、あなたは**4位**になります。抜いた人の順位を奪う形になるためです。

さすがは GPT 様です。

人間でもついつい「3位かな?」と答えそうになるこの問題、正解は「4位」です

ネットで調べてみると、 GPT-4 ではこの問題に安定して正解するようになり、 GPT は他の生成AIサービスと比較しても早い時期に正解できていたようです。

では、次に、もうちょっと難しい オナラをしたのは誰だ? 問題。

お父さん、太郎くん、次郎くんの3人でお風呂に入った時、誰か1人がオナラをしました。
以下のうち、本当のことを言っている人が1人だけいます。その場合、オナラをしたのは誰でしょう?

お父さん: 「お父さんはオナラしてないよ。太郎だよ」
太郎くん: 「僕オナラしたよ」
次郎くん: 「お父さんがブーしたよ」

gpt-4o-mini の回答

この問題での発言を分析してみましょう。

1. お父さんの発言:「お父さんはオナラしてないよ。太郎だよ。」
2. 太郎くんの発言:「僕オナラしたよ。」
3. 次郎くんの発言:「お父さんがブーしたよ。」

この中で、真実を述べているのは一人だけです。

- もしお父さんが真実を言っていると仮定すると、太郎がオナラしたことになります。しかし、これが真実ならば、太郎の発言は嘘になります。つまり、この場合は矛盾します。
  
- 次に太郎の発言が真実だと仮定すると、太郎がオナラをしたことになります。この場合、お父さんがオナラしていないという彼の発言も真実として矛盾しませんが、次郎くんの発言が嘘になります。これも矛盾しません。

- 最後に次郎くんの発言が真実だとすると、お父さんがオナラをしたことになりますが、それならばお父さんの発言は嘘になります。そのため、この場合は矛盾します。

以上の分析から、真実を言っているのは太郎くんであり、オナラをしたのは太郎くんであることがわかります。 

したがって、オナラをしたのは「太郎くん」です。

o1-mini の回答

お父さんがオナラをしました。

**理由:**

提示されたシナリオでは、3人のうち1人だけが真実を言っており、その場合オナラをしたのは誰かを特定する必要があります。

各人の発言を整理すると以下の通りです:

- **お父さん**: 「お父さんはオナラしてないよ。太郎だよ。」
- **太郎くん**: 「僕オナラしたよ。」
- **次郎くん**: 「お父さんがブーしたよ。」

この条件下で各ケースを検討します:

1. **お父さんがオナラをした場合**:
   - お父さんの発言: **偽**(自身がオナラしたため)
   - 太郎くんの発言: **偽**(太郎くんはオナラしていない)
   - 次郎くんの発言: **真**(お父さんがオナラした)
   
   この場合、次郎くんだけが真実を言っているため条件を満たします。

2. **太郎くんがオナラをした場合**:
   - お父さんの発言: **真**(お父さんはオナラしておらず、太郎くんがオナラした)
   - 太郎くんの発言: **真**(実際にオナラした)
   - 次郎くんの発言: **偽**(お父さんがオナラしていない)
   
   この場合、2人が真実を言っているため条件を満たしません。

3. **次郎くんがオナラをした場合**:
   - お父さんの発言: **偽**(お父さんはオナラしていないが、太郎くんもオナラしていない)
   - 太郎くんの発言: **偽**(オナラしていない)
   - 次郎くんの発言: **偽**(お父さんはオナラしていない)
   
   この場合、誰も真実を言っていないため条件を満たしません。

以上より、**お父さんがオナラをした**ことが唯一の条件を満たす答えとなります。

**答え:** お父さんがオナラをしました。

差が出ましたね。

人間にとってはマラソン問題よりむしろ簡単かもしれませんが、正解は「お父さん」です。はい、すみません。私がオナラをしました。

なにを隠そう、これは先日我が家で実際に発生した事象です!

長男(5歳)はオナラをすることがカッコイイことだと思っているらしく、「誰かオナラした?」と聞くとなぜかいつも「僕がオナラした!」と主張します。

将来に多少の不安はありますが、それはさておき、 o1 にかかれば彼の嘘や見栄(?)も簡単に見抜けてしまうわけです。

アプローチを見比べてみると、 GPT-4o は「〇〇が真実を言っている場合」を上から順に検証しているのに対し、 o1 は「真実を△△とした場合」を順に検証しています。

どちらのアプローチでも正解に辿り着くはずですが、 GPT-4o はそれっぽい口調で途中から支離滅裂なことを言い始めています。

GPT-4o のアプローチの場合、

〇〇が真実を言っている場合
-> 真実は△△となる
-> n人が真実を言っている
=> だから成立する/しない

というロジックをたどることになりますが、最初に真実を仮定するアプローチの方が1ステップ少ない、かつパターンを網羅して検証できるので、それを選択した o1 の方が賢いアプローチをしたと言えそうです。

結論

あくまで主観ですが、真実や条件をもとに理論上の正解を導き出す ことは o1 が向いているかと思いました。

一方で、適当な相槌や相の手でこちらの考えを引きだす壁打ち役 には GPT-4o が向いているように思いました。

ちなみに問題には登場しない「お母さん」もこの問題を一瞬で解きましたが、推論したというより経験則でした。


ユニファでは素直にオナラしたことを認められる人生成AIを活用した機能開発を進められる人を募集しています!

カジュアル面談も行っておりますので、ぜひお声がけください!

jobs.unifa-e.com