OpenAI API란?
OpenAI가 만든 다양한 AI모델을 개발자가 활용할 수 있도록 만든 API
https://platform.openai.com/docs/overview
OpenAI API의 이해
- OpenAI API의 입력과 출력이 어떤 것인지 정확히 이해한다.
- 생성형 AI가 무엇인지 이해한다.
- LLM(Large Language Model)의 입력과 출력이 무엇인지 이해한다.
- LLM이 어떻게 동작하는지 이해한다.
- ChatGPT가 어떻게 만들어졌는지 간략하게 이해한다.
생성형 AI란?
생성형 AI란 데이터를 학습하여 새로운 콘텐츠를 생성하는 인공지능 기술이다. 텍스트, 이미지, 음악, 비디오 등을 자동으로 창작할 수 있는 능력을 갖추고 있다. GPT와 DALL-E 같은 모델이 대표적이다. 주요 특징은 학습된 데이터를 바탕으로 새로운 결과물을 만들어내는 것이며, 다양한 분야에서 창의적 작업을 돕는다. 그러나 윤리적 문제나 데이터 편향, 창의성의 한계와 같은 단점도 존재한다.
특징 및 작동 방식
- 기계 학습: 생성형 AI는 대규모 데이터셋을 기반으로 학습합니다. 예를 들어, 텍스트 생성 AI는 수많은 문서를 학습하여 문장 구조, 문맥, 의미 등을 이해하고 새로운 문장을 생성한다.
생성: 학습한 데이터를 바탕으로, 새로운 정보를 조합하거나, 이전에 존재하지 않던 콘텐츠를 창작합니다. 이는 주어진 조건이나 프롬프트에 따라 다르게 작동할 수 있다.
응용 분야
- 텍스트 생성: 뉴스 기사 작성, 소설, 시, 블로그 포스트, 코드 작성 등.
- 이미지 생성: 예술 작품, 사진, 캐릭터 디자인, 제품 디자인 등.
- 음악 및 오디오: 새로운 곡 작곡, 음향 효과 생성, 음성 합성 등.
- 비디오 생성: 동영상 편집, 애니메이션 생성 등
LLM의 입력과 출력
LLM의 입력과 출력은 토큰으로 이루어진 배열로 표현된다.
입력
사용자가 "LLM의 입력과 출력이란 무엇인가?"라는 질문을 입력하면, 이 문장은 단어와 구두점으로 이루어진 일련의 토큰으로 변환된다.
예를 들어, "LLM", "의", "입력", "과", "출력", "이란", "무엇", "인가", "?"와 같은 토큰들이 배열로 구성되어 모델에 입력된다.출력
모델은 입력된 토큰 배열을 분석하여 그에 상응하는 응답을 생성한다.
출력 또한 토큰으로 이루어진 배열로, 예를 들어 "LLM", "의", "입력", "은", "사용자", "가", "제공", "한", "텍스트", "이며", "출력", "은", "이", "입력", "을", "바탕", "으로", "생성", "된", "응답", "이다"와 같은 토큰 배열이 출력된다.입출력 단계
입력 자연어(Context) - Context를 토큰으로 쪼개기 - 다음에 올 토큰 고르기 - 3번을 계속 반복하기 - 적절한 시점에 끊기 - 출력 자연어(Output)다음에 올 토큰 고르기
토큰 배열 - 임베딩 벡터 배열 - 엄청 복잡한 연산 - Context 벡터 - 다음 토큰의 확률 분포 - 다음 토큰
LLM 학습
- 입력 언어(Context)를 하나의 Context벡터로 치환하는 방법을 학습
- 토큰 별로 적절한 임데빙 벡터를 매핑한다.
- 엄청 복잡한 연산과정에서 사용되는 무수히 많은 가중치들을 업데이트한다.
- Context벡터를 가지고 입력 언어(Context) 다음에 올 토큰의 확률 분포를 계산하는 방법을 학습한다.
- Context Vector를 토큰별 확률 분포 벡터로 변경시키는 행렬(Head)을 업데이트한다.
데이터를 학습시키는 과정은 LLM(대규모 언어 모델)이 주어진 데이터를 바탕으로 언어의 패턴과 규칙을 이해하고, 이를 기반으로 예측을 할 수 있도록 모델을 훈련시키는 과정이다. 이 과정을 좀 더 구체적으로 설명하면 다음과 같다.
데이터 준비 및 전처리
- 학습에 사용할 데이터를 준비한다. 이 데이터는 일반적으로 텍스트 형식이며, 뉴스 기사, 책, 웹사이트 등 다양한 출처에서 수집된다.
- 수집된 텍스트 데이터를 정제하는 전처리 과정을 거친다. 전처리에는 불필요한 기호 제거, 대소문자 통일, 단어 분할(토큰화) 등이 포함된다.
토큰화
- 텍스트 데이터를 토큰이라는 작은 단위로 나눈다. 토큰은 일반적으로 단어 또는 하위 단어(subword)로 구성되며, 때로는 문장 부호나 공백도 토큰으로 간주된다.
- 이 토큰들이 고유한 숫자 ID로 변환되어 모델이 처리할 수 있는 형태가 된다. 이 과정이 토큰화이다.
임베딩(Embedding)
- 토큰화된 데이터는 임베딩 벡터라는 고차원 벡터로 변환된다. 각 토큰은 이 벡터 공간에서 하나의 점으로 표현된다. 임베딩은 모델이 언어의 의미적 유사성을 이해하도록 도와준다. 예를 들어, '고양이'와 '강아지'라는 단어는 의미적으로 유사하므로, 이들의 임베딩 벡터도 가까운 위치에 있게 된다.
모델 학습:
- 학습 과정은 입력된 토큰의 배열을 바탕으로 다음에 나올 토큰을 예측하는 방식으로 진행된다. 모델은 수많은 텍스트 데이터를 학습하면서, 언어의 패턴과 구조를 점차적으로 이해하게 된다.
- 모델이 각 입력에 대해 예측한 출력과 실제 정답(다음 토큰) 사이의 차이(손실)를 계산한다.
- 손실 함수를 사용해 모델의 예측이 얼마나 정확한지 평가하고, 그 결과에 따라 모델의 가중치를 업데이트한다. 이 업데이트는 경사 하강법(Gradient Descent)과 같은 최적화 알고리즘을 통해 이루어진다.
반복 학습(Epochs)
- 모델은 주어진 데이터를 여러 번 반복해서 학습한다. 한 번의 반복 학습을 에폭(epoch)이라고 하며, 수많은 에폭을 통해 모델이 데이터에 더 잘 맞도록 최적화된다.
- 이 과정에서 모델은 데이터에 과적합(overfitting)되지 않도록 정규화 기법 등을 적용할 수 있다.
평가 및 조정
- 학습 중간에 별도로 준비된 검증 데이터(validation data)를 사용하여 모델의 성능을 평가한다. 이 데이터는 학습에 사용되지 않은 새로운 데이터로, 모델이 얼마나 일반화되었는지를 판단하는 데 사용된다.
- 성능이 좋지 않다면, 학습률(learning rate), 배치 크기(batch size) 등 하이퍼파라미터를 조정하거나, 모델 구조를 변경할 수 있다.
최종 모델
- 충분히 학습된 모델은 새로운 텍스트 입력에 대해 높은 정확도로 예측할 수 있다. 이 모델은 저장되어 이후 다양한 자연어 처리 작업에 사용될 수 있다.
데이터를 학습시키는 이 과정은 매우 많은 연산을 필요로 하며, 이를 위해 고성능 GPU나 TPU 같은 하드웨어가 사용된다. 또한, 대규모 언어 모델은 수십억 개의 매개변수를 학습시켜야 하므로, 학습에는 상당한 시간이 소요될 수 있다.
GPT란?
Generative Pre-trained Transformer
(생성형 AI를 만들기 위한 사전학습된 엄청 복잡한 연산을 위한 구조)
ChatGPT는 OpenAI에서 개발한 대규모 언어 모델을 기반으로 한 대화형 AI이다. 이 모델은 방대한 양의 텍스트 데이터를 학습하여, 사람과 유사한 방식으로 텍스트를 생성하고 질문에 답변할 수 있다. 사용자가 입력한 텍스트를 이해하고, 이를 바탕으로 자연스럽고 유창한 문장을 생성하는 것이 가능하다. ChatGPT는 다양한 주제에 대해 정보를 제공하거나, 창의적인 글을 작성하는 등 여러 목적으로 활용될 수 있다.
👉 요즘은 OpenAI가 개발한 LLM을 지칭
예: GPT-3.5, GPT-4등
- Pre-Training
자연어를 잘 이해하고, 토큰을 잘 예측하도록 학습 - Fine-Tuning & RLHF
LLM이 사람의 말을 잘 따르도록 학습 - Prompting
누구나 쉽게 사용할 수 있도록 기본 Context를 작성
'Frontend > Libraries' 카테고리의 다른 글
[TailwindCSS] container width 커스텀하기 (0) | 2024.08.27 |
---|---|
[nextjs/react-select] Warning: Prop id did not match. Server: "react-select-4-live-region" Client: "react-select-3-live-region" error 문제 (0) | 2024.08.22 |
yarn pnp에서 node-modules로 변경후 supabse CLI 사용하기... (0) | 2024.07.01 |
[Swiper] 스와이퍼 버벅대는 현상(js 중복) (0) | 2024.05.07 |
[Redux] 리덕스 라이브러리 이해하기 (1) | 2023.12.28 |