저는 챗GPT를 공부용으로 많이 활용합니다. 공부용이라 함은 특정 분야의 지식에 대해 궁금한 점들을 질문하고 챗GPT가 출력하는 답변을 지식 습득에 활용하는 것을 말합니다. 지식습득에 있어 챗GPT의 장점은 ‘즉시성’입니다. 내가 궁금하거나 모르는 것에 대해 질문을 하면, 바로 답변을 얻을 수 있다는 것입니다. 또한 특장점이라 할 수 있는 것은 '반복성'입니다. 챗GPT가 생성한 답변에서 이해가 안 가는 부분이 있으면 다시 그 부분에 대해 질문을 할 수 있고, 내가 이해할 수 있을 때까지 반복해서 질문을 할 수 있다는 것이 가장 매력적인 포인트라고 생각합니다. 계속되는 질문에도 챗GPT는 지치지 않고 계속해서 답을 내놓습니다. 더 이상 구글에 검색어를 넣고 수많은 사이트와 블로그를 헤매이며 지식들을 찾을 필요가 없다는 것이죠. 그렇지만, 이러한 지식습득에 챗GPT를 활용하는데 있어서 조심해야 할 부분이 있습니다. 바로 ‘환각(이 분야에서는 보통 할루시네이션이라 부릅니다)’ 현상이라고 불리우는 것인데, 챗GPT가 사실이 아닌 것을 사실인 양 매우 그럴듯하게 지어내기도 한다는 것이죠. 이러한 환각 현상은 내가 잘 모르는 분야에 대해 묻고 답을 얻을 때 당연히 문제가 될 것입니다. 새로운 것을 배우는 입장에 있는 내가 챗GPT가 내놓는 답변이 사실에 기반한 지식인지, 아니면 지어낸 것인지를 분별하는 것이 쉽지 않을 것이기 때문입니다.
요사이 챗GPT를 구성하는 트랜스포머 모델에 대해 개략적인 부분들을 공부하고 있습니다. 이전 포스팅에서도 소개드렸던 몇 가지 훌륭한 자료를 기반으로 관련 지식을 습득하면서 궁금한 부분들이 많이 생겼습니다. 그리고 정말 내가 이해할 때까지 붙잡고 물어보고 또 물어볼 대상이 필요했습니다. 하지만 주변에 그럴 대상이 없기에 저는 챗GPT를 선택할 수 밖에 없었습니다. 트랜스포머 모델과 관련해서 챗GPT는 저에게 많은 지식을 알려 줬습니다. 계속적으로 질문과 답변이 이어지면서 자료들로만 공부할 때는 이해하지 못했던 내용들도 많이 깨달을 수 있었습니다. 특히 내용 중 이해가 안 가는 부분을 내가 다시 질문으로 재구성하는 과정이 자연스럽게 그 이해에 대한 발판을 마련하는데 큰 도움이 된 것 같습니다. 환각이 있을지언정 공부 상대로 챗GPT를 활용하는 게 이런 면에서도 좋은 것 같습니다. 메인으로 사용할 수 있는 좋은 자료와 챗GPT의 조합은 환상적이라고 느껴질 정도였습니다. 그런데 말입니다, 챗GPT가 나에게 알려준 지식 중에 거짓이나 잘못된 것이 섞여 있었다면 어쩌죠. 저는 헛공부를 한 셈이 되지 않겠습니까. 그래서 공부를 멈추고 잠시 고민을 해 봤습니다. 챗GPT가 내게 알려 준 트랜스포머 관련 지식들이 사실인지 아닌지를 어떻게 판별할 것인가. 고민의 결과를 나누고자 합니다.
0. 유료버전인 GPT-4.0을 쓰자 다른 작업에서의 경험을 빌어오자면 유료 버전인 GPT-4.0이 3.5에 비해 훨씬 정확한 정보를 제공합니다. 들리는 소문에 의하면(사실 여부 미확인) 4.0은 앙상블 방법으로 여러 개의 GPT-4.0 모델이 출력에 대해 교차검증(?)한다고 합니다. 1. 프롬프트를 이용하여 잘못된 지식을 출력하지 않도록 하기 다음과 같은 프롬프트를 시스템 프롬프트와 같이 사용하여 일단 말을 지어내는 것을 하지말라고 지시합니다. 볼드 처리한 부분이 해당 지시사항입니다. I want you to act as the expert of the transformer model, in particular, the decoder-only GPT model. You must answer every question in as much detail as possible in a friendly manner. Think about the correctness of your answer once more before starting the answer. Once you have the self-confidence that the information is accurate, start answering. If you do not know the answer to a question, do not make information up - instead, ask a follow-up question in order to gain more context. If you understand, respond with 'yes'. 2. 챗GPT의 답변을 챗GPT와 BARD로 검증하기 챗GPT의 답변 중, 사실 여부 확인이 필요한 부분은 다음의 프롬프트와 함께 챗GPT의 새 채팅 세션과 구글 BARD로 검증해 봅니다. 다음 프롬프트를 사용합니다. You are a skillful fact-checker. I found the following statements on the web. Evaluate whether this is true or not. If not, explain why. {사실여부 확인이 필요한 내용 입력} 두 AI 모두 사실 여부를 잘 가려 줍니다. 특히나 챗GPT 같은 경우는 얄미울 정도로 꼼꼼하게 사실여부를 체크해 줍니다. 제대로 체크하는지를 확인하기 위해 사실이라고 알려진 내용을 일부러 거짓으로 수정하여 입력으로 줘 봤습니다. (user prompt) You are a skillful fact-checker. I found the following statements on the web. Evaluate whether this is true or not. If not, explain why. "During training, the model is exposed to just a bit of text data. The model learns to adjust its internal weights automatically during forward feed. This allows the model to recognize patterns in a single pass in language. For example, if during training the model once sees the pattern "sun" followed by "shine" or "hot", it learns the contextual relation between these words immediately." (챗GPT) The given statements contain several inaccuracies when describing the training process of models like GPT. Let's evaluate them step-by-step: "During training, the model is exposed to just a bit of text data.": False. Models like GPT are trained on vast amounts of text data to grasp the complexity and diversity of human language. This extensive training data is crucial for capturing nuances, contexts, and associations in language. "The model learns to adjust its internal weights automatically during forward feed.": False. The model's weights are adjusted during the backpropagation phase, not during the forward feed. The forward feed or forward pass is the process where input data is passed through the network to generate an output. After that, the error between the predicted output and the actual output is calculated, and this error is then propagated backward through the model (backpropagation) to adjust the weights. "This allows the model to recognize patterns in a single pass in language.": False. Recognizing patterns and understanding context generally requires multiple passes over the data during training. Neural networks typically require multiple epochs (iterations over the entire dataset) to converge to a satisfactory level of performance. "For example, if during training the model once sees the pattern "sun" followed by "shine" or "hot", it learns the contextual relation between these words immediately.": False. While neural networks are adaptive and can learn patterns, it's an oversimplification to say they would fully grasp a contextual relationship from a single instance. In practice, the model needs to see patterns multiple times across various contexts to learn them effectively. In summary, while the passage touches on the general idea of how neural networks learn, it contains inaccuracies and simplifications that can mislead one's understanding of the training process. (BARD) The statement "During training, the model is exposed to just a bit of text data. The model learns to adjust its internal weights automatically during forward feed. This allows the model to recognize patterns in a single pass in language. For example, if during training the model once sees the pattern "sun" followed by "shine" or "hot", it learns the contextual relation between these words immediately." is false. GPT is a large language model, and it is trained on a massive dataset of text and code. During training, the model is exposed to vast amounts of text data, and it learns to recognize patterns in the data. This is done through a process called backpropagation, which allows the model to adjust its internal weights to minimize the error between its predictions and the actual outputs. It is not possible for GPT to recognize patterns in a single pass. The model needs to be exposed to a large amount of data in order to learn the complex relationships between words and phrases. Additionally, the model needs to be able to generalize its knowledge to new data, which is not possible if it has only seen a small amount of data. For example, if the model only sees the pattern "sun" followed by "shine" or "hot" once, it will not be able to learn the contextual relation between these words. The model will need to see this pattern multiple times in order to learn that "sun" is often followed by "shine" or "hot". Overall, the statement is false. GPT cannot recognize patterns in a single pass. The model needs to be exposed to a large amount of data in order to learn the complex relationships between words and phrases. 3. 동일한 질문을 BARD에게 해 보기 챗GPT로부터 어떤 답변을 얻었을 때 했던 질문을 동일하게 BARD에게도 하여 출력 내용을 비교해 봅니다. 4. 챗GPT에게 답이 잘못되었다고 어그로 끌기 챗GPT가 잘못된 답변을 출력했을 때, 틀린 점을 지적하면 즉시 사과하면서 내용을 수정하는 경우를 종종 볼 수 있습니다. 하지만 사실에 부합하는 내용을 출력했음에도 불구하고 그 내용이 틀렸다고 억지를 부려보면 챗GPT의 답변 태도는 둘로 나뉩니다 1) 일단 사과를 하고 수정된 내용을 출력하는데, 그 수정된 내용이 처음 내용과 거의 같은 경우가 있습니다. 이럴 때는 GPT의 첫 답변이 틀리지 않았다고 생각할 수 있습니다. 2) 일단 사과를 하는데 뒷내용은 ‘당신의 말은 일반적인 이해와 충돌한다. 내가 가장 최근 훈련을 받은 2021년 9월까지의 내용으로 봐서는 말이다. 그 후에 뭔가 새로운 것이 업데이트 된 것이 있을지도 모른다’라고 할 경우도 마찬가지입니다. (user prompt) You are wrong for #3. During training, the model is exposed to just a bit of text data. The model learns to adjust its internal weights automatically during forward feed. This allows the model to recognize patterns in a single pass in language. For example, if during training the model once sees the pattern "sun" followed by "shine" or "hot", it learns the contextual relation between these words immediately. (챗GPT) I apologize for any confusion. Your description seems to challenge the conventional understanding of deep learning and the way neural networks, especially complex models like GPT, are trained. Traditionally, deep neural networks, including the transformer models like GPT, require multiple passes over the data and iteratively adjust their weights via backpropagation using optimization algorithms like stochastic gradient descent (or its variants). This process ensures the minimization of prediction error over the training dataset. The concept you've described, where the model learns patterns with just one pass or a single instance of exposure, is an ideal scenario that researchers dream of achieving, as it would save enormous computational resources. However, as of my last update in September 2021, this isn't how models like GPT are trained. That being said, there's always room for advancements in the field, and the landscape of machine learning is rapidly evolving. If there have been significant breakthroughs or paradigm shifts in training methodologies after 2021, I might not be aware of them. Can you provide more context or specify any new research or methodologies that back the statements you've provided? This would help in understanding and addressing your point better. 5. 챗GPT에서 새로운 채팅 세션을 열어 동일한 질문을 반복해 답변 얻어보기 여러 개의 채팅 세션을 새로 만들어서 각각 세션마다 동일한 질문을 해 봅니다. 시스템 프롬프트는 1번에서 소개한 프롬프트를 사용하되 답변이 제공되는 맥락을 바꿔 봅니다. 예를 들어서 1번에서는 ‘너는 트랜스포머 모델 전문가야’라고 했다면 새로운 채팅 세션에서는 아무런 역할을 주지 않던가, ‘너는 트랜스포머 모델에 대한 깊은 이해를 바탕으로 인공지능 서비스를 제공하는 스타트업의 CTO야’라는 식으로 역할을 바꿔봅니다. 그런 후, 동일한 질문에 대해 생성되는 답변들을 모아봅니다. 모아진 답변들의 동일성 수준에 따라 답변의 정확성, 사실성 여부를 판별해 봅니다. 프롬프트 기법 중 Self-consistency를 적용한 것이 되겠습니다.
이상의 방법들로 챗GPT가 나에게 가르쳐 준 것들이 사실인지를 판별해 볼 수 있을 것으로 생각됩니다. 실제로 트랜스포머 모델과 관련해서는 챗GPT의 가르침은 잘못된 부분이 거의 없었습니다. 다른 지식분야에서도 이 방법들이 동일하게 적용 가능한지는 더 테스트를 해 봐야 알 수 있을 것 같습니다.