prompt engineering

2022.11.30 ChatGPT 등장
알파고와는 달리 누구나 쓸 수 있는 서비스

1993 mosaic개발 > 1994 Netscape, Yahoo, Amazon탄생 > 1998 Google 탄생
30년 만에 인공지능 혁명

2020.06 GPT-3.0
2022.11 GPT-3.5
2022.11.30 ChatGPT 발표

GPT-3.5 = GPT-3.0 + RLHF (인간에 의한 피드백)
GPT-4 멀티모달 인공지능 (여러모드, 텍스트,이미지)
GPT-3.5 16개 병렬 = GPT-4
입력단어의 수가 25,000단어(영어기준)
토큰 32,767개 = 한글 32,767자

1.대화AI혁명
Transformer 2017년 구글 발표
Attention 매커니즘으로 데이터의 시퀀스를 처리
(문맥에 집중할 단어를 결정하는 방식)
인간의 말을 알아듣는 것처럼 보이는 인공지능 서비스

2.빠른 생성 AI혁명
콘텐츠를 자동으로 빨리 많이 잘 생성하는 개인과 조직이 승리

3.일반인공지능(AGI)혁명
모든 상황에 일반적으로 두루 적용할 수 있는 서비스
AGI vs. Domain-Specific 더 효율적인걸 써보고 비교해야함

32,727 토큰 길이만큼 기억 가능
모델 사이즈가 커지면 커질수록 프롬프트만으로도 좋은 결과를 얻는다는 것을 우연히 발견
prompt Engineering 중요

Zero-shot learning
프롬프트만 입력하여 결과 도출
One-shot learning
하나의 예시를  입력하여 결과 도출
Few-shot learning
여러 예시를 모델에 입력하여 결과 도출

In-Context Learning이 아닌 것
Pre-trained
. Generative Pre-trained Transformer
. 기존 원문서로 Self-Supervised Learning 한 것
어떤 AI를 사용하는건 이미 Pre-trained 된 AI갖고 오는 것
Fine-tuning
. Q&A 데이터로 기존에 학습된 매개변수를 수정
In0context learning 하여 활요하는 것 = prompt engneerinig

언어모델 : LM
N개의 단어(토큰)을 주면, N+1번째 단어를 생성
GPT-4:32,767개의 토큰을 줄 수 있음

언어 모델을 만드는 AI모델 : Transformer
input:외국어>Encoders>Decoders>output:영어
단어를 벡터로 변환(embedding)
여러 모델 중 transformer 모델이 현재까지 가장좋음

자동회귀(auto-regressive)언어 모델
첫 단추를 잘못 끼우면 계속 잘못된 방향으로 흘러감 -> hallucination 문제 발생
AI는 언제든지 틀릴 수 있다는 것 고려

언어 모델의 학습 방법:Self-Supervised Pre-Training
인터넷의 거의 모든 문서를 수집해서 랜덤하게 구멍을 뚫고 맞히는 연습을 함
틀릴 때마다 신경망의 연결 강도를 조정
ChatGPT 신경망의 연결강도는 1,750억 개

그전에는 인공지능 개발시 데이터 레이블링 필요 : Supervised Learning
이제는(GenAI) ㅔ이터 레이블링 작업이 필요 없게 됨, 기존 문서에서 단어 학습>굉장히 많은 일을 하는 AI가 됨

기계학습(머신러닝)이란? 처음엔 잘 못하지만 경험할수록 성과가 좋아지는 기계, 학습하는 기계

수학적인 알고리즘에 불과 : 1,750억 개의 X가 있는 방정식, 비선형 최적화 문제이므로 완벽하게 풀 수 없음

초거대 신경망(LLM)은 LNN의 언어모델
GPT-4: 1조7천억 개 파라미터(추정)
파라미터 수는 1년에 10배 씩 증가
다음 해에 1조가 아닌 10조, 100조 나올 수 있음

초거대 신경망을 만드는 비용?
파라미터수에서 0을 하나 뺀 원화 비용으로 얼추 추산
GPT-4는 1700억 정도
무어의 법칙 : 컴퓨팅 성능은 18개월마다 2배 향상, 가격은 반으로 하락

미래에는 부담없이 사용될 지도...
모든 개인이 인공지능을 소유할 수 있음

거대기업은 Closed Source LLM (소스 비공개)
Meta : LLaMA, LLaMA-2 발표 (소스 공개)

Closed Source LLM : New Bing, Bard, Ernie, SenseChat, Anthropic
Open Source S(Small)-LLM : LLaMA, Koala, Alpaca, Vicuna, StableLM, Hyena

필수적으로 경험해야 할 생성AI 서비스
ChatGPT : 무료, 유료는 월20달러
New Bing : GPT-4무료이용
카카오톡 AskUp 친구추가 : ?검색, !(GPT-4), URL내용요약
뤼튼: wrtn.ai 많은 AI 써볼 수 있음
DeepL : 번역을 잘 함
구글 Bard
Claude
마이크로 소프트 CoPilot 월30불 : ms 워드 파일을 작성하면 ChatGPT가 PPT슬라이드 형식으로 정리하여 만들어 줌

생성 AI로 업무 생산성 증진

==================================
Prompt Engineering 개념 및 활용법

prompt : AI가 수해애야 할 작업을 설명하는 text (현재는 텍스트지만 미래, 음성, 이미지, 영상 가능)
생성AI모델과 소통하는 기술

텍스트 생성 AI, 이미지 생성 AI, 멀티 모달 생성 AI
정해진 문법이 존재하는 것이 아니다.
좁은 의미로는 생성AI를 잘 쓰는것
넓은 의미로는 소비자 관점이 아닌 제작자 관점에서 고품질의 서비스와 시스템을 최적화 하여 제작하는 방법론

Prompt Engineering 의 범주
API, Plug-in, RAG:Retrieval-Augmented Generation, Prompting Gen AI for Target Gen AI
(프롬프트를 생성을 위해 AI 사용), Fine tuning

예시:
한국어로 논문 작성 > DeepL 영어로 번역 > GPT-4 학술적으로 수정 > 영어 논문 완성

Chain-of-Thought Prompting
질문을 하고 정답예제를 알려주면 참고해서 문제를 품
질문/대답의 길이만큼 비용 지급
좋은 답을 얻을 수 있는 짧은 prompt 생성

프롬프트 기법
Generated knowledge prompting
모델에 먼저 관련된 사실을 생성하도록 요청한 다음, 그 정보를 바탕으로 주어진 prompt를 완료

Least-to-most prompting
복잡한 문제나 질문을 여러 하위 문제로 나누고, 이러한 하위 문제들을 순차적으로 해결함으로써 전체 문제를 해결

Self-consistency decoding
모델의 일관성과 정확성을 향상시키는 방식으로써 여러개의 Chain-of-Thought 시뮬레이션(rollouts)을 수행한 후, 그 결과들 중에서 가장 일관적으로 도출된 결론을 선택

Complexity-based prompting
모델의 다양한 생각의 경로 중에서 가장 복잡하고 긴 경로를 선별하고, 그 결과 중에서 가장 일관적으로 도출된 결론을 선택

Self-refine
LLM의 답변을 반복적으로 개선하는 데 중점을 두며, 모델은 자신의 답변을 평가하고, 그 평가를 바탕으로 다시 문제 해결
-> step by step 접근으로 hallucination 방지

Plug-in
chatGPT에서 3개까지 설정할 수 있음

LangChain
LLM을 모듈로서 다른 기능과 결합하여 새로운 애플리케이션을 만들 수 있음
DB에서 굉장히 반복적인 대화를 생성해야 될 때 사용
인터넷 검색 연동
구조화된 자료(통계자료, DB등) 분석 후 prompt 생성
질문에 대해 문서에 기반한 답변 생성

검색 증강 생성 RAG
질문을 벡터로 변환, 답변DB도 벡터변환, 질문과 가장가까운 벡터를 찾아 비슷한 문서를 토큰한계만큼 입력하여 질문하면 가장 좋은 답변이 나옴

생성 AI를 학습시키는데 많은 비용이 소요됨 > 자주 학습을 할 수 없음 > 최신 정보는 RAG를 활용
ChatGPT는 2021년 9월까지 데이터를 학습했으므로 그 이후의 정보와 관련된 질문에 대답 불가능, 우디는 RAG와 결합하여 최신 정보 기반 서비스를 가능하게 함

Embeddings-Based Search
1. Generative Pre-trainde 모델
이미 학습이 완료되어 output도출이 가능한 모델
자주 학습시킬 수 없음
2. 최신 정보의 학습
fine-tuning : 모델 가중치를 통한 학습, 모델을 훈련 세트에 맞게 조정
Embeddings : 모델 입력을 통한 학습, 텍스트, 이미지를 벡터로 변환, 지식을 입력 메시지에 삽입

활용 수준 7가지
1. 생성 AI모델 사용
2. 생성 AI모델 API 활용
3. Plug-in 활용
4. RAG&Fine-tuninig
5. 생성 AI독자적 개발
6. Agent 개발
7. 연합 학습(Federated Learning) 방식 개발

step by step
1) Manual, API & Plug-In
2) RAG, Finetuning, EFM
3) Agent & Federated Learning

AI가 사람을 대체하는 것이 아닌, AI를 잘 활용하는 사람에게 AI를 활용 못하는 사람이 대체될 것

AI의 성능은 좋아졌으나 여전히 실수하며 영원히 실수할 것
AI가 내놓은 결과를 날카롭게 검토하는 비판적 사고력 중요
Human-AI Loop
창의적 비판적 사고를 하고 많은 지식을 가진 사람이 주도하는 조직 필요

Coursera 에서 제공하는 Machine learning by Andrew ng 의 강의내용 정리입니다.


Week 1

- What is Machine Learning?

기계 학습의 두 가지 정의가 제공됩니다. Arthur Samuel은 이것을 "컴퓨터에 명시 적으로 프로그래밍하지 않고 배우는 능력을주는 연구 분야"라고 묘사했습니다. 이것은 오래되고 비공식적 인 정의입니다.

Tom Mitchell은보다 현대적인 정의를 제공합니다. "컴퓨터 프로그램은 P로 측정 한 T에서의 작업 성능이 경험 E로 향상되면 작업 T와 성능 측정 P와 관련하여 경험 E를 통해 배우는 것으로 알려져 있습니다. "

예 : 체커 연주.

E = 체커 게임을 많이 한 경험

T = 체커를하는 작업.

P = 프로그램이 다음 게임에서 이기게 될 확률.

일반적으로 모든 기계 학습 문제는 크게 두 가지 분류 중 하나로 분류 될 수 있습니다.

Supervised learning(지도 학습) 및 Unsupervised learning(비지도 학습).


- Supervised Learning

감독 학습에서 우리는 데이터 집합을 제공 받고 입력과 출력 사이에 관계가 있다는 아이디어를 가지고 올바른 출력이 어떻게 보이는지 알고 있습니다.

감독 학습 문제는 "회귀"및 "분류"문제로 분류됩니다. 회귀 문제에서 우리는 연속 출력 내에서 결과를 예측하려고합니다. 즉, 입력 변수를 일부 연속 함수에 매핑하려고합니다. 분류 문제에서 우리는 이산 출력에서 ​​결과를 예측하려고합니다. 즉 입력 변수를 이산 카테고리로 매핑하려고합니다.

예 1 : 부동산 시장 규모에 관한 자료가 있으면 가격 예측을 시도하십시오. 크기의 함수로서의 가격은 지속적인 산출물이므로 회귀 문제가됩니다.

우리는 주택이 "물가보다 더 많이 또는 적게 팔느냐"에 대한 결과를 대신 제시함으로써이 사례를 분류 문제로 바꿀 수 있습니다. 여기서 우리는 가격에 따라 주택을 두 개의 개별 카테고리로 분류합니다.

예 2 :

(a) 회귀 - 사람의 그림이 주어지면 주어진 그림을 기준으로 나이를 예측해야한다.

(b) 분류 - 종양이있는 환자에게 종양이 악성인지 양성인지를 예측해야합니다.

- Unsupervised learning

지도되지 않은 학습은 우리의 결과가 어떻게 보일지 거의 또는 전혀 모르는 상태로 문제에 접근 할 수있게 해줍니다. 우리는 변수의 효과를 반드시 알 필요가없는 데이터로부터 구조를 도출 할 수 있습니다.

우리는 데이터의 변수들 사이의 관계에 기반하여 데이터를 클러스터링함으로써이 구조를 도출 할 수 있습니다.

지도되지 않은 학습의 경우 예측 결과를 기반으로 한 피드백이 없습니다.

예:

클러스터링 (clustering) : 1,000,000 개의 서로 다른 유전자를 모으고 이들 유전자를 수명, 위치, 역할 등과 같은 다양한 변수에 의해 어떻게 유사하거나 관련이있는 그룹으로 자동 분류하는 방법을 찾는다.

비 클러스터링 : "Cocktail Party Algorithm"은 혼돈스러운 환경에서 구조를 찾을 수있게합니다. (즉, 칵테일 파티에서 소리의 메쉬로부터 개별 음성 및 음악을 식별).


- Model Representation

미래의 사용을위한 표기법을 만들기 위해 x (i)를 사용하여 입력 특성이라고도하는 "입력"변수 (이 예제에서는 거실)를 나타내고 "출력"또는 목표 변수를 나타내는 y (i)를 나타냅니다. 우리는 (가격)을 예측하려고 노력하고 있습니다. 쌍 (x (i), y (i))을 학습 예제라고 부르며 학습을 위해 사용할 데이터 집합, 즉 m 개의 학습 예제 목록 (x (i), y (i)); = 1, ..., m-은 훈련 세트 라 불린다. 표기법에서 위 첨자 "(i)"는 단순히 훈련 세트에 대한 지수이며 지수 계산과는 아무런 관련이 없다는 점에 유의하십시오. 또한 입력 값의 공간을 나타내는 X와 출력 값의 공간을 나타내는 Y를 사용합니다. 이 예에서 X = Y =.

감독 학습 문제를보다 공식적으로 설명하기 위해, 우리의 목표는 주어진 학습 집합에서 h : X → Y 함수를 학습하여 h (x)가 y의 해당 값에 대한 "좋은"예측 자라는 것입니다. 역사적인 이유로,이 함수 h는 가설이라고 불린다. 따라서 회화 적으로 볼 때이 과정은 다음과 같습니다.

 


우리가 예측하려고하는 목표 변수가 주택 예에서와 같이 연속적 일 때, 우리는 학습 문제를 회귀 문제라고 부릅니다. y가 소수의 이산 값만을 취할 수있는 경우 (예 : 거주 지역이 주어지면 주거가 주택인지 아파트인지 예측하기를 원할 경우),이를 분류 문제라고 부릅니다.


- Cost function

비용 함수를 사용하여 가설 함수의 정확성을 측정 할 수 있습니다. 이것은 x와 실제 출력 y의 입력 값을 가진 가설의 모든 결과의 평균 차이 (평균보다 더 좋은 버전)를 취합니다.

 

그것을 분해하기 위해서는 12 x ¯ 는 hθ (xi) -yi의 제곱 평균 또는 예측값과 실제 값의 차이입니다.

이 함수는 "제곱 오류 함수"또는 "평균 제곱 오류"라고합니다. 구형 함수의 미분 항이 12 항을 취소하므로, 평균은 구배 강하의 계산의 편의를 위해 반으로 나뉩니다 (12). 다음 이미지는 비용 함수가 수행하는 것을 요약합니다.

 

 


- Cost function Intuition 1

시각적으로 생각하면 우리의 훈련 데이터 세트는 x-y 평면에 흩어져 있습니다. 우리는이 흩어져있는 데이터 포인트를 통과하는 직선 (hθ (x)로 정의)을 만들려고합니다.

우리의 목표는 최상의 라인을 확보하는 것입니다. 가능한 최상의 선은 라인에서 산란 된 점의 평균 제곱 된 수직 거리가 가장 작을 것입니다. 이상적으로는 선이 교육 데이터 세트의 모든 점을 통과해야합니다. 이 경우 J (θ0, θ1)의 값은 0이됩니다. 다음 예제는 비용 함수가 0 인 이상적인 상황을 보여줍니다.

 

θ1 = 1 일 때, 모델의 모든 단일 데이터 포인트를 통과하는 1의 기울기를 얻습니다. 반대로, θ1 = 0.5 일 때 우리의 적합도에서 데이터 포인트까지의 수직 거리를 알 수 있습니다.

이것은 비용 함수를 0.58로 증가시킵니다. 다른 여러 점을 플롯하면 다음 그래프가 나타납니다.


- Cost function Intuition 2

등고선 플롯은 많은 등고선을 포함하는 그래프입니다. 두 변수 함수의 등고선은 같은 선의 모든 점에서 상수 값을가집니다. 그러한 그래프의 예가 바로 아래에 있습니다.

 

 

어떤 색을 취하고 '원'을 따라 가면 비용 함수와 동일한 가치를 기대할 수 있습니다. 예를 들어 위의 초록색 선에있는 세 개의 녹색 점은 J (θ0, θ1)에 대해 동일한 값을 가지므로 결과는 같은 선을 따라 나타납니다. 원으로 표시된 x는 θ0 = 800 및 θ1 = -0.15 일 때 왼쪽의 그래프에 대한 비용 함수의 값을 표시합니다. 또 다른 h (x)를 사용하고 등고선 그래프를 그려 보면 다음과 같은 그래프가 표시됩니다.

 

θ0 = 360이고 θ1 = 0 일 때 윤곽 플롯에서 J (θ0, θ1)의 값이 중심에 가까워 지므로 비용 함수 오차가 줄어 듭니다. 이제 우리의 가설 기능에 약간의 양의 기울기가 주어지면 데이터가 더 잘 들어 맞습니다.


- Gradient Descent

등고선 플롯은 많은 등고선을 포함하는 그래프입니다. 두 변수 함수의 등고선은 같은 선의 모든 점에서 상수 값을가집니다. 그러한 그래프의 예가 바로 아래에 있습니다.

 

어떤 색을 취하고 '원'을 따라 가면 비용 함수와 동일한 가치를 기대할 수 있습니다. 예를 들어 위의 초록색 선에있는 세 개의 녹색 점은 J (θ0, θ1)에 대해 동일한 값을 가지므로 결과는 같은 선을 따라 나타납니다. 원으로 표시된 x는 θ0 = 800 및 θ1 = -0.15 일 때 왼쪽의 그래프에 대한 비용 함수의 값을 표시합니다. 또 다른 h (x)를 사용하고 등고선 그래프를 그려 보면 다음과 같은 그래프가 표시됩니다.

 

θ0 = 360이고 θ1 = 0 일 때 윤곽 플롯에서 J (θ0, θ1)의 값이 중심에 가까워 지므로 비용 함수 오차가 줄어 듭니다. 이제 우리의 가설 기능에 약간의 양의 기울기가 주어지면 데이터가 더 잘 들어 맞습니다.

 

위의 그래프는 가능한 한 비용 함수를 최소화하므로 θ1과 θ0의 결과는 각각 약 0.12와 250이되는 경향이 있습니다. 우리의 그래프에서 그 값을 오른쪽으로 그려 보면 내부의 가장 큰 '원'의 중심에 우리의 포인트가 놓여있는 것 같습니다.


- Gradient Descent For Linear Regression

선형 회귀의 경우에 특별히 적용될 때, 새로운 형태의 그래디언트 강하 방정식이 도출 될 수있다. 우리는 실제 비용 함수와 실제 가설 함수를 대체하고 방정식을 다음과 같이 수정할 수 있습니다.

수렴 될 때까지 반복 :

 

여기서 m은 훈련 세트의 크기이고, θ0는 주어진 훈련 세트 (데이터)의 θ1 및 xi, yiare 값과 동시에 변할 수있는 상수이다.

우리는 θj에 대한 두 가지 경우를 θ0과 θ1에 대한 별도의 방정식으로 구분했다. 그리고 θ1에 대해서는 미분으로 인해 xi에 끝에 곱하는 것입니다. 다음은 단일 예제에 대한 ∂∂θjJ (θ)의 도출입니다.

 

이 모든 것의 요점은 우리 가설을 추측하고이 구배 하강 방정식을 반복적으로 적용하면 우리의 가설이 점점 더 정확해질 것이라는 것입니다.

 

따라서 원래 비용 함수 J에 대한 그래디언트 디센트입니다.이 방법은 모든 단계에서 전체 교육 세트의 모든 예를 살펴보고 일괄 그래디언트 디센트라고합니다. 그라디언트 디센트는 일반적으로 로컬 최소 점의 영향을 받기 쉽지만 선형 회귀에 대해 여기에서 제기 한 최적화 문제는 전역 적이며 다른 로컬 최적화가 하나도 없음을 유의하십시오. 따라서 그라디언트 디센트는 (학습 속도 α가 너무 크지 않다고 가정 할 때) 전역 최소값으로 항상 수렴합니다. 실제로 J는 볼록한 2 차 함수입니다. 다음은 2 차 함수를 최소화하기 위해 실행되는 그라디언트 디센트의 예입니다.

위에 표시된 타원은 2 차 함수의 윤곽입니다. 또한 그라데이션 하강에 의해 취해진 궤도가 (48,30)에서 초기화되었다. 그림에서 x는 (직선으로 연결되어있는) 기울기 강하가 최소로 수렴 할 때 통과 한 θ의 연속적인 값입니다.

 

----- Linear Algebra Review

 아래 내용은 선형대수 기초내용 리뷰로 선형대수를 알고 있는 경우 건너뛰어도 좋습니다.


- matrix & Vector

rows X columns

R 2X3 는 2X3 로 이뤄진 행렬을 의미함

A(i,j) 는 A 행렬의 i row 의 j 컬럼의 entry 를 의미한다.

Vector : an nX1 matrix => N demensional vector 라고 부름

R 4 는 4차원 벡터를 의미한다.

Y(i) 는 Y 벡터의 i 차원값의 entry 를 의미한다.

1-indexed vector 는 y1,y2,y3 로 시작 => 프로그래밍에서 많이 사용됨(더 직관적)

0-indexed ventor 는 y0,y1,y3 로 시작 => 머신러닝에서 많이 사용됨

matrix addition

A(i,j) + B(i,j) 같은 entry 끼리 더함

차원이 다른 행렬은 더할수 없다.

scalar multiplication

3 X A(i,j) 모든 entry 에 3을 곱함

combination of operands

일반 사칙연산 순서와 마찬가지로 곱셈, 나눗셈을 먼저하고 덧셈 뺄셈은 나중에 하며 순서대로 한다.

[ 1 3 ] [ 1 ]  = [ 1 X 1 + 3 X 5 ] 

 4  0     5          4 X 1 + 0 X 5

 2  1                 2 X 1 + 1 X 5

A(m,n) X Y(n) = Y(m) 

m x n 행렬과 n 벡터를 곱하면 m벡터를 구할 수 있다.

y = a + bx 일경우 으로 x를 앞에 1을 붙인 행렬로 만들어 계산한다.

[ 1 x1 ] [ a ] = [ y1 ]

  1 x2      b        y2

       1 x3            y3

즉, DataMatrix X parameters 로 행렬곱으로 표현가능하다.

주의할 점

스칼라곱은 교환법칙이 성립하나 행렬곱은 교환법칙이 성립하지 않는다.

스칼라곱: a x b = b x a,   행렬곱 : A X B <> B X A

스칼라곱과 마찬가지로 행렬곱도 결합법칙이 성립한다.

스칼라곱 : a x (b x c) = (a x b) x c, 행렬곱 :  A X (B X C) = (A X B) X C

identity matrix (항등행렬)

스칼라에서 1 은 곱셉의 항등값이다. 1 x z = z x 1

행렬에서 I 항등행렬이 있다. I X A = A X 1 : I(n,n) row, column 이 같은 entry 만 1 이고 나머지는 0 인 정사각형 행렬

- Inverse and Transpose (역행렬과 전치행렬)

곱셈에 대한 항등원 1을 같게 하는 것. 3 X (1/3) = 1

A의 역행렬 A^-1 : A(A^-1) = (A^-1)A = I

0의 역행렬은 없다. 스칼라도 마찬가지 (undefined)

A^T 는 A(i,j) A^T(j,i) 로 row column 을 맞바꾼것. 대각선 거울로 반사시킨 모양과 같음

+ Recent posts