1. ChatGPT
ChatGPT란, GPT를 chat bot으로 Fine-tuning한 application이다. 여러 AI 관련 용어들이 포함되어 있으므로 해당 용어들을 먼저 정리한다.
1) LLM(Large-Language Model)
- GPT의 근본이 되는 인공지능 모델로, 문장을 읽고 빈 칸을 예측(훈련)하는 모델이다.
ex) "It ㅁ a laptop." 이라는 문장이 주어졌을 때, LLM은 빈 칸에 "is"라는 단어를 예측할 수 있다.
- 문장 외에도 code를 학습시킬 수도 있으며, MS의 경우, github을 인수하여 github의 오픈 소스들을 활용하여 모델에 code를 학습시켰다.
- 훈련 방식 : 웹 상에서 존재하는 품질 좋은 문서(위키피디아 등)를 훈련한다.
- 학습 종류 : unsupervised learning (정답이 존재하지 않는 학습 방법)
- 사용 시: 추론/예측 -> 데이터 양 증가 -> 데이터 센터 증가 -> 발열량 증가 -> 지구 온난화. 처럼 실제 적용 시에 발생할 수 있는 문제점, 비즈니스 가치 등을 고려해야 한다.
2) GPT(Generative Pre-trained Transformer)
- GPT란 OpenAI에서 만든 초거대 언어 모델이다. 해당 모델은 언어/코드 둘 다 예측이 가능하다.
3) Transformer (모델)
예) "This is a apple" -> "This", "is", "a", "apple" -> (0.0, 0.5, 1.0), (0.0, 1.0, 0.2), .. 처럼, Word Embedding을 예시로 보일 수 있다. (단어(토큰)의 벡터화)
4) Fine Tuning
Pre-trained Model에 본인이 희망하는 대로 특정 data를 학습시키는 것이다. 즉, 기존 모델에 layer를 덧씌우는 것으로 해당 작업을 위해서는 경험이 많은 개발자가 필요하다.
2. ChatGPT의 활용법
- 모르는 것 질문 -> 진위 파악.
- 코드 작성 요청 -> 테스트 케이스 적용.
- Pair Progrmming -> 코드 구현, 코드 리뷰, 주석 처리, 테스트 케이스 요구 등.
기술이 발전하는 것을 미리 따라가기 보다는, 발전된 기술을 실제로 적용해보면서 자연스럽게 익히는 것이 중요하다.
그러니 "습관적으로 ChatGPT를 활용하면서 작업을 해 볼 필요가 있다."
3. Heap 코딩 테스트 문제 풀이
최대/최소값의 원소를 빠르게 꺼낼 수 있는 자료구조로써, 문제의 요구사항에서 최대 혹은 최소값의 원소만을 연산한다면 힙(heap)을 사용한다.
import heapq
heapq.heapify(L)
minValue = heapq.heappop(L)
heapq.heappush(L, x)
4. Dynamic Programming(동적 프로그래밍)
주어진 최적화 문제를 작은 부분 문제로 나누어 풀이한 후, 해당 결과를 조합하여 전체 문제의 결과를 도출하는 방법이다. 알고리즘을 진행하면서
탐색 범위를 동적으로 선정한다. (모든 범위 탐색 X -> 탐색 범위 감소.)
예) 피보나치 수열, knapsack prob.