난 그냥 AI를 애용하는 코더인데 AI 정식 공부하기는 좀 글렀고 호기심은 많아서 대충 작동원리 찾아보고 고민을 좀 해봤는데
LLM 작동원리는 text completion이고 아주 간단히 생각하면 검색할 때 자동완성기능처럼 다음, 다다음 단어을 확률로 계산해서 complete 한다는 거지?
그래서 베이스 모델은 보통 text completion이고 인간의 프롬프트에 반응하는 식으로 훈련시킨게 instruct 모델인거고.
기존 자동완성기능은 확률 가장 높은 단어를 무조건 보여준다면 지금 출시된 LLM들은 같은 질문을 물어도 답은 살짝씩 계속 바뀌잖아.
나는 이걸 temperature 설정 때문으로 보는데 temperature를 0으로 낮추면 동일 질문에 항상 같은 답만 나오겠지?
그렇게 되면 너무 로보틱하고 사람답지 않게 느껴지기 때문에 또는 너무 비창의적으로 되기 때문에
인위적으로 temperature를 0 이상으로 맞춘걸로 보이는데
이게 그러니깐 다음 단어 확률이 cat이 0.5 dog가 0.4 인데 무조건 cat이라고만 하는 게 아니라 가끔 dog도 나올 수 있게
살짝의 난수(Random number)를 넣는 개념 아니냐? 그런식으로 확률 높은 분포 안의 랜덤성으로 약간의 변형이 연달아 일어나는 거고.
그렇게 되면 얘네들이 항상 같은말만 하는 게 아니라서 인간처럼 느껴지긴 하는데
결과적으로는 좀 많이 인위적인 창의성인데.
이런 아키텍쳐라면 좀 빡세지 않나?
최근에 영상 본거로는 softmax 함수단에서 T값을 조정함에 따라 확률분포상 여러 확률들이 전사건 확률 1에 대비 차지하는 비중이 달라지게 됨
음 그렇구나 좀 더 공부해야겠다. 땡큐
난수랑은 좀 느낌이 다르고 T를 낮추면 deterministic, T를 높이면 stochastic이 됨
NLP쪽 역사 대충 말하면 극초기모델이, 우리가 흔히 생각하는 '확률 높은 단어를 다음에 배치'하는 방식임. 사실 그냥 텍스트들을 분석해서 A 단어 뒤에 B 단어가 올 확률, C 단어가 올 확률 계산하고 나중에 확률대로 출력하는 거. 당연히 언급할 가치조차 없을 정도로 무능함. 그 다음이, word2vec이라는 방식일거임. A 단어 뒤에 B 단어가 오는 건 사실, '정보'라는 측면에서 매우 지엽적임. 하지만, 다음 만이 아니라 주변 단어까지 보면? A 주변에 무슨 단어들이 올까. 이걸 학습했을거임. 이러면 이전과 같이 '확률' 하나만 저장할 순 없으니까 벡터공간에 정보를 저장함. 즉, 예전에는 단어 하나에 다음에 올 단어 확률만 저장했다면, 이젠 단어의 쓰임에 대한 수많은 특징을 학습하는거지.
이때 예시로 자주 나오는 게, 서울이라는 단어 벡터에서, 한국 벡터를 빼고, 일본 벡터를 넣으면 도쿄 벡터가 나옴. 남편이랑 아내랑 유사한 게, 왕과 여왕이라는 것도 모델이 알 수 있음. 근데 이제 문제는, 단어 사이의 관계만 학습한거라 문맥을 모름. 이때 등장한 게, 어텐션 매커니즘을 쓴 트랜스포머. 지금 딥러닝 지배하는 방식. 얘는....문맥도 다 집어넣는다고 보면 됨. 나도 잘 몰루. 키 쿼리 밸류 어쩌구 잘 쓰까서 학습함. 얘네부터는 문맥도 어느정도 고려할 수 있게 됐다고 보면 됨. 그래서, LLM이 확률 모델인데, 온도 조절해서 창의성을 조절한다. 맞는 말이긴 한데, 확률 모델<< 이 부분이 일반인이 생각하는 단순한 다음 단어 확률...보단 쪼끔 더 그럴듯하다고 생각함.
근데 먼저 밝혔어야 했는데, 내가 전공도 아니고, 현업도 아님. 재밌어서 독학 중이라 틀릴 수 있음.
ㅇㅋ 관계성 저장할 때 1차원이 아닌 엄청나게 많은 차원에 저장한 다는 걸 본 거 같은데 그게 word2vec 방식인가보네. 땡큐