CH1
Language Model
- 문장이 얼마나 자연스러운지에 대한 확률을 계산하여 문장 내 특정 위치에 나타나는 데 적합한 단어를 확률적으로 예측하는 모델입니다
- 쉬운 방법으로, Language Model은 이전 단어들을 기반으로 다음 단어를 예측합니다
![](https://velog.velcdn.com/images/alstjsdlr0321/post/bebb14dd-0706-439b-a787-fe9bb7a00962/image.png)
Large Language Model (LLM)
1) 대화 또는 기타 자연어 입력에 대한 인간과 같은 반응을 생성하기 위해 방대한 텍스트 데이터에 대해 훈련된 인공 지능(Large Language Models)
- 대화하듯 인간이 응답을 주듯이 답을 생성시켜주기 위해
2) Large Language Models는 많은 양의 데이터가 필요하고 다른 딥러닝 모델에 비해 파라미터(가중치) 크기가 큽니다
3) 유명 LLM : 트랜스포머, GPT, BERT 등.
LLM 의 파라미터는 무엇인가?
![](https://velog.velcdn.com/images/alstjsdlr0321/post/7f048016-1d71-46fb-bd21-3526546e1903/image.png)
- 머신 러닝과 딥 러닝의 파라미터 는 학습 알고리즘이 학습할 때 독립적으로 변화할 수 있는 값(가중치)입니다.
- 이러한 값은 사용자(인간)가 제공하는 하이퍼 파라미터(hyper parameter, 히든레이언개수개수등등, 학습률노드)등등)의 선택에 따라 영향을 받습니다.
딥러닝과 지도학습
![](https://velog.velcdn.com/images/alstjsdlr0321/post/9f269053-dc54-458b-826d-81610e9b4f26/image.png)
1) 네트워크에 3개 이상의 레이어가 있으면 깊이가 있는 것 (deep 하다) 입니다.
2) 딥 러닝 NN은 매우 복잡한 함수, 고도의 비선형 함수 문제를 학습할 수 있습니다
- 학습하기 위한 함수의 곡선이 더 비선형화 된다 -> 더 치밀한 예측을 한다.
2) 그러나 딥러닝 방법은 과적합 문제를 야기합니다.
- 히든레이어가 많으면 많을 수록 weight 값들이 증가 -> 마냥 좋은것만은 아니다.
- 과적합이 생기는 이유
- 히든 레이어의 차수가 너무 높았을 경우 degree?
- training data 가 충분하지 않을경우
- 학습 데이터 간 종속관계 생겼을 경우 : 한 학습 데이터와 다른 학습 데이터에 영향을 많이 줄 경우
역전파:
target과 y의 차이, 이전 레이어로 피드백(target-y) 값에 차이를 뒤로 가면서 무게 반영
딥러닝과 지도학습 (역전파)
![](https://velog.velcdn.com/images/alstjsdlr0321/post/1e5ec705-559d-4461-a1c3-3578da0d588c/image.png)
![](https://velog.velcdn.com/images/alstjsdlr0321/post/713be4d4-e310-44e2-b3c1-759c298b809e/image.png)
XOR 에 대한 데이터 셋 (레이블)
-
두개의 input 노드 x 가 1, 1 인 경우 Target 0 (supervisor 가 가지고있는 정답)
-
계산을 통해서 Y1 이 0에 가깝게 값이 나와야하는데, 그렇지 않기 때문에 Error 만큼 뒤로 역전파, 학습 시킨다.
-
LLM 에서 파라미터 개수가 굉장히 중요하다.
파라미터 개수에 의한 LLM 과 sLLM
![](https://velog.velcdn.com/images/alstjsdlr0321/post/dd4ca1d6-b22e-4699-a795-c867c9a1d3a9/image.png)
- GPT-3 의 파라미터 개수 : 1천7백5십억 parameters
- 파라미터를 적게 할순 없을까 해서 sLLM 모델들 등장.
- 미리에는 sLLM 쪽이 더 각광 받을 것이다고 예상
![](https://velog.velcdn.com/images/alstjsdlr0321/post/a1dcd84a-0303-4504-96e4-508d5eca0251/image.png)
GPT - 3.5
- (175B, 2022)
- GPT-3의 강화학습에 의해 Fine-tunning 시킨 모델
- 기존 모델보다 더 복잡한 명령을 처리가능 (더 길고 고품질 결과물 생성)
- RLHF(Reinforcement Learning from Human Feedback) 기법 사용하여 Fine-tunning.
- 사람이 피드백을 주어 좋은 대답이면 +, 나쁜 대답이면 - 등등 강화학습 기법 사용
- GPT-3 에서의 인간윤리/상식과 반하는 질문 및 답변을 금지시키기 위해서 도입
1조개와 같은 파라미터를 학습시키기엔 엄청나게 큰 컴퓨팅 능력을 요구하므로 자이언트 IT 기업 아니면 GPT-4 와 같은 LLM 을 학습시키기 어려움. 따라서 sLLM 이 더 각광받을 것이다 - 조민호 -
LLM에서의 Fine-Tuning 이 무엇인가
- 이미 학습된(pre-trained) 모델에 호랑이를 하나 더 추가하여 추가학습 : Fine-tuning
- 호랑까지 구별할 수 있도록
![](https://velog.velcdn.com/images/alstjsdlr0321/post/dcfc4a83-39c2-4ced-8fa5-fb9e78bb81e2/image.png)
ChatGPT
- ChatGPT는 openAI에 의해 개발된 언어 모델 입니다
- GPT 아키텍처를 기반으로 하며(ChatGPT는 GPT-3.5 시리즈의 모델에서 fine-tuned 됨) 대화 컨텍스트 에서 인간과 유사한 텍스트 응답을 생성하도록 특별히 설계되었습니다
- 우리는 무료로 GPT-3/GPT-3.5 기반 ChatGPT을 사용할 수 있지만, GPT-4 기반 ChatGPT을 사용하려면 수수료를 지불해야 합니다
- ChatGPT는 많은 작업을 수행할 수 있습니다
Large Language Model Tree
![](https://velog.velcdn.com/images/alstjsdlr0321/post/b8ffa7bd-8696-4e54-9e48-d323bfc9f56e/image.png)
- 트랜스포머(Transformer) 아키텍처 를 기반으로 많은 LLM이 있습니다.
- 트랜스포머 : 인코더, 디코더
- Encoder-only : BERT, ALBERT(BERT 파인튜닝한 것)
- Encoder-Decoder : T5, BART
- Decoder-only : GPT, Meta 의 LLaMA 라는 LLM 모델
- 최근 트랜스포머의 디코더 아키텍처를 이용한 LLM이 인기를 끌고 있습니다
- 처음에는 대부분의 회사가 모델을 오픈하지 않았습니다
- 최근에 몇몇 회사들이 그들의 모델을 오픈하기 시작했습니다
- ex) LLaMA(메타), BERT(구글)
ChatGPT Task Example
- ❶ Text Summarization 이 가능하다.
- ChatGPT 는 텍스트를 요약할 수 있다.
- 텍스트는 한 문장 또는 여러 문장 또는 한 단락 또는 여러 단락이 될 수 있습니다
![](https://velog.velcdn.com/images/alstjsdlr0321/post/a5af1d8c-43d8-4749-84b6-03f9adcd5c63/image.png)
- ❷ Information Extraction 정보 추축 가능
- ChatGPT는 정보를 추출할 수 있습니다
- ChatGPT는 정보를 추출하는 것 외에도 추가적인 내용도 제공합니다
- 대화의 창을 prompt
![](https://velog.velcdn.com/images/alstjsdlr0321/post/382f938e-64f5-4cea-a3f8-eb22b598116b/image.png)
- ❸ Qustion Answering 질문 답변
- ChatGPT는 질문에서 대답할 수 있습니다
- 정보 추출과 마찬가지로, 답변은 프롬프트(질문)에 의해 이루어집니다.
![](https://velog.velcdn.com/images/alstjsdlr0321/post/b2ba08f5-0636-4231-ae25-5a3d2d469014/image.png)
- ❹ Text Classification 텍스트 분류
- ChatGPT 텍스트 분류 작업 가능
- 감정 분석(Sentiment analysis)은 텍스트 분류의 유명한 예이며, 우리는 텍스트를 카테고리로 나누어 분류하는 과제를 줄 수 있습니다.
![](https://velog.velcdn.com/images/alstjsdlr0321/post/ef0bd41f-313d-4af6-8a12-7b19c61cd376/image.png)
- ❺ Conversation 대화
- 챗봇으로 ChatGPT도 하고 모델과 직접 대화도 할 수 있습니다
- 우리가 챗봇의 역할을 지정하면 출력이 달라질 수 있습니다
- 두 번째 질문의 출력은 더 친근하고 더 쉬운 단어로 쓰여집니다
![](https://velog.velcdn.com/images/alstjsdlr0321/post/0ff64294-332d-434e-a811-523e49868a08/image.png)
- ❻ Code Generation 코드 생성
- ChatGPT이(가) 코드를 생성할 수 있습니다
- 필요한 코드를 생성하도록 ChatGPT에 지시할 수 있습니다
![](https://velog.velcdn.com/images/alstjsdlr0321/post/b7b69a43-63fb-460d-9d0e-c574478474a3/image.png)
- ChatGPT는 코드를 다른 프로그래밍 언어로 변환할 수도 있습니다(Python -> C++)
![](https://velog.velcdn.com/images/alstjsdlr0321/post/e01c64c2-cb9f-43c5-bd86-b772a9b2a547/image.png)
- Python -> R
![](https://velog.velcdn.com/images/alstjsdlr0321/post/bd03391b-0bf6-4df3-a27b-56a9be423024/image.png)
- ChatGPT에서 원하는 결과를 한 번에 제공하지 못하는 경우가 있습니다
- 질문 : 파이썬 라이브러리를 이용하여 검색결과 일부를 삭제하는 코드를 적어줘. 아래의 URL의 제목만 남기고 모두 삭제해줘
- 이 URL의 네이버 검색 결과는 제목이 없다 따라서 Result가 None
- 그럼 ChatGPT에게 추가적인 정보를 줘야겠네요
- 새로 title 을 추천해줌
![](https://velog.velcdn.com/images/alstjsdlr0321/post/5db22c44-7745-4939-9b4d-e2ba062b2243/image.png)
- ❼ Code Interpretation 코드 해석
- ChatGPT 상세하게 코드를 해석할 수 있다. 영어도 물어봐야 정확하다.
![](https://velog.velcdn.com/images/alstjsdlr0321/post/ee0023b8-3e2f-46ba-b3be-56ed89c81ccc/image.png)
- ❽ Reasoning (추론, 논리)
- ChatGPT는 추론문제를 풀수있습니다
- 어떤 경우에는, ChatGPT는 추상적인 질문보다는 수학문제와 같이 정해진 답을 가지고 질문을 받습니다
- 몇 달 전만 해도 ChatGPT는 추리 과정을 풀 수 없었습니다
- 하지만 openAI는 꾸준히 ChatGPT이 향상되고 있기 때문에 ChatGPT는 이제 추론 문제를 해결할 수 있습니다
![](https://velog.velcdn.com/images/alstjsdlr0321/post/3a0d884a-9c18-4f2d-a519-4654950377c3/image.png)
- ChatGPT에게 추가적인 정보를 제공함으로써 우리는 정답을 제시할 수 있는 모델을 만들 수 있습니다
- 질문 : 주사위를 1회 던졌을 떄 그 숫자가 홀수이면서 소수일 확률은?
- Event B가 틀렸기 때문에 답이 틀렸었지만, 다시 질문해서 알맞은 정답을 도출해냄
![](https://velog.velcdn.com/images/alstjsdlr0321/post/c064fc12-478f-489d-aee7-be6db7b8d802/image.png)
ChatGPT 의 한계
- ❶ Misinterpretation and Biased Responses (Hallucination. 헐루시네이션 = 그럴싸한 오류)
- ChatGPT는 질문으로부터 답을 만들기 위해 최선을 다합니다
- 그러나 인공지능에서 "헐루시네이션"은 그럴듯하게 들릴 수 있지만 실제로는 부정확하거나 주어진 맥락과 무관한 출력의 생성을 의미합니다.
- 이러한 출력은 종종 AI 모델의 고유한 편향, 실제 이해 부족 또는 교육 데이터 제한에서 비롯됩니다.
- 예를들어 맥아더는 1880년에 태어났고 미국 남북전쟁은 1865년에 끝났습니다
![](https://velog.velcdn.com/images/alstjsdlr0321/post/7aacde9e-045f-4876-a0f9-f80c5db87769/image.png)
- ❷ Dependency on the train data 학습데이터에 과도하게 의존
- ChatGPT 2021년 9월까지 데이터에 대한 교육을 받았습니다
- 비교적 최근의 사건이나 기법에 대한 답이 부정확함
![](https://velog.velcdn.com/images/alstjsdlr0321/post/bbec9c8d-c5d1-473b-a7df-ee0375da22bf/image.png)
Prompt 가 무엇인가?
![](https://velog.velcdn.com/images/alstjsdlr0321/post/1218b652-8908-40b1-b012-fdd3df3ad9e5/image.png)
- 어떤 특정한 업무를 수행하기 위해서 입력하는 메세지, ChatGPT 가 응답하여 보여주는 메세지
- 그 의미는 자연어로 언어 모델에 무엇을 해야 하는지 설명하고 원하는 결과를 출력할 수 있도록 하는 방식으로 확장되고 있습니다
왜 Prompt 가 중요한가?
- 프롬프트에 따라 언어 모델과 다른 답변을 얻을 수 있습니다 (어떻게 물어보느냐에 따라 답변이 다름)
- 우리는 두번째 프롬프트의 출력이 우리가 원하는 답변에 더 가깝다는 것을 발견할 수 있습니다(초등학생이 이해하기 쉽게 설명해달라는 프롬프트)
![](https://velog.velcdn.com/images/alstjsdlr0321/post/42baa128-4935-4b9b-ba33-0a0e0b36ae76/image.png)
- 프롬프트에 따라 더 명확한 출력을 얻을 수 있습니다
- 우리는 두번째 프롬프트의 출력이 이해하기 쉽다는 것을 알 수 있습니다(이 문제를 step by step 으로 보여달라는 프롬프트)
![](https://velog.velcdn.com/images/alstjsdlr0321/post/2264fba7-160a-4382-aec7-4288db4563e0/image.png)
Chain of Thought(CoT) - For better answers
- Chain of Though(CoT) 사용
- LLM은 수학 문제나 추론 문제를 해결하는 능력이 떨어집니다
- 이을 해결하기 위해, 우리는 단계별로 출력을 만들 수 있는 모델 을 제공할 수 있습니다
- 우리는 '질문-답변'을 주는 대신, 모델에게 'Question(질문)-Solution(푸는과정)-Answer(답변)'을 줍니다
- 우리는 CoT을 이용하여 추론 문제를 해결할 수 있는 모델을 만들었습니다(일종의 fine tuning 이라고 볼 수 있다)
- 9가 정답인데 98이라는 오답을 냄 -> Question-푸는 과정-Answer 을 보여주고 또 다른 질문을 했을떄 위 과정처럼 보여지도록 출력
![](https://velog.velcdn.com/images/alstjsdlr0321/post/801580e6-187a-495c-a2a4-146fd0fc5b40/image.png)
- Transformer : 2017년 구글이 발표한 논문 "Attention is all you need" 에서 제시한 언어모델 (Attention: 중요한 핵심 Feature를 최대한 유지시켜 줌)
- 기존의 seq2seq(RNN)의 구조인 Encoder-Decoder 따르지만 논문의 이름처럼 어텐션(Attention)만으로 구현한 모델 (RNN을 사용하지 않음)
- RNN 보다 더 우수한 성능을 보여줌. LLM의 기본 알고리즘으로 각광.
- Encoder
- 입력 정보를 압축 (feature, 핵심 정보는 유지하면서 압축)
- seq2seq (RNN) 의 경우 압축을 시키다 보니 중요한 핵심 feature 들이 손실을 입은 문제를 해결 -> 정확를 높임
- 압축된 정보를 디코더로 전달합니다
- Decoder
- 디코더의 output 인 Embedding 시켜 별도로 입력이 되고, 인코더의 경우 input Embedding 시켜 입력을 시킨다 -> 그 다음 Positional Encoding(단어들의 유치 인코딩)을 시킨 후 Masked-Multi Attention 이라는 알고리즘 적용과 Add & Normalization (더하고 정규화)
- Encoder 에서 온 정보와 함께 Merge 해서 다시 Multi-Head Attention 알고리즘을 거치고 (이전에는 이 Multi-Head Attention 부분을 RNN 을 사용했었다 - 즉, 구글에서 Transformer 라는 구조에서 이 RNN 부분을 Attention 으로 대체했다)
- 그 다음 Feed Forward 과정을 거쳐서 Add & Norm 시키고 Linear 형태로 Output 이 만들어지면 Softmax(확률을 위한 것)
?- 마지막으로 Output Probabilities (어느 단어가 가장 적절하다고 보는지에 대한 확률을 구할 수 있음)
트랜스포머, RNN 기반 인코더 & 디코더를 어텐션 기반 인코더 & 디코더로 변경하여 장기 의존성 문제(long-term dependency problem) 해결
- RNN은 쓰지 않고 어텐션이라는 알고리즘을 사용
- OpenAI 에서 개발한 ChatGPT 가 비록 구글에서 만든 Transformer 를 사용했는데 변형시킨 것. (구글에서 만든 Transformer 보다 결과가 좋았다)
- GPT는 말 그대로 '자가학습'하여 답변을 '생성'하고 대량의 데이터와 맥락을 처리할 수 있는 '트랜스포머(변환기)' 기술이며 대규모 언어 모델을 기반으로 함
- GPT는 인코더 사용 x, 트랜스포머의 디코더 부분만 사용합니다 (인코더를 Merge 시켜주는 부분을 삭제함 - 빨간색 박스)
- 12개의 디코더를 쌓임
- 훨씬 단조로워 짐(Text & Position, Masked Multi Self Attention, Layer Norm, Feed Forward, Layer Norm -> Text Prediction or Text Classifier)
2단계 교육 및 트랜스포머 아키텍처로, GPT는 Target Tasks 을 이해하고 지도 학습에서 훈련된 최첨단 모델과 동등하거나 심지어 더 잘 수행하기 위해 매우 적거나 전혀 예를 필요로 하지 않습니다(targets.지도학습 불필요)
- 세상의 모든 Text 들이 label 되지 않은 상태(즉, target 이 없는 상태)인데 이를 supervisor(Teacher) 가 가지고있는 정답지 없이 그냥 입력되는 형태 (unsupervised 형태이다)
- solution 을 구하는 종류에 따라서 이러한 ChatGPT 의 아키텍처를 변형시키는 것 없이 input 부분(Text & Position Embed)의 형태만 변형시키도록 함. (매우 편리함을 제공)
![](https://velog.velcdn.com/images/alstjsdlr0321/post/be786fe0-1d2a-4128-8019-1c2514c8d235/image.png)
- Classification 문제라면,
- Text 를 입력해서 Transformer(GPT) 를 거쳐서 Linear 가 나오고 softmax 구하고 확률 구하고
- 입력형태 : Start(텍스트의 시작), Extract(텍스트의 끝)
- Entailment
- Premise(가정이 될만한 상황), Delim(구분자), Hypothesis(가설) 의 입력형테를 가지며 -> Transformer 를 거쳐 어떤 가설이 확률이 더 높은지 계산
- Similarity
- Text1 과 Text2 가 같은지, 정확도를 위해 자리 바꿔서 Text2 Text1 가 같은지 다른지 확률을 구한다.
- Multiple Choice
- 어떤 Context 가 있다면 Answer1, Answer2, AnswerN 중 어떤 Answer 가 확률이 높은 Answer 인가를 계산
- 이전에 사전 교육을 받은 모델(pretrained model)은 미세 조정(fine-tuning)을 위해 아키텍처를 변경해야 하며 사용자 정의 프로세스(customizing process)가 많이 소요됩니다
- GPT는 아키텍처를 변경하지 않고 단순히 입력의 구조를 변환 합니다
Evolutionary Tree of LLM and sLLM
![](https://velog.velcdn.com/images/alstjsdlr0321/post/39b6d4b2-9f5c-4bd2-a062-e36b0cb520bd/image.png)