11.1 attention
11.1.1 고전 주목 알고리즘
(1) 특징 선택 feature selection
: 쓸모가 많은 특징은 남기고 나머지는 제거
: ex ) A, B, C, D 중 모델이 분류하는데 가장 중요하게 사용한 변수 B, C라는 조합을 찾아내는 것
: 주목 여부 0(선택 안 함) , 1(선택함)으로 표현
: 원시적인 주목
(2)돌출 맵 saliency map
주목을 위한 고전 방법 => 사람이 특징을 설계
: 컬러 대비 , 명암 대비 , 방향 대비 맵을 결합해 돌출 맵 구성
: 주목해야 할 정도를 실수로 표현 , 입력 영상의 내용에 따라 주목할 곳 결정
: 특징 선택에 비해 크게 개선됨 = > 여전히 한계(특징을 사람이 설계, 데이터셋에 공통 수작업 특직 정용하는 것)
11.1.2 딥러닝의 attention
컴퓨터 비전에서 주목의 발전 과정
2014 RAM : 순환 신경망을 이용해 입력 영상에서 주목할 곳을 순차적으로 알아내는 방법 제안
2015 STN : 특징맵에 이동과 크기, 회전 변환을 적용해 주목할 곳을 정함.
2017 SENet : 특징맵의 어떤 채널에 주목할지 알아냄
(1)convolutuon 연산
: m x n x k 특징맵을 컨볼루션 적용해 X로 표기된 m' x n' x k' 특징맵으로 만들어 SENet(Squeeze -and-Excite)은 squeeze와 excite, scale연산 적용해 X를 X'로 변환.
(2)se block
: squeeze 단계는 전역 평균 풀링 (GAP)을 적용. m' x n'맵의 평균.
즉 각 채널에 대해 화소 평균을 계산해 z벡터의 해당 요소에 기록.
z는 k'개 요소를 가진 벡터가 됨.
: Excite 단계는 2개의 완전 연결층을 통해 벡터z를 적당한 크기로 줄인다음 원래 크기의 s벡터로 복원.
가중치는 학습으로 알아냄.
: Scale단계에서는 벡터s를 채널별로 중요한 정도를 나타내는 벡터로 간주.(요소 값에따른 중요도 판별)
X의 각 채널에 s의 해당 요소를 곱해 X'를 만듬.
==>결국 X'는 더 중요한 채널은 값이 커지고 덜 중요한 채널은 작아짐!
==>SENet은 squeeze-excite-scale층으로 데이터셋의 의도에 따라 attention이 적용됨.
위의 attention은 영상의 중요한 부분에 더 큰 가중치 줘서 성능 개선 하는 방법이었음.
자기 주목 self attention
: 영상을 구성하는 요소 상호 간에 주목을 결정
: Non-local 신경망은 자기 주목을 컴퓨터 비전에 처음 도입한 모델
Non-local 신경망
:출력 특징맵 y는 입력 특징맵 x와 같은 크기.
:y의 i위치 값 yi는 x의 모든 위치의 값인 g(xj)의 가중치의 합임.
:가중치 f(xi,xj)는 xi가 xj에 얼마나 주목해야 하는지 나타내는 값
=>위의 식은 모든 화소 쌍에 대해 계산해야하므로 계산량이 너무 많아 컨볼루션층을 여러번 거쳐 작아진 특성맵에 적용
2017 자연어 처리 분야에서 트랜스포머 transformer모델 등장 : transformer는 자기주목을 기반으로 함.
:분류를 위한 비전 트랜스포머 Vit
:검출 '' :DETR
:분할 " :SETR
:추적 " :MOTR
=>컨볼루션 신경망의 성능 뛰어넘음.
------------------------------------
1. 자기주목의 수식과 컨벌루션수식(필터링과같음)을 비교해보시오.
(1)위 글의 수식은 Non-local신경망의 자기 주목 계산 수식입니다. Non-local신경망은 입력 시퀀스에서 각 위치간의 상관 관계를 계산하여 가중치를 부여하는 네트워크 구조입니다.
y_i = (1/C(x)) * ∑_j (f(x_i, x_j) * g(x_j))
위 수식에서 x_i는 입력의 i번째 위치를 나타내고, y_i는 해당 위치에서의 출력입니다. C(x)는 정규화 상수로, 입력에 대한 정규화를 수행합니다.
f와 g는 주어진 입력 x_i와 x_j 사이의 관계를 계산하는 함수입니다.
(2)convolution 수식은 하나의 함수와 또 다른 함수를 대칭 이동한 값을 곱한 다음, 구간에 대해 적분하는 것입니다.
y(t) = (x * w)(t) = ∫[−∞, ∞] x(τ)w(t-τ) dτ
(3)self attention의 수식은 Attention(Q, K, V) = softmax(QK^T / sqrt(d_k))V 입니다.
-Q는 쿼리(Query) 벡터, K는 키(Key) 벡터, V는 값(Value) 벡터를 나타냅니다. d_k는 키 벡터의 차원을 나타냅니다.
-쿼리 벡터와 키 벡터 사이의 유사도를 계산한 후(QK^T / sqrt(d_k) , softmax 함수를 사용하여 정규화합니다.
-이렇게 계산된 어텐션 가중치를 값 벡터에 곱하여 최종 어텐션 출력을 얻습니다.
: sqrt(d_k)로 나누는 것은 유사도의 스케일을 제어해 유사도 계산 시 값의 범위를 조절하여 안정성과 학습을 도움으로써 수렴 속도를 높이는 역할
: QK^T : 쿼리 벡터와 키 벡터 간의 내적(Dot Product)을 계산하여 유사도를 측정, 내적 결과가 높을수록 두 벡터가 유사함
: softmax 함수 : 입력 벡터를 확률 분포로 변환하여 각 위치의 상대적인 중요도를 나타냄.
(4)비교 :Non-local 신경망, self attention의 수식에서는 입력 시퀀스 내의 원소들 간의 상관 관계를 계산하여 출력을 얻는 반면, 컨벌루션은 입력 신호와 필터 간의 상관 관계를 계산하여 출력을 생성합니다.
그러므로 Non-local 신경망, self attention은 입력의 전역적인 상호 작용을 모델링하고, 컨벌루션은 지역적인 패턴을 추출하는 데 사용됩니다.
2.transformer모델이 convolution성능 뛰어넘는 이유는?
(1)전역적인 정보 고려 : Transformer는 자기주목(self-attention) 메커니즘을 사용하여 입력 시퀀스의 전역적인 상호 작용을 모델링함.컨볼루션에서 제한적인 수용 영역을 가지는 것과는 대조적임. 따라서 Transformer는 더 많은 전역적인 패턴과 의존성을 파악할 수 있어서 일부 작업에서 성능을 향상시킴.
(2) 위치 정보 보존 : 컨볼루션은 지역적인 패턴을 추출하는 데에 강점이 있지만, 위치 정보를 상대적으로 잃어버릴 수 있음. Transformer는 자기주목 메커니즘을 사용하여 입력의 각 위치에 대한 상대적인 위치 정보를 보존함.
(3)다양한 관계 모델링가능 :쿼리와 키 간의 상호 작용을 통해 임의의 관계를 학습할 수 있으며, 상호 의존성을 잘 파악할 수 있음.
(4)계산 효율성 : 컨볼루션은 지역 패턴을 파악하기 위해 동일한 필터를 여러 위치에 적용하여 계산을 공유할 수 있음. 반면 Transformer는 모든 위치 간의 상호 작용을 계산해야 함. 그래서 컨볼루션에 비해 계산 복잡도가 높을 수 있지만,Transformer는 병렬화와 효율적인 구현 방법을 통해 계산 효율성을 향상시킴.
첫댓글 주목(어텐션)은 결국 필터링(컨벌루션)과 같은 연산을 나타내는 용어군 근데 필터링(컨벌루션)과 수식은 다르군
자기주목의 수식과 컨벌루션수식(필터링과같음)을 비교해보시오.
자기주목의 수식에서 함수f의 값을 어떻게 구하는가? -> 학습으로 구하겠군
컨볼루션 신경망의 성능 뛰어넘음.-> 왜?
댓글이 길어서 위의 글 맨 아래에 적었습니다!!