시험 준비 및 공부 기록 아카이브 용으로 작성하는 글입니다.
다소 내용이 정제되어 있지 않을 수 있습니다.
퍼셉트론
퍼셉트론: 1950년대에 제시된 초기 형태의 인공 신경망. 노드, 가중치, 층과 같은 새로운 개념을 도입하고 학습 알고리즘을 창시하는 데에 기여함. 오늘날 딥러닝을 포함한 현대 신경망은 이 퍼셉트론을 병령과 순차 구조로 결합해 만듦.

퍼셉트론은 입력층과 출력층을 가지지만 입력층은 연산을 하지 않으므로 퍼셉트론은 단일 층 구조라 부를 수 있음.
입력층의 i번째 노드는 $ \mathbf{x} = (x_1, x_2, \dots, x_d)^T $의 요소 $x_{i}$를 담당함.
$x_{0}$은 항상 1이 입력되는 바이어스 노드이며, 출력층은 한 개의 노드로 구성됨.
$i$번째 입력층 노드와 출력층을 연결하는 에지는 가중치 $w_{i}$를 가짐.
특정값과 가중치를 곱한 값을 모두 더해 $s$를 구한 뒤, 활성함수 $\tau$를 적용. 이때 $\tau$가 계단 함수이므로, 최종 출력 $y$는 1 또는 -1의 값을 가짐.
$$ y = \tau(s) \quad \because s = w_0 + \sum_{i=1}^{d} w_i x_i, \quad \tau(s) = \begin{cases} 1, & s \ge 0 \\ -1, & s < 0 \end{cases} $$

특징값과 가중치의 연산을 행렬로 표기하면
$$ s = \mathbf{w}^T \mathbf{x} + w_0, \quad \mathbf{x}=(x_1, x_2, \dots, x_d)^T, \mathbf{w}=(w_1, w_2, \dots, w_d)^T $$
여기서 바이어스 항을 벡터에 추가하면
$$ s = \mathbf{w}^T \mathbf{x}, \quad \mathbf{x}=(1, x_1, x_2, \dots, x_d)^T, \mathbf{w}=(w_0, w_1, w_2, \dots, w_d)^T $$
따라서 퍼셉트론의 동작을 $ y = \tau(\mathbf{w}^T \mathbf{x}) $ 식으로 나타낼 수 있음.

d차원에서의 결정 직선 $ d(\mathbf{x}) = w_1 x_1 + w_2 x_2 + \dots + w_d x_d + w_0 = 0 $을 통해 공간을 +1과 -1의 두 부분 공간으로 나눠 분류할 수 있음.
퍼셉트론의 학습
퍼셉트론의 매개변수를 $ \mathbf{w} = (w_0, w_1, w_2, \dots, w_d)^T $로 나타내거나 매개변수 집합을 $\Theta = \{\mathbf{w} \}$로 나타내 목적함수 $J(\mathbf{w})$, $J(\Theta)$를 설계함.
목적함수 $J(\mathbf{w})$는 0보다 크거나 같아야 하며, 최적의 $\mathbf{w}$에서는 $J(\mathbf{w})$의 값이 0이며, 틀리는 샘플이 많아질수록 $J(\mathbf{w})$이 커진다는 조건을 갖춰야 한다.
아래의 식은 위의 세 가지 조건을 만족하는 예시임. ($Y$는 $\mathbf{w}$가 틀리는 샘플의 집합)
$$ J(\mathbf{w}) = \sum_{\mathbf{x}_k \in Y} -y_k (\mathbf{w}^T \mathbf{x}_k) $$
가중치 갱신 규칙 $\Theta = \Theta - \rho g$를 적용하기 위해 그래디언트 $g$를 구하기 위해 위의 식을 편미분함.
$$ \frac{\partial J(\mathbf{w})}{\partial w_i} = \sum_{\mathbf{x}_k \in Y} \frac{\partial(-y_k(w_0 x_{k0} + w_1 x_{k1} + \dots + w_i x_{ki} + \dots + w_d x_{kd}))}{\partial w_i} = \sum_{\mathbf{x}_k \in Y} -y_k x_{ki} $$
$$ \frac{\partial J(\mathbf{w})}{\partial w_i} = \sum_{\mathbf{x}_k \in Y} -y_k x_{ki}, \quad i=0, 1, \dots, d $$
위의 편미분 결과를 $\Theta = \Theta - \rho g$에 대입하면
$$ w_i = w_i + \rho \sum_{\mathbf{x}_k \in Y} y_k x_{ki}, \quad i = 0, 1, \dots, d $$
이를 행렬로 간결하게 표기하면
$$ \mathbf{w} = \mathbf{w} + \rho \sum_{\mathbf{x}_k \in Y} y_k \mathbf{x}_k $$
위의 가중치 갱신 규칙을 적용해 학습 알고리즘을 정리할 수 있음.


만약 선형 분리가 불가능한 상황이라면 위의 알고리즘들은 무한 루프에 빠질 수 있음 -> until(quit)를 until(더 이상 개선이 없다면)으로 수정.

퍼셉트론은 선형 분류기이기 때문에 XOR 문제 등 선형 분리를 할 수 없는 케이스가 생김. -> 다층 퍼셉트론 도입
다층 퍼셉트론은 은닉층을 이용한 특징 공간 변환, 시그모이드 활성함수의 도입, 오류 역전파 알고리즘의 사용, 이 3가지 핵심 아이디어를 통해 선형 분류가 불가능한 상황을 극복해냄.
특징 공간 변환

퍼셉트론을 $d$개 사용하면 원래의 특징 공간 $\mathbf{x} = (x_1, x_2, \dots, x_d)^T$을 최대 $ 1 + \sum_{i=1}^{d} i $개의 공간으로 나눠 새로운 $d$차원 공간 $\mathbf{z} = (z_1, z_2, \dots, z_d)^T$로 변환할 수 있음. -> 선형 분리가 용이해짐.

새로운 특징 공간 $z$에서 선형 분리를 하는 퍼셉트론을 결합하면 다층 퍼셉트론이 됨.
활성함수

활성함수를 이용해 공간을 딱딱하게 분리하거나 부드럽게 분할할 수 있음. 계단함수는 영역을 점으로 변환하며, 계단함수를 제외한 활성함수들은 영역을 영역으로 변환함.

활성함수는 모두 1차 도함수 계산이 빠르다는 특징을 가지며, 신경망의 종류에 따라 주로 사용되는 활성함수가 다름.
퍼셉트론: 계단함수
다층 퍼셉트론: 로지스틱 시그모이드 or 하이퍼볼릭 탄젠트
딥러닝: ReLU
로지스틱 시그모이드와 하이퍼볼릭 탄젠트는 $a$가 커질수록 계단함수에 가까워짐.
다층 퍼셉트론의 구조 및 동작

다층 퍼셉트론은 $d+1$개의 입력 노드($d$: 특징의 개수), $p$개의 은닉 노드($p$: 하이퍼 매개변수), $c$개의 출력 노드($c$: 부류 개수)로 구성됨. $p$가 너무 크면 과잉적합, 너무 작으면 과소적합에 빠질 수 있음.
다층 퍼셉트론의 가중치는 행렬로 나타낼 수 있음.
$$ \mathbf{U}^l = \begin{pmatrix} u_{10}^l & u_{11}^l & \dots & u_{1i}^l \\ u_{20}^l & u_{21}^l & \dots & u_{2i}^l \\ \vdots & \vdots & \ddots & \vdots \\ u_{j0}^l & u_{j1}^l & \dots & u_{ji}^l \end{pmatrix} $$
$u_{ji}^l$은 $l-1$번째 은닉층의 $i$번 노드를 $l$번째 은닉층의 $j$번 노드와 연결하는 가중치로 일반화할 수 있으며, 이때 입력층을 0번째 은닉층, 출력층을 마지막 은닉층으로 간주함.

다층 퍼셉트론은 특징 벡터 $x$를 출력 벡터 $o$로 변환하는 하나의 복잡한 함수 $f(x)$로 간주할 수 있음.
$$ \mathbf{o} = \mathbf{f}_L(\dots \mathbf{f}_2(\mathbf{f}_1(\mathbf{x}))), \quad L \ge 4 $$
$L$이 4 이상이라면 딥러닝으로 간주됨.

은닉층은 특징 벡터를 분류에 유리한 새로운 특징 공간으로 변환하는 특징 추출기의 역할을 하며, 현대 기계 학습에선 이를 특징 학습이라 지칭함.
$j$번째 은닉 노드의 연산은 $z_j = \tau(zsum_j), \quad j = 1, 2, \dots, p$로 나타낼 수 있고, 이때 $zsum_j = \mathbf{u}_j^1 \mathbf{x}$이고 $\mathbf{u}_j^1 = (u_{j0}^1, u_{j1}^1, \dots, u_{jd}^1), \quad \mathbf{x}=(1, x_1, x_2, \dots, x_d)^T$임.
$k$번째 은닉 노드의 연산은 $z_k = \tau(osum_k), \quad k = 1, 2, \dots, c$로 나타낼 수 있고, 이때 $osum_k = \mathbf{u}_k^2 \mathbf{z}$이고 $\mathbf{u}_k^2 = (u_{k0}^2, u_{k1}^2, \dots, u_{kp}^2), \quad \mathbf{x}=(1, x_1, x_2, \dots, x_p)^T$임.
다층 퍼셉트론의 동작은 $o = \tau(U^2 \tau_h(U^1 x))$으로 나타낼 수 있음.
오류 역전파를 위한 목적함수의 정의

모델이 얼마나 잘못 예측했는지를 측정하는 기준으로 평균 제곱 오차(Mean Squared Error, MSE)를 사용함.
MSE 계산 방식엔 데이터 샘플 하나에 대한 오차를 계산하는 온라인 모드와 여러 개의 데이터 샘플에 대한 오차 평균을 계산하는 배치 모드가 있음.
$$
\left.
\begin{aligned}
\text{온라인 모드: } e &= \frac{1}{2} \| \mathbf{y} - \mathbf{o} \|_2^2 \\
\text{배치 모드: } e &= \frac{1}{2n} \sum_{i=1}^{n} \| \mathbf{y}_i - \mathbf{o}_i \|_2^2
\end{aligned}
\right\}
$$
2층 퍼셉트론의 경우 $\Theta = \{ \mathbf{U}^1, \mathbf{U}^2 \}$이므로 위의 식을 $J(\Theta) = \frac{1}{2} \| \mathbf{y} - \mathbf{o}(\Theta) \|_2^2$으로 다시 작성할 수 있음.
$J(\Theta) = J(\{\mathbf{U}^1, \mathbf{U}^2 \})$의 최저점을 찾기 위해 경사 하강법을 사용함.
$$
\left.
\begin{aligned}
\mathbf{U}^1 &= \mathbf{U}^1 - \rho \frac{\partial J}{\partial \mathbf{U}^1} \\
\mathbf{U}^2 &= \mathbf{U}^2 - \rho \frac{\partial J}{\partial \mathbf{U}^2}
\end{aligned}
\right\}
$$

오류 역전파
출력층의 오류를 역방향으로 전파해 그래디언트를 계산하는 알고리즘.

위의 식들을 정리하면
$$ \delta_k = (y_k - o_k)\tau'(osum_k), \quad 1 \le k \le c $$
$$ \frac{\partial J}{\partial u_{kj}^2} = \Delta u_{kj}^2 = -\delta_k z_j, \quad 0 \le j \le p, 1 \le k \le c $$
$$ \eta_j = \tau'(zsum_j) \sum_{q=1}^{c} \delta_q u_{qj}^2, \quad 1 \le j \le p $$
$$ \frac{\partial J}{\partial u_{ji}^1} = \Delta u_{ji}^1 = -\eta_j x_i, \quad 0 \le i \le d, 1 \le j \le p $$
4개의 식으로 정리됨 -> 한 번 계산한 오차를 재활용할 수 있음.

위의 알고리즘 방식을 응용한 데이터 집합에서 $t$개의 샘플을 뽑아 처리하는 미니배치 스토캐스틱 경사 하강법을 이용하면 수렴이 빨라지고 GPU의 병렬 처리에도 유리해짐 -> 현대 기계학습의 표준처럼 사용됨


추론 과정에선 순전파만을 거치기 때문에 빠르게 결과를 얻을 수 있음.

역전파의 계산량은 순전파의 계산량과 비교했을 때 약 1.5~2배 -> 역전파 과정의 계산 부담이 크지 않고, 매우 빠름.
학습 알고리즘은 순전파 + 역전파 과정을 수많은 데이터 샘플$(n)$에 대해 여러 에포크$(q)$만큼 반복하기 때문에 시간복잡도는 $ O((dp + pc)nq)$.
'학교 공부 > 인공지능' 카테고리의 다른 글
| 6. 컨볼루션 신경망 (0) | 2025.10.27 |
|---|---|
| 4. 딥러닝 주요 최적화 방법 (0) | 2025.10.07 |
| 3-2. 기계학습 수학 - 확률과 통계 (0) | 2025.10.06 |
| 3-1. 기계학습 수학 - 선형대수 (0) | 2025.10.06 |
| 2. 기계학습 (0) | 2025.10.06 |