네이버 부스트코스에서 제공하는 임성빈 님의 강의를 참고하여 작성된 포스팅입니다.
신경망 (neural network)
지난 번에 다룬 포스팅에서는 선형회귀 분석에 대해 간략하게 다뤘었다.
신경망은 이와 달리 비선형적인 모델이다.
- 선형모델 : 계수들이 선형결합의 관계에 있을 때의 모델
- 비선형 모델 : 어떤 변형을 거쳐도 파라미터를 선형 결합으로 표현할 수 없는 모델
- ex. sigmoid를 거친 값은 선형 결합으로 표현 불가
- sigmoid는 이후 activation function에서 따로 다룰 예정이다
비선형 모델은 어떤 이점을 가지는가?
- 신경망의 표현력을 높일 수 있다
- 현실 세계 대부분의 문제는 비선형이므로, 문제 풀이에 더 유리하다
- 심층 신경망
- 선형 함수의 경우 여러 개의 레이어를 통과해도 결국 하나의 선형 결합으로 표현됨
- 심층 신경망을 쌓는 의미가 희석된다
왜 심층 신경망을 만들어야 할까?
- 깊은 신경망을 쌓으면 점진적으로 더욱 복잡하고 추상적인 특징을 학습
- 단일 레이어의 신경망은 선형 변환만 수행할 수 있지만, 여러 개의 레이어를 쌓음으로써 더 복잡한 비선형 변환을 학습 -> 더 복잡한 함수 근사 가능
- 더 많은 데이터 패턴을 학습하고 더 정확하게 모델링할 수 있음
- 이론적으로는 2층 신경망으로도 임의의 연속함수 근사 가능 (=universal approximation theorem)
- 층이 깊을수록 목적 함수를 근사하는 데 필요한 뉴런의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적 학습이 가능
신경망을 수식으로 분해해보자
신경망을 간단하게 수식으로 나타내면 다음과 같다.
O = X*W + b
- O : 출력 (nxp)
- X : 입력 = 데이터 (nxd)
- W : 가중치 (dxp)
- b : 절편 (nxp)
이를 행렬 형태로 나타내면 다음과 같다.
분류 태스크에 적용하기 위해, 출력 벡터 O에 softmax를 합성해 확률벡터를 만든다
- softmax
각각의 행벡터를 확률값으로 변환 -> 해당 행벡터가 특정 클래스 k에 속할 확률 해석 가능
다층 퍼셉트론 (MLP)
활성 함수 (Activation function)
신경망 모델도 결국 비선형화를 시켜주는 함수를 거치지 않으면 선형 계산을 여러 번 한 것에 불과하다.
따라서 깊은 신경망을 쌓기 위해서는 비선형화 진행이 필수적이다.
이렇게 비선형화를 진행해주는 함수를 신경망에서는 활성 함수라고 지칭한다.
- 활성함수 예시
순전파 (forward propagation)
MLP에서 순차적으로 신경망이 계산되는 과정을 알아보자.
- 다층 퍼셉트론 구조도
역전파 (Back propagation)
딥러닝의 가장 큰 이점 중 하나
학습을 반복할 때마다 역전파 알고리즘을 이용해 각 층의 파라미터 (W, b)를 학습할 수 있다!
즉, 문제를 풀이하기 위한 최적 함수에 점점 가까워지는 것이다.
역전파는 순전파의 진행 방향과 반대순서로 그래디언트 벡터를 전달한다.
손실함수 L에 대해, dL / dW 를 구하는 것이 목표이다.
계산 시에는 합성함수 미분법인 Chain-rule 기반 자동 미분을 사용한다.
chain rule
y에 대한 z의 미분값, x에 대한 y의 미분값을 구하면 x에 대한 z의 미분값을 구할 수 있다
다음과 같은 수식이 있다고 가정하자.
chain rule에 따라, x에 대한 z의 미분값은 다음과 같이 계산된다.
이제 직접 2층 신경망의 역전파 알고리즘을 계산해보자!
여기서 dL / dW(1) 의 값을 구해보자.
chain rule을 이용해 수식을 나타내면 다음과 같다.
이를 계산하기 위해, 구성하는 각각의 값을 구해보자.
'NLP > AI 이론' 카테고리의 다른 글
다양한 디코딩 전략 : model.generate()에 관한 고찰 (0) | 2024.08.08 |
---|---|
[AI Math] 기본 확률론 정리 (0) | 2024.04.16 |
[AI Math] 경사하강법 (1) | 2024.01.28 |
[AI Math] 벡터와 행렬의 개념 (1) | 2024.01.28 |
[Python] NumPy & Pandas (1) | 2024.01.28 |