ACT (Adaptive Computation Time)

Adaptive Computation Time


동기의 형성


나는 Universal Transformer 논문을 읽을 때 신경 쓰는 ACT(=Adaptive Computition Time)의 논문 주요 부분만 대충 읽었다.
※ Universal Transformer에 ACT 도입을 통해 정밀도 향상이 실험 결과 확인됐습니다.
※ ACT의 논문에는 RNN에 ACT가 적용되지만, 유니버설 트랜스포머처럼 RNN 성질을 가진 모델이라면 ACT가 적용될 수 있습니다.

원논문


What is ACT?


ACT는 쉽게 말해'요소별 계산 횟수를 요소별로 최적화'하기 위한 구조다.
※ 내가 직접 썼는데 이렇게 말하니까 시원하네요/눈물
아래의 원논문의 그림을 보면 비교적 이해하기 쉽다.
★RNN의 그림 (원논문의 Figure 1)

★ ACT를 도입한 RNN 그림(원논문의 Figure 2)

일반적인 RNN에서는 스텔스 레이어의 매개변수 조정을 위해 타임라인 측면(타임라인은 t로 표시)을 반복적으로 처리합니다.
※ 기본적으로 RNN의 숨겨진 층의 무게는 타임라인에서 공유됩니다.
그러나 ACT를 가져온 RNN에서 컴포넌트는 각 타임라인에서 세로로 확장됩니다.
※ 반복 횟수는 각 컴포넌트 오른쪽에 있는 숫자(1,2...N)로 표시됩니다.
즉, ACT를 가져온 RNN은 "각 타임라인(≈ 단어)의 매개변수 조정 횟수를 최적화했다"고 할 수 있습니다.

RNN?


Recurent Neural Network의 약자입니다.
타임 시퀀스 데이터 (예: 글, 행동 로그 해석 등) 를 처리할 수 있는 Neural Network.
※ RNN 내부에 사용되는 부속품은 다양한 부속품(LSTM이나 GRU 등)이 있습니다.
RNN에 대한 설명은 여기참고 자료입니다.

ACT의 구조


그럼 ACT의 구조를 설명하겠습니다.

ACT 재처리 프로세스


다음은 흐름도입니다.
※ATOM+mermaid.js로 써 봤는데 좀 못생겼어요...
나는 메르메드 자체가 매우 쓰기 좋다고 생각한다.

각 처리의 계산은 다음과 같다.

1. 시간 t의 입력 값을 숨겨진 층에 입력


숨겨진 레이어에 첫 번째(중복 없음) 입력 값을 입력합니다.
※ 입력한 $x$n은 횟수당 n 중 기본적으로 동일
첫 번째 계산인지 반복 계산인지 알 수 있도록 로고가 추가되었습니다.
(첫 회에만 로고가 걸려있다)
s_t^n = S(s_{t-1}, x_t^1)

2. 횟수 n의 숨겨진 층 매개 변수 계산


n차 교체 중 숨겨진 층의 매개 변수를 계산합니다
※ 편의를 위해 소문자s는 숨겨진 층이 계산한 출력값(매트릭스)을 나타내고, 대문자S는 숨겨진 층의 계산 처리(예를 들어 곱하기 권중 매트릭스 등)를 나타낸다.
s_t^n = S(s_t^{n-1}, x_t^n)

3. 횟수 n의 출력값 계산

y_t^n = W_y s_t^n + b_y

4. 횟수 n의 정지 단원의 계산


단원을 뒤에 서술하는 것을 멈추고 합계를 이용하여 계속 중복 처리하시겠습니까?종료 여부를 판정하는 데 쓰인다.
정지 단원의 계산식은 다음과 같다.
h_t^n = \sigma (W_h s_t^n + b_h)\\
\sigma(x) = \frac{1}{1 - e^{-x}}
$h_t^n달러는 n번째 시간 t를 계산할 때 단원의 출력을 정지합니다.
σ명령 함수를 표시합니다.
※ 신호 함수의 공식은 다음과 같은 특성이 있습니다.
0 < \sigma(x) < 1

5. 정지 단원의 합계는 1-이다ε넘었어요?

N(t) = min\{n:\sum_{k=1}^{n} h_t^k >= 1-\epsilon\}
왜 "1"이 아니라 "1"입니까?ε」사용, 사용하다
이는'한 번 반복을 허용하기 위해서'라고 할 수 있다.
※ "1"로 판단하면sigmoid의 특성상 두 번째 반복이 반드시 발생합니다.
첫 번째 처리는 하나를 넘지 않기 때문이다.
상술한 공식은{k=1}^{n} h_t^k>=1-\epsilon 달러 만족
최소 n은 반복 횟수 $N(t)$으로 설정됩니다.
상기 조건이 충족되지 않을 때는 후술한 6호에 들어간다.
상술한 조건을 만족시킬 때에는 후술한 7호로 들어가십시오.

6. 횟수 n 1개 증가


이것은 본의이기 때문에 생략한다.

7. 계산 알림

R(t) = 1 - \sum_{n=1}^{N(t)-1}h_t^n
후술한 손실 함수에서 조정기를 사용하다
마지막으로 이 알림을 줄이기 위해 학습 처리가 순조롭게 진행되었다.
※ 자세한 내용은 뒤에 설명합니다.
참고로 $R(t)달러는 $0

8. 최종 시간 t의 숨겨진 층의 매개 변수, 출력 값을 계산한다


숨겨진 레이어 매개변수와 출력 값을 각 횟수마다 생성합니다.
따라서 각 횟수의 값을 가중시켜 최종 결과로 삼는다.
(가중치 평균)
우선, 매번의 권한 (=$p t^n$) 은 다음과 같습니다.
p_t^n = \left\{
\begin{array}{ll}
R(t) & (n = N(t)) \\
h_t^n & (1 <= n < N(t))
\end{array}
\right.
상술한 것을 이용하여 최종 순간에 t의
숨겨진 레이어 매개변수(=$s t$)와 출력 값(=$y t$)을 계산합니다.
※$s_t+1에 관해서는 다음 시간에 사용합니다.
s_t = \sum_{n=1}^{N(t)}p_t^n s_t^n \\
y_t = \sum_{n=1}^{N(t)}p_t^n y_t^n

ACT 사용 시 손실 함수 정보


ACT를 사용하면 손실 함수가 약간 변경됩니다.

반복 횟수 제한 정보


손실 함수가 바뀐 이유는'중복 횟수 제한'이었다.
구체적인 제한은 다음과 같다.
\rho_t = N(t) + R(t) \\
P(X) = \sum_{t=1}^{T} \rho_t
$X$은(는) 문자열($x1, x2,...xT$)을 입력합니다.
원 논문에서는 $P(X)$를'ponder cost'(심사숙고 비용)로 표현했다.
반복 횟수에 대한 벌칙이라고 할 수 있다.

손실 함수 정보


손실 함수는 다음과 같이 정의됩니다.
\hat{L}(X,Y) = L(X,Y) + \tau P(X)
$Y$는 출력 문자열($y 1, y 2,...y T$)입니다.
$\tau 달러는 손실 함수에 비용을 얼마나 많이 적용할 것인지를 보여주는 수퍼 매개 변수입니다.
※ 가격이 높을수록 심사숙고 비용을 올리지 않는 역할을 하기 때문에 계산 시간은 줄어들지만 정밀도는 떨어진다.
※ 가격이 낮으면 심사숙고 비용을 올리지 않기 위한 작업이 약해져 계산 시간은 늘어나지만 정밀도는 높아진다.
또한 $N (t) 달러는 이산값이기 때문에 미분할 수 없습니다. 사실상 오차가 역방향으로 전파되기 때문에 $N (t) $는 무시된 것 같습니다.
따라서 오차 역전파를 진행할 때 원래의 손실 함수의 사다리와 $R(t)$의 사다리가 전파된다.

실험 결과


미안합니다. 쓰기에 익숙해져서, 나는 결과도 하나만 가볍게 건드릴 뿐입니다.
★ ACT를 도입한 RNN을 사용하여 입력의 난이도와 심사숙고 횟수(중복 횟수) 및 정밀도(오류율)를 나타내는 연관도(원논문의 Figure 6)

그림 오른쪽에 표시된 Time Penalty는 위의 $\tau 값입니다.
이 값이 높으면 심사숙고하는 원가가 높아지지만 정밀도는 떨어진다.(낮으면 반대로)
상술한 내용은 그림(실험결과)과 같다고 할 수 있다.

참고 자료


이것은 논문 이외의 참고 사이트다.

좋은 웹페이지 즐겨찾기