-
Time-mixing 블록을 이용해 recursive decoding을 구현
-
위 수식을 그대로 이용하면 ekt를 계산할 때 overflow가 발생할 수 있는데, 이를 방지하기 위해 아래와 같은 수치적 트릭을 사용하게 됨
q:=max(pt−1,u+kt),wkvt=ept−1−q⊙bt−1′+eu+kt−qept−1−q⊙at−1′+eu+kt−q⊙vt
-
이때, a1=ek1⊙v1, b1=ek1이고, a1′=v1, b1′=1, p1=k1이며, pt는 at와 bt의 공유 지수(shared exponents)를 저장하는 역할이 됨
-
at′와 bt′, 그리고 그들의 공유 지수도 비슷한 방식으로 계산됨
q′:=max(pt−1−w,kt),at′=ept−1−w−q′⊙at−1′+ekt−q′⊙vtbt′=ept−1−w−q′⊙bt−1′+ekt−q′,pt=q′
-
이러한 수식들을 통해, D차원의 모델에 대해 다섯 개의 요소로 구성된 internal state를 표현
- xt: Time-mix 블록의 현재 입력
- yt: Channel-mix 블록의 현재 입력
- at′: WKV 값의 numerator
- bt′: WKV 값의 denominator
- pt: WKV 연산의 numerical precision 보존을 위해 사용되는 보조 status