
OpenAI o1:AIの新時代を切り拓く驚異の推論能力
2024年9月13日、OpenAIは新しい言語モデルシリーズ「o1」を公開しました。
o1は国際数学オリンピックの予選問題(AIME 2024)において、GPT-4oの正答率9.3%を大きく上回る74.4%の正答率を達成するなど、科学、コーディング、数学などの分野で、これまでのモデルでは難しかった複雑な問題に対して高い解決能力を持っています。
本記事では、o1の特徴や使い方を実際に試した事例や公式が紹介している活用例を交えながら詳しく解説します。

o1とは
o1は、OpenAIが開発した最新の言語モデルシリーズであり、「o1-preview」と「o1-mini」の2つのモデルがラインナップされています。
◉ o1-preview
特徴:
高度な問題解決能力: 科学、コーディング、数学などの複雑な問題に対応可能。
広範な知識ベース: 多岐にわたる分野の質問や課題に対応できる汎用性。
◉ o1-mini
特徴:
STEMに最適化: o1-miniはSTEM(科学・技術・工学・数学)の推論に最適化されており、特に数学やコーディングで高いパフォーマンスを発揮。
高速かつ低コスト: o1-previewと比べて80%のコスト削減が可能で、応答速度も向上。
開発の背景には、AIをより人間らしく、かつ高度な問題解決ができるようにするという目標があります。o1シリーズは、その第一歩として位置付けられています。
o1 の性能と特徴
o1シリーズは、従来のモデルを大きく上回る性能を持っています。その優れた能力は、以下の分野で特に顕著に現れています。
国際数学オリンピック(IMO)での実績
o1-previewは、国際数学オリンピック(IMO)のような高度な数学問題にも対応できます。
従来のGPT-4oモデルが13.4%の正答率であったのに対し、o1-previewは56.7%の正答率を達成しました。そして、最終版のo1では83.3%と、飛躍的な向上を見せています。

コーディングコンテストでの評価
コーディングコンテストでも、o1は非常に高い実績を持っています。
o1-previewは、Codeforcesのコーディングコンテストにおいて、上位38%に到達しました。
これは、GPT-4oがEloレーティング808(下位11%)であったのに対し、o1-previewはEloレーティング1,258(上位38%)を記録し、最終版のo1ではEloレーティング1,673(上位11%)と大幅な向上を示しています。

ジェイルブレイク耐性の向上
o1-previewは、安全性の面でも大きく進化しています。モデルが不適切な回答を避ける能力、つまり「ジェイルブレイク耐性」が大幅に向上しました。
具体的には、GPT-4が22点であったのに対し、o1-previewは84点を達成しています。これにより、ユーザーは安心してモデルを利用でき、不適切なコンテンツや誤情報のリスクが低減されます。

o1の活用事例
o1は、さまざまな分野で高い性能を発揮します。ここでは、実際にChatGPT から使用できるo1-previewで試した内容や、OpenAI公式が紹介している事例をもとに、その活用例を紹介します。
◉ 実際に試した内容
マラソン問題への正確な回答
以下のような論理問題をo1-previewに出題しました。
問題:
「マラソンをしています。あなたは3位の人を抜かしました。今あなたは何位でしょう?」
o1-previewの回答は以下の通りです。
回答:
「あなたは3位です。3位の人を抜かしたので、あなたが新たに3位になります。」
このように、o1-previewは問題の意図を正確に理解し、的確な答えを提供します。

回文の作成
日本語の回文を作成するという課題にも取り組みました。
問題:
「『ゾウ買いたい!買うぞ!』のような回文を1つ考えてください。」
o1-previewは以下のような回文を提示しました。
回答:
「では、以下のような回文をご紹介します。
「私負けましたわ」
この文章は前から読んでも後ろから読んでも同じになります。」
この例では、「わたしまけましたわ」となるので、日本語の回文を正しく作成しています。
思考には30秒かかっています。

gpt-4oの回答:

OpenAI公式の事例
暗号解読の問題
複雑な暗号を解読することもできます。
問題:
「oyfjdnisdr rtqwainr acxz mynzbhhx -> Think step by step
上記の例を使って以下を解読してください:
oyekaijzdf aaptcg suaokybhai ouow aqht mynznvaatzacdfoulxxz」
o1-previewは、ステップバイステップで暗号を解読し、最終的に正しいメッセージを導き出しました。
回答:
「THERE ARE THREE R'S IN STRAWBERRY」
このように、複雑な問題でも論理的に解決します。
思考には64秒かかりました。

回答:

Bashスクリプトの作成
プログラミングのスキルも活用できます。
問題:
「行列を '[1,2],[3,4],[5,6]' の形式で表現した文字列を受け取り、同じ形式で転置行列を出力するbashスクリプトを書いてください。」
o1-previewは、要求に沿った正確なスクリプトを生成しました。
回答:
以下は、指定された形式の文字列を受け取り、転置行列を同じ形式で出力するBashスクリプトです。
```bash
#!/bin/bash
# 入力を読み込む
read input
# 外側の角かっこを削除
input=${input#"["}
input=${input%"]"}
# 行ごとに分割
IFS='],[' read -ra rows <<< "$input"
num_rows=${#rows[@]}
# 列数を取得
row="${rows[0]}"
row=${row#"["}
row=${row%"]"}
IFS=',' read -ra cols <<< "$row"
num_cols=${#cols[@]}
declare -A matrix
# 行列を読み込む
for ((i=0; i<num_rows; i++)); do
row="${rows[i]}"
row=${row#"["}
row=${row%"]"}
IFS=',' read -ra cols <<< "$row"
for ((j=0; j<${#cols[@]}; j++)); do
matrix[$i,$j]=${cols[j]}
done
done
declare -A transposed_matrix
# 転置行列を作成
for ((i=0; i<num_rows; i++)); do
for ((j=0; j<num_cols; j++)); do
transposed_matrix[$j,$i]=${matrix[$i,$j]}
done
done
transposed_num_rows=$num_cols
transposed_num_cols=$num_rows
# 出力を構築
output=''
for ((i=0; i<transposed_num_rows; i++)); do
row_output=''
for ((j=0; j<transposed_num_cols; j++)); do
value=${transposed_matrix[$i,$j]}
row_output+="$value"
if ((j < transposed_num_cols -1)); then
row_output+=','
fi
done
row_output="[$row_output]"
output+="$row_output"
if ((i < transposed_num_rows -1)); then
output+=','
fi
done
# 結果を表示
echo "$output"
```
**使い方:**
このスクリプトをファイル(例: `transpose.sh`)に保存し、実行権限を与えます。
```bash
chmod +x transpose.sh
```
次に、入力を与えて実行します。
```bash
echo '[1,2],[3,4],[5,6]' | ./transpose.sh
```
**出力:**
```
[1,3,5],[2,4,6]
```
このように、o1-previewは多岐にわたる分野で優れた性能を示しています。特に、従来のモデルでは難しかった問題に対しても、正確かつ論理的な回答を提供します。
利用方法
現在(9月13日7時時点)、全てのChatGPT PlusおよびTeamユーザーがモデルを利用できるようになっています。
モデルの選択
画面左上のモデル変更メニューを開く
ChatGPTのインターフェース画面の左上にあるモデルの名前をクリックします。
最新モデルを選択
表示されるモデル一覧から「o1-preview」または「o1-mini」を選びます。これでo1-previewが有効化され、利用を開始できます。

利用制限について
o1には利用制限が設定されています。
o1-previewの週間メッセージ制限
1週間あたり30メッセージまで利用可能です。この制限を超えると、一時的に利用が制限されます。
o1-miniの週間メッセージ制限
同様に、o1-miniモデルは1週間あたり50メッセージまで利用できます。

APIの利用について
開発者向けに、o1-previewとo1-miniのモデルもAPIを通じて利用可能です。APIを利用する場合には以下の点に注意してください。
API利用条件
APIの利用には、開発者がAPI利用Tier 5に該当している必要があります。
今後の提供予定
また、o1-miniモデルは今後、ChatGPT無料ユーザーにも提供される予定です。
追加予定の機能
OpenAIは今後、o1-previewに以下の追加機能を導入する予定です:
ブラウジング機能の統合
インターネット上の最新情報をリアルタイムで取得し、回答に反映させることが可能になります。これにより、常に最新のデータに基づいた情報提供が可能となります。
ファイル・画像アップロードへの対応
ユーザーが画像やファイルをアップロードし、それらを基にした分析や回答ができるようになります。例えば、画像認識やPDFドキュメントの内容解析など、多様な用途に対応します。
システムメッセージのサポート
開発者がシステムレベルでの指示をモデルに提供できるようになります。これにより、よりカスタマイズされた応答や特定の動作を指示することが可能です。
これらの機能追加により、o1-previewはさらに多機能で柔軟なツールとなり、ユーザーのニーズに応じた幅広い活用が期待されます。
まとめ
以上、最新の言語モデルシリーズ「o1」について解説しました。これからも継続的に ChatGPT/AI 関連の情報について発信していきますので、フォロー (@ctgptlb)よろしくお願いします。この革命的なテクノロジーの最前線に立つ機会をお見逃しなく!