diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 06bd8eb..31843c5 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -3,6 +3,7 @@ name: Deploy to GitHub Pages on: push: branches: [main] + pull_request: workflow_dispatch: permissions: @@ -40,6 +41,7 @@ jobs: deploy: needs: build + if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest environment: name: github-pages diff --git a/src/pages/posts/ai-animation-tools-2025-ko.md b/src/pages/posts/ai-animation-tools-2025-ko.md new file mode 100644 index 0000000..4519278 --- /dev/null +++ b/src/pages/posts/ai-animation-tools-2025-ko.md @@ -0,0 +1,34 @@ +--- +layout: '../../layouts/Post.astro' +title: '2025년 AI 애니메이션의 현재' +description: '현재 AI 애니메이션 환경 둘러보기 — 비디오 모델, 파이프라인 도구, 그리고 만화 스타일 생성의 행방.' +date: '2025-03-10' +tags: ['animation', 'movie', 'manga'] +--- + +AI 애니메이션은 "기괴한 호기심"에서 "실제로 프로덕션에 쓸 수 있는 수준"으로 무서우리만큼 빠르게 발전했어요. 현재 환경을 제 나름대로 정리해 봤습니다. + +## 비디오 생성 모델 + +핵심은 일관성입니다. 1년 전만 해도 캐릭터가 프레임 사이에서 모습이 바뀌었어요. 요즘 모델은 샷 간 캐릭터 정체성을 유지하는데, 이게 데모와 도구의 차이입니다. + +## 파이프라인이 바뀌고 있다 + +기존 애니메이션 파이프라인이 재구성되고 있어요: + +| 단계 | 현재 AI의 역할 | +|---|---| +| 스토리보딩 | 완전 AI 보조 | +| 키프레임 | 부분 자동화 | +| 인비트위닝 | 거의 해결됨 | +| 합성(컴포지팅) | 대부분 수동 | + +## 만화 스타일 생성 + +이 부분이 가장 야생적이에요. 만화의 패널 간 일관성은 아직 가장 어려운 문제입니다 — 여러 페이지에 걸쳐 캐릭터를 온모델로 유지하려면 강력한 레퍼런스 시스템이나, LoRA로 학습된 커스텀 캐릭터가 필요하죠. 하지만 발전 속도를 보면 완전 AI 보조 연재 만화까지는 수년이 아니라 수개월 남았다고 봐요. + +## 앞으로의 전망 + +가장 기대되는 건 리얼타임 생성이에요 — 스토리보드를 그리는 만큼 빠르게 렌더링되는 애니메이션 말이죠. "아이디어"와 "볼 수 있는 결과물" 사이의 간격이 무너지고 있어요. + +이 분야를 실험하고 계신다면 저와 비교해 보고 싶어요 — 푸터의 연락처 링크로 연락 주세요. diff --git a/src/pages/posts/building-my-first-ai-agent-ko.md b/src/pages/posts/building-my-first-ai-agent-ko.md new file mode 100644 index 0000000..6ee9a99 --- /dev/null +++ b/src/pages/posts/building-my-first-ai-agent-ko.md @@ -0,0 +1,39 @@ +--- +layout: '../../layouts/Post.astro' +title: '첫 AI 에이전트 만들기: 배운 점들' +description: '도구 사용이 가능한 자율 AI 에이전트를 만들면서 배운 것들 — 계획 루프, 메모리, 그리고 실패 모드.' +date: '2025-02-02' +tags: ['agents', 'llm'] +--- + +드디어 첫 번째 완전 자율 AI 에이전트를 만들었어요. 기대만큼이나 겸손해지는 경험이었죠. 제가 배운 점을 공유할게요. + +## 계획 루프가 모델보다 중요하다 + +저는 처음에 단순한 "루프 안의 LLM" 방식으로 시작했어요 — 프롬프트를 보내고, 행동을 받아 실행하고, 반복하는 방식이죠. 가끔은 잘 됐어요. 전환점은 **명시적 계획**을 추가했을 때였어요. 에이전트가 행동하기 전에 단계별 계획을 먼저 적게 하고, 도구 호출이 끝날 때마다 그 계획을 수정하게 만든 거죠. + +```python +while not task_complete: + plan = llm("Given the goal and current state, what's the plan?") + action = llm("Execute the next step of the plan.") + result = tools.execute(action) + memory.append(action, result) +``` + +## 메모리는 보기보다 어렵다 + +단기 메모리(현재 대화)는 쉬워요. 어려운 건 **장기 메모리**예요 — 세션을 넘어 무엇을 기억할 가치가 있는지 판단하는 것이죠. 저는 결국 간단한 3계층 구조로 정리했어요: + +1. **스크래치패드** — 현재 작업의 모든 것 +2. **에피소딕** — 과거 도구 실행의 요약 +3. **시맨틱** — 정제된 사실들을 담은 벡터 스토어 + +## 주의해야 할 실패 모드 + +- **루프 중독** — 에이전트가 같은 실패하는 행동을 무한 반복하는 것 +- **환각된 도구 출력** — 실제로 일어나지 않은 결과를 "기억"하는 것 +- **범위 확장** — 단순한 작업이 40단계짜리 대작으로 불어나는 것 + +정리하자면: 에이전트는 20% 모델, 80% 스캐폴딩이에요. 지능은 진짜지만, 유용하게 만드는 건 그 주변의 엔지니어링입니다. + +더 많은 실험이 준비 중이에요 — 따라오고 싶으시면 구독해 주세요. diff --git a/src/pages/posts/hello-world-ko.md b/src/pages/posts/hello-world-ko.md new file mode 100644 index 0000000..8aab1f6 --- /dev/null +++ b/src/pages/posts/hello-world-ko.md @@ -0,0 +1,20 @@ +--- +layout: '../../layouts/Post.astro' +title: '안녕하세요: 이 블로그를 시작한 이유' +description: '이 블로그가 무엇에 관한 것인지 짧게 소개합니다 — LLM, 에이전트, 영화, 애니메이션, 만화를 아우르는 저의 AI 노트북입니다.' +date: '2025-01-15' +tags: ['meta'] +--- + +환영합니다! 새 블로그의 첫 번째 포스트입니다. + +저는 한동안 AI에 푹 빠져 있었어요 — 논문 읽기, 새로 나온 모델 테스트, 에이전트 프로토타입 만들기, 그리고 AI가 만들어내는 영화·애니메이션·만화의 폭발을 지켜보면서요. + +이 사이트는 제가 모아두는 노트가 될 겁니다. 이런 주제의 글을 쓸 예정이에요: + +- **LLM** — 새로운 릴리스, 프롬프트 엔지니어링, 평가, 도구 +- **AI 에이전트** — 자율 워크플로, 멀티 에이전트 시스템 +- **AI 영화 & 애니메이션** — 도구와 창작 실험 +- **AI 만화** — AI가 시각 스토리텔링을 어떻게 바꾸고 있는지 + +관심 있으시다면 뉴스레터를 구독해 보세요. 다음 포스트에서 만나요! diff --git a/src/pages/posts/linear-regression-tutorial-ko.md b/src/pages/posts/linear-regression-tutorial-ko.md new file mode 100644 index 0000000..92243a7 --- /dev/null +++ b/src/pages/posts/linear-regression-tutorial-ko.md @@ -0,0 +1,108 @@ +--- +layout: '../../layouts/Post.astro' +title: "선형 회귀 튜토리얼: 데이터에서 적합까지" +description: "scikit-learn을 활용한 실습형 선형 회귀 walkthrough — 합성 데이터, 모델 학습, 결과에 대한 시각적 분석." +date: "2025-04-05" +tags: ["tutorial", "machine-learning", "notebook"] +--- +# Linear Regression from Scratch + +이 튜토리얼에서는 scikit-learn으로 간단한 선형 회귀 모델을 만들고, 결과를 시각화하고, 모델이 무엇을 학습했는지 이해해 봅니다. 이 노트북은 블로그 포스트 역할도 겸해요 — 여기에 보이는 모든 것, 플롯을 포함해서, 노트북 자체에서 생성된 것입니다. + +## 데이터 생성하기 + +선형 관계에 약간의 노이즈를 더한 합성 데이터셋을 만들어, 모델의 적합 결과를 실제 정답(ground truth)과 비교할 수 있게 합니다. + + +```python +import numpy as np +import matplotlib.pyplot as plt +from sklearn.linear_model import LinearRegression +from sklearn.model_selection import train_test_split + +rng = np.random.RandomState(42) +X = 2 * rng.rand(100, 1) +y = 4 + 3 * X.ravel() + rng.randn(100) * 0.8 + +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) +print(f'Train samples: {len(X_train)}, Test samples: {len(X_test)}') +``` + + Train samples: 80, Test samples: 20 + + +## 모델 학습하기 + +이제 ordinary least squares 회귀를 학습하고, 학습된 파라미터를 확인합니다. + + +```python +model = LinearRegression() +model.fit(X_train, y_train) + +print(f'Intercept: {model.intercept_:.3f}') +print(f'Slope: {model.coef_[0]:.3f}') +print(f'R² score on test set: {model.score(X_test, y_test):.3f}') +``` + + Intercept: 4.114 + Slope: 2.839 + R² score on test set: 0.874 + + +## 적합 결과 시각화하기 + +아래 플롯은 학습 데이터, 회귀선, 그리고 데이터를 생성할 때 사용한 실제 정답 선을 보여줍니다. 노이즈가 있음에도 적합이 얼마나 가까운지 확인해 보세요. + + +```python +fig, ax = plt.subplots(figsize=(8, 5)) +ax.scatter(X_train, y_train, alpha=0.6, label='Training data') +x_line = np.linspace(0, 2, 100).reshape(-1, 1) +ax.plot(x_line, model.predict(x_line), color='crimson', linewidth=2, label='Regression fit') +ax.plot(x_line, 4 + 3 * x_line.ravel(), color='gray', linestyle='--', linewidth=1.5, label='Ground truth') +ax.set_xlabel('x') +ax.set_ylabel('y') +ax.legend() +ax.set_title('Linear Regression Fit') +plt.tight_layout() +plt.show() +``` + + + +![png](/notebook-assets/linear-regression-tutorial/linear-regression-tutorial_7_0.png) + + + +## 잔차 분석 + +잔차의 히스토그램은 오차가 대략 정규분포를 따른다는 것을 확인하는 데 도움이 됩니다 — 선형 회귀의 핵심 가정 중 하나예요. + + +```python +residuals = y_test - model.predict(X_test) + +fig, ax = plt.subplots(figsize=(8, 4)) +ax.hist(residuals, bins=15, color='steelblue', edgecolor='white') +ax.axvline(0, color='crimson', linestyle='--') +ax.set_xlabel('Residual') +ax.set_ylabel('Count') +ax.set_title('Distribution of Residuals') +plt.tight_layout() +plt.show() +``` + + + +![png](/notebook-assets/linear-regression-tutorial/linear-regression-tutorial_9_0.png) + + + +## 핵심 정리 + +- 학습된 파라미터(절편 ≈ 4, 기울기 ≈ 3)가 데이터에 심어 둔 실제 관계를 꽤 정확히 복원했습니다. +- 테스트 세트에서 R²가 약 0.9라는 것은 모델이 대부분의 분산을 포착했다는 뜻이에요. +- 잔차가 대략 정규분포를 보이므로, 여기서는 모델 가정이 성립합니다. + +다음에는 이를 다중 회귀로 확장하고, 직접 구현한 경사 하강법과 비교해 볼 예정입니다.