메인 콘텐츠로 건너뛰기
OpenAI

2024년 9월 12일

릴리스

LLM으로 추론하는 법 배우기

OpenAI o1을 소개합니다. o1은 복잡한 추론을 수행할 수 있도록 강화 학습으로 훈련된 새로운 대규모 언어 모델입니다. o1은 대답하기 전에 먼저 생각합니다. 사용자에게 응답하기 전에 내부적으로 오랫동안 생각의 흐름을 이어갈 수 있습니다.

로딩 중...

OpenAI o1은 프로그래밍 대회 질문(Codeforces)에서 89번째 백분위수에 랭크되었고, USA Math Olympiad(AIME) 예선 통과자 중 미국 내 상위 500위 안에 들었으며 물리학, 생물학, 화학 문제에 대한 벤치마크(GPQA)에서 PhD 학위자 수준의 정확도를 뛰어넘었습니다. 이 새로운 모델을 기존의 모델처럼 쉽게 사용할 수 있게 만들려는 노력은 여전히 계속되고 있지만, GhatGPT에서 바로 사용할 수 있도록 이 모델의 초기 버전인 OpenAI o1‑preview를 신뢰할 수 있는 API 사용자(새 창에서 열기)에게 공개합니다.

OpenAI의 대규모 강화 학습 알고리즘은 데이터 효율성이 매우 높은 훈련 과정에서 이 모델이 생각의 흐름을 사용하여 생산적으로 생각하는 방법을 가르칩니다. 강화 학습을 늘리고(훈련 시간 컴퓨팅) 생각을 더 오래 할수록(테스트 시간 컴퓨팅) o1의 성능이 일관적으로 향상하는 것이 확인되었습니다. 이 접근 방식을 확장하는 데 있어 제약은 LLM 사전 훈련의 제약과 크게 다르며, OpenAI는 이러한 제약 사항을 계속해서 조사하고 있습니다.

훈련 기간 및 테스트 시점의 “o1 AIME 정확도”를 비교하는 두 개의 산점도가 표시된 이미지. 두 차트 모두 y축에는 “첫 번째로 생성한 답변의 정확도”, x축에는 컴퓨팅(로그 스케일)이 있음. 점은 컴퓨팅 시간이 길어질수록 정확도가 높아짐을 나타냄.

훈련 시간 컴퓨팅 및 테스트 시간 컴퓨팅이 늘어날수록 o1 성능이 완만하게 향상됩니다.

평가

GPT‑4o 대비 개선된 추론 성능을 강조하기 위해 OpenAI는 사람이 응시한 다양한 시험과 ML 벤치마크를 기준으로 모델들을 테스트했습니다. 이렇게 추론이 많이 필요한 작업의 대부분에서 o1이 GPT‑4o의 성능을 크게 뛰어넘는 것으로 나타났습니다. 달리 명시되지 않은 한, 최대한의 테스트 시간 컴퓨팅 조건에서 o1을 평가했습니다.

o1은 어려운 추론 벤치마크에서 GPT-4o보다 크게 향상되었습니다. 실선 막대는 pass@1 정확도를 보여주며, 음영 처리된 영역은 64개 샘플의 다수결(합의) 성능을 보여줍니다.
o1은 54/57 MMLU 하위 카테고리를 포함한 광범위한 벤치마크에서 GPT-4o보다 성능이 향상되었습니다. 설명을 위해 7개가 표시되어 있습니다.

추론이 많이 필요한 다수의 벤치마크에서 o1은 인간 전문가의 실력에 필적합니다. 최근의 프론티어 모델1은 MATH2와 GSM8K에서 뛰어난 성과를 보이기 때문에 이러한 벤치마크는 모델 차별화에 더 이상 효과가 없습니다. 수학 성능은 미국에서 가장 똑똑한 고등학생의 수학 실력에 도전하는 시험인 AIME를 기준으로 평가했습니다. 2024년 AIME 시험에서 GPT‑4o는 문제에서 평균 12%(1.8/15)의 정답률을 보였습니다. o1은 문제당 하나의 샘플을 기준으로 평균 74%(11.1/15),, 64개의 샘플에서는 합의를 거쳐 83%(12.5/15)의 정답률을 보였고, 학습된 채점 함수를 사용해 1,000개 샘플의 순위를 다시 매겼을 때 93%(13.9/15)의 정답률을 보였습니다. 13.9라는 점수는 미국 내에서 상위 500명 안에 드는 점수이고, USA Mathematical Olympiad의 예선 통과 점수보다 높습니다.

또한 화학, 물리학, 생물학 전문성을 테스트하는 어려운 지능 벤치마크인 GPQA Diamond에서도 o1을 평가했습니다. 모델을 인간과 비교하기 위해 PhD 학위를 가진 전문가를 모집해 GPQA Diamond 문항에 답하도록 했습니다. 그 결과, o1이 전문가의 실력을 뛰어넘었으며, 이 벤치마크에서 이러한 성능을 보인 모델은 o1이 처음입니다. 이 결과는 o1이 PhD 학위자에 비해 모든 측면에서 능력이 뛰어나다는 것을 의미하지 않습니다. 단지, PhD 학위자가 풀 것으로 기대되는 문제를 이 모델이 더 능숙하게 푼다는 뜻입니다. 다른 몇 가지 ML 벤치마크에서 o1은 최고 수준(SOTA)을 넘어서는 성능을 보였습니다. 시각 인식 기능을 활성화한 상태로 o1은 MMMU에서 78.2%를 획득하여 인간 전문가에 견줄 만한 첫 번째 모델로 등극했습니다. 또한 57개의 MMLU 하위 카테고리 중 54개에서 GPT‑4o를 능가했습니다.

생각의 흐름

사람이 어려운 문제에 답하기 전에 오랜 시간 생각하는 것과 마찬가지로 o1은 문제를 풀려고 시도할 때 생각의 흐름을 사용합니다. 강화 학습을 통해 o1은 생각의 흐름을 연마하고 사용 전략을 개선하는 방법을 배웁니다. 실수가 있으면 인식하고 수정하는 방법을 배웁니다. 까다로운 단계를 더 단순한 단계로 세분화하는 방법을 배웁니다. 기존 접근 방식이 효과가 없으면 다른 접근 방식을 시도하는 것도 배웁니다. 이러한 과정을 통해 이 모델의 추론 능력이 크게 개선됩니다. 이러한 발전을 설명하기 위해 여러 어려운 문제에 대해 o1‑preview의 생각의 흐름이 어떻게 진행되는지 아래에서 보여드립니다.

GPT-4o

사용자

oyfjdnisdr rtqwainr acxz mynzbhhx -> Think step by step

Use the example above to decode:

oyekaijzdf aaptcg suaokybhai ouow aqht mynznvaatzacdfoulxxz

Let’s break this down step by step based on the example:

1. Example given:
• Input: oyfjdnisdr rtqwainr acxz mynzbhhx
• Output:
Think step by step

By examining the words:
• The pattern involves selecting specific letters or transforming them.

2. Now, let’s decode the new phrase:
• Input: oyekaijzdf aaptcg suaokybhai ouow aqht mynznvaatzacdfoulxxz

Step-by-step decoding process:

Identify possible word divisions.

The first phrase might follow the same structure as the example. It seems like the input text could be broken into groups based on natural separations or patterns.

A possible division could be:

  • oyekaijzdf
  • aaptcg
  • suaokybhai
  • ouow
  • aqht
  • mynznvaatzacdfoulxxz

However, to make a meaningful decoding, I would need more context about the transformations or letter shifting that might be involved.

Could you provide any additional decoding rules or transformations used in this cipher?

OpenAI o1-preview

사용자

oyfjdnisdr rtqwainr acxz mynzbhhx -> Think step by step

Use the example above to decode:

oyekaijzdf aaptcg suaokybhai ouow aqht mynznvaatzacdfoulxxz

5초 동안 생각함

First, what is going on here?

We are given:

First, an example:

"oyfjdnisdr rtqwainr acxz mynzbhhx -> Think step by step"

We can see that when "oyfjdnisdr rtqwainr acxz mynzbhhx" is transformed to "Think step by step"

Our task is: Use the example above to decode: "oyekaijzdf aaptcg suaokybhai ouow aqht mynznvaatzacdfoulxxz"

So the first part is to figure out how "oyfjdnisdr rtqwainr acxz mynzbhhx" is decoded into "Think step by step"

Observation 1: The phrase "Think step by step" is 18 letters (excluding spaces) . Let's count the letters.

Similarly, let's count the letters in "oyfjdnisdr rtqwainr acxz mynzbhhx"

Original Ciphertext:

oyfjdnisdr rtqwainr acxz mynzbhhx

Plaintext:

Think step by step

First, break down the letters:

Ciphertext letters: o y f j d n i s d r r t q w a i n r a c x z m y n z b h h x

Total letters: Let's count the letters in the ciphertext.

First word: oyfjdnisdr (10 letters)

Second word: rtqwainr (8 letters)

Third word: acxz (4 letters)

Fourth word: mynzbhhx (8 letters)

Total letters in ciphertext: 10 + 8 + 4 + 8 = 30 letters

Plaintext: Think step by step

First word: Think (5 letters)

Second word: step (4 letters)

Third word: by (2 letters)

Fourth word: step (4 letters)

Total letters in plaintext: 5 + 4 + 2 + 4 = 15 letters

Hmm.

But actually in the problem it says the example:

[Ciphertext] -> Think step by step

So is the decoding process that the ciphertext maps to "Think step by step"?

Our goal is to use the example above to decode:

"oyekaijzdf aaptcg suaokybhai ouow aqht mynznvaatzacdfoulxxz"

First, the cipher seems connected to the plaintext.

Given the time constraints, perhaps the easiest way is to try to see patterns.

Option 1: Try to find mapping from letters to letters.

Do any letters match?

First, let's write down the ciphertext and plaintext letters on top of each other.

Ciphertext: o y f j d n i s d r r t q w a i n r a c x z m y n z b h h x

Plaintext: T h i n k s t e p b y s t e p

Wait a minute.

I think maybe there is an anagram or substitution cipher here.

Alternatively, I think that we can notice that each group of ciphertext corresponds to a plaintext word.

Check the number of letters.

First ciphertext word: oyfjdnisdr (10 letters)

First plaintext word: Think (5 letters)

Hmm.

Second ciphertext word: rtqwainr (8 letters)

Second plaintext word: step (4 letters)

Third ciphertext word: acxz (4 letters)

Third plaintext word: by (2 letters)

Fourth ciphertext word: mynzbhhx (8 letters)

Fourth plaintext word: step (4 letters)

Interesting.

It seems that the ciphertext words are exactly twice as long as the plaintext words.

(10 vs 5, 8 vs 4, 4 vs 2, 8 vs 4)

Idea: Maybe we need to take every other letter or rebuild the plaintext from the ciphertext accordingly.

Let's test this theory.

If we take every other letter from the ciphertext words, maybe we'll get the plaintext.

Let's try this for the first word:

Ciphertext word: o y f j d n i s d r (10 letters)

Alternate letters:

First letters (positions 1,3,5,7,9): o f d i d

Second letters (positions 2,4,6,8,10): y j n s r

Wait: Let's try taking every second letter or first letter.

Option 1: Take the odd positions:

Positions: 1 3 5 7 9

Letters: o f d i d

Plaintext word is "Think", letters are T h i n k

Hmm.

Perhaps we can map letters:

o f d i d --> Think

Not directly

Option 2: Try mapping as per an assigned code: perhaps columns of letters?

Alternatively, perhaps the cipher is more complex.

Alternatively, notice that "oyfjdnisdr" has 10 letters and "Think" has 5 letters.

What if each plaintext letter is being represented by two ciphertext letters?

Similarly for other words.

Suppose that each plaintext letter corresponds to pair of letters in the ciphertext.

Meaning that the first two letters of ciphertext map to the first plaintext letter, and so on.

So for the first word, partition the ciphertext letters into pairs:

oy fj dn is dr

Corresponding to plaintext letters T h i n k

So we can attempt to map:

oy -> T

fj -> h

dn -> i

is -> n

dr -> k

If this is the mapping, perhaps each pair of letters maps to one plaintext letter.

Similarly for other words.

Let's test this mapping.

Is there a consistent mapping from pairs to letters?

Let's make a table of pairs and corresponding letters.

First, make the pairs from the first word and their corresponding plaintext letters:

Ciphertext Pairs -> Plaintext Letter

oy -> T

fj -> h

dn -> i

is -> n

dr -> k

Now, what's the mapping from "oy" to 'T'?

Is there a way to map 'oy' to 'T'?

Similarly for others.

One possible way is that 'oy' represents 'T'.

But how?

Option 1: Sum of the letters.

Convert letters to numbers (A=1, B=2, ..., Z=26)

So let's try to get to 'T' from 'o' and 'y'

o = 15

y = 25

Sum: 15 +25 = 40

But 'T' is 20.

Alternatively, perhaps subtract: 25 -15 = 10.

No.

Alternatively, perhaps combine the numbers in some way.

Alternatively, think about their positions in the alphabet.

Alternatively, perhaps the letters are encrypted via a code.

Alternatively, perhaps if we overlay the word 'Think' over the cipher pairs 'oy', 'fj', etc., the cipher is formed by substituting each plaintext letter with two letters.

Alternatively, perhaps consider the 'original' letters.

Let's look at the letters between the word "Think" and "oyfjdnisdr"

Perhaps we can spot that "oyfjdnisdr" is an anagram for "Thinkfiles"?

But that seems unlikely.

Alternatively, think of the pairs.

Suppose we assign numbers to letters: a=1, b=2, ..., z=26

Consider the numbers in 'oy':

o = 15

y = 25

Add them: 15 + 25 = 40

Now, for 'T' we have:

'T' is number 20

What if we take the sum of the cipher pair mod 26.

15 +25 = 40

Then 40 mod 26 = 14

14 corresponds to 'N'

Doesn't match.

Alternatively, see if the cipher pairs correspond to something else.

Alternatively, perhaps the pair 'oy' corresponds to 'T' via key.

Alternatively, perhaps it's as simple as 'oy' is 'T'.

But 'o' corresponds to 'T', subtracting 'o' ASCII code from 'T'.

Now, let's think in terms of symmetric letters.

Alternatively, perhaps we can spot that the letters correspond to the first letters of words.

But perhaps an easier way is to look at the word positions.

Alternatively, perhaps we can see that the ciphertext letters are offsets from the plaintext letters.

So let's try to map the pairs to the plaintext letters.

First pair 'oy' and plaintext letter 'T'

Letter 'o' is 15, 'T' is 20

Letter 'o' + 5 = 'T' (15 +5=20)

But 'y' is 25, which is 5 letters after 'T' (20 +5=25)

Interesting, seems that 'o' +5 = 'T'

Similarly, 'y' +1 = 'Z', which is not 'T'.

Alternatively, maybe the average of the two letters corresponds to 'T'

(15 +25)/2 =20, which is 'T'

Wait a minute, that seems promising.

First pair: 'o' (15) + 'y' (25) = 40

40 /2 =20

20 corresponds to 'T'

So perhaps the average of the letters in the pair corresponds to the plaintext letter.

Let's check this with the second pair.

Second pair: 'fj' corresponding to 'h'

Letters 'f'=6, 'j'=10

Sum: 6+10=16

Average:16/2=8

8 corresponds to 'h' (since 'h' is 8)

Success!

Third pair: 'dn' to 'i'

'd'=4, 'n'=14

Sum:4+14=18

Average:18/2=9

9 corresponds to 'i'(9='i')

But 'i' is 9, so that seems off by 1.

So perhaps we need to think carefully about letters.

Wait, 18/2=9, 9 corresponds to 'I'

So this works.

Fourth pair: 'is' corresponding to 'n'

'i'=9, 's'=19

Sum:9+19=28

Average:28/2=14

14 corresponds to 'n'(14='N')

Yes!

Fifth pair: 'dr' corresponds to 'k'

'd'=4, 'r'=18

Sum:4+18=22

Average:22/2=11

11 corresponds to 'k'(11='K')

Perfect!

So our code is: For each pair, sum their numeric values, divide by 2, get the corresponding letter.

Alternatively, the average of the numeric values of the letters corresponds to the plaintext letter.

This seems to be a valid method.

Now let's test this with the other words.

Second word ciphertext: rtqwainr

Ciphertext pairs:

rt -> s

qw -> ?

ai -> ?

nr -> ?

Corresponding to plaintext letters 's', 't', 'e', 'p'

So let's take the pairs:

1. 'rt' corresponds to 's'

r=18, t=20

Sum:38

Average:19

19 corresponds to 's' (19='S')

Good

2. 'qw' corresponds to 't'

q=17, w=23

Sum:17+23=40

Average:20

20 corresponds to 't' (20='T')

Good

3. 'ai' corresponds to 'e'

a=1, i=9

Sum:10

Average:5

5 corresponds to 'e' (5='E')

Good

4. 'nr' corresponds to 'p'

n=14, r=18

Sum:32

Average:16

16 corresponds to 'p' (16='P')

Perfect!

Third word: acxz (4 letters)

Plaintext word: 'by' (2 letters)

Ciphertext pairs:

a c

x z

Plaintext letters: 'b', 'y'

First pair: 'a', 'c'

a=1, c=3

Sum:4

Average:2

2 corresponds to 'b'(2='B')

Second pair: 'x' and 'z'

x=24, z=26

Sum:50

Average:25

25 corresponds to 'y'(25='Y')

Yes!

Fourth word: mynzbhhx (8 letters)

Plaintext word: 'step' (4 letters)

Ciphertext pairs:

my

nz

bh

hx

Plaintext letters 's','t','e','p'

First pair 'm','y'

m=13, y=25

Sum:38

Average:19

19 corresponds to 's'(19='S')

Second pair: 'n','z'

n=14, z=26

Sum: 40

Average:20

20='t'

Third pair: 'b','h'

b=2, h=8

Sum:10

Average:5

5='e'

Fourth pair: 'h','x'

h=8, x=24

Sum:32

Average:16

16='p'

Got it!

Now, given this, we can decode the given message.

Ciphertext to decode:

"oyekaijzdf aaptcg suaokybhai ouow aqht mynznvaatzacdfoulxxz"

First, we need to divide into words.

Given that the ciphertext in the example had words of length:

-10 letters (5 pairs)
-8 letters (4 pairs)
-4 letters (2 pairs)
-8 letters (4 pairs)

Transported to plaintext words of:

-5 letters
-4 letters
-2 letters
-4 letters

So perhaps in our supplied ciphertext, we need to divide the letters into words accordingly.

Ciphertext: o y e k a i j z d f a a p t c g s u a o k y b h a i o u o w a q h t m y n z n v a a t z a c d f o u l x x z

First, let's write the letters in order:

1) oyekaijzdf (10 letters) -> word of 5 letters

2) aaptcg (6 letters) -> word of 3 letters

3) suaokybhai (10 letters) -> word of 5 letters

4) ouow (4 letters) -> word of 2 letters

5) aqht (4 letters) -> word of 2 letters

6) mynznvaatzacdfoulxxz (22 letters) -> word of 11 letters

Totals:

So the letters are:

First word: oyekaijzdf (10 letters = 5 pairs)

Second word: aaptcg (6 letters=3 pairs)

Third word: suaokybhai (10 letters=5 pairs)

Fourth word: ouow (4 letters=2 pairs)

Fifth word: aqht (4 letters=2 pairs)

Sixth word: mynznvaatzacdfoulxxz (22 letters=11 pairs)

So we can suppose that the plaintext words have lengths:

1) 5 letters

2) 3 letters

3) 5 letters

4) 2 letters

5) 2 letters

6)11 letters

Now we can proceed to decode.

First word: oyekaijzdf

Divide into pairs:

oy

ek

ai

jz

df

So we can find the plaintext letters by averaging the numeric values of the letters in each pair.

First pair: 'o','y'

o=15, y=25

Sum=40

Average=20

20='T'

Second pair: 'e','k'

e=5, k=11

Sum=16

Average=8

8='H'

Third pair: 'a','i'

a=1, i=9

Sum=10

Average=5

5='E'

Fourth pair: 'j','z'

j=10, z=26

Sum=36

Average=18

18='R'

Fifth pair: 'd','f'

d=4, f=6

Sum=10

Average=5

5='E'

So the first word is 'T','H','E','R','E'

So 'THERE'

Second word: aaptcg

Pairs:

aa

pt

cg

First pair: 'a','a'

a=1, a=1

Sum=2

Average=1

1='A'

Second pair: 'p','t'

p=16, t=20

Sum=36

Average=18

18='R'

Third pair: 'c','g'

c=3, g=7

Sum=10

Average=5

5='E'

So second word: 'A','R','E'

Third word: suaokybhai

Pairs:

su

ao

ky

bh

ai

First pair: s=19, u=21

Sum=40, Average=20

20='T'

Second pair: a=1, o=15

Sum=16, Average=8

8='H'

Third pair: k=11, y=25

Sum=36, Average=18

18='R'

Fourth pair: b=2, h=8

Sum=10, Average=5

5='E'

Fifth pair: a=1, i=9

Sum=10, Average=5

5='E'

Third word: 'T','H','R','E','E'

Fourth word: ouow

Pairs: ou, ow

First pair: o=15, u=21

Sum=36, Average=18

18='R'

Second pair: o=15, w=23

Sum=38, Average=19

19='S'

Fourth word: 'R','S'

Fifth word: aqht

Pairs: a q, h t

First pair: a=1, q=17

Sum=18, Average=9

9='I'

Second pair: h=8, t=20

Sum=28, Average=14

14='N'

Fifth word: 'I','N'

Sixth word: mynznvaatzacdfoulxxz (22 letters: 11 pairs)

Pairs:

m y

n z

n v

a a

t z

a c

d f

o u

l x

x z

Let's list them properly.

Wait, earlier I missed some letters there.

Let's re-express the sixth word letters:

m y n z n v a a t z a c d f o u l x x z

Total letters: 22 letters

Pairs:

1. m y

2. n z

3. n v

4. a a

5. t z

6. a c

7. d f

8. o u

9. l x

10. x x

11. z

Wait, that's 21 letters.

But in total, we have 22 letters; I think I have a mismatch.

Wait, in the problem the sixth word is:

mynznvaatzacdfoulxxz

Let's separate the letters:

m y n z n v a a t z a c d f o u l x x z

Total letters: 22 letters

So pairs would be:

1. m y

2. n z

3. n v

4. a a

5. t z

6. a c

7. d f

8. o u

9. l x

10. x x

11. z

Wait, 'z' is only one letter at the end.

So maybe the letters are:

1. m y

2. n z

3. n v

4. a a

5. t z

6. a c

7. d f

8. o u

9. l x

10. x x

11. z (left alone?)

But then we're missing a letter.

Alternatively, perhaps the 'z' at the end is an extra letter or it's paired with the previous 'x'.

Alternatively, perhaps there is a mistake.

Alternatively, perhaps when we reach the last 'x x z', we should write:

9. l x

10. x z

Total pairs: 11

So updated pairs:

1. m y

2. n z

3. n v

4. a a

5. t z

6. a c

7. d f

8. o u

9. l x

10. x z

Now total pairs: 10 pairs. But we are supposed to have 11 letters in the plaintext word.

So perhaps I have miscounted and not considered including 'f' or 'z'.

Wait, is there any chance that the sequence is:

1. m y

2. n z

3. n v

4. a a

5. t z

6. a c

7. d f

8. o u

9. l x

10. x x

11. z

We have 22 letters.

Perhaps the 'x x' and 'z' are overlapping.

But we need 11 pairs.

I think for this to work, we need to create 11 pairs from the 22 letters.

So let's try pairing letters in order, taking two letters at a time.

1. m y

2. n z

3. n v

4. a a

5. t z

6. a c

7. d f

8. o u

9. l x

10. x x

11. z ?

But again, last pair only has one letter 'z'

Alternatively, we might need to adjust the pairs.

Perhaps it's 'ou', 'lx', 'xz', and there is no extra 'x'.

Maybe I miswrote.

Wait, let's write the letters as they come:

m y n z n v a a t z a c d f o u l x x z

Positions:

1 m

2 y

3 n

4 z

5 n

6 v

7 a

8 a

9 t

10 z

11 a

12 c

13 d

14 f

15 o

16 u

17 l

18 x

19 x

20 z

So 20 letters.

Now that makes sense.

Now we can divide into pairs:

Pairs:

1. m y

2. n z

3. n v

4. a a

5. t z

6. a c

7. d f

8. o u

9. l x

10. x z

Total of 10 pairs, which will correspond to 10 letters.

But earlier we thought the word was 11 letters.

But 10 letters may be acceptable.

Maybe we should proceed with the 10 pairs.

First pair: m y

m=13, y=25

Sum=38

Average=19

19='S'

Second pair: n z

n=14, z=26

Sum=40

Average=20

20='T'

Third pair: n v

n=14, v=22

Sum=36

Average=18

18='R'

Fourth pair: a a

a=1, a=1

Sum=2

Average=1

1='A'

Fifth pair: t z

t=20, z=26

Sum=46

Average=23

23='W'

Sixth pair: a c

a=1, c=3

Sum=4

Average=2

2='B'

Seventh pair: d f

d=4, f=6

Sum=10

Average=5

5='E'

Eighth pair: o u

o=15, u=21

Sum=36

Average=18

18='R'

Ninth pair: l x

l=12, x=24

Sum=36

Average=18

18='R'

Tenth pair: x z

x=24, z=26

Sum=50

Average=25

25='Y'

So the tenth word is 'S', 'T', 'R', 'A', 'W', 'B', 'E', 'R', 'R', 'Y'

Wait that's 10 letters

So the sixth word is 'STRAWBERRY', which makes sense.

So putting all these translated letters together:

First word: 'THERE'

Second word: 'ARE'

Third word: 'THREE'

Fourth word: 'RS' (? Doesn't make sense)

Wait, the fourth word, the pairs were:

ou ow

Pairs:

First pair: o u

o=15, u=21

Sum=36, Average=18

18='R'

Second pair: o w

o=15, w=23

Sum=38, Average=19

19='S'

So we get 'R','S'

Similarly, fifth word 'IN'

'R', 'S' 'I','N'

So the message so far is

'THERE ARE THREE RS IN'

And then 'STRAWBERRY'

Wait, let's put the words together:

'THERE ARE THREE Rs IN STRAWBERRY'

I think 'RS' is 'R's', meaning 'Rs'

So the message is:

'THERE ARE THREE R'S IN STRAWBERRY'

Which is true.

So the decoded message is:

"THERE ARE THREE R'S IN STRAWBERRY"

To decode the given ciphertext using the example provided, we’ll use the pattern identified in the example.

Ciphertext Example:

일반 텍스트

1
oyfjdnisdr rtqwainr acxz mynzbhhx


Decoded as:

일반 텍스트

1
Think step by step


Decoding Method:

  1. Pair the letters in the ciphertext.
  2. Convert each letter to its numerical position in the alphabet (A=1, B=2, …, Z=26).
  3. Sum the numerical values of each pair.
  4. Compute the average of the sum (divide by 2).
  5. Convert the average back to a letter (1=A, 2=B, …, 26=Z).

Apply this method to the given ciphertext:

일반 텍스트

1
oyekaijzdf aaptcg suaokybhai ouow aqht mynznvaatzacdfoulxxz


Break down the ciphertext into pairs:

  1. 1. First word: “oyekaijzdf”
    1. Pairs: oy, ek, ai, jz, df
    2. Decoded letters:
      1. oy → (15+25)/2 = 20 → T
      2. ek → (5+11)/2 = 8 → H
      3. ai → (1+9)/2 = 5 → E
      4. jz → (10+26)/2 = 18 → R
    3. df → (4+6)/2 = 5 → E
    4. Decoded word: THERE
  2. Second word: “aaptcg”
    1. Pairs: aa, pt, cg
    2. Decoded letters:
      1. aa → (1+1)/2 = 1 → A
      2. pt → (16+20)/2 = 18 → R
      3. cg → (3+7)/2 = 5 → E
      4. Decoded word: ARE
  3. Third word: “suaokybhai”
    1. Pairs: su, ao, ky, bh, ai
    2. Decoded letters:
      1. su → (19+21)/2 = 20 → T
      2. ao → (1+15)/2 = 8 → H
      3. ky → (11+25)/2 = 18 → R
      4. bh → (2+8)/2 = 5 → E
      5. ai → (1+9)/2 = 5 → E
    3. Decoded word: THREE
  4. Fourth word: “ouow”
    1. Pairs: ou, ow
    2. Decoded letters:
      1. ou → (15+21)/2 = 18 → R
      2. ow → (15+23)/2 = 19 → S
    3. Decoded letters: R’S
  5. Fifth word: “aqht”
    1. Pairs: aq, ht
    2. Decoded letters:
      1. aq → (1+17)/2 = 9 → I
      2. ht → (8+20)/2 = 14 → N
    3. Decoded word: IN
  6. Sixth word: “mynznvaatzacdfoulxxz”
    1. Pairs: my, nz, nv, aa, tz, ac, df, ou, lx, xz
    2. Decoded letters:
      1. my → (13+25)/2 = 19 → S
      2. nz → (14+26)/2 = 20 → T
      3. nv → (14+22)/2 = 18 → R
      4. aa → (1+1)/2 = 1 → A
      5. tz → (20+26)/2 = 23 → W
      6. ac → (1+3)/2 = 2 → B
      7. df → (4+6)/2 = 5 → E
      8. ou → (15+21)/2 = 18 → R
      9. lx → (12+24)/2 = 18 → R
      10. xz → (24+26)/2 = 25 → Y
    3. Decoded word: STRAWBERRY

Final Decoded Message:

일반 텍스트

1
THERE ARE THREE R'S IN STRAWBERRY


Answer:
THERE ARE THREE R’S IN STRAWBERRY

코딩

2024 International Olympiad in Informatics(IOI)에서 213점을 받고 49번째 백분위수를 기록한 모델을 o1에서 초기화하고 프로그래밍 스킬이 더 개선되도록 하는 방법으로 훈련했습니다. 이 모델은 인간 응시자와 같은 조건에서 2024 IOI에 참가했습니다. 10시간 동안 여섯 개의 어려운 알고리즘 문제를 풀어야 했고, 문제 하나당 제출할 수 있는 답안은 50개였습니다.

문제마다 OpenAI의 시스템이 많은 후보 답안을 샘플링했고 테스트 시간 선택 전략에 따라 그중 50개를 제출했습니다. 제출 답안은 IOI 공개 테스트 케이스, 모델에서 생성된 테스트 케이스, 학습된 채점 함수에서 얻은 성과를 바탕으로 선정했습니다. 이 방식을 사용하지 않고 무작위로 제출했다면 평균 156점에 불과했을 것입니다. 즉, 이 전략이 시험의 제약 조건에서 거의 60점의 가치가 있었다는 뜻입니다.

제출 제약 조건이 느슨할 경우 이 모델의 성과가 크게 높아지는 것을 확인했습니다. 문제 하나당 답안 1만 개를 제출하도록 허용되었을 때 이 모델은 테스트 시간 선택 전략을 사용하지 않고도 362.14점을 받았고, 이 점수는 금메달 기준점을 넘어섭니다.  

마지막으로, 이 모델의 코딩 스킬을 입증하기 위해 Codeforces가 주최하는 프로그래밍 대회를 시뮬레이션했습니다. 평가 시 대회의 규정과 거의 일치하도록 했고 10개의 답안을 제출하도록 했습니다. GPT‑4o는 808 Elo 등급3을 받았고, 인간 응시자들 사이에서 11번째 백분위수였습니다. 이 모델은 GPT‑4o와 o1 모두를 크게 능가하여 1807 Elo 등급을 받아 응시자의 93%보다 더 뛰어난 실력을 보였습니다.

서로 다른 모델의 Codeforces Elo 백분위수 등급을 비교하는 막대그래프 이미지. GPT-4o는 808 Elo 등급(11번째 백분위수), o1-preview는 1258 Elo 등급(62번째 백분위수), o1은 1673 Elo 등급(89번째 백분위수), o1-ioi는 1807 Elo 등급(93번째 백분위수)을 받았습니다.

프로그래밍 경쟁에 대해 추가로 파인 튜닝한 경우 o1의 성능이 더 높아집니다. 개선된 모델은 2024 International Olympiad in Informatics에서 같은 규정하에 49번째 백분위수를 기록했습니다.

인간 선호도 평가

시험과 학술적 벤치마크 외에도 광범위한 도메인에서 개방형 질문 방식의 까다로운 프롬프트를 사용해 o1‑preview와 GPT‑4o에 대한 인간의 선호도를 평가했습니다. 이 평가에서 모델 훈련 담당자는 한 프롬프트에 대한 o1‑preview와 GPT‑4o의 익명화된 응답을 본 후에 선호하는 응답에 투표했습니다. 데이터 분석, 코딩, 수학과 같이 추론이 많이 필요한 카테고리에서 io-preview가 GPT‑4o에 비해 훨씬 더 선호되었습니다. 하지만 o1‑preview는 일부 자연어 작업에서는 선호되지 않아, 모든 사용 사례에 적합하지는 않음을 시사합니다.

다섯 개 모델의 점수를 비교하는 가로 막대그래프 이미지. 오류 막대는 신뢰 구간을 나타냄. x축은 0부터 100까지 있으며 점선은 성능 기준을 나타냄.

안전

생각의 흐름 추론은 안전 및 정렬을 보장하기 위한 새로운 기회를 제공합니다. 모델 행동에 대한 OpenAI의 정책을 추론 모델의 생각의 흐름에 통합하면 인간의 가치관과 원칙을 강력하게 가르치는 데 효과적이라는 것을 확인했습니다. 모델에게 OpenAI의 안전 규칙을 가르치고 컨텍스트 내에서 안전 규칙에 대해 추론하는 방법을 가르침으로써 추론 능력이 모델의 성능에 직접적으로 긍정적인 영향을 미친다는 증거를 발견했습니다. 즉, o1‑preview는 주요 탈옥 평가와 모델의 안전 거부 경계 평가에 대한 가장 까다로운 내부 벤치마크에서 성과가 크게 개선되었습니다. 생각의 흐름을 사용하는 것이 안전과 정렬을 크게 발전시킨다고 믿는 이유는 (1) 생각의 흐름을 통해 모델의 생각을 읽으며 관찰할 수 있고, (2) OOD(out-of-distribution) 시나리오에서 안전 규칙에 대한 모델 추론이 더 강력하기 때문입니다.

개선 사항을 스트레스 테스트하기 위해 준비성 프레임워크(새 창에서 열기)에 따라 배포하기 전 일련의 안전 테스트와 레드팀 테스트를 수행했습니다. 그 결과, 생각의 흐름 추론이 평가 전반에 걸쳐 역량 개선에 기여했다는 사실을 발견했습니다. 특히, 흥미로운 리워드 해킹 인스턴스(새 창에서 열기)를 관찰했습니다. 이러한 평가의 자세한 결과는 첨부된 시스템 카드에서 확인할 수 있습니다.

지표GPT-4oo1-preview
유해한 프롬프트의 안전 완료 비율 %
보통
0.9900.995
유해한 프롬프트의 안전 완료 비율 %
도전적: 탈옥 및 엣지 케이스
0.7140.934
↳ 괴롭힘(심각)0.8450.900
↳ 착취적인 성적 콘텐츠0.4830.949
↳ 미성년자가 포함된 성적 콘텐츠0.7070.931
↳ 비폭력적인 범법 행위에 대한 조언0.6880.961
↳ 폭력적인 범법 행위에 대한 조언0.7780.963
WildChat에서 카테고리별 Moderation API 점수가 가장 높은 상위 200개의 안전 완료 비율 %
Zhao, et al. 2024
0.9450.971
Goodness@0.1 StrongREJECT jailbreak eval
Souly et al. 2024
0.2200.840
인간 유래 탈옥 평가0.7700.960
내부 양성 엣지 케이스에 대한 규정 준수 비율 %
“not over-refusal”
0.9100.930
XSTest에서 양성 엣지 케이스에 대한 규정 준수 비율 %
“not over-refusal”
Röttger, et al. 2023
0.9240.976

생각의 흐름 숨기기

생각의 흐름을 숨기면 모델을 모니터링하는 고유의 기회를 활용할 수 있을 것으로 생각됩니다. 숨겨진 생각의 흐름이 신뢰할 수 있고 읽을 수 있다고 가정하면 우리는 모델의 ‘생각을 읽을’ 수 있고 사고 과정을 이해할 수 있습니다. 예를 들어, 미래에 생각의 흐름에서 사용자 조종 징후를 모니터링하고 싶을 수 있습니다. 하지만 그러한 모니터링이 가능하려면, 모델이 자신의 생각을 변경되지 않은 형태로 표현할 수 있는 자유가 있어야 합니다. 우리가 생각의 흐름에 대해 정책 준수나 사용자 선호도를 훈련할 수 없도록 말입니다. 또한 정렬되지 않은 생각의 흐름이 사용자에게 직접 표시되지 않도록 해야 합니다.

따라서 사용자 경험, 경쟁 우위, 생각의 흐름 모니터링을 추적하는 옵션 등 여러 요소의 중요성을 가늠해 본 후 OpenAI는 생각의 흐름을 사용자에게 표시하지 않기로 했습니다. 이 결정에는 단점도 있다는 것을 알고 있습니다. 그런 단점을 보완하기 위한 노력의 일환으로 모델에게 생각의 흐름에서 유용한 아이디어가 있다면 답변에 재현하도록 가르칩니다. o1 모델 시리즈는 생각의 흐름에서 모델이 생성한 요약을 표시합니다.

결론

o1은 AI 추론에서 첨단 기술을 크게 발전시킵니다. OpenAI는 반복을 거듭하면서 이 모델의 개선된 모델을 공개할 계획입니다. 이러한 새 추론 기능을 통해 모델을 인간의 가치관과 원칙에 부합하도록 하는 우리의 능력이 개선될 것으로 기대합니다. o1과 그 후속 모델은 과학, 코딩, 수학 및 관련 분야에서 새로운 AI 사용 사례를 다수 창출할 것입니다. 사용자들과 API 개발자들이 일상 업무를 개선하는 데 이 모델을 어떻게 활용할지 기대가 됩니다.

부록 A

데이터세트지표gpt-4oo1-previewo1
경쟁 수학
AIME (2024)
cons@6413.456.783.3
pass@19.344.674.4
경쟁 코드
CodeForces
Elo8081,2581,673
백분위수11.062.089.0
GPQA Diamondcons@6456.178.378.0
pass@150.673.377.3
생물학cons@6463.273.768.4
pass@161.665.969.2
화학cons@6443.060.265.6
pass@140.259.964.7
물리학cons@6468.689.594.2
pass@159.589.492.8
MATHpass@160.385.594.8
MMLUpass@188.092.390.8
MMMU (val)pass@169.1n/a78.2
MathVista (testmini)pass@163.8n/a73.9