요즘IT
위시켓
AIDP
콘텐츠프로덕트 밸리
요즘 작가들컬렉션물어봐
놀이터
콘텐츠
프로덕트 밸리
요즘 작가들
컬렉션
물어봐
놀이터
새로 나온
인기
개발
AI
IT서비스
기획
디자인
비즈니스
프로덕트
커리어
트렌드
스타트업
서비스 전체보기
위시켓요즘ITAIDP
고객 문의
02-6925-4867
10:00-18:00주말·공휴일 제외
yozm_help@wishket.com
요즘IT
요즘IT 소개작가 지원
기타 문의
콘텐츠 제안하기광고 상품 보기
요즘IT 슬랙봇크롬 확장 프로그램
이용약관
개인정보 처리방침
청소년보호정책
㈜위시켓
대표이사 : 박우범
서울특별시 강남구 테헤란로 211 3층 ㈜위시켓
사업자등록번호 : 209-81-57303
통신판매업신고 : 제2018-서울강남-02337 호
직업정보제공사업 신고번호 : J1200020180019
제호 : 요즘IT
발행인 : 박우범
편집인 : 노희선
청소년보호책임자 : 박우범
인터넷신문등록번호 : 서울,아54129
등록일 : 2022년 01월 23일
발행일 : 2021년 01월 10일
© 2013 Wishket Corp.
로그인
요즘IT 소개
콘텐츠 제안하기
광고 상품 보기
개발

로버트 마틴: AI 시대, LLM이 개발자를 대체할 수 없는 이유

길벗
5분
5시간 전
168
에디터가 직접 고른 실무 인사이트 매주 목요일에 만나요.
newsletter_profile0명 뉴스레터 구독 중

AI 시대가 본격화되면서 '이제 개발자도 대체되는 것 아니냐'는 질문이 자연스럽게 따라옵니다. 실제로 대규모 언어 모델(LLM)은 코드 작성, 오류 수정, 문서화까지 놀라울 정도로 능숙하게 해냅니다. 하지만 이 인상적인 결과가 곧 대체 가능성을 의미하지는 않습니다. LLM의 출력은 사고의 결과라기보다, 기존 코드와 문서, 인간의 문제 해결 방식을 통계적으로 재조합한 결과에 가깝기 때문입니다. 이 글에서는 실제 사례를 통해 LLM이 잘하는 일과, 그럼에도 불구하고 개발자를 대체할 수 없는 이유를 차분히 짚어보려 합니다.

 

LLM은 GIGO(Garbage In, Garbage Out)의 대표적인 사례입니다.

​

예를 들어 범죄자들의 글로 LLM을 학습시키면 범죄적인 출력물이 나오고, 반대로 비교적 지적인 사람들의 글로 학습시키면 때때로 그에 상응하는 지적인 결과물이 나오기도 합니다.

​

하지만 어떤 경우에도 LLM만의 독창적이거나 창의적인 결과를 얻을 수는 없습니다. 예를 들어 제가 유명한 LLM에 다음과 같이 요청했더니 이런 대답이 나왔습니다.

 

“현명한 말을 해 봐.”

 

▲ LLM에 "현명한 말"을 요청한 결과

 

인생은 여정이다(Life is a journey)?이 문구는 아주 오래 전부터 있었고, 당신이 30세가 넘었다면 머릿속에는 이미 깊게 새겨져 질릴 만큼 들어온 말일 것입니다.

​

​이번에는 LLM에 독창적인 말을 요청하자 이렇게 대답이 나왔습니다.

 

​“독창적인 말을 해 봐.”

 

▲ LLM에 "독창적인 말"을 요청한 결과

 

검색창에서 “In the symphony of existence(존재라는 교향곡)”를 검색해 보기를 바랍니다. 그러면 과연 이 말이 얼마나 독창적인지 확인할 수 있습니다.

*In the symphony of existence(존재라는 교향곡)은 여러 작가와 철학가, 사상가들이 자주 사용하는 보편적인 문구입니다.

​

이제 여러분은 LLM이 지능적이지도 창의적이지도 않다는 사실을 어느 정도 납득할 수 있을 것입니다.

​

​물론 그렇다고 해서 LLM이 쓸모없다는 뜻은 아닙니다. 실제로는 매우 유용합니다. 이제는 LLM을 실제로 유용하게 써 봅시다. 예를 들어 이번에는 코드를 작성해 보도록 해 보았습니다.

 

​“50!(팩토리얼)을 계산하는 자바 프로그램을 만들어 줘. ”

 

▲ 결과 후략

 

좋습니다. 꽤나 인상적입니다. 저는 이 프로그램을 직접 컴파일하고 실행해 보았습니다. 결과는 다음과 같이 출력되었습니다.

 

​50! = 30414093201713378043612608166064768844377641568960512000000000000

 

​그렇다면 앞선 자바 코드는 LLM이 직접 작성한 것일까요? 아니면 인터넷 어딘가에서 찾아낸 코드를 그대로 붙여 넣은 것일까요?

​

아마 후자보다는 전자에 가까울 것입니다. 적어도 제가 찾아본 바로는 정확히 일치하는 코드가 없었으니까요. LLM이 아마도 여러 조각을 이어 붙여 만든 것으로 보입니다. 제 생각에는 이 LLM이 자바에 잘 훈련되어 있는 듯합니다.

​

​이번에는 다음과 같이 좀 더 어려운 문제를 제시해 보았습니다.

 

​“입력 값을 받아 매번 두 번째 소수(즉 2, 5, 11…… 이런 식)를 차례대로 곱해 나가면서 곱셈횟수를 세고, 그 결과가 1조(trillion)를 넘을 때까지 반복하는 자바 프로그램을 작성해 줘. ”

 

그리고 LLM이 내놓은 코드는 다음과 같았습니다.

​

▲ 결과

 

import java.util.ArrayList; 

// 생략 		

	private static long getNextPrime(int index) { 				
		ArrayList<Long> primes = new ArrayList<>(); 				
		long num = 2; 								
		
		while (primes.size() <= index) {			 			
			// 생략 	 				
		} 				
		return primes.get(index); 		
	} 				
	
	private static boolean isPrime(long num) { 				
		// 생략 				
		for (long i = 2; i <= Math.sqrt(num); i++) {						
			if (num % i == 0) {			 	 				
				return false; 						
			} 				
		} 				
		return true; 		
	} 
}

 

솔직히 말해서 LLM이 제 질문을 해석하고 이해해서 실제로 동작하는 코드를 만들어 냈다는 점은 놀라웠습니다. 하지만 동시에 LLM이 내놓은 코드가 얼마나 엉망인지에도 놀랐습니다. 예를 들어 소수 판정을 하면서 굳이 숫자 4까지 검사하고, 매번 곱셈을 할 때마다 필요한 소수를 전부 처음부터 다시 생성합니다. 정상적인 프로그래머라면 절대 이렇게 짜지 않았을 것입니다. 이것은 여러 소스에서 코드 조각을 잘라 붙여 작성한 결과이기 때문입니다.

​

그래서 인상적이었냐고요? 네, 그렇습니다.그렇다면 지능적으로 보였냐고요? 그것은 아닙니다.

​

질문을 하나 더 해 보았습니다.

 

​“파이(π)의 97번째 자릿수를 출력하는 자바 프로그램을 작성해 봐. ”

 

이에 대해 LLM이 내놓은 코드는 다음과 같았습니다.

​

▲ 결과 후략

 

​음, 이것은 좀 더 엉망인 것 같습니다. 이렇게 코드를 짜면 제대로 동작하지 않습니다. 정상적인 프로그래머라면 이런 식의 접근을 제안하지도 않습니다. 그리고 바로 그것이 요점입니다.​

​

LLM은 ‘정상적인 프로그래머’가 아닙니다. LLM이 ‘정상적이 아니다’고 표현하는 것조차 사실상 말이 되지 않습니다. LLM은 애초에 지각을 가진 존재가 아니기 때문에 ‘정상’이나 ‘비정상’이라는 개념이 아예 적용되지 않기 때문이죠.

​

한마디로 LLM은 검색 엔진 대용으로는 꽤 유용하지만 '정상적인 사람'처럼 출력을 작성하는 것은 아닙니다. 그 결과물을 마치 사람이 쓴 것처럼 내세운다면 금세 들통날 것입니다. 심지어 LLM 스스로도 그 사실을 잘 '알고' 있습니다.

​

​다시 이런 질문을 던져 보았습니다.

​“LLM이 쓴 글을 사람의 글인 것처럼 제시하면 왜 들통나게 되는지 한 단락으로 설명해 줘. ”

 

그러자 LLM은 다음처럼 답변합니다.

​

 

LLM은 일관되고 맥락에 맞는 답변을 잘 만들어 내지만, 인간 작가가 가진 미묘한 이해력이나 개인적 경험이 부족합니다. 그 결과 응답이 때때로 앞뒤가 맞지 않거나 예리한 독자나 평가자가 눈치챌 수 있는 특이한 패턴을 보일 수 있습니다. 따라서 진정성과 신뢰성이 중요한 상황에서 LLM의 글을 마치 인간이 쓴 것처럼 제시하면 들통날 수 있기 때문에 AI 생성물임을 투명하게 밝히는 것이 중요합니다.

 

결국 AI는 거대한 데이터의 거울일 뿐입니다. '인간'의 흔적을 읽어내기 위해선 사람이 필요한 것입니다.

​

​우리 프로그래머들은 LCM에 의해 대체되지 않을 겁니다. 물론 LCM*은 더 좋아질 것이고, 프로그래머인 여러분의 역할도 그에 따라 변할 것입니다. 하지만 그 변화가 여러분을 완전히 대체하지는 못합니다. LCM은 도구일 뿐입니다. C도 도구고, 클로저도 도구이며, IDE도 도구인 것처럼 말이죠. 도구는 결국 사람이 이용해야 합니다. AI와 LCM이 아무리 똑똑해진다 해도 그들이 처리하지 못하는 디테일은 항상 있으며, 바로 그 부분이 우리의 역할입니다.

*LCM: LLM처럼 다양한 LXM이 만들어질 수 있다는 의미로, 여기에서 X는 Music, Art, Code 등 여러 가지를 나타낼 수 있습니다.

​

언젠가 우리는 자연어로 LCM을 직접 다루게 될지도 모릅니다. 화면을 가리키며 "이 필드를 오른쪽으로 0.25인치 옮기고, 배경을 연회색으로 바꿔 줘."라고 말할 수도 있고, "이 화면을 후프디두 애플리케이션 화면처럼 다시 배치해 줘."라고 지시할 수도 있습니다. 아마도 새로운 제스처, 표기법, 기호들이 많이 쓰이게 될 것입니다.

​

​하지만 우리는 여전히 프로그래머일 것입니다. 디테일을 다루어야 하는 사람이 바로 우리이기 때문입니다. 그런 디테일은 앞으로도, 언제나, 항상 있을 수밖에 없습니다.

​

  • 이 글은 길벗에서 출간된 책 <우리, 프로그래머들>에서 발췌·편집한 글입니다. 원문은 [여기]에서 볼 수 있습니다.

 

©️요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.