**Practical considerations.** Since the matrix \(\mathbf{Q}\) is not computed over the reals, but over floating-point numbers (possibly with precision as low as 16-bits or 8-bits for production neural networks), we cannot naively take the rank to be the number of linearly independent rows. Instead, we use a practical _numerical rank_ of \(\mathbf{Q}\), where we order the singular values \(\lambda_{1}\geq\lambda_{2}\geq\cdots\geq\lambda_{n}\), and identify the largest _multiplicative_ gap \(\frac{\lambda_{1}}{i+1}\) between consecutive singular values. A large multiplicative gap arises when we switch from large "actual" singular values to small singular values that arise from numerical imprecision. Figure 2 shows these gaps. Algorithm 1 describes this attack.
**실용적인 고려 사항.** 행렬 \(\mathbf{Q}\)는 실수가 아닌 부동 소수점 숫자(아마도 16비트 또는 8비트 정도의 정밀도로 제작되는 신경망)로 계산되기 때문에 선형적으로 독립적인 행의 수로 순위를 구분할 수 없습니다. 대신, 특이값 \(\lambda_{1}\geq\lambda_{2}\geq\cdots\geq\lambda_{n}\)을 순서대로 정렬하고 연속된 특이값 사이의 가장 큰 _multiplicative_ 간격 \(\frac{\lambda_{1}}{i+1}\)을 식별하는 실제 _numerical rank_를 사용합니다. 연속된 특이값 사이의 가장 큰 _multiplicative_ 간격은 큰 "실제" 특이값에서 수치적 부정확성으로 인해 발생하는 작은 특이값으로 전환될 때 발생합니다. 그림 2는 이러한 간격을 보여줍니다. 알고리즘 1은 이 공격을 설명합니다.
**실용적인 고려 사항.** 행렬 \mathbf{Q}\)는 실수가 아닌 부동 소수점 숫자(아마도 16비트 또는 8비트 정도의 정밀도로 제작되는 신경망)로 계산되기 때문에 선형적으로 독립적인 행의 수로 순위를 구분할 수 없습니다. 대신, 특이값 \(\lambda_{1}\geq\lambda_{2}\geq\cdots\geq\lambda_{n}\)을 순서대로 정렬하고 연속된 특이값 사이의 가장 큰 _곱셈_ 간격 \(\frac{\lambda_{1}}{i+1}\)을 식별하는 실제 _수치 순위_를 사용합니다. 연속된 특이값 사이의 가장 큰 _곱셈_ 간격은 큰 "실제" 특이값에서 수치적 부정확성으로 인해 발생하는 작은 특이값으로 전환될 때 발생합니다. 그림 2는 이러한 간격을 보여줍니다. 알고리즘 1은 이 공격을 설명합니다.