얼마전 가트너 사에서 보고서에 따르면 프로그래머 80%가 기술 향상이 필요하다고 함
2027년까지 현존하는 80% 이상이 사실상 AI보다 뒤쳐진다고 내다봤다고 말할 수 있음.
반대로 말하자면 프갤정도되면 대수의 법칙으로따져서 8할이 AI보다 코딩을 못한다 할 수 있음.
근데 나는 오히려 좀 생각을 바꿔서 서비스하는 제품 생산에 주력해서 AI를 적극 활용해서 생산성을 올리자고 방향성을 잡음
그래서 AI 프롬프팅 기법을 찾아보는 중에 최근에 CoT라는게 유행이더라.
CoT(Chain of Thought)에서 파생됨
https://arxiv.org/abs/2201.11903
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
CoT는 실험결과는 놀라웠고, GSM8K 수학 문제에서 이전보다 절대 정확도가 57% 향상됨
실제로 이에 대한 이론에 대한 정리는 있는데 내가 이해를 하지 못해서 가져오지 않겠음. 나는 이해 못한 것을 쓰지 않는 주의기때문에
CoT는 정확히 말하자면
올바른 답을 출력할 확률과 연관되어있는데, 정답 확률이 높은 단어와 연관될 경우 CoT의 성능이 크게 향상됨. 따라서 사전 훈련단계에서 학습된 확률 분포에 큰 영향을 받음.
1. 중간 추론 단계가 있을때, 올바른 답을 출력할 확률이 낮을 경우,모델은 더 높은 답변을 생성하기 위해 자체수정함(다만 여전히 불완전함)(
2. 중간 추론 단계가 있을때, 올바른 답을 출력할 확률이 높을 경우, 설정에서는 중간 추론 단계에 오류가 있어도 모델이 올바른 최종답에 도달할 가능성이 더 높음
3. 중간 추론 단계가 있다고 하더라도, 올바른 답을 출력할 확률이 낮을 경우, 여전히 잘못된 최종답변을 생성할 가능성이 더 높음
즉 CoT는 즉 확률의 영향을 받은 일종의 추론 프로세스임.
그리고 이런 CoT의 이론적 프레임 워크는 결국
1.문제 분해-> CoT를 사용하여 복잡한 문제를 일련의 간단한 하위 문제로 분해
2. 재귀 계산: 추론 단계를 반복적으로 생성한 후, 조건을 지정하여 재귀 계산 프로세스를 구현함.
3. 동적 프로그래밍 시뮬레이션: 즉 CoT를 사용하면 모델이 동적 프로그래밍 알고리즘을 시뮬레이션 하고, 하위문제가 겹치는 복잡한 작업을 효과적으로 처리할 수 있음.
즉 CoT 프레임 워크는
1. 모델이 해야할 설명을 좀 더 강화해서 설명하기
2. 다양한 샘플을 제시하기
3. 동적 추론 경로(문제를 쪼개기)
4. 자체 점검 메커니즘을 요구하기
라고 할 수 있음
결국 질문을 할때,
과정을 쪼개고, 예시 샘플을 주고, 문제를 얼마나 잘게 쪼개서 주느냐에 따라서 답변의 질이 달라진다고 하더라.
그래서 요즘은 코드 생성을 하기전에 Git에서 별점 높은 코드를 주면서 샘플을 주면서 요구 사항을 순서로 정해서주는데 이게 상당히 많은 도움이 되는듯.
내가 느끼는게 이제 프로그래밍 연차가 쌓인다는 것은
즉 좋은 데이터들을 '얼마나' 많이 저장해서 GPT에게 샘플을 먹여서 질좋은 답변을 생성시키느냐가 핵심인거 같음.
나는 이때문에 최근에 해외 유수의 알고리즘들 다 저장해두는 중임.
일단 기본적으로 각 언어마다 유명한 알고리즘은 저장해두고 자신만의 깃에 저장해두는게 주요하다는 생각을 많이함.
이제 시대는 개인의 저장소에 얼마나 질좋은 데이터가 들어있느냐로 결과물이 달라지는 시대가 될테니까.
제가 논문읽고 얻어낸 결론임
님 절교임
이거 이미 GPT o1에 적용됨... o1에 물어보면 알아서 cot 적용해서 생각해줌
ㄹㅇ?
물론 예제를 같이주면 당연히 훨씬잘씀 o1도
이미 gpt o1에 적용됌 o1 프리뷰는 이미 출시됐고 정식버전은 아직