MLP를 행렬과 벡터로 나타내기
첫번째 히든 레이어까지만 볼 때
$$f_1(\begin{bmatrix} x_{1} & x_{2}\end{bmatrix} \begin{bmatrix} w_{1} & w_{3} & w_{5} \\ w_{2} & w_{4} & w_{6}\end{bmatrix}+\begin{bmatrix}b_{1} & b_{2} & b_{3}\end{bmatrix})$$
두번째 히든 레이어까지 보면,
$$f_2(f_1(\begin{bmatrix} x_{1} & x_{2}\end{bmatrix} \begin{bmatrix} w_{1} & w_{3} & w_{5} \\ w_{2} & w_{4} & w_{6}\end{bmatrix}+\begin{bmatrix}b_{1} & b_{2} & b_{3}\end{bmatrix}) \textbf{W}_2+\textbf{b}_2)$$
\(\textbf{W}_2\) 와 \(\textbf{b}_2\)는 2번째 레이어의 웨이트와 바이어스 행렬이다.
즉, MLP는 행렬을 곱하고 바이어스를 더하고 Activation Function을 적용해주는 것을 반복적으로 해주는 것이다.
여기서, Activation Function이 Linear 함수이면 층을 깊게 쌓아도 의미가 없다. 위 식에서 만약 Activation Fucntion이 \(f(x)=x\) 처럼 Linear Function이라 가정하고 전개해보면,
$$f_2(f_1(\textbf{x} \textbf{W}_1 + \textbf{b}_1) \textbf{W}_2 + \textbf{b}_2) ) = \textbf{x}\textbf{W}_1\textbf{W}_2 + \textbf{b}_1 \textbf{W}_2 + \textbf{b}_2$$
위처럼 되면 \( \textbf{W}_1\textbf{W}_2\)를 그냥 하나의 변수로 두고 학습을 하는 것이나 마찬가지가 된다(오히려 안좋음).
따라서 Activation Function은 반드시 Non-Linear Function을 써야 한다.
(linear -> non-linear -> linear -> non-linear 하는 것도 마찬가지)
Backpropagation
혁펜하임의 설명보다 아래 블로그가 10만배 좋다
https://www.3blue1brown.com/lessons/backpropagation-calculus
3Blue1Brown - Backpropagation calculus
The math of backpropagation, the algorithm by which neural networks learn.
www.3blue1brown.com
위와 같이 생긴 신경망이 있다고 하자. \(z\)에 시그모이드 함수와 같은 Activation Function을 취한 결과 값이 \(a\)이다. \(C_0\)와 \(y\)의 차이가 최종 Loss라고 하자. 우리가 원하는 것은 아래 그림 처럼 w의 변화에 따른 Loss값의 변화량이다.
이를 식으로 나타내면 다음과 같다.
\(\frac{\partial C_0}{\partial w^{L}}\)을 바로 구할 수 없기 때문에 Chain Rule를 사용해서 구해야 한다.
각각의 미분을 구하면 다음과 같다(여기서 Activation Function은 sigmoid function, loss function은 MSE)
위의 각각의 미분 값을 다 합쳐주면 결국,
참고로 시그모이드 함수의 미분은,
그러나, 우리는 위 그림처럼 레이어가 1개가 아니고 여러개이다.
당황하지 말고 줄기를 따라서 하나씩 미분해서 곱해주면 된다.
'인공지능 > [강의] 혁펜하임 딥러닝 강의' 카테고리의 다른 글
Chapter 6. 인공 신경망, 그 한계는 어디까지인가? (0) | 2024.12.10 |
---|---|
Chapter 5. 이진 분류와 다중 분류 (0) | 2024.12.01 |
Chapter 3. 인공신경망이란? (0) | 2024.11.26 |
Chapter 2. 왜 현재 AI가 가장 핫할까? (1) | 2024.11.25 |
Chapter1. 딥러닝을 위한 필수 기초 수학-2 (0) | 2024.11.17 |