이제 공부하면서 조금씩 반복되는 개념들이 보이곤 하는데 그래도 아직은 뭔가 깊이가 부족한 느낌이 든다. 너무 다양한걸 공부하고 있나 싶기도 해서, 좀 하루에 공부하는 갯수를 좀 줄여봐도 좋을것 같다.하나만 진득하게 하는걸로.
NLG(Natural Language Generation)은 결국 어떤 테스크인지에 따라서 기준이 매우 다르다. 또한 대화라는 것은 목적을 충족함과 동시에 자연스러운 것까지도 중요하기 때문에 정확한 Metric을 정의하는 것도 매우 어렵다.

chatGPT는 트랜스포머를 쌓아올린 것으로만 이해해서, 인코더와 디코더 모두 있는 것으로 이해했지만 실제로는 디코더로 이루어진 모델이라고 한다. 이해하기로는 다음 단어 예측을 하는거니까, encoder는 필요가 없음.(번역 모델에서만 앞의 맥락이 필요한건데, decoder는 사실 input만 질문으로 주면 되니까 굳이 인코더까지 만들 필요는 없음. 그래서 프롬프트 자체에 대한 제한을 걸어두는 이유도 정보 손실 때문이지 않을까 하는 생각이 들었다.)
NLG의 발전 방향
(smaller size model) Transfer learning → (Larger size model) Few shot Learning
주요 파라미터
a. 단어 선택 방식
1) Greedy Decoding : 다음 단어로 가장 확률이 높은 단어를 무조건 선택하는 알고리즘
2) Random Sampling : 확률적으로 다음 단어를 선택해서, 다음 문장의 다양성을 주는 알고리즘
b. Temperature : 토큰들의 확률 분포들을 조정하는 방식으로, 낮을수록 Greedy하게 만들고, 높일수록 Random하게 만들어준다.
1) low temperature : reproducible(재현가능)하기 때문에 실용적인 서비스에서는 이를 조정해주는게 좋다. 너무 낮추다보면, 문장이 생성안되고 이상한 단어들만 나열될 수 있다.
2) high temperature : reproducible하지 않기 때문에 좀 더 창의적인 업무와 연관되어 있다.
c. top_p : sum(token_prob) <= top_p
문장 다음에 들어갈 단어로 모든 단어를 후보로 선정할 수 없기 때문에, 모델이 뱉어내는 단어별 확률에서 높은 애들 순부터 더했을때 top_p보다 낮을때까지의 단어들만 후보군으로 추출하는 작업

