
IT 전문 매체 더 레지스터가 유니버시티 칼리지 더블린의 브렛 A. 베커(Brett A. Becker) 부교수의 주장을 인용, 깃허브(GitHub)의 코파일럿(Copilot)과 같은 인공지능(AI) 코드 작성 보조 툴 사용 사례가 증가하면서 컴퓨터 과학 교육 방식을 변경할 필요성이 커지는 추세라고 보도했다.
코파일럿 사용량이 증가하면서 코드 분류 작업이 계속돼, 컴퓨터 과학 전문가가 계속 대규모 언어 모델을 새로이 발견해야 하기 때문이다.
매사추세츠앰허스트대학교의 에밀리 버거(Emery Berger) 컴퓨터 과학 교수를 포함한 컴퓨터 과학 분야 전문가 여러 명이 저작권, 소프트웨어 라이선스 문제와 함께 AI 코드 작성 툴의 문제점으로 지적한 부분이기도 하다.
베커 부교수는 매체에 자신이 공동 저자로 참여해, 정식 발표 전인 연구 논문 두 편을 근거로 제시했다. 모두 AI 코드 작성 보조 툴의 교육적 위험성과 기회를 탐색했다. 또, 내년 3월 15일부터 18일까지 캐나다에서 개최될 SIGCE 컴퓨터 과학 교육 분야 기술 심포지엄 발표 대상으로 채택됐다.
베커 부교수가 제시한 논문 중 한 편은 교육계에서 AI 코드 작성 툴로 즉시 얻을 수 있는 기회와 문제점을 다루어야 한다고 주장한다. 베커 부교수 연구팀은 깃허브 코파일럿과 딥마인드(DeepMind) 알파코드(AlphaCode), 아마존 코드위스퍼(CodeWhisperer)와 함께 상대적으로 인지도가 낮은 AI 코드 작성 툴 카이트(Kite), 탭나인(Tabnine), 코드4미(Code4Me), 폭스파일럿(FauxPilot) 등을 조사했다.
연구팀은 AI 코드 작성 툴이 인간 개발자를 상대로 적당한 경쟁력을 갖춘다는 점을 확인했다. 일례로, 알파코드의 실력은 코드포스(Codeforces) 프로그래밍 대회 참가 개발자 5,000명과 비교했을 때, 상위 54%에 해당한다.
따라서 일각에서는 AI 코드 작성 툴이 인간 개발자를 위협하기보다는 프로그래밍 학습에 도움이 된다고 본다. 대표적인 예시로 프로그래밍 교육 시 스스로 작업한 사항을 확인하는 데 도움이 될 솔루션 예시 제공, 학생의 문제 이해 수준 향상에 필요한 솔루션 변수 생성, 코드의 질과 스타일 개선을 언급할 수 있다. 마찬가지로 교사는 코드 작성의 좋은 예시와 다양한 프로그래밍 구성을 보여줄 예시로 AI 코드 작성 툴을 활용할 수 있다.
그러나 연구팀은 교육 과정에서 AI 코드 작성 툴이 도움을 줄 수 있는 정도가 다양하고, 필요 이상의 요소를 지원하여 표절의 정의의 중심인 귀속 접근 방식을 수정할 필요성이 있다고 경고했다.
연구팀은 “인간 사용자의 지식 소유권에 도움을 주는 선에서 기계로 생성할 수 있는 콘텐츠 양은 어느 정도인가?”라는 근본적인 질문을 던졌다.
또한, 논문을 통해 “철자 검사기, 문법 검사 도구를 사용하여 단어 바꾸기, 예측 텍스트 및 전자 메일 자동 응답 등을 제안한다. 즉, 프로그래밍 환경에서 대부분의 개발 환경은 기계 생성 코드를 제안하는 코드 완성을 지원한다”라며, “학계에서도 기계가 제안하는 여러 형태의 코드를 구분하는 일이 어렵다. 결과적으로 다양한 형태의 코드 구분에 익숙하지 않은 학생에게는 더 큰 혼란을 유발할 수도 있을 것”이라고 설명했다.
베커 교수의 두 번째 논문은 오픈AI(OpenAI)의 AI 코드 작성 툴인 코덱스(Codex)에 대해 이야기한다. 해당 논문은 코덱스가 활용하는 것과 같은 대규모 언어 모델은 유용하면서 신규 사용자 친화적인 프로그래밍 에러 메시지 참여에 유용할 수도 있다고 제시한다. 파이썬으로 작업하던 중 에러 메시지가 등장하면, 코덱스가 에러 분석 과정에 참여하여 개발자에게 자세한 문제점을 설명하는 것을 예시로 볼 수 있다.
연구팀은 문제점 설명을 제공하는 과정에 오류가 발생한 파이썬 코드와 에러 메시지를 코덱스 모델에 전달한 뒤 코덱스의 에러 설명 정확성을 평가했다.
결과적으로 에러 메시지 설명의 정확성은 범주에 따라 제각각이었다. 코덱스는 특정 에러를 더 정확히 제공했다. 연구팀은 함수 호출 할당 오류 설명 정확도는 83%였으나 평균 에러 메시지 수정 설명의 정확도는 단 33%임을 확인했다.
이에, 연구팀은 프로그래밍 작업 시 대규모 언어 모델로 생성한 에러 메시지 설명과 제안된 수정 프로그램을 사용할 준비가 되지 않은 상태라고 판단하였다. 또한, 학습 시 에러 메시지 설명문 때문에 코드 오류 해결 작업을 잘못 이해하게 될 수도 있다고 분석했다.
[ⓒ CWN(CHANGE WITH NEWS). 무단전재-재배포 금지]