Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Bert
- Bart
- Self-attention
- 기아
- 데이터 구축
- RNN
- word2vec
- N2N
- 데이터 시각화
- Data Viz
- 딥러닝
- seaborn
- 2023 현대차·기아 CTO AI 경진대회
- Attention
- AI 경진대회
- N21
- passage retrieval
- AI Math
- nlp
- Ai
- dataset
- ODQA
- GPT
- matplotlib
- 현대자동차
- Transformer
- pyTorch
- mrc
- KLUE
- Optimization
Archives
- Today
- Total
쉬엄쉬엄블로그
딥러닝 학습방법 본문
728x90
이 색깔은 주석이라 무시하셔도 됩니다.
신경망을 수식으로 분해하기
- 비선형모델인 신경망(neural network)을 배워보자.
- 각 행벡터 $O_i$는 데이터 $\mathbf x_i$와 가중치 행렬 $W$ 사이의 행렬곱과 절편 $b$ 벡터의 합으로 표현된다고 가정하면 $O = XW + b$ 로 표현할 수 있다.
- 데이터를 모아놓은 행렬 $X$를 다른 벡터 공간으로 보내주는 가중치 행렬 $W$
소프트맥스 함수
- 모델의 출력을 확률로 해석할 수 있게 변환해주는 연산이다.
- softmax($o$) = $(\frac{exp(o_1)}{\sum^p_{k=1} exp(o_k)},...,\frac{exp(o_p)}{\sum^p_{k=1} exp(o_k)}$
- 출력 벡터 $o$에 softmax 합수를 합성하면 확률벡터가 되므로 특정 클래스 $k$에 속할 확률로 해석할 수 있다.
- 분류 문제를 풀 때 선형모델과 소프트맥스 함수를 결합하여 예측한다.
- 소프트맥스 함수가 지수함수를 사용하다보니 너무 큰 벡터가 들어오게 되면 오버플로우 현상이 발생할 수 있어서 방지하기 위해
np.max(vec, axis=-1, kimdims=True)
를 vec에서 빼준 다음에 적용 - 이렇게 하면 오버플로우 현상을 방지하면서 원래 소프트맥스와 똑같이 계산할 수 있음
- 학습하는 경우에는 소프트맥스 함수가 필요하지만 추론하는 경우에는 소프트맥스 함수가 굳이 필요하지 않고 원-핫 벡터로 만드는 함수만 필요하게 됨
- 소프트맥스 함수가 지수함수를 사용하다보니 너무 큰 벡터가 들어오게 되면 오버플로우 현상이 발생할 수 있어서 방지하기 위해
신경망을 수식으로 분해하기
- 신경망은 선형모델과 활성함수(activation function)를 합성한 함수이다.
- 소프트맥스는 출력물에 모든 값을 고려해서 출력하지만 활성함수는 다른 주소에 있는 출력값들을 모두 고려하지 않고 해당 주소에 있는 출력값만 가지고 계산함
- 활성함수는 벡터를 입력으로 받지 않고 하나의 실수 값만 입력으로 받음
- 이 활성함수를 이용해서 딥러닝에서는 선형모델에서 나온 출력물을 비선형모델로 변환시킬 수 있음
- 이렇게 변형시킨 벡터를 잠재 벡터 또는 히든 벡터라고 부르게 되고 뉴런이라고 부르게 됨
- 다층(multi-layer) 퍼셉트론(MLP)은 신경망이 여러층 합성된 함수이다.
- 활성함수를 씌울 때 각 벡터에 개별적으로 적용됨 (실수 값을 입력으로 받음)
- $\sigma(Z)$ : $Z$에 해당하는 모든 변수들에 $\sigma$를 씌운 행렬
- 순전파(forward propagation)는 주어진 입력이 들어왔을 때 출력물을 내뱉는 과정
활성함수란?
- $\mathbb R$(실수)위에 정의된 비선형(nonlinear) 함수로서 딥러닝에서 매우 중요한 개념이다.
- 활성함수를 쓰지 않으면 딥러닝은 선형모형과 차이가 없다.
- 시그모이드(sigmoid) 함수나 tanh 함수는 전통적으로 많이 쓰이던 활성함수지만 딥러닝에선 ReLU 함수를 많이 쓰고 있다.
- ReLU 함수 모양이 선형함수로 보이지만 전형적인 비선형함수로써 활성화함수로써 좋은 성질들을 가지고 있기 때문에 딥러닝 연산에서 굉장히 많이 쓰이고 있는 함수
왜 층을 여러개를 쌓는가?
- 이론적으로는 2층 신경망으로도 임의의 연속함수를 근사할 수 있다.
- 이를 universal approximation theorem이라고 부름
- 그러나 층이 깊을수록 목적함수를 근사하는데 필요한 뉴런(노드)의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적으로 학습이 가능하다.
- 층이 깊어지면 깊어질수록 근사하는데 적은 뉴런 수를 가지고 근사할 수 있음
(= 층이 깊어지면 깊어질수록 적은 파라미터로 훨씬 더 복잡한 함수를 표현할 수 있음) - 층이 깊으면 복잡한 함수를 근사할 수 있지만 최적화가 더 쉬운 것은 아님
- 복잡한 함수를 표현하려 할 수록 최적화는 훨씬 더 많은 노력이 필요해지고 층이 깊어지면 깊어질수록 딥러닝 모델은 학습하기 어려워질 수 있음
- 층이 깊어지면 깊어질수록 근사하는데 적은 뉴런 수를 가지고 근사할 수 있음
딥러닝 학습원리 : 역전파 알고리즘
- 딥러닝은 역전파(backpropagation) 알고리즘을 이용하여 각 층에 사용된 파라미터 ${\mathbf W^{(\mathscr l)},\mathbf b^{(\mathscr l)}}^L_{\mathscr l=1}$를 학습한다..
- 빨간색 화살표 : 각 층에서 계산된 그레디언트들을 아래 층으로 전달되는 과정
(저층에 있는 그레디언트 벡터를 계산할 때 위층에 있는 그레디언트 벡터가 필요함)
- 빨간색 화살표 : 각 층에서 계산된 그레디언트들을 아래 층으로 전달되는 과정
- 각 층 파라미터의 그레디언트 벡터는 윗층부터 역순으로 계산하게 된다.
- 연쇄법칙을 통해 그레디언트를 점점 아래 층으로 전달하면서 가중치를 업데이트
역전파 알고리즘 원리 이해하기
- 역전파 알고리즘은 합성함수 미분법인 연쇄법칙(chain-rule) 기반 자동미분(auto-differentiation)을 사용한다.
- back-propagation은 각 노드의 텐서 값을 저장해둬야 하기 때문에 forward-propagation보다 메모리 사용이 더 많음
예제 : 2층 신경망
- 2층 신경망의 역전파 알고리즘
출처: boostcourse 인공지능(AI) 기초 다지기(https://www.boostcourse.org/ai100/joinLectures/218531)
인공지능(AI) 기초 다지기
부스트코스 무료 강의
www.boostcourse.org
'부스트캠프 AI Tech 4기' 카테고리의 다른 글
딥러닝에서의 베이즈 통계학 (0) | 2023.05.06 |
---|---|
딥러닝에서의 통계학 (0) | 2023.05.05 |
딥러닝에서의 확률론 (0) | 2023.05.04 |
경사하강법 (0) | 2023.05.02 |
벡터와 행렬 (0) | 2023.05.01 |
Comments