목록분류 전체보기 (132)
토니의 연습장
보호되어 있는 글입니다.
🚩 핵심 요약SGD(Stochastic Gradient Descent) vs Adam(Adaptive Moment Estimation)구분SGD (확률적 경사 하강법)Adam (적응형 모멘트 추정)핵심 아이디어단순히 Gradient 방향으로 조금씩 움직이는 기본적인 방식Gradient의 Momentum 및 Adaptive learning rate 사용학습 속도비교적 느림. 최적의 지점을 찾기까지 시간이 오래 걸릴 수 있음상대적으로 빠름. 더 빨리 최적 지점으로 수렴하는 경향이 있음Learning Rate고정값 (수동으로 조정 필요)학습 도중 자동 조정 (적응형 learning rate)Momentum 사용기본적인 SGD에는 없음 (Momentum SGD는 별도의 기법)Momentum 개념 포함 (과거의..
출처 : https://youtu.be/i5ZSURAoAfI너무 업데이트가 오래 걸리는 단점 해결 위해 stocastic gradient descent 가 나옴 📌 구체적 원리 (Gradient 계산 과정)좀 더 직관적으로 살펴보자면,전체 데이터가 1,000,000개 있다고 해봐.Batch Gradient Descent는 매번 1,000,000개의 모든 데이터를 계산해서 Gradient를 구한 뒤 한 번 업데이트.SGD는 매번 랜덤하게 1개 또는 10개 정도의 데이터만 가지고 Gradient를 구한 뒤 한 번 업데이트.이렇게 하면:방식1회 업데이트 시 데이터 수업데이트 속도1 epoch 당 업데이트 횟수Batch Gradient Descent1,000,000개매우 느림1번Mini-batch SGD (일..
*PDFRAG class 는 하단의 코드 참고from myrag import PDFRAG# 질문에 대한 답변하는 함수를 생성def ask_question_with_llm(llm): # PDFRAG 객체 생성 rag = PDFRAG( "data/SPRI_AI_Brief_2023년12월호_F.pdf", llm, ) # 검색기(retriever) 생성 retriever = rag.create_retriever() # 체인(chain) 생성 rag_chain = rag.create_chain(retriever) def _ask_question(inputs: dict): # 질문에 대한 컨텍스트 검색 context = r..
*아래는 전체코드가 아닌 핵심 코드만을 다루고 있습니다.참고) RAGAS: https://docs.ragas.io/en/latest/getstarted/evaluation.htmlfrom ragas.testset.generator import TestsetGeneratorfrom ragas.testset.evolutions import simple, reasoning, multi_context, conditionalfrom ragas.llms import LangchainLLMWrapperfrom ragas.embeddings import LangchainEmbeddingsWrapperfrom ragas.testset.extractor import KeyphraseExtractorfrom ragas.te..
# N 개 정수 입력 빠르게 하기# 대량의 정수를 입력 빠르게 하고자 하면 아래 재정의도 추가# input()을 재정의하여 더 빠른 sys.stdin.readline() 사용import sysinput = sys.stdin.readlineN = int(input())# 1. 한 줄에 하나씩 입력받기 일반적인 생각w1 = []for _ in range(N): w1.append(int(input()))# 2. 훨씬 빠른 방법 : list comprehension 이용w2 = [ int(input()) for _ in range(N)]# (참고) 띄어쓰기로 입력받을 때numbers1 = list(map(int, input().split()))
from itertools import combinationsN = int(input())w = []for _ in range(N): weight = int(input()) w.append(weight) # 오르차순 정렬w.sort()# k 개 선택tuples_list = [list(combinations(w,k)) for k in range(1,len(w)+1)]first_elements = [ [tuple[0] for tuple in tuples] for tuples in tuples_list]print(tuples_list)# 출력 & 최대 중량 저장max_weight = -1for i, sublist in enumerate(first_elements): print(f"tupl..
*참고 : llm_call, llm_call_async functino 은 가장 하단의 utils.py 참고 1. 프롬프트 체이닝 (Prompt Chaining) prompt_chaining.pyfrom typing import Listfrom utils import llm_calldef prompt_chain_workflow(initial_input: str, prompt_chain: List[str]) -> List[str]: response_chain = [] response = initial_input for i, prompt in enumerate(prompt_chain, 1): print(f"\n==== 단계 {i} ====\n") final_promp..
