석사 시절 친했던 친구와 오래간만에 연락을 했는데, GPT에 대해서 대화를 나눴다. GPT를 통해서 파이썬 코드를 작성해봤더니 꽤나 괜찮은 코드가 나왔다는 것... 실제로 GPT를 이용한 논문 작성 때문에 곤란해하는 학계의 소식을 접했던 적이 있어서 얼마나 완성도 있는 텍스트를 만들어내는 건지 알아보고 싶었다.
Chat GPT?
Chat GPT, 즉 챗GPT는 OpenAI 라는 회사가 개발한 대화 전문 인공지능 챗봇이다. 사용자가 대화창에 질문을 입력하면 AI가 적당한 답변을 준다. 저장된 데이터 중 적절한 답을 하는 원리 자체는 수년전 유행했던 심심이라는 챗봇과 비슷하다. 하지만 Chat GPT는 일반적인 챗봇과 다르게 정교한 답변을 구사할 수 있다! 다시 말해, 답변의 퀄리티가 엄청나다는 것이다. 단순히 간단한 텍스트가 아니라 문장 및 논리 구조까지 인간 처럼 구현이 가능하다고 한다... 게다가 영화 시나리오나 시와 같은 문학적 영역은 물론, Chat GPT를 통해 논문도 작성할 수 있을 정도라고 하니 (그동안 열심히 에세이를 쓰던 지난 대학시절이 스쳐간다...) 왜 Chat GPT가 이슈가 되는 지 알 수 있다. 그렇다면 이 Chat GPT는 어떤 데이터를 통해 훈련시켜졌을까?
Quantity 란을 보면 알 수 있드시 어마어마한 대용량 데이터를 통해 만들어졌고, 무려 60%의 데이터가 common crawl, 즉 일반적인 크롤링 데이터를 통해 학습시켜졌다. 기존의 챗봇은 사람과 AI가 나눈 대화를 토대로 학습했다면, 챗GPT는 수백만 개의 웹 데이터를 기반으로 학습한 셈이다. 그 결과, 대화의 맥락을 정확하게 파악할 수 있고 잘못된 점 또한 지적할 수 있다. (사람보다 나을지도...)
챗GPT 사용해보기
백문이 불여일견, 직접 챗GPT를 사용해보자.
간단하게 개발자란 무엇인가요? 라는 질문을 해보았다. 영어로만 될 줄 알았는데, 한국어로도 답변이 가능하다.
인공지능이 사람을 대체할 수 있을까? 라는 질문에 대한 답변이다. 간단한 번역을 하자면 다음과 같다.
아니요, 인공지능은 인간의 지능을 대체할 수 없습니다. AI는 인간보다 특정 업무를 더 효율적으로 수행할 수는 있지만, 감정을 이해하거나, 복잡하고 창의적인 문제를 해결하거나, 주관적인 경험과 가치관을 바탕으로 의사결정을 하는 능력이 부족합니다. 인공지능은 인간의 지능을 향상시킬 수는 있지만, 인간을 완전히 대체할 수는 없습니다.
😳...! 엄청난데..? 그렇다면 이제 제일 궁금했던, Chat GPT를 통해 코딩을 해보자.
JPA와 REST API를 사용한 간단한 게시판을 Java 와 Spring으로 만들고 싶다고 입력해봤다.
(실제로 내가 스터디에서 하고 있는 토이 플젝이다)
Model (Board.java):
import javax.persistence.*;
@Entity
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String content;
public Board() {}
public Board(String title, String content) {
this.title = title;
this.content = content;
}
// getters and setters
}
Repository (BoardRepository.java):
import org.springframework.data.jpa.repository.JpaRepository;
public interface BoardRepository extends JpaRepository<Board, Long> {}
Controller (BoardController.java):
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/boards")
public class BoardController {
private final BoardRepository boardRepository;
public BoardController(BoardRepository boardRepository) {
this.boardRepository = boardRepository;
}
@GetMapping
public Iterable<Board> getBoards() {
return boardRepository.findAll();
}
@PostMapping
public Board createBoard(@RequestBody Board board) {
return boardRepository.save(board);
}
@PutMapping("/{id}")
public Board updateBoard(@PathVariable Long id, @RequestBody Board board) {
Board existingBoard = boardRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Board not found"));
existingBoard.setTitle(board.getTitle());
existingBoard.setContent(board.getContent());
return boardRepository.save(existingBoard);
}
@DeleteMapping("/{id}")
public void deleteBoard(@PathVariable Long id) {
boardRepository.deleteById(id);
}
}
아직 완벽하다고는 할 수 없지만 1분도 안되어서 생성된 것을 생각하면 상당하다.
요청이 더 디테일해진다면 결과물 또한 더 나아질 것이라 생각된다.
챗GPT의 등장, 그 미래는?
위에도 간단하게 언급했지만, 챗GPT를 사용하면 에세이도 쉽게 쓸 수 있기 때문에 학계에서는 꽤나 큰 문제라고한다. 실제로 GPT-3를 찾아보면서 찾은 논문 중, GPT-3를 통해 작성한 논문을 제출한 학생이 몇 적발된 해프닝도 찾아볼 수 있었다. 또한 AI를 이용한 표절 문제는 현재 학술 규정으로는 입증하기 어렵기 때문에, 앞으로 AI를 통해 만들어진 결과물을 구분하는 것은 더더욱 어려워질 것이라는 전망이 있다. 뉴욕의 한 공립 대학교에서는 학생들의 학습에 부정적인 효과를 고려해 챗GPT의 이용을 차단했다고 한다. 하지만 단순한 차단만이 챗GPT의 남용을 막지는 못할 것이다😢.
또한 챗GPT가 구글을 대체할 수도 있다는 전망이 등장하고 있다. 보통 우리는 구글링을 하게되면 상단에 뜨는 게시글 몇 개를 읽어 정보를 습득한다. 하지만 챗GPT는 가장 정확하다고 판단되는 정보를 간단하게 알려준다. 즉, 게시글을 여럿 클릭해서 읽어야하는 과정을 AI가 대신 해줌으로써 더욱 편리해지는 것이다 (이렇게 되면 전체적인 게시글의 view가 줄게 되면서 추후에는 광고 노출의 빈도도 현저히 줄게 될지도 모르겠다).
하지만 챗GPT의 데이터는 대부분 웹 크롤링을 통해 수집되었다. 그 말인 즉슨, 모든 답이 정확하지는 않다는 것이다. 그러나 정제된 데이터로 학습시킨다면? 그 위력은 어마어마할 것이다. 인공 지능의 발전은 정말 빠른 것 같다. 개인적으로 개발자는 인공지능으로 대체되는 것이 힘들 것이라고 생각해왔는데, 오늘 chatGPT를 사용해보고 그 생각이 바뀌었다. 앞으로 인공지능의 발전은 우리의 삶을 크게 바꿀 것이라는 생각이 든다.
'𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈 > 𝐴𝐼' 카테고리의 다른 글
[ML/DL] Gradient descent (경사 하강법) (0) | 2023.06.08 |
---|---|
[AI/DL] Image Segmentation (0) | 2023.05.26 |
[AI] Android Studio, flutter project에 딥러닝 모델 배포, 적용하기 (Pytorch-lite) (1) | 2023.05.15 |