목록전체 글 (411)
susinlee 님의 블로그
코딩에이전트 툴을 제작중에 있음. 내가 LLM을 벌써 3년 째 사용하고 있는데, 이런 기능들이 있으면 좋겠다 싶었던 것들을 전부 구현하고 있음. 파일 처리에서 조금 애 먹고 있긴하지만... 대화의 흐름이 한 방향이 아닌 여러 방향으로 진행될 수 있음. 이는 노드로 시각화하여 한 눈에 바라볼 수 있으며, 서브에이전트의 경우 위 아래(90도)로 노드가 분기하도록 되어 있음. 서브 에이전트의 경우 내용을 찾아보기 어렵다는 점이 있었음. 어떻게 지시했고, 어떤 결과를 내뱉었는지 알기 어려웠는데 여기에서는 쉽고 투명하게 알 수 있음. 오픈소스(Apache 2.0)로 운영할 생각이며 조만간 여러 커뮤니티에 홍보를 할 예정. 홍보GIF 하나가 문단 열 개를 이김. 아래 흐름으로 제작 (약 15초)에이전트가 잘못된 ..
모델은 프로그램이 아니라 파일임. `gpt-oss:20b` 같은 오픈소스 모델은 실행 파일이 아니라 숫자 덩어리가 든 14GB짜리 파일 하나임. 그 안에는 순전파를 계산하는 데 쓰는 가중치만 들어 있음. 이 파일을 GPU 메모리에 올려놓고, 글을 넣으면 다음 글자를 계산해 뱉어 주는 별도의 프로그램이 필요함. 그게 추론 엔진이고, Ollama가 바로 그 프로그램임. Ollama = 다운로드 관리자 + 추론 엔진 + 창구 `npm`이나 `docker`에 가까운데, 세 가지를 하나로 묶어봄.하는 일명령비유모델 파일을 받아 관리`ollma pull gpt-oss:20b``npm install`모델을 GPU에 올려 계산(자동)런타임다른 프로그램이 쓸 수 있게 대기(트레이에 상주)로컬 웹 서버 `gpt-oss..
계산 그래프(Computational Graph)는 복잡한 미분 연쇄 법칙(Chain Rule)을 단순한 기본 연산(노드) 단위로 쪼개어, 인공지능이 효율적으로 가중치를 학습할 수 있게 해주는 핵심 프레임워크임. 1. 기본 노드의 역전파 대 원칙모든 역전파는 [최종 역전파 신호 = 상류에서 전달된 전체 기울기 x 자신의 국소적 기울기] 라는 연쇄 법칙을 따름. 이를 기본 연산 노드에 적용하면 다음과 같은 절대적인 규칙이 도출됨.노드 종류연산역전파 규칙덧셈 노드 ($+$)$z = x + y$그대로 전달곱셈 노드 ($\times$)$z = x \times y$서로 바꾸어 곱하기 이 원칙은 특정 숫자에만 적용되는 것이 아니라, 미분학의 근본 법칙(편미분)에서 파생된 일반화된 수학적 규칙임. 아무리 거대한 신경..
numpy를 이용해 딥러닝 알고리즘을 구현할 때, 수치적 안정성을 확보하는 것은 매우 중요함. 오버플로우, 언더플로우, NaN 발생 등을 방지하기 위한 방법을 알아보겠음. 1. 크로스 엔트로피(Cross-Entropy)에서 `delta`를 더해야 한다.크로스 엔트로피 오차는 정답 레이블($y$)과 예측 확률($\hat{y}$) 사이의 차이를 구하는 함수로, 수식은 다음과 같음. $$E = - \sum_i y_i \log (\hat{y}_i)$$ 여기서 $log(0)$으로 인한 마이너스 무한대를 방지해줘야 함. numpy에서 `np.log()` 함수 안에 0이 들어가게 되면 마이너스 무한대(`-inf`)가 반환됨. 예측값이 0이 되는 순간 연산 결과가 무한대가 되어버리고, 이 값이 다른 연산과 결합하면 ..
신경망 학습은 미분(기울기에 의존함). 1. 지표로 정확도가 아닌 손실 함수를 쓰는 이유신경망은 "가중치를 조금 바꿨을 때 지표가 어느 방향으로 얼마나 변하는가"를 보고 파라미터를 갱신함. 그런데 정확도는 이 계산에 사용할 수 없음.거의 모든 지점에서 미분값이 0임. 모델의 가중치를 아주 미세하게 조정하더라도, 그 조작이 최종 정답을 바꾸는 데까지 미치지 못했다면 정확도는 꿈쩍도 하지 않음. 기울기가 0이면 갱신한 방향을 알 수 없어 학습이 멈춤.변할 때는 불연속적으로 튐. 데이터 100개면 정확도는 32% → 33%처럼 계단식으로만 움직임. 연속적인 변화가 아니니 "얼마나" 좋아졌는지 정보가 없음.손실 함수는 연속적임. 교차 엔트로피나 MSE는 가중치를 조금만 바꿔도 0.72340 → 0.72280처럼..
여러 개의 데이터 포인트(배치 데이터)에 대한 손실을 구할 때는 각각의 데이터 포인트에서 발생한 손실을 모두 더한 뒤, 데이터의 전체 개수로 나누어 평균을 구하는 방식을 사용함. 이렇게 하면 데이터 개수가 늘어나더라도 손실 함수의 값이 비례해서 폭주하는 것을 막고 일관된 척도로 학습할 수 있음.여러 데이터 포인트(배치)에 대한 손실 함수데이터의 총 개수를 $N$, $n$번째 데이터의 $k$번째 값을 나타내기 위해 아래첨자 $nk$를 사용함.1. 평균 제곱 오차(MSE, 기존 SSE의 확장)기존 오차 제곱합(SSE)을 데이터 개수 $N$으로 나누어 평균화함. 수식 앞의 $\frac{1}{2}$는 역전파 과정에서 미분할 때 계산을 깔끔하게 만들기 위해 관습적으로 붙이는 상수임.$$E = \frac{1}{2N..
테일러 급수(Taylor Series)는 우리가 계산하기 어려운 복잡한 함수($\sin(x), e^x$ 등)를 덧셈과 곱셈으로 이루어진 '다항식'으로 변환하여 근사(Approximation)하는 수학적 기법임.컴퓨터(그리고 사람)는 본질적으로 덧셈, 뺄셈, 곱셈 나눗셈 같은 사칙연산만 할 수 있는데, 테일러 급수는 사칙연산만으로 해결할 수 없는 초월함수들을 어떻게 프로그래밍하고 계산해 내는지 보여주는 핵심적인 원리임. 어떻게 근사할까? (직관적 이해)어떤 함수 $f(x)$의 전체 모양을 모른다고 가정해보겠음. 하지만 특정 한 지점 $x = a$에서의 정보는 알고 있다고 할 때, 이 한 점에서의 정보를 바탕으로 주변의 모습을 유추해 나가는 것이 테일러 급수의 핵심임.0차 근사 (위치): $x = a$에서의..
1. 선형대수학이란?선형대수학은 벡터(숫자들의 묶음)와, 그 벡터들 사이의 "직선적인" 관계를 다루는 수학임. 여기서 "직선적"이라는 게 핵심인데, 두 가지만 허용한다는 뜻임.스칼라 곱: 벡터를 몇 배로 늘리거나 줄이기덧셈: 벡터끼리 더하기이 두 연산만 조합해서 만들 수 있는 모든 관계를 "선형(linear)"이라고 부름. 예를 들어 y = 2x + 3x_2 - x_3 같은 식은 선형이지만, y = x^2 이나 y = sin(x)는 선형이 아님. 왜 이게 중요하냐면, 직선·평면·초평면 같은 "반듯한" 도형은 전부 선형 관계로 표현되기 때문임.더보기1. 벡터란?아주 단순하게 말하면 벡터는 "크기"와 "방향"을 동시에 가진 화살표임. "어디서 시작하는가"보다 "어디로 얼마나 가는가(방향과 크기)"가 핵심임...