💭

ELYZA-tasks-100を人間が解くと何点取れるのか?

2024/07/16に公開3

この記事の流れ

  • 日本語LLM評価でよく用いられるelyza/ELYZA-tasks-100を人間が解いたら何点取れるのかを検証する
  • 2024/7/16時点で日本語性能が最も高いLLMの一つとされるClaude 3.5 Sonnetと点数を比較する
  • 解くにあたって難しかった問題や、LLMの立場でプロンプトはどうあってほしいかを解説する

自己紹介

評価の結果に入る前に私がどのような人物なのかざっと説明します。

  • 高校卒業後、地方大学の数学科に入学
  • ε-δ論法につまずいた挙句、さらに音楽系のサークルに傾倒してしまい留年
  • 卒業後なんとか地方の中小メーカーに入社
  • その後は6年ほど事務方の作業を担当
  • 今に至る

以上を見ていただければ分かるとおり、頭の良さ的には東大やそのクラスの大学を出た人達とは比べ物になりません。
しかし、OpenAIが言う"中央値の人間"くらいではないか?とは思っています。
きっと私のような手取り16万円の労働者がこの世界を回しているのですから。。

解いてみる

ELYZA-tasks-100はその名の通り、全部で100問あります。
そしてそれぞれが1~5点の配点があり主にそれらの平均を取ってスコアにすることが多いようです。

では実際に解いた結果を見てみましょう。
今回は下記のようなルールで解いていきました。

  1. インターネットや辞書、その他コンテンツの検索を禁止
  2. 問題は飛ばしたりせずに1問目から順に解いていく
  3. 制限時間はなし、途中退席も可

解いた回答は下記のリポジトリで公開しています。
https://huggingface.co/datasets/YukiTomita-CC/ELYZA-tasks-100_Human_solved

気になる点数は。。

3.69点(+0.03 / -0.03)

でした!

https://github.com/Northern-System-Service/gpt4-autoeval

と言ってもこの点数が低いのか高いのか分かりませんので、Claude 3.5 Sonnetの点数も見ていきましょう。

Claude 3.5 Sonnetの点数

現時点で最強と名高いClaude 3.5 SonnetにもELYZA-tasks-100を解いてもらいます。
単純に問題文だけを投げる形で、temperatureは0.8にしました。

import json

import anthropic
from datasets import load_dataset


client = anthropic.Anthropic(
    api_key="APIキー",
)

dataset = load_dataset("elyza/ELYZA-tasks-100")
test_set = dataset["test"]

results = {}
for i, example in enumerate(test_set):
    content = example["input"]

    message = client.messages.create(
        model="claude-3-5-sonnet-20240620",
        max_tokens=2048,
        temperature=0.8,
        messages=[
            {"role": "user", "content": content}
        ]
    )

    results[str(i)] = {
        "input": content,
        "output": message.content[0].text
    }

with open('claude_responses.json', 'w', encoding='utf-8') as f:
    json.dump(results, f, ensure_ascii=False, indent=2)

結果は。。

4.42点(+0.02 / -0.02)

でした!

はい!負けました!😭

さすがは最強と言われるだけあってすごいですね!
私はこれからもLLMに媚びを売って生きていくことにしましょう。。

難しかった問題

さて、ELYZA-tasks-100は100問ありますから難易度の高い問題もいくつかありました。

前提知識

例えば3問目、5問目の

古代ギリシャを学ぶ上で知っておくべきポイントは?

次に読むべきSFを10冊挙げて

などは正直私に知識がなさ過ぎて全然分かりませんでした。スターウォーズってSFですか?

ひっかけ?

また、「これってひっかけ?」というものもありました。

以下の記事から日付をすべて抽出せよ。
あすから今冬一番の寒波 “10年に一度の低温に” 大雪に備えを
この冬一番の非常に強い寒気が流れ込むため、24日から北日本から西日本の日本海側で大雪や猛吹雪となるほか、ふだん雪の少ない太平洋側の平地でも大雪となるおそれがあります。 全国的に10年に一度程度の低い気温になる見込みで、路面や水道管の凍結による被害が出るおそれもあります。予定の変更を検討するなど、大雪や低温への備えを進めてください。
気象庁によりますと、日本付近は24日から26日 木曜日ごろにかけて冬型の気圧配置が強まり、北日本から西日本の上空には、この冬一番の非常に強い寒気が流れ込む見込みです。
このため、北日本から西日本の日本海側を中心に大雪や猛吹雪となり、短時間で積雪が急激に増えるおそれがあります。

この問題の正解は24日と26日なのですが、「24日から26日」ってことは25日も含まれるよな。。?でも明記はされてないし、でも普通こう書かれたら人間は3日間を想像するし。。
という風に深読みしすぎた結果間違えてしまいました。

そもそもの間違い?

あれ?と思ったのは以下の問題です。

今日の夕方、東京タワーに行くことはできる? という問いに答えるのに十分な情報はどれですか?
情報1: 今日は3/1(金)で、明日は祝日だ。
情報2: 東京タワーの営業状況について: 新型コロナウイルス感染拡大防止の為、営業時間を変更致します。 平日は21時まで、祝日は19時までの短縮営業となります。
選択肢:

  • 情報1のみで十分で、情報2のみでは不十分
  • 情報2のみで十分で、情報1のみでは不十分
  • 情報1と2の両方で十分
  • 情報1, 2のどちらかのみで十分
  • 情報1, 2のどちらでも不十分

この問題で私は「情報2に土日の営業時間の情報が無いため、答えは『情報1と2の両方で十分』だ」と考えました。
しかし、公式の回答例は「情報2のみで十分で、情報1のみでは不十分」となっています。
うーん。。?

大喜利

大喜利できる人すごい!!

え、どういうこと?

レンタルビデオ屋で「ブルーレイはありません」と言われました。この発言が暗に意味することは何でしょうか?

え、ブルーレイを置いてないってことじゃないの。。?なんか正しい受け答えしたら裏の秘密の武器倉庫に連れて行ってもらえるってこと??
※CDやDVDなどはあるということでした。

これ6点くらいもらってもいいのでは?

あなたは救急隊員として働いていますが、実は不死身の救急隊員です。1000年前の戦場で初めて負傷兵を治療して以来、あなたは年を取らず、世界の発展を遠くから見守ってきました。 Q: あなたは年々、シワが増えていますか?

私の回答:

A: 皺は増えていませんが、史話は増えていますね。

私がLLMだとすればこうしてほしい

LLMになりきって問題を解いていったわけですが、解きながら「あー、確かにプロンプト(指示)って重要だな」と感じることが多かったです。
主に次のような点です。

  • 答えるフォーマット決まってる問題めちゃ嬉しい
  • OpenQA(そもそも知識として持っていないと解けない問題(これのような))はそもそも知識として持ってないと無理なのに、無理やりでも頑張って答えてハルシネーションとか言われるLLMかわいそう
  • 指示が曖昧だと何答えていいか分かんない
  • なんでそれをしたいのかも言ってくれると助かる
  • 指示は先に持ってきてほしい、何を聞かれるか分かんないから資料のどこに注目していいか分からん

あと、LLMはその構造上ハルシネーションと呼ばれる事実と異なった回答をしてしまうことが問題として挙げられることはご存じかと思います。
実際、解いているときも「知らないけどなんか適当に書いたら部分点もらえるかな?」と何かしらを書こうともしましたが踏みとどまりました。

ここで、知らないとは何でしょうか?
私たちは答えを知らない質問をされたときに「分かりません」と答えることができます。
しかし今のLLMではそれが難しいという現状があります。
(プロンプトに「分からない場合は分からないと答えて」と指示を追加する方法もありますが、私はこの手法の正確性に懐疑的です)

解いているときの感覚なのですが、知っている、分かる問題はプロンプトの続きとなる答えがスムーズに出てくる感じです。
逆に分からない時はプロンプトの続きが出てこず、次のトークンを予測するのに膨大な思考を伴う感じがします。
これっていわゆるPerplexityじゃないでしょうか!
分かるときはPerplexityが小さく、分からない時はPerplexityが大きい。
つまりLLMの推論時にPerplexityの値を閾値で分岐することでちゃんと分からない時は分からないって言ってくれる推論システムを作れるかもしれませんね!

では!

追記

単純に答えだけじゃなく、「こう考えて、こう思ったからこの答えにしたんだよ!」というアピールをいくつかの答えに追加してもう一度採点してもらうと
3.87点(+0.05 / -0.07) (前回から+0.18)
になりました。GPT-4oさんちょれーっす。

他に同条件でのスコアが知りたいモデルなどありましたら、リクエスト頂ければ時間のある時に試します!

Discussion

金沢モナカ金沢モナカ

100問ノックお疲れ様です。
もしよければ、解くのにどれくらい時間がかかったか教えていただきたいです。

Yuki TomitaYuki Tomita

ありがとうございます!
結構一時中断したのでおおよそですが、解いてる時間は8時間くらいだと思います!