호돌찌의 AI 연구소
article thumbnail

OpenAI에서 Text를 Input으로 하여 이미지를 생성하기 위한 모델 DALL-E(2021), DALL-E 2(2022.04) 를 출시했을 때에도 신선한 충격을 받았었지만, 또 많은 사람들을 충격받게 한 Model이 2주 전에 출시되었습니다. 뜨거운 감자인 Topic이고 출시하고 1주일 만에 100만 명이 가입을 한 ChatGPT입니다. 어원은 우리가 익히 아는 ChatBot과 언어 생성 모델의 대표 모델인 GPT를 결합한 대화형(+그 이상) 언어모델 ChatGPT입니다. 옛날에는 궁금한 것을 네이버 지식인에 물어본 시절이 있었고 지금까지는 구글을 이용하여 우리가 모르는 정보를 알아내서 문제를 해결을 했었습니다. ChatGPT는 모르는 정보나 궁금한 내용에 대한 질의를 달면 실시간으로 답변이 달리는 그런 느낌을 전달해 줍니다. 사용 방법과 다양한 예시(약 10개 정도)들을 다루어 보겠습니다. 

 

 

ChatGPT 사용 방법 1 - chat.openai.com 가입 or 로그인하기


아래 URL로 들어가면 다음과 같이 나타납니다. 가입하거나 구글 로그인을 시도합니다. 저는 구글 로그인을 하겠습니다. 

https://chat.openai.com/auth/login

 

로그인 후 이름을 기입합니다. 또한 전화번호 인증까지 합니다.

 

 

ChatGPT 사용 방법 2 - 안내사항 및 사용 방법


위에 로그인 절차가 끝나면 아래와 같이 접속이 된 것을 확인이 가능합니다. 안내사항들이 제시되는데, 아래 문장은 시스템이 간혹 부정확하거나 오해의 소지(모델이 가지고 있는 편향된 정보)가 있는 정보를 생성할 수 있는데, advice로 받아들이지 말라고 이야길 합니다. 또한 민감한 정보를 공유하지 말아 달라고 하며 피드백은 디스코드로 받고 있음을 알 수 있습니다. 

 

안내사항 이후에는 메인 페이지에 Examples, Capabilities, Limitations가 나타납니다.  Capabilities에서 제시하는 내용은 이전 대화내용이 언어모델 특성상 이어지게 반영이 되게 하였으며 부적절한 요청에 대해서는 거부하도록 학습이 되어있다고 합니다.  Limitation에서 주의 깊게 봐야 할 점은 2021년 이후의 세계, 사건에 대해서는 제한된 지식을 가지고 있다고 합니다. 

 

하단에 아래처럼 커서창에 이야길 하면 편하게 대화를 나눌 수 있습니다. 사용 방법이 간단합니다. 그렇다면 예제들을 다루어보겠습니다. 

 

ChatGPT 활용 예시 1 - 일반 검색, 질의 응답 


그냥 궁금한 것이 있는 것에 대하여 물어보면 대답을 할 수 있습니다. Language Model의 정의에 맞게끔 설명하는 모습을 보여줍니다. 

 

 

 

ChatGPT 활용 예시 2 - 일반 대화 


Chatbot과 같이 대화도 가능합니다. 월드컵 2022년에 어디서 열리는지와 월드컵 결승에서 누가 우승할지에 대해서 물어봤습니다. 대회 결과에 영향을 줄 수 있는 요소가 많아 2022년 FIFA 월드컵에서 어느 팀이 우승할 것인지 확실하게 예측하기는 어렵다고 이야길 하면서 브라질, 프랑스, 독일, 스페인, 아르헨티나가 강한 경쟁자가 될 것이라고 이야길 하네요. 

 

 

ChatGPT 활용 예시 3 - 문제 풀이 


간단한 수학 문제를 한번 풀어보겠습니다. 2년 전에 GPT 3가 나왔을 때 few shot learning으로 간단한 산수를 해결하는 것을 보고 많이 놀랬었는데, ChatGPT는 GPT 3.5 라 조금 더 복잡한 연산도 풀 수 있는 것 같습니다. root는 따로 함수 정의된 것이 아니고 그냥 임의로 제가 'square_root' 라고 표현을 했을 뿐인데, 알아서 해석을 하고 문제를 해결한 부분은 신기하였습니다. 

 

또 다르게 문법을 물어보는 문제를 물어보았을 때, 정답을 이야기합니다. 답을 선택한 이유가 문법적으로 지적을 해준다면 소름이 돋을 것 같습니다. 

 

 

참고로 ChatGPT 로 실험한 유튜브 영상은 아래와 같습니다. 결과는 수능 영어 시험 정답률 71%, 3등급 / 토익 RC 기준 정답률이 85%, 점수로 390~400점 정도로 평균 이상의 퍼포먼스를 보여줍니다.  

https://youtu.be/oQOS0UKnID4

 

ChatGPT 활용 예시 4 - 작문능력(레시피, 소설)


떡볶이를 좋아하므로 레시피를 요청해 보겠습니다. 또한 조금 색다른 요구사항을 더해보았습니다. 

 

 

안타깝게도 생성하는 문장길이가 제한이 되어있어(생성 모델의 한계) 중간중간 이어서 요구를 해주어야 합니다. 대답 6번에서 소스랑 상추를 즐기라고 하니 창의력(?)이 상당한 것을 알 수 있습니다. 

 

 

조금 다르게 접근하여, 쇼핑을 하기 위해 재료들에 대하여 물어보았는데, 생각지도 못하는 재료들까지 제시하여 신기하게 대답하는 것도 같습니다. 

 

소설도 한번 테스트해봤지만 처음에는 그럴싸하였지만, 계속 이야기 겉도는 현상이 존재하였습니다. 

 

작문을 하고 느낀 점은 구체적인 정보를 부여할수록 내용이 풍부해지기 때문에 양을 불리기 위한 레포트로 악용이 어느 정도 가능할 것 같습니다. 또한 제시한 글들에 대하여 문체나 특정 스타일을 부여하는 것도 좋은 아이디어일 것 같습니다. 

 

ChatGPT 활용 예시 5 - 요약(Summarization) 


긴 텍스트를 간단하게 보거나 정리하기 위하여 요약을 사용합니다. 여러 예시들이 있겠지만 며칠 전에 나온 유튜브 요약 구글 익스텐션이 존재합니다.

https://chrome.google.com/webstore/detail/youtube-summary-with-chat/nmmicjeknamkfloonkhhcjmomieiodli

 

YouTube Summary with ChatGPT

Use ChatGPT to summarize YouTube videos

chrome.google.com

 

위 페이지에서 확장 프로그램을 추가하고 익스텐션 활성화 상태에서 유튜브 영상 하나를 켜면 오른쪽 하단에 무언가 생긴 것을 발견할 수 있습니다.

 

눌렀을 때 View AI Summary 버튼을 누르면 ChatGPT가 켜지며 스크립트가 복사가 됩니다. 

 

붙여 넣기 이후 수행을 하면 됩니다.  

 

어느 정도 스크립트, 대본이 요약이 된 것을 확인할 수 있습니다. 

 

하지만 만약에 압도적으로 스크립트가 너무 길면 에러가 나타남을 유의하여야 합니다. 

 

 

ChatGPT 활용 예시 6 - Paraphrasing & 문법 교정(grammar Correction) 


아래 예시처럼 문맥이 전혀 없는 문장에 대하여 고난이도 비문을 교정하는 것은 어렵습니다.

 

영어는 수정을 교정을 잘해주는 것을 알 수 있습니다.

 

영어 논문 같은 것을 작성할 때 조금 더 자세히 요구를 하거나 다르게 표현해달라고 요구하여 표절을 피하려는 잔머리 굴릴 수 있겠습니다.(하지만 요새 NLP가 표절도 잘 잡는다는 것도 함정)

 

ChatGPT 활용 예시 7 - 번역(Translation) 


언어 모델의 거의 가장 기본적인 Task인 번역입니다. 질문에 대한 대답은 아쉽지만, 번역 하나만 보면 어느 정도까지는 하는 것을 보입니다. 저는 그래도 papago를 사용할 것 같습니다. 

 

 

ChatGPT 활용 예시 8 - Coding 


지금 ChatGPT가 무료지만, 계속 무료라면 제일 유용하게 사용할 기능이라 생각되는 코딩 부분입니다. Matplotlib을 이용하여 ReLU 활성 함수를 그려달라고 코드를 요구하였습니다. 

Draw a ReLU function with Python using matplotlib

 

코드 같은 경우에 대해서는 복사가 가능합니다. 

import matplotlib.pyplot as plt
import numpy as np

# Create an array of x values from -10 to 10
x = np.linspace(-10, 10, 100)

# Calculate the y values for the ReLU function
y = np.maximum(0, x)

# Plot the ReLU function
plt.plot(x, y)

# Add labels and title
plt.xlabel('x')
plt.ylabel('ReLU(x)')
plt.title('ReLU Function')

# Show the plot
plt.show()

 

복사하여 run 하면 잘 나타납니다.

 

Activation Function 말고 다른 예제를 한번 테스트해보겠습니다. Logistic 회귀 그림을 그려달라고 해보겠습니다. 

Draw a logistic regression with Python using matplotlib.

아래 코드를 돌려보겠습니다. 

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LogisticRegression

# Generate some synthetic data for the logistic regression
np.random.seed(0)
X = np.random.normal(size=(100, 1))
y = np.random.binomial(1, 1/(1 + np.exp(-X)))

# Fit a logistic regression model to the data
model = LogisticRegression()
model.fit(X, y)

# Generate a range of values for the predictor variable
x_plot = np.linspace(np.min(X), np.max(X), 100)

# Use the model to predict the probability of the positive class
y_prob = model.predict_proba(x_plot.reshape(-1, 1))[:, 1]

# Plot the data and the logistic regression curve
plt.scatter(X, y, c='k', marker='o', alpha=0.5)
plt.plot(x_plot, y_prob, c='b')
plt.xlabel('Predictor')
plt.ylabel('Probability of positive class')
plt.show()

 

그림이 잘 그려진 것을 확인할 수 있었습니다.

 

 

 

ChatGPT 활용 예시 9 - Coding 응용 1


이메일을 한번 보내보도록 하겠습니다. 제가 준비한 질의 쿼리는 다음과 같습니다. 

send an email from 'email-1' to 'email-2' with the subject 'Email sent by ChatGPT' and the content "Hello! ChatGPT!!" using python 

 

결과는 다음과 같습니다. 어떤 library를 사용하면 되고, 어떻게 쓰면 된다고 설명해 주었습니다. 실은 이것을 제대로 하려면 보내는 사람 gmail에 특정 세팅을 사전에 바꾸어 주어야 하는 귀찮음이 존재하는데, 아래처럼 수행하면 메일을 보낼 수 있습니다. 

 

 

ChatGPT 활용 예시 10 - Coding 응용 2


간단하게 크롤링을 할 수 있는 코드도 제시해 줍니다. 제가 준비한 질의 쿼리는 다음과 같습니다.

web scrape https://books.toscrape.com/ using Python and beautiful soup

 

 

하지만 제시한 코드가 에러가 나타납니다. 여러 번 쿼리를 보낼 때마다 대답이 달랐었는데, 정확하게 되었을 때 코드는 아래와 같이 답변을 해주었습니다. encoding 도 'cp949' 에러가 있어, 'utf-8'로 따로 지정하였습니다. 

import requests
from bs4 import BeautifulSoup

# Make a GET request to the website
response = requests.get("https://books.toscrape.com/")

# Parse the HTML content of the website
soup = BeautifulSoup(response.text, "html.parser")

# Extract the data you want using Beautiful Soup's various methods and attributes
titles = soup.find_all("h3")
prices = soup.find_all(class_="price_color")

# Save the extracted data to a file or database, or use it for some other purpose
with open("book_data.txt", "w", encoding='utf-8') as file:
    for title, price in zip(titles, prices):
        file.write(f"{title.text}: {price.text}\n")

 

수행 후 저장된 "book_data.txt" 파일을 열어보면 다음과 같습니다. 잘 긁어진 것을 확인할 수 있었습니다. 

 

코드가 완벽하게 돌지는 않지만 대략적으로 도움을 받을 수 있다는 점이 강점이 있었습니다. 참고로 더 좋은 응용을 하기 위해서는 여러 코드를 대화하다가 교정을 해달라고 이야길 하면 효율적으로 보정도 해줍니다. 코드 리뷰와 개선까지 해주는 도우미가 있다고도 생각할 수 있습니다. 

 

 

한계점, 단점


여러 예시들을 최대한 발굴해보면서 기능상으로 불편했던 점들을 서술하면 다음과 같습니다. 

 

1. 한국어는 상대적으로 영어에 비하여 성능이 떨어질 수밖에 없다.

사용이 된 데이터 자체가 multi-lingual 이기도 하고, 상대적으로 영어에 비해 다른 난이도가 있는 언어들은 퍼포먼스가 미묘하게 떨어질 수밖에 없습니다. 특히 컴퓨터 입장에서는 한국어 특성(교착어 등)에 따라 극악인 난이도라 질의 쿼리를 영어로 활용하는 것도 좋을 것 같습니다. 

 

2. input 문장 길면 error를 일으킨다. 

이 부분은 모든 언어 모델 한계점이라고 볼 수 있습니다. 그래서 한 번에 많은 정보를 밀어 넣어 활용하기보다는 조금씩 물어보고 답변을 받으며 빌드업을 해나가며 원하는 대답을 도출하는 쪽으로 활용하는 것이 좋아 보입니다. (너무 긴 문장에 대해 적절하게 stride, chunk 하면서 read 하면 좋겠다고 저는 피드백을 보냈습니다.)

 

3. output 문장은 길이의 한계가 존재한다. 

ChatGPT는 Output으로 나오는 생성 문장에 대하여 일정 길이에 대한 범위를 정해놓은 것 같았습니다. 그래서 원하는 대답을 얻기 위해 계속 이야길 해달라거나, continue를 타이핑을 했었습니다. 

 

4. 2021년 이후의 정보에 대하여 답변 한계

앞서 예제를 시작하기 전에 limitation에 명시된 부분입니다. 간혹 2022년 언급을 하여 질문을 했을 때 기대한 대답은 나름의 추론을 기대하였는데, 2021년까지의 정보를 활용한다고 대답하기 어렵다는 내용을 몇 번 부딪혔었습니다. 아마도 이 부분에 대해서는 retrain 하면서 점점 모델을 키워나갈 것 같다는 생각이 들었습니다.

 

5. 답답한 답변 속도

한번 답변을 받으려면 길이에 따라 상이하지만 3~20초 정도 체감이 되는데 네이버나 구글 검색 결과 속도와 비교하면 속도에 민감한 한국인이라면 답답할 속도입니다. 

 

6. 신뢰성

출처의 개념이 없는 것이 문제입니다. ChatGPT는 Pretrained 된 요소들을 결합하여 답변을 내놓기 때문에 어떻게 보면 맞은지 틀린지 알 수 있는 방법이 부족합니다. 

 

시사점


많은 사람들이 ChatGPT의 성능만 보고 구글은 망했다고 까내리긴 하지만 답변의 한계점이 존재하고 구글의 리서처 분들도 똑똑하신 분들이 또 다른 혁신을 부를지도 모르기에, 이 부분은 길게 봐야 할 부분이라 생각합니다. 또한 ChatGPT는 쿼리당 30원 정도 들 정도로 상당히 비싼 편 입니다. 구글은 하루에 100억개 이상 쿼리를 처리하는데, 이 만큼 처리하려면 1년에 100조 이상이 들기 때문에 비즈니스적으로도 개선점이 많이 필요 합니다. 하지만 저는 좋은 공구 하나 가 더 생긴 기분입니다. 구글링은 십자드라이버 공구라고 치면, ChatGPT는 전동 드릴이 생긴 기분인 것 같습니다.

일반인들에게는 조금의 창의력을, 숙련된 개발자 분들에게는 주석이나 리팩토링 같은 기능을 활용하면 도움이 될 것 같고, 개발을 배우는 학생들에게도 큰 도움이 될 것 같습니다. 코딩뿐만 아니라 작사나 작곡, 시나 소설 등 생성도 가능하니 특정 도메인에서 응용할 여지도 있다고 생각됩니다. 

ChatGPT는 GPT 3가 Base인데, 내년에 GPT4가 출시 예정입니다. 학습이 된 Model Parameter의 수가 매번 새로운 버전이 출시될 때마다 갱신을 하는데, 기존 단점으로 지적되는 부분에 대해서 압도적인 Performance를 기대해보고 싶습니다. ChatGPT는 나름의 지식 혁명이라고 생각합니다. 점점 더 AI가 발전함에 따라 좋은 도구를 누가 더 활용 잘하는 지도 집중할 필요가 있어 보입니다. 무료일 때 최대한 많이 활용해보시면 좋겠습니다. 

 

+ Reference) 

- https://medium.com/geekculture/hey-chatgpt-solve-these-coding-tasks-using-python-b2e7482f2c18

 

Hey ChatGPT, Automate These Tasks Using Python

Using AI to plot graphs, send emails/messages, and do web scraping in a few seconds.

medium.com

- https://youtu.be/JTxsNm9IdYU

- https://t.me/web3subin

 

https://www.cnbc.com/2022/12/15/google-vs-chatgpt-what-happened-when-i-swapped-services-for-a-day.html

Add Ref ) 

Stanford CS224n 딥러닝을 통한 NLP 강좌에서 ChatGPT를 초점 맞춘 컨텐츠가 있어서 공유합니다. ChatGPT에 대한 인사이트 넓히거나, 업무에 활용이 될 수 있겠습니다.

 

ChatGPT의 기본 구조를 이루는 [질문 답변 QA]
http://web.stanford.edu/class/cs224n/slides/Danqi-QA-slides-2022.pdf

ChatGPT의 다음버전인 GPT-4에서 멀티모달의 근간이 될 것으로 평가받기도 하는 [자연어 생성(NLG)]
http://web.stanford.edu/class/cs224n/slides/cs224n-2022-lecture12-generation-final.pdf

대규모언어모델에 전문가지식을 입력하여 구현한 ChatGPT의 [언어 모델에 지식 통합]
http://web.stanford.edu/class/cs224n/slides/cs224n-2022-lecture-knowledge.pdf

ChatGPT에는 아직 도입이 안된 [검색 증강 모델 + 지식]
http://web.stanford.edu/class/cs224n/slides/cs224n-2022-lecture15-guu.pdf


아래는 블로그 주인장의 토스 익명 후원 링크입니다. 글이 너무 너무 도움되거나 흡족스러웠다면 후원해주시면 감사하겠습니다.

https://toss.me/hotorch

 

hotorch님에게 보내주세요

토스아이디로 안전하게 익명 송금하세요.

toss.me

 

profile

호돌찌의 AI 연구소

@hotorch's AI Labs

포스팅이 도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!