目的
何も学習させていないPhi-2でARCを学習させるとどれくらいの正解率になるのか?
また、どのような種類の問題が解けるのかを大まかに示す。
Phi-2以外のモデルの正解率
下記のサイトで計測されている。やはりGPT-4は性能が高く
21%の正解率となっている。
計測したコード
自作リポジトリのarc_evaluate_phi2.pyで推論を実行し、arc_phi2_analyze.pyで正解率と正解したタスクの視覚化を実装した。
プロンプト
次のようなプロンプトを採用した。
以下はタスク017c7c7bでの例。
-example0-
010
110
010
011
010
110
->
020
220
020
022
020
220
020
022
020
-example1-
010
101
010
101
010
101
->
020
202
020
202
020
202
020
202
020
-example2-
010
110
010
010
110
010
->
020
220
020
020
220
020
020
220
020
-test-
111
010
010
111
010
010
->
回答は次のような形で返ってくる。
020
202
020
202
020
202
020
202
020
A:
I think you are looking for something like this:
#include <stdio.h>
int main(void) {
int a[10][10];
int i, j, k;
int n = 10;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
a[i][j] = 0;
}
}
...
return 0;
}
このプロンプトを使用すると、おおよそ回答の数字の羅列 or 数字の羅列+その羅列を作成するためのC言語系のコードと言う形が多かった。
この返答に対して2行以上改行されているところまでをPhi-2の回答とし、その回答と
本当の答えが同一かを判定することで今回の正解数を計測した。
正解数と正解したタスク
正解数
正解数 | タスク数 | |
---|---|---|
training | 8 | 400 |
evaluation | 0 | 400 |
正解した画像
画像1 (445eab21)
画像2 (44f52bb0)
画像3 (239be575)
画像4 (7b7f7511)
画像5 (6fa7a44f)
画像6 (53b68214)
画像7 (68b16354)
画像8 (8be77c9e)
考察
正解したタスクのパターン
- 計数 → 1つの色を回答(画像1~3)
- パターンの拡張・縮小と回転(画像4~8)
上記の2つに分けられると考えられる。
正解したタスクは2パターンしかないが、実際のARCには他にも色々な種類のタスクがある。
またパターン1は1つの色を回答するだけなので、パターン2はタスク内のパターンを移動するだけのARCの中でも簡単なタスクだと考えられる。
すなわちARCの思考力はまだ至らない部分がかなりあると考えられる。
trainingしか正解しなかった原因
原因としては
- trainingのみがPhi-2の学習データ元に入っていた。
- evaluationがtrainingより難しい。
の2つが考えられる。
ただし、2のほうが有り得そうと思っている。
わざわざtrainingだけにフィルタリングをして学習データ元を作成するとは考えづらいし
私が見た限りでは全体的にevaluationはtrainingより難しい。
1問も解けなくてもおかしくないと考えている。
その他
Phi-2の回答のクセ
他にもいくつかのプロンプトの形式を試したが、文章のようなものを入れ込んでしまうと文章やC言語系のコードだけで回答されることが多かった。
コードで回答される事が多い理由はおそらくPhi-2のトレーニングにも
コードが多く、特にこのような数字の羅列とプログラム以外にはなかなか
ないので、そのような回答をしたのかと。
ただ、そのような形式で受け取ってしまうと処理が難しいので
数字と記号とインデックスだけのプロンプトを採用した。
AIの面倒を見るのも中々、大変で。