[데이터 엔지니어링 데브코스 2기] TIL-2주차-파트05 자료구조와 알고리즘/ChatPT특강

이재호·2023년 10월 20일
0

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) # 리스트 L을 MinHeap으로 구성한다.
minValue = heapq.heappop(L) # MinHeap L로부터 최솟값을 pop한다.
heapq.heappush(L, x) # MinHeap L에 원소 x를 push한다. 이때, push되고 나서도 MinHeap이 되도록 구성된다.

4. Dynamic Programming(동적 프로그래밍)

주어진 최적화 문제를 작은 부분 문제로 나누어 풀이한 후, 해당 결과를 조합하여 전체 문제의 결과를 도출하는 방법이다. 알고리즘을 진행하면서 탐색 범위를 동적으로 선정한다. (모든 범위 탐색 X -> 탐색 범위 감소.)
예) 피보나치 수열, knapsack prob.
profile
천천히, 그리고 꾸준히.

0개의 댓글