본문 바로가기
2022-2/Project

TCN(Temporal Convolutional Network) 란 뭘까

by 이망고_ 2022. 8. 31.

시계열 데이터 다루는 데 사용하는 주된 모델로는 RNN의 일종인 LSTM이 압도적이었다.

근데 몇가지 문제점을 해결한 CNN의 일종인 TCN 모델로도 이미지 데이터뿐 아니라 시계열 데이터(수치로 된)를 처리가 가능하다고 한다.

 

TCN, 얘는 뭘까

간단히 말하자면 명칭의 정의도 나와 있는 게 없어 추측하자면,

CCN임에도 불구하고 임시적temporal으로 시계열 데이터를 분석한다는 뜻일 수도 있고,

아니면 시간 순서의 영향을 받는temporal 시계열 데이터를 분석한 것일 수도 있음

 

RNN 의 경우, 병렬 처리 불가 순차적으로 진행하지만, TCN 의 경우 병렬처리도 가능하고,

이 수용 필드의 경우, 같은 파라미터 수더라도 수용 범위가 넓으면 특징을 더 잘 추출할 수 있다고 함

그래서 레이어를 늘리는 것이 아니라(메모리 차지, 기울기 손실 문제) Dilation 계수를 통해 수용 범위를 유연하게 늘릴 수 있음

 

구조도를 더 정확하게 고go

얘가 컨볼루션 구조

알아야 할 것

- 커널 사이즈Kernel Size : 컨볼루션의 시야 결정, 보통 2D 에서 3x3 pixel 사용

- 스트라이드Stride : 이미지를 횡단할 때 커널의 스텝 사이즈, 기본값 1, 보통 Max Pooling과 비슷하게 이미지를 다운샘플링하기 위해 2로 지정 가능

- 패딩Padding : 샘플 테두리 어떻게 결정할지 결정, 패딩된 컨볼루션은 인풋과 동일한 아웃풋 차원을 유지하는 반면, 패딩되지 않은 컨볼루션은 커널이 1보다 큰 경우 테두리의 일부를 잘라버릴 수도 있음(아하! 처음에 이 이야기를 이해 못하다 나는 리셉션 크기, 수용 범위를 늘리는 데 초점이 맞추어진 줄 알았다. 그 효과도 있지만, 더 정확하게 테두리의 일부를 잘라 데이터를 손실할 수도 있으니 보호막처럼 패딩이 필요해 보임)

-인풋&아웃풋 채널Input&Output Channels : 컨볼루션 레이어는 인풋 채널의 특정 수I를 받아 output 채널의 특정 수O로 계산. 이런 계층에서 필요한 파리미터의 수는 I*O*K로 계산할 수 있다(K 커널 수)

 

기본 개념 숙지후

확장된 컨볼루션 고go (얘가 tcn에 사용되는 듯)

 

추가된 개념으로

-Dilation rate : 커널 사이의 간격을 정의함, dilation rate가 2인 3x3 커널은 9개의 파라미터를 사용하면서 5x5 커널과 동일한 시야view를 가진다!

 

5x5 커널을 사용하고 두번째 열과 행을 모두 삭제하면 동일한 계산 비용으로 더 넓은 시야를 제공한다.

Dilated convolution은 특히 real-time segmentation 분야에 주로 사용된다 함. 넓은 시야가 필요하고 여러 컨볼루션이나 큰 커널을 사용할 여유가 없는 경우 사용함

 

역자 : Dilated Convolution은 필터 내부에 zero padding을 추가해 강제로 receptive field를 늘리는 방법입니다. 위 그림에서 진한 파란 부분만 weight가 있고 나머지 부분은 0으로 채워집니다. (receptive field : 필터가 한번 보는 영역으로 사진의 feature를 추출하기 위해선 receptive field가 높을수록 좋습니다)
pooling을 수행하지 않고도 receptive field를 크게 가져갈 수 있기 때문에 spatial dimension 손실이 적고 대부분의 weight가 0이기 때문에 연산의 효율이 좋습니다. 공간적 특징을 유지하기 때문에 Segmentation에서 많이 사용합니다