yoonene.log
로그인
yoonene.log
로그인
[Boostcamp 1주차] AI Math - 4
yoonene
·
2022년 1월 21일
팔로우
0
math
부스트캠프 AI Tech
학습 정리
0
Boostcamp AI Tech
목록 보기
5/27
CNN
Convolution 연산
MLP
각 잠재변수에 대응하는 가중치 행이 필요함.
i가 바뀌면 가중치도 바뀜.
Convolution 연산
MPL와 달리 고정된 커널을 사용하여 parameter 수를 확 줄임.
고정된 커널을 입력벡터 상에서 움직여가며 연산
따라서 i가 바뀌어도 가중치 행렬이 변하지 않음 (translation invariant)
선형변환
신호를 커널을 이용해 국소적(local)으로 증폭 또는 감소시켜 정보를 추출 또는 필터링.
Convolution이라고 사용되고 있지만 사실 cross-correlation을 사용하여 연산.
다양한 차원에서 계산 가능
ex) 1D - 음성, 텍스트 / 2D - 흑백 영상 / 3D - 컬러 영상
2차원 Convolution 연산
1차원 Convolution에서 커널을 입력벡터에서 한 칸씩 이동하던 것과 달리,
입력행렬에 해당하는 데이터에서 x,y 방향으로 한 칸씩 이동하며 연산
i, j가 고정된 상황에서 컨볼루션의 위치에 해당하는 p, q를 각각 움직여가며 계산.
p, q -> (1,1), (1,2), (2,1), (2,2) : 커널의 위치 좌표
입력 크기(H,W)와 커널 크기(Kh,Kw)를 알면 출력 크기(Oh,Ow)를 예측할 수 있음.
ex) 입력 크기: 28x28, 커널 크기 : 3x3 => 출력 크기 : 26x26
3차원
컬러 이미지처럼 여러개의 채널로 이루어진 2타원 입력의 경우, 2차원 Convolution을 채널 개수만큼 적용.
입력의 채널 수 == 커널의 채널 수
3차원부터는 '행렬'이 아니라 'Tensor'
커널 텐서와 입력 텐서의 수가 같으면 출력의 채널은 1임
여러 채널의 출력 텐서를 출력하고 싶다면 커널 텐서를 여러개 쓰면 됨.
C 채널의 출력 텐서를 원해 --> 커널 텐서 C개
즉, 커널의 개수로 출력의 채널 조절한다
Convolution 연산의 역전파
Convolution 연산은 커널이 모든 입력데이터에 공통으로 적용되기 때문에 역전파 계산 시에도 똑같이 Convolution 연산이 나옴
즉 Convolution 연산에 미분해도 Convolution 연산이 나온다.
그레디언트에 대한 컨볼루션 연산으로 똑같이 나오게 됨.
각 커널값에 대해 위와 같이 역전파가 계산됨.
RNN
Sequence data
소리, 문자열, 주가 등의 데이터
시계열 데이터는 시간 순서에 따라 나열된 데이터로 시퀀스 데이터에 속함.
독립동등분포(i.i.d) 가정을 잘 위배하므로 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률분포도 변함.
ex) 개가 사람을 물었다 --> 사람이 개를 물었다. : 의미 변질
Sequence data 다루는 법
이전 시퀀스까지의 정보를 가지고 발생할 데이터의 확률분포를 다루기 위해 조건부확률을 이용하는게 기본적
과거의 모든 정보가 필요한 것은 X
길이가 가변적인 데이터를 다룰 수 있는 모델 필요
그런데 고정된 길이만큼의 시퀀스만 사용하는 경우 자기회귀모델(AR)라고 함.
고정된 길이를 뭘로 할지, 과거의 정보를 얼마나 쓸지 등 사전에 결정할 것이 많은 문제
=> 잠재자기회귀모델
잠재자기회귀모델 (잠재 AR 모델)
Ht : 잠재변수
고정된 길이의 데이터로 모델링 가능, 과거의 모든 데이터 활용 가능 등..
과거의 잠재변수를 어떻게 인코딩할지 선택하는 문제가 있음.
=> Recurrent Neural Network (순환신경망)
Recurrent Neural Network
순전파
가중치 행렬 3개
입력데이터를 선형모델을 통해 잠재변수로 인코딩한 Wx(1)
이전 시점의 잠재변수로부터 정보를 받아서 현재 시점의 잠재변수로 인코딩해주는 Wh(1)
이렇게 만든 잠재변수 Ht를 출력으로 만들어주는 W(2)
=> t에 따라 변하지 않음!
t에 따라 변하는 것: 잠재변수 H와 입력 데이터 x 뿐
이 가중치 행렬들은 각각의 t시점에서 동일하게 활용되어 모델링
역전파
Backpropagation Trough Time (BPTT)
: 잠재변수의 연결그래프에 따라 순차적으로 계산
잠재변수에 들어오는 그레디언트는 2개
다음 시점에서의 잠재변수에서 들어오는 그레디언트 벡터
출력에서 들어는 그레디언트 벡터
이 그레디언트 벡터를 이전 시점의 잠재변수와 입력 데이터에 전달, 반복하여 학습
시퀀스 길이가 길어지는 경우
BPTT
를 모든 t 시점에 대해서 적용하면 그레디언트가 0으로 줄어드는 기울기 소실의 문제가 생김.
즉 과거로 갈수록 그레디언트가 0에 가까워지면 과거 정보를 유실하게 되는 문제 발생
=> 해결법 :
truncated BPTT
truncated BPTT
모든 t 시점에서 그레디언트를 전달하지 않고 특정 블럭에서 끊고 나눠서 전달하는 방식으로 Gradient Vanishing 해결
하지만 오늘날엔 이러한 긴 시퀀스의 그레디언트 소실 문제를 해결하기 위해 기본적인 RNN 모델을 사용하지 않고 LSTM, GRU를 사용함.
yoonene
NLP Researcher / Information Retrieval / Search
팔로우
이전 포스트
[Boostcamp 1주차] AI Math - 3
다음 포스트
[Boostcamp AI Tech] 1주차 회고
0개의 댓글
댓글 작성