사실 개인적으로 Time series를 분석할 일이 있었는데
돌아다니다가 MAMBA등에 사용된 Linear Recurrent Unit (LRU)에 대해서 알게됐고
며칠동안 실제로 코드짜고 적용해보면서 기존 RNN(LSTM, GRU)랑 비교해서
진짜 존나 개쩐다는걸 체감하고 어디가서 말해볼까 하고 들어온게 딥러닝 갤임
https://www.youtube.com/watch?v=ouF-H35atOY
https://www.youtube.com/watch?v=9dSkvxS2EB0
맘바 관련 유튭은 위에 두개가 자세하게 설명되어있고
https://arxiv.org/abs/2303.06349v1
https://arxiv.org/abs/2310.02367v2
https://arxiv.org/abs/2111.00396v3
arxiv에서 주의깊게 본건 이거 3개였음.
https://github.com/Gothos/LRU-pytorch/blob/main/LRU_pytorch/LRU.py
LRU 코드 참고한건 여기
1.
현재 NLP 모델은 트랜스포머+어텐션 기반이고 Positional Encoding(Embedding) 을 적용해서
긴 자연어 토큰에 대해 시퀀스가 아닌 배치로 한꺼번에 처리할 수 있는게 특징임
BERT 때만해도 Encoder Decoder 전부 있었는데 요새는 그냥 생성 모델도 퉁치다보니 유저가 RAG같은걸 하려면 따로 또 모델을 구해야됨
BERT 쓸땐 마지막 CLS토큰에 입력 문장에 대한 정보가 전부 저장되어 있고,
이걸 토대로 Decoder에 넣으면 원래 문장과 비슷한게 생성되거나(입력 문장의 의미가 전부 포함되어 있으므로), 클러스터링 등을 할수도 있었음
2.
BERT는 이게 가능하고 RNN은 이게 안되는 이유는
RNN이 시퀀스 데이터를 분석하자고 내놓은 툴이긴 하지만
실제로 시퀀스 데이터를 처리하는데에는 하자가 있었다는게 문제임
쓸만은 했지만 activation으로 tanh나 relu를 쓰고 (생각해봐라 초기 sigmoid, tanh, relu 이후에 몇개나 많은 activation이 나왔나)
2014년에 GRU 나온이후로 bi-LSTM나온거 빼곤 RNN에 관해 들어보기라도 했나?
툭하면 gradient explode(터지거나) / vanishing(종범하거나) 가 발생한다.
3.
그래서 등장한게 짜잔 State Space를 모방한 LRU가 새롭게 나왔고
덕분에 RNN 붐이 다시 올거라고 나는 생각한다.
저커버그 인터뷰에서 LLM을 돌리는데 소형 원자력발전소 정도의 전력을 쳐먹기 때문에
한동안은 에너지를 줄이는게 최우선 과제일거라 생각함.
공간복잡도는 비슷하지만 시간복잡도에서 버블 vs 퀵소트 정도로 시간 복잡도가 줄어든다.
4.
사실 어차피 이런 모델은 머기업에서 만들어 주니까 쓰는 사람 입장에선 상관없는데
학술 레벨에서 "나 새 모델을 잘 이해했소" 라고 어필 할려면 뭘 해야할까 생각해봤다.
- 선형대수 (Matrix decomposition, eigen decomposition 위주로)
- 함수해석 (푸리에나 체비, 르장드르 같이 함수 interpolation도 중요하다고 봄)
- FFT, Spectral Method (복잡도를 줄이는 방법의 중요한 부분)
- LRU에선 복소수를 다루기 때문에 복소 해석학, 어트랙터, 극좌표를 이용한 복소수의 지수표현
이상 2018년 이후로 논문 안내본 틀딱의 헛소리였음 반박시 니말이 맞음
https://arxiv.org/abs/2405.04517
뭔 근바여
https://arxiv.org/abs/2402.19427
오호