Loading...
2024. 8. 11. 17:22

RAG(Retrieval-Augmented Generation)의 개념 간단하게

LLM은 뛰어난 능력을 보여왔지만, 실제 사용을 위해서는 환각 현상이나 느린 지식 업데이트, 답변 투명성 부족 등 같은 문제를 해결해야합니다. RAG는 검색 - 증강 생성이라는 뜻으로 LLM에서 질문에 대한 답변이나 텍스트를 생성하기 전에,  광범위한 데이터베이스 집합에서 관련 정보를 검색하고 이러한 정보를 포함하여 자연스러운 답변을 생성하는 방법 LLM 내부적으로 훈련된 데이터가 시대에 뒤떨어져있을 수 있고, 특정 영역에 대해 지식이 부족할 수 있으며  응답의 투명성이 부족하다는 문제를 해결하는데 중점을 둔다    RAG는 답변의 정확도를 크게 향상시키고 지식 집약적인 작업에서 모델의 환각을 줄이는데 도움이 된다. 또한 사용자가 출처를 인용하여 답변의 정확성을 검증할 수도 있어 모델의 출력에 대한 신뢰..

선택한 원소의 인접한 원소는 선택할 수 없을 때 원소 합을 최대로 선택하는 방법

7265번: Herbamedžiai (acmicpc.net)  배열에서 i번째 원소를 선택하면 i-1번째, i+1번째 원소는 선택할 수 없을때, 선택할 수 있는 원소의 최대 합을 구한다면 n이 최대 10만이라 O(N)에는 해결해줘야한다 $O(N^{2})$ 아니면 못할것 같지만 놀랍게도 O(N)에 되더라고 DP[i] = i번째 원소까지 봤을때 선택한 원소들의 최대합 만약 i번째 원소를 선택하지 않는다면? dp[i] = dp[i-1]로 그대로 가져오면 된다 만약 i번째 원소를 선택한다면? i-1번째 원소는 선택할 수 없으므로, dp[i-2]에다가 i번째 원소 선택 A[i]를 더해주면 된다 dp[i] = dp[i-2] + A[i] 여기서 둘 중 더 큰 값을 고르면 된다 dp[i] = max(dp[i-1], d..

2^30으로 나눈 나머지로 2^5으로 나눈 나머지를 구할 수 있을까

8672번: Drabina (acmicpc.net) 사다리의 맨 끝단 s까지 올라가는데 한걸음 혹은 두걸음씩 올라갈 수 있다 이 때 끝까지 올라가는 방법의 수를 $2^{p}$로 나눈 나머지를 구해야한다. 이것만 보면 매우 쉬운 문제다 dp[i] = i번째까지 올라가는 방법의 수하면 가능한 경우는 한걸음 혹은 두걸음이므로... dp[i] += dp[i-1]dp[i] += dp[i-2] 인 전형적인 문제 dp = [0]*(s+1)dp[0] = 1mod = 2**pfor i in range(1,s+1): for j in range(1,3): if i >= j: dp[i] += (dp[i-j]) dp[i] %= mod  문제는 최대 ..

홀수 길이의 연속 부분 배열의 합 중 가장 큰 값을 구하는 방법

19355번: A Really Odd Sequence (acmicpc.net) 주어진 배열에서 길이가 홀수인 연속 부분 배열의 원소 합 중 가장 큰 값을 구하는 문제 https://deepdata.tistory.com/390 다이나믹 프로그래밍 - Kadane algorithm1. 문제 https://www.acmicpc.net/problem/1912 1912번: 연속합첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거deepdata.tistory.com 카데인 알고리즘의 연장선상이긴 한데 문제는 홀수 길이여야한다는 것... 카데인 알고리즘은 배열의 길이를 모른다.. 길이 정보를 담자니...

2024. 8. 3. 03:06

matrix factorization을 이용한 추천시스템 간단한 이론과 구현예시

1. matrix factorization 사용자 * 아이템으로 구성된 하나의 행렬을 2개의 행렬로 분해하는 방법 사용자와 아이템이 각각 무엇인지는 모르겠지만 k개의 잠재요인(latent factor)으로 설명할 수 있다고 생각하고, (사용자 * 잠재요인) * (잠재요인 * 아이템)의 두 행렬의 곱으로 나타낼 수 있다는 것이다.   행렬 R은 M명의 사용자가 N개의 아이템에 대해 평가한 점수가 있는 행렬 M명의 사용자는 모든 아이템에 대해 평가하지는 않는다.  내가 소유한 아이템, 경험해본 아이템에 대해서는 평가할 수 있어도(혹은 평가하지 않고)  경험해보지 않은 아이템에 평가하지는 않는다(거짓으로 할수도 있겠지만..) 그래서 R은 대부분의 아이템이 NULL인 sparse matrix이다. 이러한 행렬 ..

겹치는 직선 구간쌍의 개수 빠르게 세기

D - Intersecting Intervals (atcoder.jp) D - Intersecting IntervalsAtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.atcoder.jp  50만개의 구간 [l,r]이 주어질때, 이들 중 서로 겹치는 구간 쌍의 개수가 몇개인지 구하는 문제 모든 구간 쌍에 대해 서로 겹치는지 조사할려면 $O(N^{2})$인데, 당연히 N이 최대 50만이므로 시간제한에 맞지 않는다 전체 구간 쌍의 개수는 n개중 2개를 선택하는 경우의 수이므로, nC2 = n(n-1)/2 만약 서로 겹치치 않는 구간 쌍의 개수를 구..