확률적으로 맞추는 모델. 확률적으로 답을 하기 때문에 항상 같은 답을 주지는 않음.Temperature (온도)가 100에 가까울수록 더 랜덤해진다.LLM: Large Language Model웹상에서 존재하는 문서들이 모델의 훈련 데이터가 됨.위키피디아가 많이 사용됨.Unsupervised Learning수학 모델 워드 임베딩(Word Embedding)이라고 부른다. 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-1과Fn-2이라는작은 문제로Fn이라는큰 문제의 답을 구한다.동적 계획법(Dynamic Programming)은 큰 문제를 작은 문제로 나누고 작은 문제를 풀어 재귀 호출을 하는Top-Down 풀이와 작은 문제를 차례대로 풀면서 큰 문제의 답을 구하는Bottom Up 풀이방법이 존재한다.