반응형
1. 신경망
- 신경망은 선형모델과 활성함수를 합성한 함수이다.
- 선형함수로 출력된 값을 활성함수로 씌운 값이 잠재벡터(뉴런)이라고 한다.
- 이를 이용한 뉴런 네트워크를 perceptron이라고 한다.
- 다층 퍼셉트론은 된 함수이다.
2. 소프트맥스
- 소프트맥스 함수는 모델의 출력을 확률로 해석할 수 있게 변환해 주는 연산이다.
- 분류 문제를 풀 때 선형모델과 소프트맥수 함수를 결합하여 예측한다.
3. 활성함수
- 활성함수는 비선형함수로서 선형모델로 나오는 출력물 원소에 적용하는 것
- 소프트맥스는 출력물 모든 것을 고려한다면, 활성함수는 특정 주소에 있는 값만으로 출력하기에 실수값만 받음
- 이렇게 딥러닝에서는 활성함수를 통해 선형모델의 결과를 비선형으로 바꿀 수 있고 변경시킨 벡터를 잠재벡터라고 부르고 “뉴런”이라고 부르고 이런 네트워크를 뉴런네트워크라고 한다.
- 활성함수는 R위에 정의된 비선형(nonlinear)함수로서 딥러닝에서 매우 중요한 개념이다.
- 활성함수를 쓰지 않으면 딥러닝은 선형모형과 차이가 없다.
- 시그모이드 함수나 tanh 함수는 전통적으로 많이 쓰이던 활성함수지만 딥러닝에선 ReLU 함수를 많이 쓰고 있다.
4. 역전파 알고리즘
- 역전파 알고리즘은 합성함수 미분법인 연쇄법칙 기반 자동미분을 사용한다.
- 각 층 파라미터의 그레디언트 벡터는 윗층부터 역순으로 계산하게 된다.
5. CNN
- Convolution 연산은 커널을 입력벡터상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조
- 수학적 의미는 신호를 커널을 이용해 국소적으로 증폭 또는 감소시켜 정보를 추출 또는 필터링하는 것
- 1차원 뿐만 아니라 다양한 차원에서 계산 가능하다.
- 2차원 연산에서는 성분곱을 통해 자리수마다 곱해주고 더해준다.
- 커널은 바뀌지 않고 입력에 대한 값만 패드만큼 움직여가면서 바뀐다.
- 채널이 여러개인 2차원 입력의 경우 2차원 Convolution을 채널 개수만큼 적용한다고 생각해야한다.
- 3차원부터는 행렬이 아닌 텐서라고 부른다
- 채널이 여러개인 경우 커널의 채널 수와 입력의 채널수가 같아야한다.(채널개수 = 커널개수)
- 텐서를 직육면체 블록으로 이해하면 좀 더 이해하기 쉽다.
- 커널과 입력개수가 같다면 출력은 C-C+1로 1이 나온다
- 그렇다면 출력이 여러개의 채널이 나오게 하고싶다면? 커널을 여러개 만들면 된다!
- 출력을 O_C개 만들고 싶다면 커널도 O_c개를 만들면 된다
6. RNN
- 소리,문자열, 주가 등의 데이터를 시퀀스(sequence) 데이터로 분류한다.
- 시퀀스 데이터는 독립동등분포 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률분포도 바뀌게 된다.
- 함부로 위치를 바꿀 수 없다! , 순차적으로 들어오는 정보에 대한 처리가 필요
- 과거의 모든 정보를 이용할 필요는 없다
- 시퀀스 데이터를 다루기 위해서는 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요하다.
- 직전 정보랑 그걸 제외한 나머지정보를 잠재변수로 인코딩해서 활용하는것이 잠재 AR모델
- 직전 정보랑 잠재정보 2가지만으로 예측이 가능해 길이가 가변적이지 않고 고정되어서 모델링을 할 수 있다.
- 잠재변수H를 어떻게 인코딩하나요? 이게 바로 RNN!
- 가장 기본적인 RNN모형은 MLP와 유사한 모양이다
- 하지만, 이 모델은 과거의 정보를 다룰 수 없어 현재의 정보만으로 예측해야한다. 따라서, 과거의 정보를 잠재변수로 담을 수 없다
- 그렇다면? RNN은 이전 순서의 잠재변수와 현재의 입력을 활용하여 모델링한다
- t에 따라서 변하는 것은 잠재변수와 입력데이터!
- RNN의 역전파는 끝에서 처음까지 순서대로 타고타고 들어간다.
- 다음시점에 잠재변수에 들어오는 그레디언트 벡터와 출력에서 들어오는 그레디언트 벡터
- 시퀀스 길이가 길어지는 경우 BPTT를 통하 역전파 알고리즘의 계산이 불안정해지므로 길이를 끊는 것이 필요하다.
- 이런 문제들 때문에 Vanilla RNN은 길이가 긴 시퀀스를 처리하는데 문제가 있다.
반응형
'Study > AI' 카테고리의 다른 글
[Pytorch] 모듈과 데이터셋 + 데이터로더 (0) | 2023.03.19 |
---|---|
[Pytorch] 파이토치 기초 (0) | 2023.03.19 |
[Math] 경사하강법 (0) | 2023.03.12 |
[Math] 벡터와 행렬 (0) | 2023.03.12 |
[AI] 넘파이와 판다스 (1) | 2023.03.12 |