[TIL 5일자] 데브코스 데이터엔지니어링

·2023년 4월 14일
0

데브코스

목록 보기
4/55
post-thumbnail

📚 오늘 공부한 내용

1. ChatGPT 특강

1) Language Model이란?

  • 문장의 일부를 보고 비어 있는 단어를 확률적으로 맞추는 모델. 확률적으로 답을 하기 때문에 항상 같은 답을 주지는 않음.
  • 텍스트 문서들을 입력으로 받아서 그 패턴을 보고 그 문장 뒤에 자연스럽게 따라나오는 언어가 뭔지 학습한 모델.
  • Temperature (온도)가 100에 가까울수록 더 랜덤해진다.
  • LLM: Large Language Model

2) Language Model 훈련

  • 웹상에서 존재하는 문서들이 모델의 훈련 데이터가 됨.
  • 품질이 중요해 위키피디아가 많이 사용됨.
  • Unsupervised Learning

3) Language Model: Word to Vector

  • 언어 모델에 사용되는 Transformer 모델은 기본적으로 수학 모델
  • 단어를 그대로 사용할 수 없고 이를 숫자 즉, 벡터로 바뀌어서 처리가 되고 이를 워드 임베딩(Word Embedding)이라고 부른다.
  • 데이터의 크기를 줄이고 단어 간의 유사도를 측정 가능하다.

4) GPT란?

  • OpenAI에서 만드는 초거대 언어 모델
  • 두 가지 모델을 제공한다
    • Word Completion (한국어를 포함한 다양한 언어)
    • Code Completion
  • GPT 쓸 때 조심해야 하는 것은? Fact Check (GPT가 주는 답을 온전히 믿으면 안 됨.)
  • GPT API
    • Completion
    • Fine Tuning
  • Whisperer API (Speech To Text)
  • ChatGPT API

5) Fine Tuning

  • 이미 만들어진 모델 (Pre-trained Model) 위에 새로운 레이어를 얹히고 훈련하는 것
  • GPT는 API로 지원함.

6) ChatGPT 활용하기

  • 모든 일/ 업무에 사용해 보기
  • 질문 (Prompt)의 중요성
  • 코딩에 사용해 보기
  • 학습에 사용해 보기
  • Gen AI 기반의 No Code나 Low Code 툴이 점점 늘어날 것으로 예상

2. 더 맵게 - 힙(Heap)

✔ 나의 풀이

3. N으로 표현 - 동적 계획법 (Dynamic Programming)

✔ 나의 풀이

4. 여행 경로 - 깊이/너비 우선 탐색 (DFS/BFS)

✔ 나의 풀이

🔎 어려웠던 내용 & 새로 알게 된 내용

1. 더 맵게 - 힙 (Heap)

  • 최댓값최솟값을 구해야 하는 문제가 있다면 힙(Heap) 자료 구조 사용을 생각해 봐야 한다.
  • 왜냐하면 힙은 heapq.heappop을 통해 최솟값최댓값을 빠르게 구할 수 있기 때문이다.
  • 기본 힙은 최소 힙이며 heapq.heappop(heap)을 할 경우 heap 내부의 최솟값이 삭제되고 반환된다.
  • 그렇다면 최댓값은 어떻게 구할 수 있을까?
    • 최대 힙최소 힙부호를 넣어 주면 된다.
    • - 부호를 붙여 준 뒤 heapq.heappop(heap)을 진행할 경우 -(최댓값)최솟값이 되기 때문에 반환되고 삭제된다.
    • 이때 반환된 값에 다시 -를 붙여 주면 최댓값을 구할 수 있다.
      import heapq
      heap = []
      list = [1, 2, 3, 4]
      for num in list:
      	heapq.heappush(heap, -num)
      -heapq.heappop(heap)

2. N으로 표현 - 동적 계획법 (Dynamic Programming)

  • 어떤 경우에 동적 계획법 (Dynamic Programming)을 사용하는가?
    • 부분 문제가 겹치거나 최적 부분 구조를 가질 때 동적 계획법 (Dynamic Programming)을 사용한다.
    • 즉, 작은 문제를 구해 큰 문제의 정답을 구할 수 있는 경우 사용한다.
    • 대표적으로는 피보나치 수열이 존재한다.
    • 피보나치 수열Fn-1Fn-2이라는 작은 문제Fn이라는 큰 문제의 답을 구한다.
  • 동적 계획법(Dynamic Programming)은 큰 문제를 작은 문제로 나누고 작은 문제를 풀어 재귀 호출을 하는 Top-Down 풀이와 작은 문제를 차례대로 풀면서 큰 문제의 답을 구하는 Bottom Up 풀이 방법이 존재한다.

✍ 회고

profile
송의 개발 LOG

0개의 댓글