본문 바로가기
AI/LLM

[LLM]안드레이 카파시: ChatGPT와 같은 LLM 기술의 심층 분석(강화학습 등)

by 잔디🌿 2025. 9. 25.

     

    Models need tokens to think

     

    사람: "Emily가 사과 3개와 오렌지 2개를 삽니다. 오렌지 하나의 가격은 $2입니다. 모든 과일의 총 가격은 $13입니다. 사과의 가격은 얼마입니까?"

    어시스턴트 1: "정답은 $3입니다. 오렌지 2개는 개당 $2이므로 총 $4입니다. 따라서 사과 3개의 가격은 $9이고, 각각의 사과 가격은 $9 ÷ 3 = $3입니다."

    어시스턴트 2: "오렌지 2개의 총 가격은 $4입니다. 13 - 4 = 9, 따라서 사과 3개의 가격은 $9입니다. 9 ÷ 3 = 3, 그래서 각각의 사과 가격은 $3입니다. 정답은 $3입니다."

    위에 두가지 답변을 번역한 것이다.

    둘 다 답은 맞지만, 하나는 좋지 못한 답변이다.

    앞서 설명했듯이 일정 토큰 뒤에 올 토큰을 정할 때 이런식으로 여러 층을 거쳐 계산된다.

    이런 계산 층의 수는 유한하고, 한 토큰 당 계산할 수 있는 양은 제한적이다. 

    그래서 모델이 단일 토큰을 얻기 위해 단일 순방향 패스에서 임의의 계산을 수행한다고 할 수 없다.

    그래서 계산을 여러 토큰에 분산시켜야한다.

     

    위의 답변 중 왼쪽(위쪽)의 답변이 좋지 않은 답변이다.

    토큰 생성이 오른쪽에서 왼쪽으로 간다고 하자. 이 때 이미 첫 문장에서 3달러가 답이라는 결론이 나왔다. 이 답은 토큰 윈도우 내에 위치하게 되는 것이므로, 이 뒤에는 더이상 계산을 하지 않고, 답이 왜 이렇게 나왔는지 설명만 한다.

    오른쪽 답변이 좋은 이유는 모델이 천천히 답에 도달하고 있고, 왼쪽에서 오른쪽으로 가면서 중간 결과를 얻고 있기 때문이다.

     

    실제 gpt는

    이런식으로 변수를 설정하고, 중간중간 계산을 하면서 답을 계산한다.

     

    실제로 gpt에게 토큰 제한을 주고 더 복잡한 문제를 주면 오답을 내는 것을 확인할 수 있다. 

    또한 위와 같이 use code를 사용하면 훨씬 더 정확한 답을 얻을 수 있다. 기존의 방식은 그저 머릿속으로 암산하는 방식이기 때문이다.

     

    만약 ubiquitous라는 글자에서 3번째 글자마다의 알파벳을 출력하라는 명령을 했다고 하자.

    우리는 눈으로 문자를 보니까 각 알파벳을 구분할 수 있지만, 이를 토큰화 했을 때 위와 같이 이 단어에 대해 토큰에 3덩어리밖에 나오지 않으므로 인공지능은 이를 인식할 수 없다. 이게 인공지능이 어려운 수학문제를 푸는 것은 잘하지만, strawberry에 r의 갯수는 세지 못하는 이유다.

     

    사실 모든 토큰을 없애서 이러한 불편함을 없애면 좋지만, 그렇게 세분화 될 경우 시퀀스 길이가 너무 길어져서 계산이 너무 복잡해진다.

    그래서 llm은 복붙에 능하므로, 파이썬 인터프리터에 글자를 복붙해서 코드를 사용해서 계산한다.

     

    reinforcement learning(강화학습)

     

    이건 어떤 분야의 전공책이다.

    우리는 이 글을 읽으면 이 내용이 핵심지식이라는 것을 알고 주제에 대해 감을 잡을 수 있다.

    그 다음 연습문제를 풀게 되는데, 주로 답만 제공이 되고 과정은 제공되지 않는다. 따라서 우리는 과정을 반복하고 초록색 부분(전문가의 문제 설명)부분도  참고하며 답을 찾으며 학습을 수행한다.

     

    llm은 토큰을 사용하기 떄문에 만약 위와 같이 9/3 = 3이 아무런 과정 없이 바로 수행된다면 llm은 한 토큰계산에서 이를 모두 계산해야해서 실수를 하는 등 신뢰할 수 없는 답변을 내놓을 수 있다.

    llm은 다음에 올 토큰을 확률적으로 계산해서 내놓기 때문에 돌릴때마다 다른 결과가 나올 수 있다.

    위의 경우, 14번 질문했을 때 오직 4번 정답을 도출했다. 이 때 llm은 이런 종류의 문제는 이렇게 풀어야하는구나 하고 매개변수 업데이트를 수행할 수 있다.

     

    딥시크 논문을 보면

    모델이 특정 유형의 문제를 반복적으로 풀어보고 답을 확인하며 업데이트 하는 과정에서 정답율이 상승하는 것을 볼 수 있다고 나와있다.

     

    또한 주목할만한 점은 정확도가 올라갈수록 응답하는 시퀀스가 길어진다. 즉, 더 많은 토큰을 사용한다는 것을 확인할 수 있다.

    논문에서는 이를 스스로 문제를 풀어가면서 깨닫고, 그 방향으로 다시 해결해나가는 과정에서 토큰이 많아진다고 설명한다.

     

    실제로 딥시크에게 물어보면 딥시크는 이런식으로 스스로 생각하고 답을 도출해나가는 방법을 생각한 후 본인의 답을 재확인 한 후 사람을 위해 답변을 정리해서 보여준다.

     

    이런식으로 강화학습 단계에서는 사고가 출현한다는 것을 확인할 수 있다.

    이건 이세돌과 대결했던 알파고의 성능 측정이다.

    보라색은 지도학습, 파란색은 강화학습, 점선은 이세돌이다.

    지도학습을 할 때에는 기본적으로 전문가를 모방하는 것 뿐이기 때문에 인간을 능가하는데 한계가 있지만, 강화학습을 하면 스스로 사고하기 때문에 인간을 능가하는 것도 충분히 가능하다.

    예를 들어, 알파고가 인간이라면 절대 두지 않을 수를 둔 적이 있는데, 게임 막바지로 갔을 때에는 이 수가 굉장히 효과적으로 작용했다. 이를 보면 알파고는 인간을 뛰어넘고 있다는 것을 알 수 있다.

     

    RLHF

    인간은 농담을 좋아한다. 만약 gpt에게 팰리컨은 왜 음료수값을 내지 않는지? 와 같은 농담을 했다고 하자. 인간이라면 이를 농담으로 받아들일 수 있지만, gpt는 농담을 구분할 수 없으니 다소 엉뚱하고 진지한 답변을 내놓는다.

    만약 농담을 하는 llm 모델을 만드려면 특정 문장이 재미있는지? 없는지? 를 알려주는 인간 라벨링이 필요하다. 만약 이런 데이터를 쌓으려면 인간이 무려 10억개의 질문에 대한 답을 해야한다.

    이를 대체하기 위해 RLHF를 사용한다.

    이건 인간이 준 소수의 데이터를 가지고 시뮬레이터를 만들어 실제 인간에게 물어보는 대신 자체적으로 평가하는 방식이다.

    이때 시뮬레이터를 만들기 위해 인간에게 뭐가 더 재미있냐, 재미없냐를 물어보는 대신 농담 여러개를 주고 순위를 매기는 방식을 사용한다. 이 방식이 인간에게 더 편리하기 때문이다. 시뮬레이터는 이 데이터를 학습해서 농담의 점수를 0에서 1까지의 숫자로 점수를 매겨 판단한다.

     

    사실 이런 방식은 실제 인간의 의견이 아니기 때문에 오차가 발생할 확률이 있기도 해서 시스템이 확장되는 것을 극적으로 방해할수도 있다.

    이렇게 되면 시뮬레이터가 모델을 안좋은 방향으로 이끌 수 있다. 따라서 어느 시점에서는 강화학습을 중단하고 출시하는 경우가 생긴다.

    안좋은 시뮬레이터로는 더 많은 컴퓨팅 파워를 투입하고 더 오래 실행한다고 더 좋은 결과를 얻을 수 있는게 아니기 때문이다.

     

    따라서 RLHF는 무한정 실행할 수 없기 때문에 강화학습이 아니다.