아오 이씨발.
어텐션에서 QK^T 풀면 EWqWkE 잖아요. E는 임베딩 벡터. 저거 걍 EWE로 놓고 풀면 안됨? 이 생각에서 벗어나지 못해서 인터넷을 뒤지고 있지만 발견한 대답은 WqWk가 파라미터가 더 적기때문에 빠르다는 것 뿐... 그리고 어텐션에서 Q와 K의 가중치가 가지는 의미를 파악해보려고 했지만 내 대갈빡으론 알아내기 너무 어렵다
Q와 K의 가중치가 무슨 의미를 가지는지, 그리고 두 Q K의 가중치를 W 하나로 퉁쳐서 실험한 논문이 있는지 궁금...
W를 두 행렬로 decompose한 걸로 보이는데... 매트릭스 두 개를 학습해야하는 이유가 있을까요. 성능적인 이점을 제외하고
참조하는 거랑 참조 되는걸 왜 같은 벡터로 놔
E 말하는거임? 그럼 제 잘못... 셀프어텐션 말하는거였음
Q : 대한민국 건국 초기 역사를 알고 싶어 V : 한국사, 이승만 전기, 원소의 세계, 한국 경제학 K : - 한국사 : 한국의 역사, 고구려 조선 대한민국 - 이승만 전기 : 한국 초대 대통령 이승만의 삶 - 원소의 세계 : 주기율표에 있는 원소에 대한 설명 - 한국 경제학 : 한국 경제학의 발전사를 사례를 통해 배우는...
W = Q x K : 도서관 사서가 생각하기로(W) 한국사 50%, 이승만전기 40%, 원소의 세계 0%, 한국 경제학 10% 정도로 시간 분배해서 내용 조사하면 됨 Output = W x V : 한국사 이승만 전기, 한국경제학의 내용을 읽고 종합하여 레포트 제출
셀프 어텐션은 Input X만 가지고 서로 다른 기능을 수행하는 Q, K, V를 만들어내서, 위와 같은 사전(dictionary) 구조의 모델을 만들기 때문에 처음에 linear layer 통과시키는거 Q = self.q_proj(X) K = self.k_proj(X) V = self.v_proj(X)
수식이 이해가 안간다는건 아님. 각 가중치가 어떤 내용을 학습하게 될지가 궁금했던거임. 임베딩된 토큰 간 컨텍스트를 학습한다는거 말고 다른 의미를 가지는게 있을까 했던거임. 그래도 열심히 설명해줘서 고마움. 블랙박스를 들춰보려 한 내 잘못인 것 같기도 함.
대부분 결과에 끼워맞추는 해석인듯
걍 그런갑다 하고 넘기는게 맞겠지? 이 시간에 다른 논문 한 편 더 읽는게 나을 것 같다는 생각이 들기도...
그러네?
Q, K V 이 소리 하는거 보니 셀프어텐션부터 공부하는거 같은데 그냥 어텐션부터 마스터해라
Q가 Target Sentence의 임베딩 벡터고 K가 Source Sentence의 임베딩 벡터고 둘의 dot product로 similarity를 계산하는거임
그럼 무슨 일이 일어나냐면 Contrastive Learning처럼 Source랑 Target에서 등장빈도가 높은 애들끼리 서로 Align되는 식으로 임베딩공간을 학습하겠지
CLIP 한번 공부해보면 거의 비슷한 개념이라 감이 잘 옴
다들 지 아는 얘기만 하는거봐라… 결국 projection된걸 풀어쓰면 xWWx처럼 중간에 low-rank decomposition된 bilinear form이 될텐데 그걸 그냥 xWx 형태로 모델링하면 안되냐는 질문같은디
https://proceedings.neurips.cc/paper_files/paper/2018/file/96ea64f3a1aa2fd00c72faacf0cb8ac9-Paper.pdf
잠깐 서치해봤을때 이런게 나오긴하네 읽어보진않음
마즘 ㅋㅋ 링크는 이따가 읽어보도록 하겠음
고마워요~
나도 이거 궁금했었는데 왜 qk projection이 따로 있어야할까하고 내린 결론은 분리했을때 좋은점 두가지 정도만 생각하고 고민을 접었음 1. 분리되어있는게 보기 좋다 2. q k에 서로 다르게 pos emb 주입이 가능하다
찾는게 이런 정보인진 모르겠는데 인풋에 들어가는게 one-hot vector + position embed라서 그럼 자연어라는거 자체가 Sparse한 데이터고 일반 수치 딥러닝 돌리는것 처럼 돌리면 one-hot에 해당하는 웨이트 행렬의 [행 또는 열] 밖에 학습이 안됨
QKV 같은걸 써서 sparse -> dense로 바꿔주는거고 사실은 "이걸 이렇게 놔두면 sparse에서 dense로 바꿔주는게 맞나?" 라는 문제가 있지만 "해보니까 되네 ㅋㅋㅋㅋ"라서 QKV가 어텐션에서 쓰이는거
댓글에 bilinear form 말한 애가 얘기한거랑 비슷함
멀티 헤드 어텐션이라는걸 잊지 않는다면, {쿼리나 키의 원래 차원} >> {프로젝션으로 임베딩 된 차원} 이잖아. 보통 헤드는 8이니까 8배정도 작겠지. 만약 저 가운데 메트릭스를 하나의 메트릭스로 모델링 한다면 그 메트릭스 모양이 {원래 쿼리 차원} X {원래 키 차원}일텐데, 이러면 그 메트릭스는 원래 디컴포즈 된 거 보다 파라미터가 훨씬 많이 늘어나겠지. 만약에 그렇게 파라미터를 늘렸을 때 성능이 스케일링 한다라면 다르겠지만 임피리컬리 그렇지 않기 때문에, 다시 말해 그 정도 파라미터를 쓸 거면 층을 더 쌓는 등 다른 곳에 쓰는게 더 낫기 때문에 저런 디컴포즈를 한거라고 봄.
결국 이 의문은 "멀티헤드" 어텐션과 매우 밀접하게 관련있다고 봄. 같은 파라미터를 쓸 수 있을 때, 어떤 어탠션 구조가 더 효율적이겠냐? 라는 리서치 케스쳔에 대해서, 멀티 헤드 어텐션 구조를 차용하면서, 임베딩 디멘션을 원래 디멘션보다 작게 가져가는게 효율적이다. 라는 답안에서 자연히 본 글의 쓰니가 말한 메트릭스의 로우랭크 디컴포지션이 나타난다는 맥락.
사담인데 내 밑에 있는 석사생이 이런 질문 갖고 올 정도면 너무 좋겠다.
궁금한게 결국 임피리컬하게 실험해보고 그렇다는게 요지면 이건 멘땅에 헤딩하듯 발견해야하는건가? 수학적인 이론에서 대충 가설 세워볼 수도 없나?? 연구란게 해보니 잘돼요가 먼저고 -> 그담에 왜잘되지? 찾다가 이론을 가져다 붙이는거 같음.. - dc App
페이퍼 라이팅을 보면 멀티 헤드 어탠션이 수학적인 인튜이션을 갖고 나온건 아닌거 같긴 하지만, 그렇다고 이게 맨땅에 헤딩하듯 아무 맥락 없이 나왔냐고 하면 전혀 아니잖아. 기본적으로 QK를 갖고 페어와이즈 시밀러리티를 계산해봐야 겠다고 생각했을 때, i) QK 차원이 다르다면 무조건 bilinear한 매트릭스가 필요할거고, ii) 같다고 하더라도 셀프어탠션을 상정하는 이상 서로 다른 프로젝션을 가져야 한다고 당연히 생각할 수 있을텐데, 그러면 이 프로젝션 레이어를 어떻게 디자인할거냐에서, 프로젝티드 디멘션을 원본보다 작게 가져가면서, 병렬로 여러개 갖게 만든다면 컴퓨테이셔널 컴플렉시티를 줄이면서도, 좀 더 풍부한 어탠션 맵을 가질 수 있지 않겠느냐라는건데,
이게 왜 맨땅에 헤딩임. 충분히 상식적으로 플로우가 있는 브레인스토밍인데. 실험 결과는 그 인튜이션이 실제로 동작한다는 걸 증명하는거고. 해보니 잘돼요가 먼저가 아니라, 어떻게 해보면 잘될까?가 먼저지. 당연히 그 "어떻게 해보면 잘될까?"에 대한 아이디어들은 수학적인 맥락에서도, 아니면 이번 경우와 같이 커먼 센스적인 맥락에서도 자유롭게 얻을 수 있는거고.
저 플로우가 충분히 합리적이고 상식적인 접근방법인건 동의하는데 수학적인 방식은 아니라고 생각함. 내가 생각하는 수학적인 방식이라면 전체 bilinear map 혹은 아예 일반화시킨 커널 전체를 생각한다음에 이 셋업에서 우리가 원하는 조건을 만족하는건 어떤 수학적 정리에 의해 보장되는걸 확인하고 거길로 좁힌두 이런식일텐데
앞에서 명시적으로 얘기했듯, 멀티헤드 어탠션의 인튜이션은 수학에서 온 게 아님.댓에서 내가 말하고자 하는 걸 정리하자면 이럼.i) 멀티헤드 어텐션이 수학적인 인튜이션 기반으로 제안되고, justification이 되었는가? Xii) 그럼에도 불구하고 수학적인 함의를 탐구해 볼 수 있는가? Oiii) 수학적인 인튜이션 기반으로 아이디어를 내서 연구를 시작할 수 있는가? 당연히 O, 그러나 멀티헤드 어텐션의 경우처럼 아닌 케이스도 많음.iv) 수학적인 인튜이션 기반의 아이디어가 아니라면 그냥 멘땅에 헤딩하듯 아이디어 내는거라고 봐야 하는가? X
https://arxiv.org/abs/2308.16898
이런
paper도 있음
어떤 게이가 커널트릭 말해줘서 관련해서 보고있는데, 어텐션 걍 내적 함수 쓴 커널트릭이더라. 올려준 페이퍼 보진 않았는데 svm 키워드 있고 xqktxt 식 있는거 보면 비슷한 얘기 하지 않을까 싶음. 내가 svd로 글 쓴 적이 있는데 그것도 따지고보면 가중치 내적한거라 커널트릭류더라고.
그래서 요즘은 커널트릭, 특히 내적에 빠져가지고 다른 내적 기반 알고리즘도 결국 커널트릭인지 보고있음. 이게 되면 내적 기반으로 모델 설계하면 어느정도 성능은 나와주지 않을까 싶어서
여기서 말하는 거는 Q,K로 하는거랑 W하나로 하는거라 optimize하는 애들이 다르다 이런 얘기긴함
오 그러면 factorization하는거랑 안하는거랑 계산량차이뿐만 아니라 결과 자체가 다르다는거네? 읽어보겠음 ㄱㅅㄱㅅ. 질문하길 잘했네