Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ name: Deploy to GitHub Pages
on:
push:
branches: [main]
pull_request:
workflow_dispatch:

permissions:
Expand Down Expand Up @@ -40,6 +41,7 @@ jobs:

deploy:
needs: build
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
environment:
name: github-pages
Expand Down
34 changes: 34 additions & 0 deletions src/pages/posts/ai-animation-tools-2025-ko.md
Original file line number Diff line number Diff line change
@@ -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 보조 연재 만화까지는 수년이 아니라 수개월 남았다고 봐요.

## 앞으로의 전망

가장 기대되는 건 리얼타임 생성이에요 — 스토리보드를 그리는 만큼 빠르게 렌더링되는 애니메이션 말이죠. "아이디어"와 "볼 수 있는 결과물" 사이의 간격이 무너지고 있어요.

이 분야를 실험하고 계신다면 저와 비교해 보고 싶어요 — 푸터의 연락처 링크로 연락 주세요.
39 changes: 39 additions & 0 deletions src/pages/posts/building-my-first-ai-agent-ko.md
Original file line number Diff line number Diff line change
@@ -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% 스캐폴딩이에요. 지능은 진짜지만, 유용하게 만드는 건 그 주변의 엔지니어링입니다.

더 많은 실험이 준비 중이에요 — 따라오고 싶으시면 구독해 주세요.
20 changes: 20 additions & 0 deletions src/pages/posts/hello-world-ko.md
Original file line number Diff line number Diff line change
@@ -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가 시각 스토리텔링을 어떻게 바꾸고 있는지

관심 있으시다면 뉴스레터를 구독해 보세요. 다음 포스트에서 만나요!
108 changes: 108 additions & 0 deletions src/pages/posts/linear-regression-tutorial-ko.md
Original file line number Diff line number Diff line change
@@ -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라는 것은 모델이 대부분의 분산을 포착했다는 뜻이에요.
- 잔차가 대략 정규분포를 보이므로, 여기서는 모델 가정이 성립합니다.

다음에는 이를 다중 회귀로 확장하고, 직접 구현한 경사 하강법과 비교해 볼 예정입니다.
Loading