머신러닝을 기반으로 하는 기존에 없던 솔루션들이 분야를 가리지 않고 침투하여 판을 뒤집기 시작하는 것을 처음 보게된지 벌써 거의 10년 정도 흘러, 이게 이제 여기까지 와서 판을 흔드는구나 라는 생각이 들어 글을 쓰기 시작 했습니다.
로봇을 하며 그나마 머신러닝의 초기를 옆에서 보면서도 예술과 창작의 영역이 가장 마지막 산이 될 것이라고 생각했던 것이 무색하게 가뿐히 대부분의 인간을 넘어서는 창작성을 보이는 모델이 나타나는가 싶더니 이제는 대화로는 이게 사람인지 아닌지 구분도 안 될 정도로 자연스러워진 언어처리까지 보면서 세상이 또 크게 한번 변하는구나 싶습니다. 이제는 생각을 바꿔 인공지능이 도달하는 마지막은 결국 농사가 아닐까 싶습니다.
워낙 다양한 분야에서 사람들을 놀래키는 중이라 컴퓨터가 무엇을 그렇게 잘하는지, 특히 지금 이슈가 되는 GPT가 뛰어난 점을 굳이 늘어놓지 않아도 많을 분들이 이미 여러 매체를 통해 보셨을 것이라고 생각합니다. 그 중에서, 제가 로봇분야에서 연명하고 있는 위치에서 본 GPT의 놀라운 점에 대해 간단히 적어보려고 합니다.
본격적으로 사람의 잡일을 대신하기 시작
간단한 글, 간단한 시, 그리고 간단한 정보조사에 GPT가 얼마나 능한지는 익히 들어보셨을 것이라고 생각합니다. 제가 특이 놀랐던 점은 GPT가 단순히 대화를 주고받으며 정보를 전달해 주는 이전에 보아온 스마트 스피커 수준을 아득히 뛰어넘어 프로그래밍을, 그것도 꽤 잘 해준다는 점 이었습니다.
컴퓨터가 컴퓨터 프로그램을 써준다고?
사실 이런 아이디어가 없던 것은 아닙니다. 당연히 코딩도 사람이 하는 일이고, 그 중에는 반복적이거나 시간이 아까운 잡일에 가까운 작업도 많이 있습니다. 좀 더 익숙한 예를 들자면, 웹툰이나 여타 만화에서 연속되는 장면을 그릴 때, 비슷한데 손이 많이 가는 장면들을 생각해 보면 비슷하지 않을까 싶습니다.
아주 간단한 예를 들어보겠습니다. 최근 가장 인기가 높은, 그리고 머신러닝에서 단연 가장 많이 사용되는 Python 프로그래밍을 한번 시켜보았는데, 요청사항은 이렇습니다.
성과 이름을 사용자로 부터 입력받아서 이걸 화면에 출력하는 Python 프로그램을 만들어 줘.
Write a python code taking first and last name then print them.
그랬더니, 약 6초 정도에 걸쳐 나온 결과가 아래와 같습니다.
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")
print("Your name is " + first_name + " " + last_name)
그리고 아래 설명을 붙여주었습니다.
This code prompts the user to enter their first and last name, then stores the input in the variables "first_name" and "last_name". It then prints out a message concatenating the first and last name.
상당히 간단한 프로그램이지만, 적당히 사람의 언어로 적은 요구사항 만으로 실제 동작하는 프로그램을 알아서 작성하고, 이 프로그램에 대한 설명까지 붙여주는 결과는 놀라울 수 밖에 없었습니다.
이번엔 난이도를 높여서 아예 한국을 소개하는 html 홈페이지 코드를 만들어 보라고 해보았습니다. 이번엔 문법도 안맞추고 대충 적어보았습니다.
write html code introducing South Korea
이번엔 좀 시간이 걸려서 약 40초 정도 걸렸는데, 아래 결과를 내주었습니다.
<!DOCTYPE html>
<html>
<head>
<title>Introduction to South Korea</title>
</head>
<body>
<h1>South Korea</h1>
<p>South Korea, officially the Republic of Korea, is a country in East Asia, constituting the southern part of the Korean Peninsula. It is bordered by North Korea to the north, the East Sea to the east, the Yellow Sea to the west, and the Sea of Japan to the south.</p>
<p>The capital and largest city is Seoul, with a population of over 10 million people. South Korea has a population of approximately 51 million people and is known for its advanced technology, unique culture, and delicious cuisine.</p>
<p>Some of the famous tourist attractions in South Korea are Gyeongbokgung Palace, Jeju Island, and the Hwaseong Fortress. South Korea is also well-known for its K-pop music, K-dramas, and the Korean Wave. </p>
</body>
</html>
이걸 홈페이지 형태로 띄워보면 아래와 같습니다.
내용을 알아서 채우는 기능은 이미 앞서 놀랐던 점인데, 이걸 html 형식에 맞춰서 페이지 제목, 글 제목, 내용으로 나눠서 작성을 해준다는 점은 상당히 흥미로운걸 넘어 놀랍습니다.
그래도 사람의 욕심을 끝이 없는 법. 위 html 페이지는 홈페이지라고 보기는 너무 빈약하죠. 이번엔 제목에 애니메이션을 넣고, 전통의상 사진을 추가하라는 내용을 더해서 다시 요청해보았습니다.
[애니메이션] 이라는 분명하지 않은 요청사항임에도 거절하지 않고 뭐라도 해서 보인 꽤나 사람다운 면모를 보여주었습니다. 다만, GPT가 아직 텍스트 기능만 제공되는 이유로 사진은 자리만 잡아둔 상태입니다. 만약 제가 적당한 이미지 파일만 가지고 있다면, 파일 링크만으로 빈 자리를 채우도록 준비되어 있는 상태 입니다.
이번에도 놓치지 않고 홈페이지의 기능에 대해 설명을 달아주었습니다.
This HTML code will show an animating title for the South Korea. It uses an animation property and keyframes to animate the title. The animation property is added to the h1 tag, which is the title of the page. The animation will run for 3 seconds, with an ease-in-out effect, and will repeat infinitely, changing the color of the title between blue and red. You can adjust the time, color and animation effect as per your preference.
코드를 고쳐준다고?
코딩을 하는 사람들은 필연적으로 수정과정을 거치게 되는데, 이 과정을 흔히 디버깅(debugging) 이라고 합니다. 대부분의 경우에는 쉽게 문제를 찾아 고치지만, 간혹 잘 발견이 안되는 에러가 너무 늦게 발견되는 경우가 있죠. Python과 같은 script 언어는 특히 이런 문제들이 더 발생하기 쉽습니다.
간단한 테스트를 해보기 위해 일부러 스펠링을 틀리게 하고, 문제를 찾아보라고 해보았습니다.
what is a problem in this python code: first_name = inpt("Enter your first name: ") last_name = iput("Enter your last name: ") pint("Your name is " + first_name + " " + last_name)
2초도 채 되지 않아 아래와 같이 정확히 문제를 지적하는 응답을 써내려가기 시작했습니다.
There is a typo error in the variable name "inpt" instead of "input" for the variable first_name, and "iput" instead of "input" for the variable last_name. Also "pint" instead of "print" in the last line.
그리고 수정된 코드까지 돌려주었죠.
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")
print("Your name is " + first_name + " " + last_name)
까다롭게 평가한다 치고, 스펠링만 틀린걸 잡아내는건 아닌가 하여 이번엔 아래와 같이 1,2,4,5,6이 담긴 임의의 데이터를 만들고 내용을 출력하는데, 왜 3이 안나오는지를 물어보았습니다.
why does this python code not print 3: list_test = [1,2,4,5,6] for i in list_test: print(i)
얼마 걸리지 않아 아래와 같이 '데이터에 3이 없으니까 안되지' 라는 정확한 답과 함께 제안사항을 적어주었습니다.
The code you provided does not include a line that would print the value of 3, so it would not print 3.
This code is iterating through a list called list_test, which is defined as [1,2,4,5,6]. The for loop is using the variable i to iterate through each element in the list, and the print(i) statement is printing the value of the current element in the list on each iteration. As the list list_test doesn't have 3 in it, the code will not print 3.
If you want to print 3, you can add 3 to the list or you can print it explicitly like print(3).
이제 다 끝난건가
GPT가 놀라운 성능을 보여주는건 사실이지만, 생존의 위협(?)을 받는 저와 같은 사람들에게는 다행히도 아직 조금 시간이 있는 것 같습니다. 위 예시에서도 간단한 프로그래밍은 해주었지만 정말 개발자들이 하는 복잡한 시스템을 만들 수는 없고, 홈페이지 예시에서도 보이는 바와 같이 여전히 간단한 기능에 머물러 있습니다. (사람이 홈페이지를 저렇게 만들어 오면 짤리죠.) 긴장은 해야겠으나, 아직은 멀었다고 할 수 있겠습니다.
데이터의 부적확성, 혹은 인간적인 눈치가 부족한 것도 아직 있습니다. 위 홈페이지 예시에서도 한국에 대해 소개하라고 헀더니 '일본해(Sea of Japan)' 이라는 용어를 사용한 점에서, 아직 지정학적인 정서를 이해하기는 부족한게 아닌가 싶습니다.
하지만, 사람을 더 많이 대체하기 시작하는데 까지 시간이 많이 남은 상태인지도 잘 모르겠습니다. 지금 공개된 버전은 2021년 까지의 데이터만 사용하여 학습된 오프라인 모델인데다, 텍스트 소통으로만 그 기능이 제한되어 있기 때문에 이게 지금 어디까지 할 수 있는건지 정확히 감을 잡기도 어려워 보입니다. 특히, 조만간 공개될 예정인 GPT-4는 비교도 안될 정도로 뛰어난 성능을 보일것으로 예상된다고 하니 더더욱 알기 어려울 것 같습니다. 하나 확실할 것으로 생각되는 것은, 사람을 슬슬 대체하기 시작하면 그 속도가 기하급수적으로 빨라질 것 같습니다.
마치며
제가 로봇을 하는 핵심 목표 중 하나가 사람들의 불필요한 잡일을 해주는 로봇들로 보편적인 삶의 질을 높히고자 하는 것인데, 막상 이렇게 갑자기 다가오니 당혹스럽기도 하고, 정말 머지않아 될 수도 있겠구나 하는 기대도 됩니다. 최근 목격한 세상의 변화 중 가장 혁신적인 것이 아닌가 하는 생각과 함께 GPT, 그리고 이를 넘어서는 다음 인공지능 모델이 나와서 우리 사회에서 역할을 해내는 과정을 지켜보는 것도 현재를 살아가는 우리만 할 수 있는 일이 아니겠나 싶습니다.
'Robotics' 카테고리의 다른 글
Arduino IDE로 Raspberry Pi Pico 프로그래밍 - 파이 피코를 아두이노처럼 사용하기 (12) | 2023.04.18 |
---|---|
프로그래밍 언어는 뭘 배워야 하나 - 컴퓨터 언어 선택하기 (12) | 2023.02.08 |
라이다가 뭔가요? - LiDAR 원리 소개 (20) | 2022.11.12 |
연구논문의 발행 - 학회, 저널, 그리고 arxiv (5) | 2022.11.08 |
[AI Day 2022] 테슬라가 FSD 베타를 적극적으로 진행하는 이유 - 경로편 (41) | 2022.10.07 |