ChatGPT, Bard 등 생성 인공지능 도구를 기반으로 한 챗봇의 등장과 AI 도구를 학술 연구에 활용하는 방법은 큰 논란을 불러일으켰지만 동시에 과학 연구를 위한 AI 생성 코드의 가치는 무시되었습니다.
ChatGPT에서 생성된 텍스트로 인해 발생하는 표절 문제에 비해, AI를 사용하여 코드를 복사하는 것은 분명히 논란의 여지가 덜합니다. 심지어 "코드 공유"와 "코드 재사용"도 권장하며 소스 추적도 매우 편리합니다. 예를 들어 " Import"는 종속 패키지를 참조로도 가져옵니다.
최근 Nature에 리뷰 기사가 게재되었습니다. 저자 팀은 브레인스토밍, 복잡한 작업 분해, 간단하지만 시간이 많이 걸리는 작업 처리를 포함하여 과학 프로그래밍 분야에서 ChatGPT의 세 가지 잠재적 기능에 대해 논의했습니다.
기사 링크: https://www.nature.com/articles/s41559-023-02063-3
연구원들은 ChatGPT 코드를 사용하여 자연어를 컴퓨터가 읽을 수 있는 언어로 번역하고 탐색합니다. 과학적 코딩을 향상시키기 위해 생성 AI를 사용하는 기능과 한계.
실험의 예는 주로 생태학, 진화 및 기타 분야와 관련될 수 있는 일반적인 작업을 탐색했습니다. 연구원들은 코딩 작업의 80%-90%가 ChatGPT를 사용하여 완료될 수 있음을 발견했습니다.
ChatGPT는 작업이 작고 관리 가능한 코드 덩어리로 분할된 경우 정확한 힌트를 쿼리로 사용하여 매우 유용한 코드를 생성할 수 있습니다.
Google의 Bard로 동일한 실험을 하면 대개 비슷한 결과가 나온다는 점에 주목할 필요가 있지만, 코드에 오류가 더 많기 때문에 이 기사에서는 주로 ChatGPT를 실험에 사용합니다.
제1저자인 Cory Merow는 환경 변화에 대한 인구와 공동체의 반응을 예측하기 위한 메커니즘 모델을 구축하는 것을 주요 연구 방향으로 삼는 양적 생태학자입니다. 최고의 데이터 세트라도 글로벌 변화에 대한 대응을 예측하는 데는 불완전하므로 데이터 소스를 결합하고 데이터 세트를 탐색하여 생물학적 시스템의 가능한 변화에 대한 통찰력을 얻을 수 있는 도구를 개발해야 합니다.
ChatGPT는 회귀 모델 GPT-3을 기반으로 하며 대규모 웹 페이지, 책 및 기타 텍스트에 대해 피팅 훈련을 수행하고 검색 없이 텍스트를 생성할 수 있습니다.
그래서 ChatGPT는 보간(훈련 데이터와 유사한 텍스트 예측)에는 더 좋지만 외삽(훈련 샘플과 다른 새로운 텍스트 예측)에는 좋지 않습니다.
훈련 세트의 크기가 크다는 것은 GPT-3가 많은 수의 언어 패턴을 확인하여 인간에게 유용한 응답을 생성할 가능성을 보간하고 높일 수 있다는 것을 의미합니다.
그러나 코드 생성 작업의 경우 GPT-3는 프로그래밍 방법을 알지 못합니다. 코드가 어떻게 생겼는지, 다음 위치에 어떤 단어가 나타날 가능성이 가장 높은지는 알 수 있습니다. 확률 모델은 다음 코드 청크(청크)를 예측합니다. 청크는 일반적으로 토큰이라고도 할 수 있는 단어(단어)보다 작습니다. 즉, 예측되는 토큰의 수를 늘리거나 선택을 줄이는 것은 작업의 난이도를 높여 올바른 토큰을 얻을 확률을 감소시킵니다.
따라서 올바른 토큰이 나올 확률을 높이려면 생성 작업의 길이를 줄이거나 보다 구체적인 지침을 제공해야 합니다.
마지막으로 연구원은 ChatGPT에서 생성된 일부 텍스트가 코드처럼 보이지만 실행 가능하지 않을 수 있으므로 코딩 과정에서 주의 깊은 관찰과 디버깅이 필요하다는 점을 상기시킵니다.
브레인스토밍 도구
ChatGPT는 여러 데이터 소스를 매우 효과적으로 검색할 수 있습니다. 예를 들어 생태학 분야에서는 식물 특성, 종 분포 지역 및 기상 데이터를 동시에 얻을 수 있습니다.
ChatGPT에서 제공하는 데이터 중 일부가 정확하지 않더라도 이러한 오류는 제공되는 링크를 통해 빠르게 수정할 수 있습니다.
그러나 ChatGPT는 웹사이트에서 데이터를 다운로드하는 크롤러를 작성할 수 없습니다. 이는 R 언어 패키지 및 기본 애플리케이션 프로그래밍 인터페이스(예: 데이터베이스 액세스를 위한 R 프로토콜)가 너무 빨리 업데이트되기 때문일 수 있습니다. ChatGPT의 훈련 데이터는 2021년에 구축됩니다.
ChatGPT는 특정 문제가 발생할 때 다양한 통계 기법을 제안할 수 있으며, 후속 질문에서는 사용자 가정을 기반으로 더 많은 지침을 생성하고 초기 코드를 제공할 수 있습니다.
그러나 합성 프로세스는 아이디어를 제안하고 전달하는 데에만 적합합니다. 사실 확인은 여전히 전통적인 데이터 소스(예: 논문)를 통해 수행되어야 합니다.
일부 웹사이트에서는 ChatGPT에 책 요약을 작성할 수 있는 기능이 있다고 주장합니다. 그러나 연구진의 테스트 결과에 따르면 이 요약의 종합적인 결과는 완전히 잘못된 것일 수 있습니다. 테스트에 사용된 데이터는 GPT-3이 아닌 트레이닝 세트에 나타납니다.
더 어려운 작업에는 더 많은 디버깅이 필요합니다
ChatGPT는 특정 지침에 따라 소수의 기능이 포함된 짧은 스크립트 코드를 제공하여 템플릿 코드를 생성하는 데 매우 능숙합니다.
예를 들어 아래 예에서 연구원은 ChatGPT에 일반적으로 사용되는 네 가지 기능의 입력과 출력을 함께 연결하도록 요청했습니다. 시뮬레이션된 데이터에 이 함수를 사용하는 샘플 코드를 제공합니다.
ChatGPT에서 생성된 결과가 거의 완벽하고 코드를 디버깅하는 데 몇 분 밖에 걸리지 않는다는 것을 알 수 있습니다. 그러나 이름 지정 및 기능 제공을 포함하여 프롬프트의 쿼리에 대해 매우 구체적이어야 합니다. 사용된.
연구원들은 다음과 같은 사실을 발견했습니다.
1 복잡한 작업을 여러 하위 작업으로 나누는 것이 이상적으로는 몇 단계만 거치면 완료됩니다. 코드는 확률적 텍스트 예측 모델의 결과를 기반으로 합니다.
2. ChatGPT는 기존 기능을 사용할 때 가장 잘 작동합니다. 이는 외삽이 아닌 보간만 포함하기 때문입니다.
예를 들어 정규식(regex)을 사용하여 텍스트에서 정보를 추출하는 코드는 많은 개발자에게 매우 어렵지만 이미 많은 온라인 예제를 제공하고 ChatGPT 예제에 나타날 수 있는 정규식 웹사이트가 있기 때문입니다. , 따라서 정규식 작성 시 ChatGPT의 성능은 여전히 좋습니다.
3. 학계에서 ChatGPT에 대한 가장 큰 비판 중 하나는 정보 소스의 투명성이 부족하다는 것입니다.
코드 생성 작업의 경우 "네임스페이스"를 지정하면 어느 정도 투명성을 얻을 수 있습니다. 즉, 함수를 사용할 때 패키지 이름을 명시적으로 호출하면 됩니다.
그러나 ChatGPT는 개인의 공개 코드를 인용하지 않고 직접 복사할 수 있으며, 연구원은 여전히 올바른 코드 속성을 확인할 책임이 있습니다.
동시에 더 긴 스크립트를 생성해야 하는 경우 함수 이름이나 매개변수 등을 위조하는 등 ChatGPT의 일부 결함이 노출됩니다. 이것이 StackOverflow가 ChatGPT 코드 생성을 비활성화하는 이유입니다.
그러나 사용자가 명확한 실행 단계 세트를 제공하는 경우 ChatGPT는 GPT-3 추정을 통해 생성될 수 있는 단계 간 입력과 출력 간의 연결을 정의하는 유용한 워크플로 템플릿을 생성할 수 있습니다. 암호.
현재 ChatGPT는 의사 코드(간단한 언어로 설명된 알고리즘 단계)를 완벽한 컴퓨터 실행 코드로 변환할 수 없지만 이것이 현실과 멀지 않을 수 있습니다.
ChatGPT는 초보자와 익숙하지 않은 프로그래밍 언어에 특히 유용합니다. 초보자는 몇 가지 짧은 스크립트만 작성할 수 있어 디버깅이 더 편리해지기 때문입니다.
ChatGPT는 창의적이지 않은 작업에 더 좋습니다.
ChatGPT는 코드의 오류를 디버그, 감지 및 설명하는 데 사용할 수 있는 시간 소모적인 공식 작업을 해결하는 데 가장 적합합니다.
ChatGPT는 함수 문서를 작성할 때도 매우 효과적입니다. 예를 들어 roxygen 2의 인라인 문서 구문을 사용하면 모든 매개변수와 클래스를 식별하는 데 매우 효율적이지만 함수 사용 방법을 거의 설명하지 않습니다.
주요 제한 사항은 ChatGPT 생성이 약 500 단어로 제한되고 더 작은 코드 블록 생성에만 집중할 수 있는 동시에 코드 기능을 자동으로 확인하기 위한 단위 테스트도 생성할 수 있다는 것입니다.
ChatGPT에서 제공하는 대부분의 제안은 테스트 구조를 정의하고 예상되는 개체 클래스를 확인하는 데 도움이 됩니다.
마지막으로 ChatGPT는 표준화된(예: Google) 코드 스타일을 따르도록 코드 형식을 다시 지정하는 데 매우 효과적입니다.
ChatGPT 및 기타 AI 기반 자연어 처리 도구는 개발자를 위해 짧은 함수 작성, 구문 디버깅, 주석 및 형식 지정과 같은 간단한 작업을 자동화하는 동시에 복잡성을 확장할 준비가 되어 있습니다. 사용자에 따라 다릅니다. 디버깅하려는 의지(및 숙련도 수준).
연구원들은 과학 분야에서 코드 작성 과정을 단순화할 수 있는 ChatGPT의 기능을 요약했습니다. 그러나 실행 가능한 코드가 반드시 코드가 예상되는 작업을 수행할 수 있다는 의미는 아닙니다. 따라서 단위 테스트나 비공식 대화형 테스트는 여전히 중요합니다.
솔루션이 사람에 의해 개발되고 ChhatGPT의 간단한 복사본으로 생성될 수 있는 상황에서는 올바른 코드가 해당 사람에게 귀속되는지 확인하는 것이 중요합니다.
이미 소스(예: Microsoft의 Bing)에 대한 링크를 자동으로 제공하기 시작한 챗봇이 있지만 이 단계는 아직 초기 단계입니다.
전통적인 방법과 비교하여 ChatGPT는 코딩 기술을 배울 수 있는 대안적인 방법을 제공하여 의사 코드를 코드로 직접 변환함으로써 초기 작성 작업의 장애물을 완화합니다.
연구원들은 향후 발전이 ChatGPT와 같은 도구를 사용하여 작성된 코드를 자동으로 디버깅하고, 발생한 오류를 기반으로 새로운 코드를 반복적으로 생성, 실행 및 제안할 것이라고 의심합니다. 실험 중에 연구원들은 코드를 수정하는 기능이 제한적으로 발견되었습니다. , 매우 구체적인 지침이 작은 코드 블록을 대상으로 하는 경우에만 가끔 성공하므로 디버깅 프로세스는 수동 디버깅보다 훨씬 덜 효율적입니다.
연구원들은 기술이 발전함에 따라 자동화된 디버깅이 향상될 것이라고 의심합니다(예: GPT-3 모델보다 10배 더 크다고 최근 출시된 GPT-4 모델).
미래는 다가오고 있으며 지금은 개발자가 새로운 AI 도구를 활용하기 위한 팁 엔지니어링 기술을 배울 때입니다. 연구원들은 AI 생성 코드를 사용하는 것이 소프트웨어 개발의 모든 측면에서 점점 더 가치 있는 기술이 될 것이라고 예측합니다. 과학적 발견과 이해의 기본입니다.
위 내용은 프로그래머의 미래는 '의사코드'에 달려있습니다! Nature 칼럼: ChatGPT를 사용하여 과학 연구 프로그래밍을 가속화하는 세 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!