다음을 통해 공유


생성형 AI 및 LLM의 작동 방식

생성형 AI는 자연어, 이미지, 오디오 및 코드와 같은 오리지널 콘텐츠를 만들 수 있는 인공 지능의 한 유형입니다. 생성형 AI의 출력은 사용자가 제공하는 입력을 기반으로 합니다. 생성 AI와 상호 작용하는 데 사용하는 일반적인 수단 중 하나는 자연어를 입력으로 사용하는 채팅 애플리케이션입니다. OpenAI에서 개발한 ChatGPT는 인기 채팅 애플리케이션의 예입니다. 자연어를 입력으로 사용하는 생성형 AI 애플리케이션은 LLM(대규모 언어 모델)에 기반하여 NLP(자연어 처리)를 수행합니다.

생성형 AI의 작동 방식

모든 생성형 AI는 모델을 기반으로 빌드됩니다. 이러한 모델은 자연어, 이미지, 오디오 및 코드와 같은 콘텐츠 형식의 대규모 데이터 집합을 사용하여 학습하게 됩니다. 생성형 AI 모델은 학습 데이터에서 식별된 패턴을 사용하여 통계적으로 유사한 새로운 콘텐츠를 생성합니다.

사용자가 제공한 입력은 AI 모델에서 출력을 빌드하는 데 사용됩니다. 입력은 먼저 모델이 이해할 수 있는 데이터 형식으로 구문 분석됩니다. 그런 다음 모델은 해당 데이터를 사용하여 학습에서 일치하는 패턴들을 식별하고 이를 결합하여 최종 출력을 빌드합니다. 생성형 AI 모델은 고유한 콘텐츠를 생성하도록 설계되었기 때문에 동일한 입력에 대해 동일한 출력을 생성하지 않습니다.

입력 또는 출력으로 자연어를 지원하는 생성형 AI 애플리케이션은 이를 위해 LLM을 활용합니다. LLM은 NLP를 수행하는 데 사용되며 NLP에서는 입력 텍스트를 분류하고 감정을 분석합니다. 생성형 AI 모델은 그러한 분류와 감정 분석을 사용하여 패턴을 식별하고 출력을 빌드합니다. 출력이 텍스트인 경우 LLM만 사용하여 생성할 수 있습니다. 출력이 오디오 또는 이미지인 경우 해당 형식의 출력을 생성하기 위한 데이터와 패턴을 제공하기 위해 추가 모델을 사용합니다.

생성형 AI의 일반적인 사용

생성형 AI 애플리케이션은 다음 섹션에서 살펴보는 다양한 잠재적 사용 사례 및 잠재적 출력을 지원합니다.

자연어 생성

일부 생성형 AI 애플리케이션은 다음과 같은 자연어 출력을 생성할 수 있습니다.

  • 전문적으로 표현한 LinkedIn 프로필 요약
  • 온라인 상점의 항목에 대한 풍부한 설명
  • 건강한 식단 아이디어

예를 들어 사용자 입력 고추를 포함한 건강한 아침 식사에 대한 세 가지 아이디어를 알려줘가 주어진 경우, 생성형 AI 애플리케이션은 다음 출력을 생성할 수 있습니다.

예. 후추를 포함하는 세 가지 건강한 아침 식사는 다음과 같습니다.

  1. 달걀과 피망 스크램블 : 피망을 다져 약간 부드러워질 때까지 팬에 볶습니다. 그런 다음, 풀어진 달걀을 추가하고 모든 것을 함께 휘저어서 스크램블을 만듭니다. 영양가 있는 아침 식사를 위해 통곡물 토스트와 함께 제공합니다.

  2. 피망 아보카도 토스트: 토스트한 통곡물 빵 한 조각 위헤 앏게 썬 피망과 으깬 아보카도를 얹고 소금과 후추를 뿌립니다. 이는 후추의 비타민 C와 함께 아보카도의 몇 가지 건강한 지방을 섭취할 수 있는 좋은 방법입니다.

  3. 피망을 곁들인 아침 식사 부리토: 다진 피망, 양파, 스크램블 에그를 팬에 함께 넣고 볶습니다. 그런 다음, 혼합 재료를 통곡물 토르티야에 숟가락으로 얹고 그 위에 살사 또는 핫 소스를 얹습니다. 둥글게 말아서 만족스럽고 영양가 있는 아침 식사를 즐기세요.

이미지 세대

일부 생성형 AI 애플리케이션은 자연어 입력에서 이미지 출력을 생성합니다. 애플리케이션 및 해당 모델에 따라 사용자는 다음을 지정할 수 있습니다.

  • 이미지를 표시할 사람 또는 항목
  • 이미지의 예술적 스타일
  • 유사한 이미지를 생성하는 데 사용할 참조

이미지 생성을 통해 온라인 계정용 가상 아바타를 만들거나 기업 로고를 디자인하거나 작성자에게 예술적 영감을 줄 수 있습니다. 예를 들어 사용자는 햄버거를 먹는 코끼리 이미지를 만들어 줘라는 요청을 입력할 수 있습니다. 생성 AI 애플리케이션은 다음과 같은 출력을 생성할 수 있습니다.

AI가 생성한, 햄버거를 먹는 코끼리의 이미지의 예입니다.

오디오 생성

일부 생성형 AI 애플리케이션은 자연어 입력에서 오디오 출력을 생성합니다. 애플리케이션과 해당 모델에 따라 사용자는 다음을 수행할 수 있습니다.

  • 입력 텍스트로 자연스럽게 들리는 목소리 합성
  • 특정 스타일의 음악이나 특정 악기를 사용하는 음악 만들기
  • 자연어로 제공되는 설정 조건에 따라 입력된 오디오 파일 수정

오디오 생성은 디지털 음성 도우미의 음성 응답을 제공하거나, 음악 제작을 위해 노래에 지원 악기를 추가하거나, 참조 녹음에서 사용자의 원래 음성을 재현할 수 있습니다.

코드 생성

일부 생성형 AI 애플리케이션은 자연어 입력에서 코드를 생성합니다. 애플리케이션과 해당 모델에 따라 사용자는 다음과 같은 코드를 생성할 수 있습니다.

  • 선택한 언어로 된 코드
  • 특정 입력 및 출력 구조를 허용하는 코드
  • 참조 문서를 기반으로 특정 기술을 사용하는 코드

코드 생성은 데이터 정렬 또는 필터링과 같은 일반적인 작업의 빠른 구현을 제공하거나, 코드를 한 언어에서 다른 언어로 빠르게 변환하거나, 지정된 참조 설명서를 기반으로 기술에 대한 질문에 답변할 수 있습니다. 예를 들어 "C#으로 tic-tac-toe 게임을 코딩하는 방법을 보여 줘"라고 입력하는 경우 생성형 AI 애플리케이션은 다음과 같은 출력을 생성할 수 있습니다.

C#으로 tic-tac-toe 게임을 코딩하는 방법에 대한 간단한 예는 다음과 같습니다.

using System;

namespace TicTacToe
{
    class Program
    {
        static char[] board = { '1', '2', '3', '4', '5', '6', '7', '8', '9' };
        static int player = 1; // Player 1 will start
        static int choice; // The number the player chooses
        static int flag = 0; // Set the flag value to 0

        // Check if the position is already marked or not
        private static int CheckPosition(char mark)
        {
            for (int i = 0; i < 9; i++)
            {
                if (board[i] == mark)
                {
                    return 1;
                }
            }
            return 0;
        }

        // The rest of the generated code has been omitted for brevity
        // ...
    }
}

이 코드는 C#으로 간단한 콘솔 기반 tic-tac-toe 게임을 만듭니다. 이 코드는 1차원 배열을 사용하여 보드를 나타내고 각 이동 후 승리 또는 무승부를 확인합니다.

LLM의 작동 방식

LLM을 학습시킬 때 학습 텍스트는 먼저 토큰으로 분해됩니다. 각 토큰은 고유한 텍스트 값을 식별합니다. 토큰은 고유한 단어, 부분 단어 또는 단어와 문장 부호의 조합일 수 있습니다. 각 토큰에는 ID가 할당되어 텍스트를 토큰 ID의 시퀀스로 나타낼 수 있습니다.

텍스트가 토큰으로 분해된 후에는 [포함]으로 알려진 상황별 벡터가 각 토큰에 할당됩니다. 이러한 임베딩 벡터는 토큰 벡터의 각 요소가 토큰의 의미적 특성을 나타내는 다중값 숫자 데이터입니다. 토큰 벡터의 요소는 토큰이 함께 또는 유사한 컨텍스트에서 얼마나 자주 사용되는지에 따라 결정됩니다.

목표는 이전 토큰을 기반으로 시퀀스에서 다음 토큰을 예측하는 것입니다. 다음 토큰에 대한 상대적 영향을 나타내는 기존 시퀀스의 각 토큰에 가중치가 할당됩니다. 그런 다음 이전 토큰의 가중치와 임베딩을 사용하여 다음 벡터 값을 예측하는 계산이 수행됩니다. 그런 다음, 모델은 가장 가능성이 큰 토큰을 선택하여 예측된 벡터를 기반으로 시퀀스를 계속합니다.

이 프로세스가 시퀀스의 각 토큰에 대해 반복적으로 계속되면서 각 출력 시퀀스는 다음 반복에서 입력으로 사용됩니다. 출력은 한 번에 하나의 토큰으로 빌드됩니다. 이 전략은 자동 완성이 작동하는 방식과 유사한 것으로, 제안은 지금까지 입력된 내용을 기반으로 하고 각 새로운 입력으로 업데이트됩니다.

학습 중에는 토큰의 전체 시퀀스가 알려지지만 현재 고려 중인 토큰 이후에 오는 모든 토큰은 무시됩니다. 다음 토큰의 벡터에 대한 예측 값이 실제 값과 비교되고 손실이 계산됩니다. 그런 다음, 손실을 줄이고 모델을 개선하도록 가중치를 증분 방식으로 조정합니다.